reconstruct packets / organize

canary
Marcus 2021-03-20 10:36:40 -04:00
parent 3bd8634172
commit b0265b7ca7
6 changed files with 44 additions and 60 deletions

View File

@ -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();
})();

View File

@ -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);

View File

@ -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;

View File

@ -5,7 +5,11 @@ class Node extends EventEmitter {
constructor() {
}
static get Node() {
return Node;
}
}
module.exports.Node = Node;
module.exports = Node;

View File

View File

@ -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');
})();