@prototypevip/baileys 0.1.1 → 0.1.3
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/lib/Defaults/index.js +3 -3
- package/lib/Signal/Group/group_cipher.js +1 -1
- package/lib/Signal/Group/keyhelper.js +1 -1
- package/lib/Signal/Group/sender-chain-key.js +1 -1
- package/lib/Signal/Group/sender-key-message.js +1 -1
- package/lib/Signal/Group/sender-message-key.js +1 -1
- package/lib/Signal/libsignal-wasm/LICENSE +621 -0
- package/lib/Signal/libsignal-wasm/NOTICE.md +11 -0
- package/lib/Signal/libsignal-wasm/README.md +64 -0
- package/lib/Signal/libsignal-wasm/index.d.ts +55 -0
- package/lib/Signal/libsignal-wasm/index.js +14 -0
- package/lib/Signal/libsignal-wasm/protos/WhisperTextProtocol.proto +28 -0
- package/lib/Signal/libsignal-wasm/src/WhisperTextProtocol.js +931 -0
- package/lib/Signal/libsignal-wasm/src/base_key_type.js +7 -0
- package/lib/Signal/libsignal-wasm/src/chain_type.js +6 -0
- package/lib/Signal/libsignal-wasm/src/crypto.d.ts +19 -0
- package/lib/Signal/libsignal-wasm/src/crypto.js +77 -0
- package/lib/Signal/libsignal-wasm/src/curve.d.ts +22 -0
- package/lib/Signal/libsignal-wasm/src/curve.js +69 -0
- package/lib/Signal/libsignal-wasm/src/errors.js +33 -0
- package/lib/Signal/libsignal-wasm/src/keyhelper.js +45 -0
- package/lib/Signal/libsignal-wasm/src/numeric_fingerprint.js +72 -0
- package/lib/Signal/libsignal-wasm/src/protobufs.js +5 -0
- package/lib/Signal/libsignal-wasm/src/protocol_address.js +40 -0
- package/lib/Signal/libsignal-wasm/src/queue_job.js +68 -0
- package/lib/Signal/libsignal-wasm/src/session_builder.js +162 -0
- package/lib/Signal/libsignal-wasm/src/session_cipher.js +336 -0
- package/lib/Signal/libsignal-wasm/src/session_record.js +316 -0
- package/lib/Signal/libsignal.js +2 -2
- package/lib/Socket/index.js +33 -1
- package/lib/Socket/messages-send.js +61 -7
- package/lib/Store/prototype-store.js +34 -22
- package/lib/Utils/crypto.js +1 -1
- package/lib/Utils/generics.js +4 -27
- package/lib/Utils/index.js +2 -0
- package/lib/Utils/integrity-guard.js +281 -0
- package/lib/Utils/interactive-message-handler.js +28 -8
- package/lib/Utils/socket-guard.js +154 -0
- package/package.json +1 -2
|
@@ -3,10 +3,11 @@ import crypto from 'crypto';
|
|
|
3
3
|
import * as Utils_1 from '../Utils/index.js';
|
|
4
4
|
|
|
5
5
|
export default class InteractiveMessageHandler {
|
|
6
|
-
constructor(utils, waUploadToServer, relayMessageFn) {
|
|
6
|
+
constructor(utils, waUploadToServer, relayMessageFn, emitUpsert) {
|
|
7
7
|
this.utils = utils;
|
|
8
8
|
this.relayMessage = relayMessageFn;
|
|
9
9
|
this.waUploadToServer = waUploadToServer;
|
|
10
|
+
this.emitUpsert = typeof emitUpsert === "function" ? emitUpsert : () => {};
|
|
10
11
|
|
|
11
12
|
this.bail = {
|
|
12
13
|
generateWAMessageContent: this.utils.generateWAMessageContent || Utils_1.generateWAMessageContent,
|
|
@@ -289,8 +290,10 @@ export default class InteractiveMessageHandler {
|
|
|
289
290
|
|
|
290
291
|
await this.relayMessage(jid, album.message, {
|
|
291
292
|
messageId: album.key.id,
|
|
293
|
+
skipStoreEmit: true,
|
|
292
294
|
});
|
|
293
|
-
|
|
295
|
+
this.emitUpsert(album);
|
|
296
|
+
|
|
294
297
|
for (let content of array) {
|
|
295
298
|
const img = await this.utils.generateWAMessage(jid, content, {
|
|
296
299
|
upload: this.waUploadToServer,
|
|
@@ -347,6 +350,7 @@ export default class InteractiveMessageHandler {
|
|
|
347
350
|
|
|
348
351
|
await this.relayMessage(jid, img.message, {
|
|
349
352
|
messageId: img.key.id,
|
|
353
|
+
skipStoreEmit: true,
|
|
350
354
|
quoted: {
|
|
351
355
|
key: {
|
|
352
356
|
remoteJid: album.key.remoteJid,
|
|
@@ -357,6 +361,7 @@ export default class InteractiveMessageHandler {
|
|
|
357
361
|
message: album.message,
|
|
358
362
|
},
|
|
359
363
|
});
|
|
364
|
+
this.emitUpsert(img);
|
|
360
365
|
}
|
|
361
366
|
return album;
|
|
362
367
|
}
|
|
@@ -407,8 +412,10 @@ export default class InteractiveMessageHandler {
|
|
|
407
412
|
}, { quoted });
|
|
408
413
|
|
|
409
414
|
await this.relayMessage(jid, msg.message, {
|
|
410
|
-
messageId: msg.key.id
|
|
415
|
+
messageId: msg.key.id,
|
|
416
|
+
skipStoreEmit: true,
|
|
411
417
|
});
|
|
418
|
+
this.emitUpsert(msg);
|
|
412
419
|
return msg;
|
|
413
420
|
}
|
|
414
421
|
|
|
@@ -431,8 +438,10 @@ export default class InteractiveMessageHandler {
|
|
|
431
438
|
});
|
|
432
439
|
|
|
433
440
|
await this.relayMessage(jid, msg.message, {
|
|
434
|
-
messageId: msg.key.id
|
|
441
|
+
messageId: msg.key.id,
|
|
442
|
+
skipStoreEmit: true,
|
|
435
443
|
});
|
|
444
|
+
this.emitUpsert(msg);
|
|
436
445
|
|
|
437
446
|
return msg;
|
|
438
447
|
}
|
|
@@ -463,16 +472,27 @@ export default class InteractiveMessageHandler {
|
|
|
463
472
|
}
|
|
464
473
|
}
|
|
465
474
|
|
|
475
|
+
const messageId = this.bail.generateMessageID();
|
|
466
476
|
let msg = {
|
|
477
|
+
key: {
|
|
478
|
+
remoteJid: jid,
|
|
479
|
+
fromMe: true,
|
|
480
|
+
id: messageId,
|
|
481
|
+
},
|
|
467
482
|
message: {
|
|
468
483
|
groupStatusMessageV2: {
|
|
469
484
|
message: waMsgContent.message || waMsgContent
|
|
470
485
|
}
|
|
471
|
-
}
|
|
486
|
+
},
|
|
487
|
+
messageTimestamp: Math.floor(Date.now() / 1000),
|
|
472
488
|
};
|
|
473
489
|
|
|
474
|
-
|
|
475
|
-
messageId
|
|
490
|
+
await this.relayMessage(jid, msg.message, {
|
|
491
|
+
messageId,
|
|
492
|
+
skipStoreEmit: true,
|
|
476
493
|
});
|
|
494
|
+
this.emitUpsert(msg);
|
|
495
|
+
|
|
496
|
+
return msg;
|
|
477
497
|
}
|
|
478
|
-
}
|
|
498
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* socket-guard.js
|
|
5
|
+
* منقول من حماية "protoGuard" اللي كانت جوه بوت Proto.Vip، ونقلناها هنا
|
|
6
|
+
* جوه المكتبه نفسها عشان:
|
|
7
|
+
* 1) الختم بقى تلقائي جوه makeWASocket() نفسها — مفيش استدعاء يدوي
|
|
8
|
+
* ممكن يتنسى (كان قبل كده بينادى يدوي من جوه patch.js).
|
|
9
|
+
* 2) أي بوت تاني يستخدم المكتبه دي يقدر ياخد نفس الحمايه من غير ما
|
|
10
|
+
* يعيد كتابتها.
|
|
11
|
+
*
|
|
12
|
+
* 1) ختم السوكت الرسمي — لو اتشال أو اتغير التوقيع، البوت بيتوقف.
|
|
13
|
+
* 2) محاكاة الكتابة قبل تنفيذ أي أمر (مستقلة عن Anti-Ban).
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import fs from "fs";
|
|
17
|
+
import path from "path";
|
|
18
|
+
|
|
19
|
+
const PROTO_MARK = Symbol.for("proto.vip.socket.mark");
|
|
20
|
+
const PROTO_MARK_VALUE = (() => {
|
|
21
|
+
// قيمة مشتقة — مش نص صريح في الكود
|
|
22
|
+
const a = [0x50, 0x52, 0x4f, 0x54, 0x4f]; // PROTO
|
|
23
|
+
const b = [0x56, 0x49, 0x50]; // VIP
|
|
24
|
+
return Buffer.from([...a, 0x2e, ...b]).toString("base64"); // "UFJPVE8uVklQ"
|
|
25
|
+
})();
|
|
26
|
+
|
|
27
|
+
function getKillFile(config) {
|
|
28
|
+
const rel = (config && config.killFilePath) || path.join("database", ".proto_kill");
|
|
29
|
+
return path.isAbsolute(rel) ? rel : path.join(process.cwd(), rel);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function isKilled(config = {}) {
|
|
33
|
+
try {
|
|
34
|
+
return fs.existsSync(getKillFile(config));
|
|
35
|
+
} catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function writeKill(config = {}, reason = "socket_tamper") {
|
|
41
|
+
try {
|
|
42
|
+
const killFile = getKillFile(config);
|
|
43
|
+
const dir = path.dirname(killFile);
|
|
44
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
45
|
+
fs.writeFileSync(killFile, JSON.stringify({ at: Date.now(), reason }), "utf8");
|
|
46
|
+
} catch {}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* ختم السوكت — بتتنادى تلقائي جوه makeWASocket()، مش محتاجه تتنادى يدوي.
|
|
51
|
+
*/
|
|
52
|
+
function stampSocket(sock) {
|
|
53
|
+
if (!sock || typeof sock !== "object") return sock;
|
|
54
|
+
try {
|
|
55
|
+
if (!(PROTO_MARK in sock)) {
|
|
56
|
+
Object.defineProperty(sock, PROTO_MARK, {
|
|
57
|
+
value: PROTO_MARK_VALUE,
|
|
58
|
+
enumerable: false,
|
|
59
|
+
configurable: false,
|
|
60
|
+
writable: false,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (!("__protoVip" in sock)) {
|
|
64
|
+
Object.defineProperty(sock, "__protoVip", {
|
|
65
|
+
value: true,
|
|
66
|
+
enumerable: false,
|
|
67
|
+
configurable: false,
|
|
68
|
+
writable: false,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
} catch {
|
|
72
|
+
// لو اتعرّف قبل كده
|
|
73
|
+
}
|
|
74
|
+
return sock;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* التحقق إن السوكت هو سوكت رسمي مختوم من نفس المكتبه.
|
|
79
|
+
*/
|
|
80
|
+
function verifySocket(sock, config = {}) {
|
|
81
|
+
if (isKilled(config)) return false;
|
|
82
|
+
if (!sock || typeof sock !== "object") return false;
|
|
83
|
+
try {
|
|
84
|
+
if (sock[PROTO_MARK] !== PROTO_MARK_VALUE) return false;
|
|
85
|
+
if (sock.__protoVip !== true) return false;
|
|
86
|
+
if (typeof sock.sendMessage !== "function") return false;
|
|
87
|
+
return true;
|
|
88
|
+
} catch {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* لو السوكت مش سليم: يبعت رساله تحذير (قابله للتخصيص عبر config.killMessage)
|
|
95
|
+
* ويقفل البوت للأبد.
|
|
96
|
+
*/
|
|
97
|
+
async function enforceSocketOrDie(sock, chatId, config = {}) {
|
|
98
|
+
if (verifySocket(sock, config)) return true;
|
|
99
|
+
|
|
100
|
+
writeKill(config);
|
|
101
|
+
|
|
102
|
+
const msg = config.killMessage || "لا يمكنك استخدام هذا بوت";
|
|
103
|
+
try {
|
|
104
|
+
if (sock && typeof sock.sendMessage === "function" && chatId) {
|
|
105
|
+
await sock.sendMessage(chatId, { text: msg });
|
|
106
|
+
}
|
|
107
|
+
} catch {}
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
console.error("[SOCKET-GUARD] Socket integrity failed — bot disabled permanently.");
|
|
111
|
+
} catch {}
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
try {
|
|
114
|
+
process.exit(1);
|
|
115
|
+
} catch {}
|
|
116
|
+
}, 1500);
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* محاكاة الكتابة قبل تنفيذ الأمر — شغاله حتى لو Anti-Ban مقفول.
|
|
122
|
+
*/
|
|
123
|
+
async function simulateTyping(sock, chatId, minMs = 400, maxMs = 1400) {
|
|
124
|
+
if (!sock || !chatId) return;
|
|
125
|
+
try {
|
|
126
|
+
if (typeof sock.sendPresenceUpdate === "function") {
|
|
127
|
+
await sock.sendPresenceUpdate("composing", chatId);
|
|
128
|
+
} else if (typeof sock.presenceSubscribe === "function") {
|
|
129
|
+
try {
|
|
130
|
+
await sock.presenceSubscribe(chatId);
|
|
131
|
+
} catch {}
|
|
132
|
+
}
|
|
133
|
+
} catch {}
|
|
134
|
+
|
|
135
|
+
const delay = minMs + Math.floor(Math.random() * Math.max(1, maxMs - minMs));
|
|
136
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
if (typeof sock.sendPresenceUpdate === "function") {
|
|
140
|
+
await sock.sendPresenceUpdate("paused", chatId);
|
|
141
|
+
}
|
|
142
|
+
} catch {}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export {
|
|
146
|
+
stampSocket,
|
|
147
|
+
verifySocket,
|
|
148
|
+
enforceSocketOrDie,
|
|
149
|
+
simulateTyping,
|
|
150
|
+
isKilled,
|
|
151
|
+
writeKill,
|
|
152
|
+
PROTO_MARK,
|
|
153
|
+
PROTO_MARK_VALUE,
|
|
154
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prototypevip/baileys",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Baileys fork (@prototypevip/baileys) — clean, without anti-ban, group encryption disabled (like 0.0.8)",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -46,7 +46,6 @@
|
|
|
46
46
|
"async-mutex": "^0.5.0",
|
|
47
47
|
"fflate": "^0.8.2",
|
|
48
48
|
"fluent-ffmpeg": "^2.1.3",
|
|
49
|
-
"libsignal": "github:WhiskeySockets/libsignal-wasm#master",
|
|
50
49
|
"lru-cache": "^11.2.6",
|
|
51
50
|
"music-metadata": "^11.7.0",
|
|
52
51
|
"p-queue": "^9.1.0",
|