MCPcopy Create free account
hub / github.com/UnsignedInt8/LightSword / start

Method start

server/server.ts:62–127  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

60 }
61
62 start() {
63 let me = this;
64
65 let server = net.createServer(async (client) => {
66 if (me.blacklist.has(client.remoteAddress) && me.blacklist.get(client.remoteAddress).size > 20) return client.dispose();
67
68 let data = await client.readAsync();
69 if (!data) return client.dispose();
70
71 let meta = cryptoEx.SupportedCiphers[me.cipherAlgorithm];
72 if (!meta) meta = cryptoEx.SupportedCiphers[defaultCipherAlgorithm];
73 let ivLength = meta[1];
74
75 if (data.length < ivLength) {
76 console.warn(client.remoteAddress, 'Malicious Access');
77 return me.addToBlacklist(client);
78 }
79
80 let iv = data.slice(0, ivLength);
81 let decipher = cryptoEx.createDecipher(me.cipherAlgorithm, me.password, iv);
82
83 let et = data.slice(ivLength, data.length);
84 let dt = Buffer.concat([decipher.update(et), decipher.final()]);
85
86 if (dt.length < 2) {
87 console.warn(client.remoteAddress, 'Malicious Access')
88 return me.addToBlacklist(client);
89 }
90
91 let vpnType = dt[0];
92 let paddingSize = dt[1];
93
94 let options = {
95 iv,
96 password: me.password,
97 cipherAlgorithm: me.cipherAlgorithm,
98 timeout: me.timeout,
99 xorNum: paddingSize,
100 speed: me.speed,
101 ivLength,
102 };
103
104 let request = dt.slice(2 + paddingSize, data.length);
105
106 let handler = me.requestHandlers.get(vpnType);
107 if (!handler) return me.addToBlacklist(client);
108
109 let handled = handler(client, request, options);
110
111 if (handled) return;
112 me.addToBlacklist(client);
113 });
114
115 this.server = server;
116 server.listen(this.port);
117 server.on('error', (err) => {
118 console.error(err.message);
119 me.stop();

Callers 2

constructorMethod · 0.95
listenDaemonCommandsFunction · 0.45

Calls 15

startRemainingTimerMethod · 0.95
createServerMethod · 0.80
hasMethod · 0.80
warnMethod · 0.80
addToBlacklistMethod · 0.80
sliceMethod · 0.80
onMethod · 0.80
errorMethod · 0.80
stopMethod · 0.80
clearMethod · 0.80
getMethod · 0.65
disposeMethod · 0.65

Tested by

no test coverage detected