const { Client } = require("../Client.js"); let {addService, addListener} = require("../WebSocket.js"); addListener('disconnect',(global, xClient)=>{ for (const pair of xClient.pairs) { } }) addService(({ client, message, end, next })=>{ let {type,username,password,to,value} = message; switch(type) { case "auth/pair-system":{ if(value == 'everybody') { client.requiredPair = true; end({status:"success"}); } if(value == 'disable') { client.requiredPair = false; end({status:"success"}); } break; } case "my/socketid":{ end(client.id); break; } case 'auth/public':{ client.requiredPair = false; return end({ value: 'success', mode: 'public' }) } case 'auth/private':{ client.requiredPair = true; return end({ value: 'success', mode: 'private' }) } case 'request/pair':{ if(Client.clients.has(to)){ return end({ status: 'fail', message: 'CLIENT-NOT-FOUND' }) }; let pairclient = Client.clients.get(to); if(pairclient.pairs.has(client.id)) { return end({ status: 'success', message: 'ALREADY-PAIRED' }) } if(client.pairs.add(to)) { return end({ status: 'fail', message: 'ALREADY-REQUESTED' }) }; end({ status: 'success', message: 'REQUESTED' }) client.peerRequest(pairclient); break; } case 'accept/pair':{ if(Client.clients.has(to)){ return end({ status: 'fail', message: 'CLIENT-NOT-FOUND' }) }; let pairclient = Client.clients.get(to); if(pairclient.pairs.has(client.id)) { return end({ status: 'success', message: 'ALREADY-PAIRED' }) } if(!client.pairs.has(to)) { return end({ status: 'fail', message: 'NOT-REQUESTED-PAIR' }) } client.acceptPeerRequest(pairclient); break; } case 'reject/pair':{ if(Client.clients.has(to)){ return end({ status: 'fail', message: 'CLIENT-NOT-FOUND' }) }; let pairclient = Client.clients.get(to); if(pairclient.pairs.has(client.id)) { return end({ status: 'success', message: 'ALREADY-PAIRED' }) } if(!client.pairs.has(to)) { return end({ status: 'fail', message: 'NOT-REQUESTED-PAIR' }) } client.rejectPeerRequest(pairclient); break; } case 'pair/list':{ end({ type:'pair/list', value: pairList }) break; } case 'auth/check':{ let auth = client.store.has('user'); return end({ value: auth }) } case 'auth/login':{ if(username == '*' && password == '*') { return end({ status: 'success' }) }else{ return end({ status: 'fail' }) } } case 'auth/logout':{ let auth = client.store.has('user'); if(auth) { client.store.delete('user'); return end({ status: 'success' }) }else{ return end({ status: 'fail' }) } } default:{ next(); } } });