@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.
Files changed (39) hide show
  1. package/lib/Defaults/index.js +3 -3
  2. package/lib/Signal/Group/group_cipher.js +1 -1
  3. package/lib/Signal/Group/keyhelper.js +1 -1
  4. package/lib/Signal/Group/sender-chain-key.js +1 -1
  5. package/lib/Signal/Group/sender-key-message.js +1 -1
  6. package/lib/Signal/Group/sender-message-key.js +1 -1
  7. package/lib/Signal/libsignal-wasm/LICENSE +621 -0
  8. package/lib/Signal/libsignal-wasm/NOTICE.md +11 -0
  9. package/lib/Signal/libsignal-wasm/README.md +64 -0
  10. package/lib/Signal/libsignal-wasm/index.d.ts +55 -0
  11. package/lib/Signal/libsignal-wasm/index.js +14 -0
  12. package/lib/Signal/libsignal-wasm/protos/WhisperTextProtocol.proto +28 -0
  13. package/lib/Signal/libsignal-wasm/src/WhisperTextProtocol.js +931 -0
  14. package/lib/Signal/libsignal-wasm/src/base_key_type.js +7 -0
  15. package/lib/Signal/libsignal-wasm/src/chain_type.js +6 -0
  16. package/lib/Signal/libsignal-wasm/src/crypto.d.ts +19 -0
  17. package/lib/Signal/libsignal-wasm/src/crypto.js +77 -0
  18. package/lib/Signal/libsignal-wasm/src/curve.d.ts +22 -0
  19. package/lib/Signal/libsignal-wasm/src/curve.js +69 -0
  20. package/lib/Signal/libsignal-wasm/src/errors.js +33 -0
  21. package/lib/Signal/libsignal-wasm/src/keyhelper.js +45 -0
  22. package/lib/Signal/libsignal-wasm/src/numeric_fingerprint.js +72 -0
  23. package/lib/Signal/libsignal-wasm/src/protobufs.js +5 -0
  24. package/lib/Signal/libsignal-wasm/src/protocol_address.js +40 -0
  25. package/lib/Signal/libsignal-wasm/src/queue_job.js +68 -0
  26. package/lib/Signal/libsignal-wasm/src/session_builder.js +162 -0
  27. package/lib/Signal/libsignal-wasm/src/session_cipher.js +336 -0
  28. package/lib/Signal/libsignal-wasm/src/session_record.js +316 -0
  29. package/lib/Signal/libsignal.js +2 -2
  30. package/lib/Socket/index.js +33 -1
  31. package/lib/Socket/messages-send.js +61 -7
  32. package/lib/Store/prototype-store.js +34 -22
  33. package/lib/Utils/crypto.js +1 -1
  34. package/lib/Utils/generics.js +4 -27
  35. package/lib/Utils/index.js +2 -0
  36. package/lib/Utils/integrity-guard.js +281 -0
  37. package/lib/Utils/interactive-message-handler.js +28 -8
  38. package/lib/Utils/socket-guard.js +154 -0
  39. 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
- return await this.relayMessage(jid, msg.message, {
475
- messageId: this.bail.generateMessageID()
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.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",