diff --git a/client/index.js b/client/index.js deleted file mode 100644 index 35c60d9..0000000 --- a/client/index.js +++ /dev/null @@ -1,26 +0,0 @@ -(async () => { -const { title } = require('../lib/title'); -const net = require('net'); -const os = require('os'); -const log = require('signale'); -const { config } = require('./../package.json'); -const { hri } = require('human-readable-ids'); -const { Profiles } = require('../lib/Profiles'); -const profiles = new Profiles('client'); -const yargs = require('yargs').argv; -const identity = yargs.profile ? - await profiles.get(yargs.profile) : - await profiles.get((await profiles.all())[0]); - -// const id = hri.random(); - -// console.log(id) - -// title(id); -// title(identity.name.replace(/-/g, ' ')); - -// await profiles.create(); - - - -})(); \ No newline at end of file diff --git a/lib/STP/index.js b/lib/STP/index.js index 52fda13..01eba90 100644 --- a/lib/STP/index.js +++ b/lib/STP/index.js @@ -6,7 +6,6 @@ const { KeyExchangePacket, AckPacket } = require('./packets'); -const { rejects } = require('assert'); module.exports.createServer = function({identity = {}, port = 5000} = {}, cb = _ => _) { const server = new Server(identity, port); diff --git a/lib/STP/packets.js b/lib/STP/packets.js index 233ae89..8347897 100644 --- a/lib/STP/packets.js +++ b/lib/STP/packets.js @@ -1,5 +1,3 @@ - - class STPPacket { cmd = 'NOOP'; data = {}; @@ -32,7 +30,43 @@ function basicPacket(commandName) { } } -module.exports.STPPacket = STPPacket; +class ClientsPacket extends STPPacket { + constructor(clients) { + super(); + this.cmd = 'NODES' + this.data.clients = clients; + } +} + +const AckPacket = basicPacket('ACK'); +const GetClientsPacket = basicPacket('QNODES'); + +function reconstructPacket(packet) { + + if(packet.startsWith('\02')) + return reconstructPacket(packet.substr(1)); + if(packet.endsWith('\x03')) + return reconstructPacket(packet.substr(0, packet.length - 1)); + + const obj = JSON.parse(packet); + + switch(obj.cmd) { + case 'KEY': return new KeyExchangePacket(obj.data.key, obj.meta.type); + case 'NODES': return new ClientsPacket(obj.data.clients); + case 'QNODES': return new GetClientsPacket(); + case 'ACK': return new AckPacket(); + + case 'NOOP': return new STPPacket(); + default: throw new TypeError(`Unknown command ${obj.cmd}`); + } + +} + +// module.exports.STPPacket = STPPacket; module.exports.KeyExchangePacket = KeyExchangePacket; -module.exports.AckPacket = basicPacket('ACK') -module.exports.GetClientsPacket = basicPacket('NODES') +module.exports.ClientsPacket = ClientsPacket; + +module.exports.AckPacket = AckPacket; +module.exports.GetClientsPacket = GetClientsPacket; + +module.exports.reconstructPacket = reconstructPacket; \ No newline at end of file diff --git a/lib/node.js b/lib/node.js index 8b76499..f260c5d 100644 --- a/lib/node.js +++ b/lib/node.js @@ -5,7 +5,11 @@ class Node extends EventEmitter { constructor() { } + + static get Node() { + return Node; + } } -module.exports.Node = Node; \ No newline at end of file +module.exports = Node; \ No newline at end of file diff --git a/lib/packet.js b/lib/packet.js deleted file mode 100644 index e69de29..0000000 diff --git a/name-server/index.js b/name-server/index.js deleted file mode 100644 index a146745..0000000 --- a/name-server/index.js +++ /dev/null @@ -1,27 +0,0 @@ -(async () => { -const { config } = require('./../package.json'); -const net = require('net'); -const dns = require('dns'); -const stp = require('../lib/STP'); -const os = require('os'); -const { title } = require('../lib/title'); -const { hri } = require('human-readable-ids'); -const log = require('signale'); -const Keyv = require('keyv'); -const { KeyvFile } = require('keyv-file'); -const kv = new Keyv({ - store: new KeyvFile({ - filename: `${os.tmpdir()}/valnet/name-server/data.json` - }) -}); -const { Identity } = require('./../lib/Identity'); -title('Name Server'); - -const identity = new Identity('name-server', 'default'); - - - - - - -})(); \ No newline at end of file