wip: peers
This commit is contained in:
+51
-14
@@ -154,16 +154,16 @@ def clear_log_context(exc):
|
||||
request_context.set({})
|
||||
|
||||
# Initialize managers with proper directories
|
||||
network_manager = NetworkManager(data_dir='./data', config_dir='./config')
|
||||
wireguard_manager = WireGuardManager(data_dir='./data', config_dir='./config')
|
||||
peer_registry = PeerRegistry(data_dir='./data', config_dir='./config')
|
||||
email_manager = EmailManager(data_dir='./data', config_dir='./config')
|
||||
calendar_manager = CalendarManager(data_dir='./data', config_dir='./config')
|
||||
file_manager = FileManager(data_dir='./data', config_dir='./config')
|
||||
routing_manager = RoutingManager(data_dir='./data', config_dir='./config')
|
||||
cell_manager = CellManager(data_dir='./data', config_dir='./config')
|
||||
app.vault_manager = VaultManager(data_dir='./data', config_dir='./config')
|
||||
container_manager = ContainerManager(data_dir='./data', config_dir='./config')
|
||||
network_manager = NetworkManager(data_dir='/app/data', config_dir='/app/config')
|
||||
wireguard_manager = WireGuardManager(data_dir='/app/data', config_dir='/app/config')
|
||||
peer_registry = PeerRegistry(data_dir='/app/data', config_dir='/app/config')
|
||||
email_manager = EmailManager(data_dir='/app/data', config_dir='/app/config')
|
||||
calendar_manager = CalendarManager(data_dir='/app/data', config_dir='/app/config')
|
||||
file_manager = FileManager(data_dir='/app/data', config_dir='/app/config')
|
||||
routing_manager = RoutingManager(data_dir='/app/data', config_dir='/app/config')
|
||||
cell_manager = CellManager(data_dir='/app/data', config_dir='/app/config')
|
||||
app.vault_manager = VaultManager(data_dir='/app/data', config_dir='/app/config')
|
||||
container_manager = ContainerManager(data_dir='/app/data', config_dir='/app/config')
|
||||
|
||||
# Register services with service bus
|
||||
service_bus.register_service('network', network_manager)
|
||||
@@ -839,12 +839,43 @@ def get_peer_config():
|
||||
if data is None or 'name' not in data:
|
||||
return jsonify({"error": "Missing peer name"}), 400
|
||||
|
||||
# For now, return not implemented - this would need to be implemented
|
||||
return jsonify({"error": "Not implemented yet"}), 501
|
||||
peer_name = data['name']
|
||||
|
||||
# Get peer from peer registry
|
||||
peer = peer_registry.get_peer(peer_name)
|
||||
if not peer:
|
||||
return jsonify({"config": "Peer not found"})
|
||||
|
||||
# Get server configuration
|
||||
server_config = wireguard_manager.get_server_config()
|
||||
|
||||
# Generate client configuration using peer registry data
|
||||
config = f"""[Interface]
|
||||
PrivateKey = {peer.get('private_key', 'YOUR_PRIVATE_KEY_HERE')}
|
||||
Address = {peer.get('ip', '10.0.0.2')}/32
|
||||
DNS = 8.8.8.8, 1.1.1.1
|
||||
|
||||
[Peer]
|
||||
PublicKey = {server_config.get('public_key', 'SERVER_PUBLIC_KEY_PLACEHOLDER')}
|
||||
Endpoint = {server_config.get('endpoint', 'YOUR_SERVER_IP:51820')}
|
||||
AllowedIPs = {peer.get('allowed_ips', '0.0.0.0/0')}
|
||||
PersistentKeepalive = {peer.get('persistent_keepalive', 25)}"""
|
||||
|
||||
return jsonify({"config": config})
|
||||
except Exception as e:
|
||||
logger.error(f"Error getting peer config: {e}")
|
||||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
@app.route('/api/wireguard/server-config', methods=['GET'])
|
||||
def get_server_config():
|
||||
try:
|
||||
# Get server configuration from WireGuard manager
|
||||
config = wireguard_manager.get_server_config()
|
||||
return jsonify(config)
|
||||
except Exception as e:
|
||||
logger.error(f"Error getting server config: {e}")
|
||||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
# Peer Registry API
|
||||
@app.route('/api/peers', methods=['GET'])
|
||||
def get_peers():
|
||||
@@ -870,11 +901,17 @@ def add_peer():
|
||||
if field not in data:
|
||||
return jsonify({"error": f"Missing required field: {field}"}), 400
|
||||
|
||||
# Add peer to registry
|
||||
# Add peer to registry with all provided fields
|
||||
peer_info = {
|
||||
'peer': data['name'],
|
||||
'ip': data['ip'],
|
||||
'public_key': data['public_key']
|
||||
'public_key': data['public_key'],
|
||||
'private_key': data.get('private_key'),
|
||||
'server_public_key': data.get('server_public_key'),
|
||||
'server_endpoint': data.get('server_endpoint'),
|
||||
'allowed_ips': data.get('allowed_ips'),
|
||||
'persistent_keepalive': data.get('persistent_keepalive'),
|
||||
'description': data.get('description')
|
||||
}
|
||||
|
||||
success = peer_registry.add_peer(peer_info)
|
||||
|
||||
Reference in New Issue
Block a user