| """
|
| API Server for Defender
|
| """
|
|
|
| from flask import Flask, jsonify, request
|
| import threading
|
| import json
|
|
|
| class APIServer:
|
| def __init__(self, host='127.0.0.1', port=8080):
|
| self.host = host
|
| self.port = port
|
| self.app = Flask(__name__)
|
| self.server_thread = None
|
| self.running = False
|
| self.setup_routes()
|
|
|
| def setup_routes(self):
|
| """Setup API routes"""
|
| @self.app.route('/api/v1/status', methods=['GET'])
|
| def get_status():
|
| return jsonify({
|
| 'system_status': 'SECURE' if self.running else 'STOPPED',
|
| 'timestamp': '2024-01-15T10:30:00Z',
|
| 'active_rules': 4,
|
| 'threat_level': 'LOW',
|
| 'performance': {
|
| 'cpu_usage': '18%',
|
| 'memory_usage': '62%',
|
| 'response_time': '2.8s'
|
| }
|
| })
|
|
|
| @self.app.route('/api/v1/alerts', methods=['GET'])
|
| def get_alerts():
|
| limit = request.args.get('limit', 10, type=int)
|
| return jsonify({
|
| 'alerts': [],
|
| 'count': 0,
|
| 'limit': limit
|
| })
|
|
|
| @self.app.route('/api/v1/rules', methods=['GET'])
|
| def get_rules():
|
| ... return jsonify({
|
| ... 'rules': [
|
| ... {
|
| ... 'id': 1,
|
| ... 'name': 'Network_Traffic_Spike_Detection_v2',
|
| ... 'enabled': True,
|
| ... 'performance': '99.2%'
|
| ... }
|
| ... ]
|
| ... })
|
| ...
|
| ... @self.app.route('/api/v1/alerts', methods=['POST'])
|
| ... def create_alert():
|
| ... data = request.get_json()
|
| ... return jsonify({
|
| ... 'status': 'success',
|
| ... 'message': 'Alert created',
|
| ... 'data': data
|
| ... }), 201
|
| ...
|
| ... def start(self):
|
| ... """Start API server"""
|
| ... if not self.running:
|
| ... self.running = True
|
| ... self.server_thread = threading.Thread(target=self.run_server)
|
| ... self.server_thread.daemon = True
|
| ... self.server_thread.start()
|
| ... print(f"API Server started on http://{self.host}:{self.port}")
|
| ...
|
| ... def stop(self):
|
| ... """Stop API server"""
|
| ... self.running = False
|
| ... if self.server_thread:
|
| ... self.server_thread.join()
|
| ...
|
| ... def run_server(self):
|
| ... """Run the Flask server"""
|
| ... self.app.run(host=self.host, port=self.port, debug=False, use_reloader=False)
|
|
|