Files
nosys_libs/noSys/noSysCore.py
2026-01-25 13:55:46 +10:00

142 lines
5.4 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from libs.fspn.utils.wrapper_util import *
from libs.fspn.utils.observable import Observable, Event
from libs.fspn.protocol.server import Server
from libs.fspn.protocol.connection import Connection, EVENTS as CONNECTION_EVENTS, STATUS as CONNECTION_STATUS
from libs.fspn.protocol.security import Security, Pmc
from libs.app.updater import Updater
# from libs.api.api import Api
# from .zechoSocketio import HandlerSocketio
import pathlib
from enum import Enum, auto
import importlib
import logging, traceback
import json
import random, time
import secrets
import os
import sys
from libs.app.common.logging import get_logger, get_logger_buffer
from libs.app.common.paths import ROOT_DIR
from .peers import PeerManager
from .users import UserManager
from .modules import ModuleManager
from libs.app.common.config import Config
from .events import Events
from .connections import ConnectionManager
from .dispatcher import Dispatcher
from .servers import ServerManager
from .dataManager import DataManager
from .networks import Networks
logger = get_logger(buffer=True)
class NoSysCore(Observable):
def __init__(self):
super().__init__()
def start(self):
logger.info(f"--------------- Starting NoSys ---------------")
self.peers = PeerManager(self)
self.users = UserManager(self)
self.config = Config()
self.data = DataManager(self)
self.connections = ConnectionManager(self)
self.dispatcher = Dispatcher(self)
self.servers = ServerManager(self)
self.modules = ModuleManager(self)
self.modules.setup()
self.fire_event(Events.READY)
# self.test()
def restart_app(self):
logger.warning("Restarting...")
os.execv(sys.executable, [sys.executable] + sys.argv)
# ------------------------------------------------------------------------------------------
def wait_user(self):
while True:
if self.users.users:
user_id = random.choice(list(self.users.users.keys()))
break
time.sleep(1)
return user_id
def test_connection(self, user_id):
p1= random.randint(46600, 49000)
p2 = random.randint(46600, 49000)
c1 = self.connections.connect(("127.0.0.1", p1), user_id, ("127.0.0.1", p2))
c2 = self.connections.connect(("127.0.0.1", p2), user_id, ("127.0.0.1", p1))
p1 = self.peers.get_peer(c1)
p2 = self.peers.get_peer(c2)
return p1,p2
def test_rendezvous(self, user_id):
from libs.rendezvous.rendezvousServer import RendezvousServer
rendezvous_server : RendezvousServer = self.modules.get("rendezvous", "rendezvousServer")
rendezvous_server.run_server(user_id)
time.sleep(2)
from libs.rendezvous.rendezvousClient import RendezvousClient
rendezvous_client : RendezvousClient = self.modules.get("rendezvous", "rendezvousClient")
rendezvous_client.connect_to_server(("localhost", 40441), user_id)
rendezvous_client.connect_to_server(("localhost", 40441), user_id)
def test_nosys(self):
pass
def test(self):
from .noSys import NoSys
nosys : NoSys = self.modules.get("noSys", "noSys")
# try:
# self.data.add_rendezvous("r1", "127.0.0.1:40441")
# except:
# pass
# try:
# net = self.data.create_network("test", "network for tests", "open_forum", [nosys.name])
# except:
# pass
# self.data.network_assign_rendezvous(net.get("id"), "r1")
user_id = self.wait_user()
from libs.rendezvous.rendezvousServer import RendezvousServer
rendezvous_server : RendezvousServer = self.modules.get("rendezvous", "rendezvousServer")
rendezvous_server.run_server(user_id)
# time.sleep(2)
# self.data.user_add_network(user_id, "629985fd999a675072a2e3f22f74e60c62e8c5b8efb21478c9b04e7ff2fe9779")
# peer1, peer2 = self.test_connection(user_id)
# from libs.fileTransfer.fileTransfer import FileTransfer
# file_transfer:FileTransfer = self.modules[("fileTransfer", "fileTransfer")]
# file_transfer.subscribe_module_file_events(self.module_id, self.on_file_event)
# file_transfer.send_file(r"C:\Users\lucas\Videos\Captures\Call of Duty® 2025-07-25 10-23-55.mp4", c2, self.module_id)
# def on_file_event(self, event):
# from libs.fileTransfer.fileTransfer import File, FileEvents
# file:File = event.file
# file.subscribe_event(FileEvents.ON_FILE_COMPLETED.name, self.on_file_done)
# file.subscribe_event(FileEvents.ON_FILE_ERROR.name, self.on_file_done)
# file.subscribe_event(FileEvents.ON_FILE_UPDATE.name, self.on_file_update)
# file.approve_transfer(True)
# def on_file_done(self, event):
# logger.warning(f"FILE COMPLETED, DO SOMETHING {event.source.__dict__}")
# def on_file_update(self, event):
# file = event.source
# total_true = sum(bool(x) for x in file.parts)
# logger.warning(f"FILE UPDATE, {total_true}|{len(file.parts)}")