2.0.x fixes

This commit is contained in:
2025-02-13 11:55:03 -06:00
parent f0a6db2266
commit a4c7e699e1
12 changed files with 108 additions and 334 deletions

View File

@@ -39,21 +39,21 @@ export default class connection {
this.host_or_ip,
(err) => {
if (err) {
console.log(err);
console.error(err);
return reject(err);
}
this.reject = reject;
this.resolve = resolve;
this.connected = true;
this.setup_socket();
}
);
});
} catch (err) {
return Promise.reject(new Error(`'connect()' failed: ${err}`));
}
this.connected = true;
this.setup_socket();
}
}
@@ -88,6 +88,7 @@ export default class connection {
};
};
this.buffer = null;
const response = new packet(this.password);
response.buffer = new Uint8Array(packet_data);
response
@@ -100,7 +101,7 @@ export default class connection {
}
})
.catch((e) => {
console.log(e);
console.error(e);
const { reject } = complete();
if (reject) {
reject(e);
@@ -118,7 +119,7 @@ export default class connection {
cleanup();
this.connected = false;
console.log(e);
console.error(e);
if (reject) {
reject(e);
}
@@ -132,7 +133,7 @@ export default class connection {
cleanup();
this.connected = false;
console.log('socket closed');
console.warn('socket closed');
if (reject) {
reject(new Error('socket closed'));
}
@@ -149,7 +150,7 @@ export default class connection {
this.connected = false;
}
} catch (e) {
console.log(e);
console.error(e);
}
}
@@ -160,7 +161,7 @@ export default class connection {
packet.encode_top_utf8(constants.instance_id);
packet.encode_top_ui32(0); // Service flags
packet.encode_top_utf8(constants.get_version());
packet.encode_top_utf8(nonce);
packet.encode_top_utf8(this.nonce);
await packet.encrypt();
packet.encode_top_ui32(packet.buffer.length);
return new Promise((resolve, reject) => {

View File

@@ -1,69 +0,0 @@
import Pool from 'socket-pool';
import connection from './connection';
export default class connection_pool {
constructor(pool_size, host_or_ip, port, password) {
this.host_or_ip = host_or_ip;
this.port = port;
this.password = password;
if (pool_size > 1) {
this.pool = new Pool({
connect: { host: host_or_ip, port: port },
connectTimeout: 5000,
pool: { max: pool_size, min: 2 },
});
} else {
throw new Error("'pool_size' must be > 1");
}
}
host_or_ip = '';
next_thread_id = 1;
password = '';
port = 20000;
pool;
shutdown = false;
async disconnect() {
await this.pool._pool.drain();
await this.pool._pool.clear();
this.pool = null;
this.shutdown = true;
}
async send(method_name, packet, optional_thread_id) {
try {
const socket = await this.pool.acquire();
if (!socket.thread_id) {
socket.thread_id = this.next_thread_id++;
}
const cleanup = () => {
try {
socket.release();
} catch (err) {
console.log(`'release()' failed: ${err}`);
}
};
try {
const result = await new connection(
this.host_or_ip,
this.port,
this.password,
socket
).send(method_name, packet, optional_thread_id || socket.thread_id);
cleanup();
return result;
} catch (err) {
cleanup();
return Promise.reject(
new Error(`'send(${method_name})' failed: ${err}`)
);
}
} catch (err) {
return Promise.reject(new Error(`'acquire()' socket failed: ${err}`));
}
}
}

View File

@@ -1,6 +1,6 @@
import { randomBytes } from 'crypto';
import { Int64BE, Uint64BE } from 'int64-buffer';
import crypto from 'crypto';
import blake2 from 'blake2';
import { TextEncoder } from 'text-encoding';
import { getCustomEncryption } from '../utils/constants';
import {
@@ -156,7 +156,7 @@ export default class packet {
decrypt = async () => {
try {
let hash = crypto.createHash('sha256');
let hash = blake2.createHash('blake2b', { digestLength: 32 });
hash = hash.update(new TextEncoder().encode(this.token));
const key = Uint8Array.from(hash.digest());
@@ -282,7 +282,7 @@ export default class packet {
encrypt = async (nonce) => {
try {
let hash = crypto.createHash('sha256');
let hash = blake2.createHash('blake2b', { digestLength: 32 });
hash = hash.update(new TextEncoder().encode(this.token));
const key = Uint8Array.from(hash.digest());