Added libs
This commit is contained in:
70
noSys/noSys.py
Normal file
70
noSys/noSys.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import time
|
||||
|
||||
from .noSysModule import NoSysModule
|
||||
from .peers import Peer
|
||||
from .events import Events, DynamicEvents
|
||||
|
||||
from libs.noSys.noSysApiBlueprint import Blueprint
|
||||
from libs.noSys.noSysSocketio import HandlerSocketio
|
||||
|
||||
class NoSys(NoSysModule):
|
||||
"""Core module of NoSys that handles system-level messages."""
|
||||
|
||||
def __init__(self, nosys_core):
|
||||
super().__init__(nosys_core)
|
||||
|
||||
self.nosys_core.subscribe_event(Events.USER_ADDED, self.on_user_added)
|
||||
self.nosys_core.subscribe_event(Events.PEER_CONNECTED, self.on_peer_connected)
|
||||
|
||||
def setup(self):
|
||||
self.nosys_core.modules.api.register_blueprint(Blueprint(self).blueprint)
|
||||
|
||||
self.socketio = HandlerSocketio(self)
|
||||
self.nosys_core.modules.api.register_socketio(self.socketio)
|
||||
|
||||
def on_nosys_ready(self, event):
|
||||
pass
|
||||
|
||||
def on_user_added(self, event):
|
||||
user_id:str = event.user_id
|
||||
user_data = self.nosys_core.data.get_user(user_id)
|
||||
if not user_data:
|
||||
user_data = self.nosys_core.data.add_user(user_id)
|
||||
|
||||
def on_peer_connected(self, event):
|
||||
peer:Peer = event.peer
|
||||
self.send_info(peer.id)
|
||||
|
||||
def on_module_message(self, event):
|
||||
handler_action = getattr(self, 'on_'+event.data.get("action"))
|
||||
handler_action(event)
|
||||
|
||||
def send_info(self, peer_id):
|
||||
modules = []
|
||||
for key, module in self.nosys_core.modules.modules.items():
|
||||
modules.append({"package":module.package_id, "module":module.module_id})
|
||||
networks = []
|
||||
for network in self.nosys_core.data.list_networks():
|
||||
networks.append({"id":network.get("id")})
|
||||
self.nosys_core.dispatcher.send_message({'action':'info','modules':modules, 'networks':networks}, peer_id, self.id)
|
||||
|
||||
def on_info(self, event):
|
||||
peer: Peer = event.peer
|
||||
modules = event.data['modules']
|
||||
for module in modules:
|
||||
lib = module.get("package")
|
||||
module = module.get("module")
|
||||
peer.modules[(lib, module)] = module
|
||||
self.nosys_core.fire_event(DynamicEvents.module_connection(lib, module), peer=event.peer)
|
||||
networks = event.data['networks']
|
||||
for network in networks:
|
||||
network_id = network.get("id")
|
||||
peer.networks[network_id] = network
|
||||
my_net = self.nosys_core.data.get_network(network_id)
|
||||
if my_net:
|
||||
self.nosys_core.fire_event(DynamicEvents.network_connection(network_id), network_id=network_id, peer=event.peer)
|
||||
|
||||
def on_module_connection(self, event):
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user