*Add dist
This commit is contained in:
parent
d2ac85ae84
commit
27f7d8103f
|
@ -0,0 +1,9 @@
|
|||
import { Proxy } from "@lumeweb/libhyperproxy";
|
||||
export default class HandshakeProxy extends Proxy {
|
||||
private _node?;
|
||||
constructor({ swarm, listen }: {
|
||||
swarm: any;
|
||||
listen?: boolean;
|
||||
});
|
||||
protected _init(): Promise<void>;
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
// @ts-ignore
|
||||
const node_1 = require("hsd/lib/node");
|
||||
// @ts-ignore
|
||||
const net_1 = require("hsd/lib/net");
|
||||
// @ts-ignore
|
||||
const sodium_universal_1 = __importDefault(require("sodium-universal"));
|
||||
const b4a_1 = __importDefault(require("b4a"));
|
||||
const PROTOCOL = "lumeweb.proxy.handshake";
|
||||
const libhyperproxy_1 = require("@lumeweb/libhyperproxy");
|
||||
class HandshakeProxy extends libhyperproxy_1.Proxy {
|
||||
constructor({ swarm, listen = false }) {
|
||||
super({
|
||||
swarm,
|
||||
listen,
|
||||
autostart: true,
|
||||
protocol: PROTOCOL,
|
||||
async onopen(socket) {
|
||||
const peer = net_1.Peer.fromInbound(self._node.pool.options, socket);
|
||||
peer.connected = false;
|
||||
peer.outbound = true;
|
||||
if (self._node.pool.peers.map.has(peer.hostname()) ||
|
||||
self._node.pool.peers.ids.has(peer.id)) {
|
||||
return { connect: false };
|
||||
}
|
||||
self._node.pool.bindPeer(peer);
|
||||
const open = peer.tryOpen();
|
||||
// @ts-ignore
|
||||
socket.emit("connect");
|
||||
await open;
|
||||
self._node.pool.peers.add(peer);
|
||||
self._node.pool.connectedGroups.add(peer.address.getGroup());
|
||||
self._node.pool.emit("peer", peer);
|
||||
return { connect: false };
|
||||
// self._node.pool.server.emit("connection", socket);
|
||||
},
|
||||
});
|
||||
const self = this;
|
||||
}
|
||||
async _init() {
|
||||
this._node = new node_1.SPVNode({
|
||||
config: false,
|
||||
argv: false,
|
||||
env: false,
|
||||
noDns: true,
|
||||
memory: true,
|
||||
logFile: false,
|
||||
logConsole: true,
|
||||
logLevel: "info",
|
||||
workers: true,
|
||||
network: "main",
|
||||
createServer: libhyperproxy_1.createServer,
|
||||
createSocket: libhyperproxy_1.createSocket,
|
||||
});
|
||||
this._node.http.http.listen = (port, host, cb) => cb();
|
||||
await this._node.open();
|
||||
this._node.pool.connected = true;
|
||||
this._node.startSync();
|
||||
const topic = b4a_1.default.from(PROTOCOL);
|
||||
const topicHash = b4a_1.default.allocUnsafe(32);
|
||||
sodium_universal_1.default.crypto_generichash(topicHash, topic);
|
||||
this.swarm.join(topicHash);
|
||||
}
|
||||
}
|
||||
exports.default = HandshakeProxy;
|
Loading…
Reference in New Issue