IctAchievers's picture
Upload 19 files
43ecebd verified
"""
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)