Kinda fix networks

This commit is contained in:
Lucas
2026-01-31 17:52:49 +10:00
parent f70af3c4ea
commit 65d8c7d5e2
13 changed files with 97 additions and 29 deletions

View File

@@ -1 +1 @@
{".gitignore": 1748256258.9985344, "api.http": 1750139941.0187607, "connections.py": 1757738624.594908, "dataManager.py": 1766792003.8798084, "dispatcher.py": 1757802996.961887, "events.py": 1757056638.2672198, "index.html": 1752913927.847083, "modules.py": 1757507552.9273007, "networks.py": 1757748986.1507368, "networksApiBlueprint.py": 1757583651.2527168, "noSys.py": 1757749429.9569714, "noSys.zip.bkp": 1755913936.6262422, "noSysApiBlueprint.py": 1757743519.0319538, "noSysCore.py": 1757838163.5684075, "noSysModule.py": 1757065213.3453174, "noSysModuleServer.py": 1756720592.4303212, "noSysSocketio.py": 1756798784.7306013, "peers.py": 1757802573.2807248, "servers.py": 1756114998.854464, "users.py": 1757585178.0426896, "vue\\router.js": 1753274355.3049414, "vue\\api\\noSysApi.js": 1757586249.0933578, "vue\\api\\socketEvents.js": 1753577297.9669068, "vue\\components\\ConnectionsTab.vue": 1757496047.4013255, "vue\\components\\NetworksTabs.vue": 1757748327.563559, "vue\\stores\\noSysStore.js": 1757498732.9446464, "vue\\views\\HomeView.vue": 1757495074.6380558}
{".gitignore": 1748256258.9985344, "api.http": 1750139941.0187607, "connections.py": 1757738624.594908, "dataManager.py": 1769702539.7690244, "dispatcher.py": 1757802996.961887, "events.py": 1757056638.2672198, "index.html": 1752913927.847083, "modules.py": 1757507552.9273007, "networks.py": 1769704242.0337706, "networksApiBlueprint.py": 1769703421.136844, "noSys.py": 1757749429.9569714, "noSys.zip.bkp": 1755913936.6262422, "noSysApiBlueprint.py": 1769334730.8683, "noSysCore.py": 1757838163.5684075, "noSysModule.py": 1769702364.140982, "noSysModuleServer.py": 1756720592.4303212, "noSysSocketio.py": 1756798784.7306013, "peers.py": 1757802573.2807248, "servers.py": 1756114998.854464, "users.py": 1757585178.0426896, "vue\\router.js": 1753274355.3049414, "vue\\api\\noSysApi.js": 1757586249.0933578, "vue\\api\\socketEvents.js": 1753577297.9669068, "vue\\components\\ConnectionsTab.vue": 1769332288.6606996, "vue\\components\\NetworksTabs.vue": 1757748327.563559, "vue\\stores\\noSysStore.js": 1757498732.9446464, "vue\\views\\HomeView.vue": 1757495074.6380558}

View File

@@ -1,6 +1,6 @@
{
"id": "noSys",
"version": 0.14,
"version": 0.149,
"modules": [
{
"id": "noSys",

View File

@@ -24,6 +24,7 @@ class NetworkStatus(Enum):
logger = get_logger("networks")
# TODO FIX ALL THE LOGIC
class Networks(NoSysModule):
""" SOMETHING HERE."""
@@ -46,6 +47,9 @@ class Networks(NoSysModule):
# self.socketio = HandlerSocketio(self)
# self.nosys_core.modules.api.register_socketio(self.socketio)
def create_network(self, name, description, type, modules):
return self.nosys_core.data.create_network(name, description, type, modules)
def user_add_network(self, user_id, network_id):
self.nosys_core.data.user_add_network(user_id, network_id)
@@ -56,7 +60,8 @@ class Networks(NoSysModule):
user_id:str = event.user_id
user_data = self.nosys_core.data.get_user(user_id)
for network_id in user_data.get("networks", []):
self.network_states.get(network_id)["users"].append(user_id)
if self.network_states.get(network_id):
self.network_states.get(network_id)["users"].append(user_id)
def on_nosys_ready(self, event):
self.manage_networks()
@@ -98,6 +103,7 @@ class Networks(NoSysModule):
for network_id, state in self.network_states.items():
if state["managed"]:
self.manage_network(network_id)
# TODO Value from config file
time.sleep(30)
def manage_network(self, network_id):
@@ -125,6 +131,7 @@ class Networks(NoSysModule):
def connect_network_rendezvous_servers(self, network):
network_id = network.get("id")
state = self.network_states.get(network_id)
# TODO FIX USER SELECTION
if state["users"]:
for rendezvous_id in network.get("rendezvous"):
rendezvous = self.nosys_core.data.get_rendezvous(rendezvous_id)

View File

@@ -16,7 +16,7 @@ class Blueprint(ApiBlueprint):
def show():
return self.module.name
@self.blueprint.route('/networks')
@self.blueprint.route('/networks', methods=["GET", "POST"])
def networks():
if request.method == "GET":
networks = []
@@ -27,11 +27,13 @@ class Blueprint(ApiBlueprint):
elif request.method == "POST":
content:dict = request.json
user_id = content["user_id"]
network_id = content["network_id"]
self.module.user_add_network(user_id, network_id)
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_id})
return jsonify({"network_id":network.get("id")})
@self.blueprint.route("/networks/<path:network_id>", methods=["GET", "PUT", "DELETE"])
def network(network_id):
@@ -48,4 +50,31 @@ class Blueprint(ApiBlueprint):
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()

View File

@@ -41,7 +41,10 @@ class Blueprint(ApiBlueprint):
elif request.method == "POST":
content:dict = request.json
network_id = content["network_id"]
self.module.nosys_core.data.user_add_network(user_id, network_id)
return jsonify()
@self.blueprint.route("/peers", methods=["GET", "POST"])
def peers():
@@ -62,8 +65,8 @@ class Blueprint(ApiBlueprint):
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})
peer = self.nosys_core.connections.connect(address=address, user_id=user_pk, bind_address=bind_address)
return jsonify({"connectionId":peer.id})
@self.blueprint.route("/peers/<path:connection_id>", methods=["GET", "POST", "DELETE"])
def peer(connection_id):

View File

@@ -15,7 +15,7 @@ var socket = null
const noSysStore = useNoSysStore()
const ip = ref("n0sys.duckdns.org")
const port = ref("30331")
const port = ref("40441")
const user = ref()
const peers = ref([])
@@ -24,7 +24,7 @@ async function listUsers(){
}
async function connect(){
const response = await noSysApi.connectAddress(user.value.user, ip.value, port.value)
const response = await noSysApi.connectAddress(user.value.id, ip.value, port.value)
}
async function reconnect(connectionId){
@@ -167,7 +167,7 @@ function onTemporaryEvent(data) {
<div>
<Label class="text-gray-300 mb-2 block">User</Label>
<InputComboBox v-model="user" :items="noSysStore.users.value" labelKey="user" keyField="user" class="border-yellow-400/30"></InputComboBox>
<InputComboBox v-model="user" :items="noSysStore.users.value" labelKey="id" keyField="id" class="border-yellow-400/30"></InputComboBox>
</div>
<div class="flex items-end">
<Button @click="connect()" class="w-full bg-yellow-400 text-black hover:bg-yellow-300 font-bold">Connect</Button>