Added libs
This commit is contained in:
103
noSys/noSysApiBlueprint.py
Normal file
103
noSys/noSysApiBlueprint.py
Normal file
@@ -0,0 +1,103 @@
|
||||
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 .noSys import NoSys
|
||||
self.nosys:NoSys = self.module
|
||||
from .noSysCore import NoSysCore
|
||||
self.nosys_core = self.nosys.nosys_core
|
||||
|
||||
@self.blueprint.route('/')
|
||||
def show():
|
||||
return self.nosys.name
|
||||
|
||||
@self.blueprint.route('/users')
|
||||
def users():
|
||||
if request.method == "GET":
|
||||
users = []
|
||||
for user in self.nosys_core.users.users.values():
|
||||
user_data = self.nosys.nosys_core.data.get_user(user.id)
|
||||
users.append(user_data)
|
||||
return jsonify(users)
|
||||
|
||||
@self.blueprint.route("/users/<path:user_id>", methods=["GET", "POST", "DELETE"])
|
||||
def user(user_id):
|
||||
if request.method == "GET":
|
||||
user_data = self.nosys.nosys_core.data.get_user(user_id)
|
||||
return jsonify(user_data)
|
||||
|
||||
@self.blueprint.route("/users/<path:user_id>/networks", methods=["GET", "POST", "DELETE"])
|
||||
def user_networks(user_id):
|
||||
if request.method == "GET":
|
||||
user_networks = self.nosys.nosys_core.data.get_user(user_id)["networks"]
|
||||
return jsonify(user_networks)
|
||||
|
||||
elif request.method == "POST":
|
||||
content:dict = request.json
|
||||
return jsonify()
|
||||
|
||||
@self.blueprint.route("/peers", methods=["GET", "POST"])
|
||||
def peers():
|
||||
if request.method == "GET":
|
||||
response = []
|
||||
for peer in self.nosys_core.peers.peers.values():
|
||||
response.append({
|
||||
"id":peer.id, "address":f"{peer.connection.address[0]}:{peer.connection.address[1]}",
|
||||
"bindAddress":f"{peer.connection.bind_address[0]}:{peer.connection.bind_address[1]}",
|
||||
"user":peer.connection.security.user, "status":peer.connection.status.name
|
||||
})
|
||||
return jsonify(response)
|
||||
|
||||
elif request.method == "POST":
|
||||
content:dict = request.json
|
||||
address = (content["address"]["ip"], int(content["address"]["port"]))
|
||||
bind_address = ("0.0.0.0", 0)
|
||||
if content.get("bindAddress"):
|
||||
bind_address = (content["bindAddress"]["ip"], int(content["bindAddress"]["port"]))
|
||||
user_pk = content["user"]
|
||||
connection_id = self.nosys_core.connections.connect(address=address, user_id=user_pk, bind_address=bind_address)
|
||||
return jsonify({"connectionId":connection_id})
|
||||
|
||||
@self.blueprint.route("/peers/<path:connection_id>", methods=["GET", "POST", "DELETE"])
|
||||
def peer(connection_id):
|
||||
peer = self.nosys_core.peers.peers.get(connection_id)
|
||||
if not peer:
|
||||
return jsonify({})
|
||||
|
||||
if request.method == "GET":
|
||||
return jsonify({
|
||||
"id":peer.id, "address":f"{peer.connection.address[0]}:{peer.connection.address[1]}",
|
||||
"bindAddress":f"{peer.connection.bind_address[0]}:{peer.connection.bind_address[1]}",
|
||||
"user":peer.connection.security.user, "status":peer.connection.status.name
|
||||
})
|
||||
|
||||
elif request.method == "POST":
|
||||
content:dict = request.json
|
||||
message = content.get("message")
|
||||
to_module = (content.get("toModule")["package"],content.get("toModule")["module"])
|
||||
encrypted = content.get("encrypted")
|
||||
self.nosys_core.dispatcher.send_message(message, peer.id, to_module, encrypted)
|
||||
return jsonify({"connectionId":connection_id})
|
||||
|
||||
elif request.method == "DELETE":
|
||||
peer.connection.close_connection()
|
||||
return jsonify({"connectionId":connection_id})
|
||||
|
||||
@self.blueprint.route('/restart')
|
||||
def restart():
|
||||
if request.method == "GET":
|
||||
self.nosys_core.restart_app()
|
||||
return jsonify({})
|
||||
|
||||
@self.blueprint.route('/test')
|
||||
def test():
|
||||
if request.method == "GET":
|
||||
self.nosys_core.test()
|
||||
return jsonify({})
|
||||
Reference in New Issue
Block a user