bonktools 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bonk_fullchain.pem +36 -35
- package/examples/host-bot.js +2 -2
- package/package.json +1 -1
- package/scripts/download-cert.js +22 -91
- package/src/bot.js +0 -28
package/bonk_fullchain.pem
CHANGED
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
2
|
+
MIIGcTCCBNmgAwIBAgIQBCOxRTvzzdaopUgt3SZ4TzANBgkqhkiG9w0BAQsFADBg
|
|
3
|
+
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
|
|
4
|
+
Ey5TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2
|
|
5
|
+
MB4XDTI1MDczMTAwMDAwMFoXDTI2MDgzMTIzNTk1OVowFDESMBAGA1UEAwwJKi5i
|
|
6
|
+
b25rLmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1KDYTKGMqzdN
|
|
7
|
+
u0GgjzTFnH5jRxZ9Bkifo0DiD85aGtqO8Q7v9gSe1IFzB0wMUOA4iC1L9ojpoa+9
|
|
8
|
+
T01uepYOHKFV0uzuGrUIA/M+B6ERIXYOETg2PoQnnf00Rh56nZbCZa5IzOELmRZH
|
|
9
|
+
l+QyCgxJL2kQ6qgIEsUYGJELGhobnkNJmw/9+UXHQgZHHh4mOsyYGd7XRvNCMGhR
|
|
10
|
+
iBkKaC6+akk5vlI5/ut6p/qK9T0YMRfYX1jHFtRKbLw77xGYfYYQAV2bk/WNLl54
|
|
11
|
+
HelerG4CX3whQFnlTI38jLc/gArR5ngl5kTvqLqbYpH6l40TNFyd+wMHRjTCwbJR
|
|
12
|
+
Q1vwtECS8QIDAQABo4IC8TCCAu0wHwYDVR0jBBgwFoAUaMASFhgOr872h6YyV6NG
|
|
13
|
+
UV3LBycwHQYDVR0OBBYEFFLjZvdiSom9PXwr0TBVp8MdIVyiMA4GA1UdDwEB/wQE
|
|
14
|
+
AwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
|
|
15
|
+
AjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYBBQUHAgEWF2h0dHBz
|
|
16
|
+
Oi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYBBQUHAQEEeDB2ME8G
|
|
17
|
+
CCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNT
|
|
18
|
+
ZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0MCMGCCsGAQUFBzABhhdodHRw
|
|
19
|
+
Oi8vb2NzcC5zZWN0aWdvLmNvbTAdBgNVHREEFjAUggkqLmJvbmsuaW+CB2Jvbmsu
|
|
20
|
+
aW8wggF7BgorBgEEAdZ5AgQCBIIBawSCAWcBZQB1ANgJVTuUT3r/yBYZb5RPhauw
|
|
21
|
+
+Pxeh1UmDxXRLnK7RUsUAAABmGCymKAAAAQDAEYwRAIgIs1rX9f0wqYwqRNC5zC6
|
|
22
|
+
5WsFnZEFx78gS4ziA7WzOFICIDhbaU1NHW0HKBzSSc//l1qNot3wSpldqbQooyPi
|
|
23
|
+
4Iy+AHUArKswcGzr7IQx9BPS9JFfER5CJEOx8qaMTzwrO6ceAsMAAAGYYLKYPQAA
|
|
24
|
+
BAMARjBEAiBnpJJiIR9R0xa39DSkfn/SfivcxFFel6iKmyYRn4uV8AIgbA7fPn3R
|
|
25
|
+
MSl+IYsFSW02Z9hXSec2QRSyRm/9VH0Eqk4AdQDXbX0Q0af1d8LH6V/XAL/5gskz
|
|
26
|
+
WmXh0LMBcxfAyMVpdwAAAZhgspgYAAAEAwBGMEQCIGyiSjqgSD5SPe94fQksUlGU
|
|
27
|
+
uq/T23HkHifTTLfz7NdbAiAe+HsKwA+Qre/YGxIMvLv6UfyhmcCwAesWIAQIHZBu
|
|
28
|
+
MjANBgkqhkiG9w0BAQsFAAOCAYEAAJBJChB6HYYN6/cBVmvr89rMx+ZmIBemeplt
|
|
29
|
+
LdqDeDgzUxaHIA0x65bTldBW2QnuSobf+h+fnaTHc3/MkNZ3K5PcY6n45e72nAis
|
|
30
|
+
mxnHZWfvsW3SZY3LEyagKdodiqnjdZNA92CRPgkvLey0X4QGW3MPgWws1Fv1dsL/
|
|
31
|
+
u/q0h5NtdX/FuTgJ3IncfAurhSxvWLhoIuMrq4GyXfFU6NeFLOc7qxKzlWopLauZ
|
|
32
|
+
OdUCnhNgVDUU1cojkPdCdII7PRfF8z1mOL2CpjXcT5MglIWExPEOlyw/FYkAM2V6
|
|
33
|
+
xE+DH0eh2K6CYr3WXqAp9/1OY6f13wHfOm3EInX/N1QEVzTjkIuCRuoHL8iuxos0
|
|
34
|
+
5l5K0oZIdLV9Jm+3QXjkF6W4Jv/B8cA/IhimR7+AlpjrCGBj3sz3LIMbQCXAMKy0
|
|
35
|
+
bjxY1MXD/pd6Uw3fVpLMRLV475APxwMB/lhqJuv6kHlgTQ7gwIPwB5fYWHIQzlxe
|
|
36
|
+
t217eGbT7tfXnVw/ywSwbEMgekAx
|
|
37
|
+
-----END CERTIFICATE-----
|
package/examples/host-bot.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const { createBot, LOG_LEVELS } = require("bonkbot");
|
|
2
|
-
|
|
1
|
+
// const { createBot, LOG_LEVELS } = require("bonkbot");
|
|
2
|
+
const { createBot, LOG_LEVELS } = require("../src/index");
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
// Create a bot instance
|
package/package.json
CHANGED
package/scripts/download-cert.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* This
|
|
3
|
+
* Extract certificate chain directly from bonk.io server
|
|
4
|
+
* This avoids curl, HTTP downloads, proxies, and firewall blocks
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
const { execSync } = require('child_process');
|
|
@@ -9,111 +9,42 @@ const fs = require('fs');
|
|
|
9
9
|
const path = require('path');
|
|
10
10
|
|
|
11
11
|
const OUTPUT_FILE = path.join(__dirname, '..', 'bonk_fullchain.pem');
|
|
12
|
-
const
|
|
12
|
+
const BONK_HOST = 'b2ny1.bonk.io';
|
|
13
|
+
const BONK_PORT = 443;
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
function downloadIntermediateCert() {
|
|
18
|
-
try {
|
|
19
|
-
console.log('Downloading intermediate certificate from Sectigo...');
|
|
20
|
-
|
|
21
|
-
// Use HTTP (not HTTPS) to avoid certificate issues
|
|
22
|
-
const intermediateUrl = 'http://crt.sectigo.com/SectigoPublicServerAuthenticationCADVR36.crt';
|
|
23
|
-
|
|
24
|
-
// Download and convert DER to PEM
|
|
25
|
-
const command = `curl -s "${intermediateUrl}" | openssl x509 -inform DER -outform PEM`;
|
|
26
|
-
|
|
27
|
-
const intermediatePem = execSync(command, {
|
|
28
|
-
encoding: 'utf8',
|
|
29
|
-
maxBuffer: 10 * 1024 * 1024
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
if (!intermediatePem || !intermediatePem.includes('BEGIN CERTIFICATE')) {
|
|
33
|
-
throw new Error('Failed to download intermediate certificate');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return intermediatePem;
|
|
37
|
-
} catch (error) {
|
|
38
|
-
console.warn('Warning: Could not download intermediate certificate:', error.message);
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
15
|
+
function main() {
|
|
16
|
+
console.log('Extracting certificate chain directly from bonk.io server...');
|
|
42
17
|
|
|
43
|
-
/**
|
|
44
|
-
* Download root certificate
|
|
45
|
-
*/
|
|
46
|
-
function downloadRootCert() {
|
|
47
18
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const rootUrl = 'http://crt.usertrust.com/USERTrustRSACertificationAuthority.crt';
|
|
19
|
+
// Windows não suporta < /dev/null
|
|
20
|
+
// Usamos echo. para encerrar a conexão corretamente
|
|
21
|
+
const cmd = `echo.|openssl s_client -showcerts -connect ${BONK_HOST}:${BONK_PORT}`;
|
|
52
22
|
|
|
53
|
-
|
|
54
|
-
const command = `curl -s "${rootUrl}" | openssl x509 -inform DER -outform PEM`;
|
|
55
|
-
|
|
56
|
-
const rootPem = execSync(command, {
|
|
23
|
+
const output = execSync(cmd, {
|
|
57
24
|
encoding: 'utf8',
|
|
58
|
-
maxBuffer:
|
|
25
|
+
maxBuffer: 20 * 1024 * 1024
|
|
59
26
|
});
|
|
60
27
|
|
|
61
|
-
|
|
62
|
-
throw new Error('Failed to download root certificate');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return rootPem;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
console.warn('Warning: Could not download root certificate:', error.message);
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Main function to download and save certificate chain
|
|
74
|
-
*/
|
|
75
|
-
function main() {
|
|
76
|
-
console.log('Building Sectigo certificate chain for bonk.io...');
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
const certs = [];
|
|
80
|
-
let certCount = 0;
|
|
81
|
-
|
|
82
|
-
// Download intermediate certificate
|
|
83
|
-
const intermediate = downloadIntermediateCert();
|
|
84
|
-
if (intermediate) {
|
|
85
|
-
certs.push(intermediate);
|
|
86
|
-
certCount++;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Download root certificate
|
|
90
|
-
const root = downloadRootCert();
|
|
91
|
-
if (root) {
|
|
92
|
-
certs.push(root);
|
|
93
|
-
certCount++;
|
|
94
|
-
}
|
|
28
|
+
const certs = output.match(/-----BEGIN CERTIFICATE-----[\s\S]+?-----END CERTIFICATE-----/g);
|
|
95
29
|
|
|
96
|
-
if (certs.length === 0) {
|
|
97
|
-
throw new Error('
|
|
30
|
+
if (!certs || certs.length === 0) {
|
|
31
|
+
throw new Error('No certificates found in server response');
|
|
98
32
|
}
|
|
99
33
|
|
|
100
|
-
|
|
101
|
-
const fullChain = certs.join('\n');
|
|
34
|
+
const uniqueCerts = [...new Set(certs)];
|
|
102
35
|
|
|
103
|
-
|
|
104
|
-
fs.writeFileSync(OUTPUT_FILE, fullChain, 'utf8');
|
|
36
|
+
fs.writeFileSync(OUTPUT_FILE, uniqueCerts.join('\n\n'), 'utf8');
|
|
105
37
|
|
|
106
|
-
console.log(`✓
|
|
107
|
-
console.log(`✓
|
|
108
|
-
console.log('✓
|
|
109
|
-
} catch (
|
|
110
|
-
console.error('
|
|
111
|
-
console.error('\nNote: This script requires curl and openssl to be installed on your system.');
|
|
38
|
+
console.log(`✓ Extracted ${uniqueCerts.length} certificate(s)`);
|
|
39
|
+
console.log(`✓ Full chain saved to: ${OUTPUT_FILE}`);
|
|
40
|
+
console.log('✓ Chain captured directly from the server 🔥');
|
|
41
|
+
} catch (err) {
|
|
42
|
+
console.error('Failed to extract certificates:', err.message);
|
|
112
43
|
process.exit(1);
|
|
113
44
|
}
|
|
114
45
|
}
|
|
115
46
|
|
|
116
|
-
|
|
47
|
+
|
|
117
48
|
if (require.main === module) {
|
|
118
49
|
main();
|
|
119
50
|
}
|
package/src/bot.js
CHANGED
|
@@ -26,8 +26,6 @@ const { LOG_LEVELS } = require("./utils/logger");
|
|
|
26
26
|
// Create logger
|
|
27
27
|
const logger = createLogger('BonkBot');
|
|
28
28
|
|
|
29
|
-
// Create HTTPS agent for axios with certificate verification disabled
|
|
30
|
-
// NOTE: bonk.io servers use Sectigo certificates with incomplete chains
|
|
31
29
|
const httpsAgent = new https.Agent({
|
|
32
30
|
rejectUnauthorized: false
|
|
33
31
|
});
|
|
@@ -1307,25 +1305,6 @@ class BonkBot {
|
|
|
1307
1305
|
return true
|
|
1308
1306
|
}
|
|
1309
1307
|
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
/**
|
|
1314
|
-
*
|
|
1315
|
-
* User callable methods (the bot api)
|
|
1316
|
-
*
|
|
1317
|
-
*/
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
/**
|
|
1326
|
-
* Clean up resources
|
|
1327
|
-
* @private
|
|
1328
|
-
*/
|
|
1329
1308
|
stopBot() {
|
|
1330
1309
|
this.connected = false;
|
|
1331
1310
|
|
|
@@ -1341,13 +1320,6 @@ class BonkBot {
|
|
|
1341
1320
|
}
|
|
1342
1321
|
|
|
1343
1322
|
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
/**
|
|
1348
|
-
* Send a chat message
|
|
1349
|
-
* @param {string} message - Message to send
|
|
1350
|
-
*/
|
|
1351
1323
|
async chat(message) {
|
|
1352
1324
|
this.checkConnection();
|
|
1353
1325
|
await this.sendMessage(CLIENT_MESSAGE_TYPES.CHAT_MESSAGE, {
|