81 lines
3.2 KiB
Python
81 lines
3.2 KiB
Python
from flask import Blueprint, make_response, request, jsonify, abort
|
|
from flask_socketio import SocketIO, emit, join_room, leave_room
|
|
|
|
import os, signal, json, time
|
|
import logging
|
|
from threading import Thread
|
|
|
|
from libs.api.apiBlueprint import ApiBlueprint
|
|
|
|
class Blueprint(ApiBlueprint):
|
|
def routes(self):
|
|
from .networks import Networks
|
|
self.module:Networks = self.module
|
|
|
|
@self.blueprint.route('/')
|
|
def show():
|
|
return self.module.name
|
|
|
|
@self.blueprint.route('/networks', methods=["GET", "POST"])
|
|
def networks():
|
|
if request.method == "GET":
|
|
networks = []
|
|
for network_id, state in self.module.network_states.items():
|
|
obj = {"data":self.module.nosys_core.data.get_network(network_id), "state":state}
|
|
networks.append(obj)
|
|
return jsonify(networks)
|
|
|
|
elif request.method == "POST":
|
|
content:dict = request.json
|
|
name = content["name"]
|
|
description = content["description"]
|
|
type = content["type"]
|
|
modules = content["modules"]
|
|
network = self.module.create_network(name, description, type, modules)
|
|
|
|
return jsonify({"network_id":network.get("id")})
|
|
|
|
@self.blueprint.route("/networks/<path:network_id>", methods=["GET", "PUT", "DELETE"])
|
|
def network(network_id):
|
|
state = self.module.network_states.get(network_id)
|
|
if request.method == "GET":
|
|
return jsonify(state)
|
|
|
|
elif request.method == "PUT":
|
|
# TODO Edit network config
|
|
return jsonify({"networkId":network_id})
|
|
|
|
elif request.method == "DELETE":
|
|
content:dict = request.json
|
|
user_id = content["user_id"]
|
|
self.module.user_remove_network(user_id, network_id)
|
|
return jsonify({"networkId":network_id})
|
|
|
|
@self.blueprint.route("/networks/<path:network_id>/rendezvous", methods=["GET", "POST", "DELETE"])
|
|
def network_rendezvous(network_id):
|
|
if request.method == "GET":
|
|
network_rendezvous = self.module.nosys_core.data.get_network(network_id)["rendezvous"]
|
|
return jsonify(network_rendezvous)
|
|
|
|
elif request.method == "POST":
|
|
content:dict = request.json
|
|
rendezvous_id = content["rendezvous_id"]
|
|
self.module.nosys_core.data.network_assign_rendezvous(network_id, rendezvous_id)
|
|
return jsonify()
|
|
|
|
# Rendezvous
|
|
|
|
@self.blueprint.route('/rendezvous', methods=["GET", "POST"])
|
|
def rendezvous():
|
|
if request.method == "GET":
|
|
return jsonify(self.module.nosys_core.data.list_rendezvous())
|
|
|
|
elif request.method == "POST":
|
|
content:dict = request.json
|
|
id = content["id"]
|
|
address = content["address"]
|
|
self.module.nosys_core.data.add_rendezvous(id, address)
|
|
|
|
return jsonify()
|
|
|