Kinda fix networks
This commit is contained in:
@@ -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}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "noSys",
|
||||
"version": 0.14,
|
||||
"version": 0.149,
|
||||
"modules": [
|
||||
{
|
||||
"id": "noSys",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"config.json": 1756118682.0519147, "dataManager.py": 1757749170.2625794, "networks.py": 1757800810.4118917, "networksApiBlueprint.py": 1757750515.750099, "p2private.py": 1757803028.377009, "p2privateApiBlueprint.py": 1757825501.4272363, "vue\\router.js": 1755335641.4535544, "vue\\api\\p2privateApi.js": 1757756279.5687172, "vue\\api\\socketEvents.js": 1757748445.9564493, "vue\\views\\HomeView.vue": 1757756292.8398924}
|
||||
{"config.json": 1756118682.0519147, "dataManager.py": 1769761674.1419418, "networks.py": 1757800810.4118917, "networksApiBlueprint.py": 1757750515.750099, "p2private.py": 1757803028.377009, "p2privateApiBlueprint.py": 1769761706.0132868, "vue\\router.js": 1755335641.4535544, "vue\\api\\p2privateApi.js": 1769764270.9727585, "vue\\api\\socketEvents.js": 1757748445.9564493, "vue\\views\\HomeView.vue": 1769764331.9364705}
|
||||
@@ -44,4 +44,7 @@ class DataManager():
|
||||
|
||||
def update_message(self, hash: str, updates: Dict[str, Any]) -> bool:
|
||||
return self.store.update_item("messages", "hash", hash, updates)
|
||||
|
||||
def get_chat(self, from_user, to_user):
|
||||
return [m for m in self.list_messages() if from_user == m.get("from") and to_user == m.get("to")]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "p2private",
|
||||
"version": 0.043,
|
||||
"version": 0.046,
|
||||
"modules": [
|
||||
{
|
||||
"id": "p2private",
|
||||
|
||||
Binary file not shown.
@@ -30,12 +30,13 @@ class Blueprint(ApiBlueprint):
|
||||
pass
|
||||
|
||||
@self.blueprint.route('/messages/<path:user_id>/<path:friend_id>', methods=["GET", "POST"])
|
||||
def messages():
|
||||
def messages(user_id, friend_id):
|
||||
if request.method == "GET":
|
||||
return jsonify()
|
||||
messages = self.module.data.get_chat(user_id, friend_id)
|
||||
return jsonify(messages)
|
||||
elif request.method == "POST":
|
||||
content:dict = request.json
|
||||
message = self.module.create_message(content["from"], content["to"], content["content"], content["medias"])
|
||||
message = self.module.create_message(user_id, friend_id, content["content"], content["medias"])
|
||||
return jsonify(message)
|
||||
|
||||
# @self.blueprint.route('/posts', methods=["GET", "POST"])
|
||||
|
||||
@@ -37,14 +37,14 @@ export const p2privateApi = {
|
||||
},
|
||||
|
||||
async createMessage(from, to, content, medias){
|
||||
const data = {"from":from, "to":to, "content":content, "medias":medias}
|
||||
const data = {"content":content, "medias":medias}
|
||||
const requestOptions = {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json',},
|
||||
body: JSON.stringify(data),
|
||||
};
|
||||
try {
|
||||
const response = await fetch(p2privateApiUrl+"/messages", requestOptions);
|
||||
const response = await fetch(p2privateApiUrl+"/messages/"+from+"/"+to, requestOptions);
|
||||
if (!response.ok) {
|
||||
const errorText = await response.text();
|
||||
throw new Error(`Error fetching posts: ${response.status} - ${errorText}`);
|
||||
@@ -59,6 +59,21 @@ export const p2privateApi = {
|
||||
}
|
||||
},
|
||||
|
||||
async getChat(from, to){
|
||||
try {
|
||||
const response = await fetch(p2privateApiUrl+"/messages/"+from+"/"+to)
|
||||
if (!response.ok) {
|
||||
const errorText = await response.text();
|
||||
throw new Error(`Error fetching networks: ${response.status} - ${errorText}`);
|
||||
}
|
||||
const result = await response.json()
|
||||
return result;
|
||||
} catch (error) {
|
||||
console.error("Error fetching networks:", error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
// async createPosts(user, content, medias, networks){
|
||||
// const data = {"user": user, "content": content, "medias": medias, "networks": networks};
|
||||
// const requestOptions = {
|
||||
|
||||
@@ -13,6 +13,7 @@ import { p2postApi } from '@/modules/p2post/api/p2postApi';
|
||||
const friends = ref([])
|
||||
const activeFriend = ref(null)
|
||||
const myUsers = ref([])
|
||||
const currentUser = ref({"pubkey":null})
|
||||
|
||||
const relays = ref([])
|
||||
|
||||
@@ -20,31 +21,39 @@ async function getRelays(){
|
||||
relays.value = await p2privateApi.getNetworks()
|
||||
}
|
||||
|
||||
async function getFriends(){
|
||||
async function getFriends(user){
|
||||
const result = await p2privateApi.getFriends()
|
||||
for (const f of result){
|
||||
const m1 = {id:1, senderId:'me', content:"test Meeeeeeeeeeeeeeeeeeeeee", timestamp:new Date(), status:"SENT"}
|
||||
const m2 = {id:2, senderId:'peer', content:"test Peer", status:"RECEIVED", timestamp:new Date(), files:[{name:'file1', type:'image/jpeg', size:123}]}
|
||||
const mes = [m1,m2]
|
||||
const fr = {nickname:'Nickname', unreadCount:5, publicKey:f.pubkey, isOnline:true, messages:mes}
|
||||
const chat = await p2privateApi.getChat(user.pubkey, f.pubkey)
|
||||
const messages = []
|
||||
for (const m of chat){
|
||||
if (m.from === user.pubkey){
|
||||
var senderId = "me"
|
||||
}else{
|
||||
var senderId = "peer"
|
||||
}
|
||||
var message = {id:m.hash, senderId:senderId, content:m.content, timestamp:m.timestamp, status:"SENT"}
|
||||
messages.push(message)
|
||||
}
|
||||
const fr = {nickname:'Nickname', unreadCount:5, publicKey:f.pubkey, isOnline:true, messages:messages}
|
||||
friends.value.push(fr)
|
||||
}
|
||||
}
|
||||
|
||||
async function getMyUsers(){
|
||||
myUsers.value = await p2postApi.getMyUsers()
|
||||
const randomIndex = Math.floor(Math.random() * myUsers.value.length);
|
||||
currentUser.value = myUsers.value[randomIndex]
|
||||
getFriends(currentUser.value)
|
||||
}
|
||||
|
||||
const inputMessageText = ref("")
|
||||
async function createMessage(){
|
||||
const randomIndex = Math.floor(Math.random() * myUsers.value.length);
|
||||
const randomUser = myUsers.value[randomIndex]
|
||||
await p2privateApi.createMessage(randomUser.pubkey, activeFriend.value.publicKey, inputMessageText.value, [])
|
||||
await p2privateApi.createMessage(currentUser.value.pubkey, activeFriend.value.publicKey, inputMessageText.value, [])
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
getRelays()
|
||||
getFriends()
|
||||
getMyUsers()
|
||||
})
|
||||
|
||||
@@ -109,6 +118,7 @@ onMounted(()=>{
|
||||
<UsersIcon class="w-5 h-5 mr-2" />
|
||||
Friends ({{friends.length}})
|
||||
</h3>
|
||||
<span class="text-sm">{{ currentUser.pubkey }}</span>
|
||||
</div>
|
||||
|
||||
<div class="flex-1 overflow-y-auto p-4 space-y-2">
|
||||
|
||||
Reference in New Issue
Block a user