slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.2.7__cp311-cp311-manylinux_2_36_aarch64.whl
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.
Potentially problematic release.
This version of slidge-whatsapp might be problematic. Click here for more details.
- slidge_whatsapp/config.py +3 -0
- slidge_whatsapp/event.go +31 -26
- slidge_whatsapp/gateway.go +13 -9
- slidge_whatsapp/gateway.py +2 -2
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.h +170 -170
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
- slidge_whatsapp/generated/build.py +135 -135
- slidge_whatsapp/generated/whatsapp.c +1496 -1496
- slidge_whatsapp/generated/whatsapp.go +1137 -1137
- slidge_whatsapp/generated/whatsapp.py +1216 -1216
- slidge_whatsapp/generated/whatsapp_go.h +170 -170
- slidge_whatsapp/go.mod +15 -12
- slidge_whatsapp/go.sum +35 -29
- slidge_whatsapp/media/media.go +21 -11
- slidge_whatsapp/session.go +73 -66
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
- slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +76 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
- slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +40 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +119 -37
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +29 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +74 -34
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +61 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +188 -152
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +444 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +78 -42
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +184 -89
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7428 -2151
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +373 -44
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +800 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +72 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1344 -438
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +52 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +25 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +261 -75
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +107 -56
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +13 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +47 -29
- slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
- slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
- slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
- slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
- slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
- slidge_whatsapp/vendor/modules.txt +52 -13
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/METADATA +1 -1
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/RECORD +330 -184
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/WHEEL +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/LICENSE +0 -0
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/entry_points.txt +0 -0
|
@@ -7,29 +7,33 @@
|
|
|
7
7
|
package whatsmeow
|
|
8
8
|
|
|
9
9
|
import (
|
|
10
|
+
"context"
|
|
10
11
|
"fmt"
|
|
11
12
|
"time"
|
|
12
13
|
|
|
14
|
+
"go.mau.fi/util/ptr"
|
|
15
|
+
|
|
13
16
|
waBinary "go.mau.fi/whatsmeow/binary"
|
|
14
17
|
"go.mau.fi/whatsmeow/types"
|
|
15
18
|
"go.mau.fi/whatsmeow/types/events"
|
|
16
19
|
)
|
|
17
20
|
|
|
18
21
|
func (cli *Client) handleReceipt(node *waBinary.Node) {
|
|
19
|
-
|
|
22
|
+
var cancelled bool
|
|
23
|
+
defer cli.maybeDeferredAck(cli.BackgroundEventCtx, node)(&cancelled)
|
|
20
24
|
receipt, err := cli.parseReceipt(node)
|
|
21
25
|
if err != nil {
|
|
22
26
|
cli.Log.Warnf("Failed to parse receipt: %v", err)
|
|
23
27
|
} else if receipt != nil {
|
|
24
28
|
if receipt.Type == types.ReceiptTypeRetry {
|
|
25
29
|
go func() {
|
|
26
|
-
err := cli.handleRetryReceipt(receipt, node)
|
|
30
|
+
err := cli.handleRetryReceipt(cli.BackgroundEventCtx, receipt, node)
|
|
27
31
|
if err != nil {
|
|
28
32
|
cli.Log.Errorf("Failed to handle retry receipt for %s/%s from %s: %v", receipt.Chat, receipt.MessageIDs[0], receipt.Sender, err)
|
|
29
33
|
}
|
|
30
34
|
}()
|
|
31
35
|
}
|
|
32
|
-
cli.dispatchEvent(receipt)
|
|
36
|
+
cancelled = cli.dispatchEvent(receipt)
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
39
|
|
|
@@ -49,7 +53,7 @@ func (cli *Client) handleGroupedReceipt(partialReceipt events.Receipt, participa
|
|
|
49
53
|
cli.Log.Warnf("Failed to parse user node %s in grouped receipt: %v", child.XMLString(), ag.Error())
|
|
50
54
|
continue
|
|
51
55
|
}
|
|
52
|
-
|
|
56
|
+
cli.dispatchEvent(&receipt)
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
|
|
@@ -96,14 +100,17 @@ func (cli *Client) parseReceipt(node *waBinary.Node) (*events.Receipt, error) {
|
|
|
96
100
|
return &receipt, nil
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
func (cli *Client) maybeDeferredAck(node *waBinary.Node) func() {
|
|
103
|
+
func (cli *Client) maybeDeferredAck(ctx context.Context, node *waBinary.Node) func(cancelled ...*bool) {
|
|
100
104
|
if cli.SynchronousAck {
|
|
101
|
-
return func() {
|
|
105
|
+
return func(cancelled ...*bool) {
|
|
106
|
+
if ctx.Err() != nil || (len(cancelled) > 0 && ptr.Val(cancelled[0])) {
|
|
107
|
+
return
|
|
108
|
+
}
|
|
102
109
|
cli.sendAck(node)
|
|
103
110
|
}
|
|
104
111
|
} else {
|
|
105
112
|
go cli.sendAck(node)
|
|
106
|
-
return func() {}
|
|
113
|
+
return func(...*bool) {}
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
116
|
|
|
@@ -118,6 +125,15 @@ func (cli *Client) sendAck(node *waBinary.Node) {
|
|
|
118
125
|
}
|
|
119
126
|
if recipient, ok := node.Attrs["recipient"]; ok {
|
|
120
127
|
attrs["recipient"] = recipient
|
|
128
|
+
|
|
129
|
+
// TODO this hack probably needs to be removed at some point
|
|
130
|
+
recipientJID, ok := recipient.(types.JID)
|
|
131
|
+
if ok && recipientJID.Server == types.BotServer && node.Tag == "message" {
|
|
132
|
+
altRecipient, ok := types.BotJIDMap[recipientJID]
|
|
133
|
+
if ok {
|
|
134
|
+
attrs["recipient"] = altRecipient
|
|
135
|
+
}
|
|
136
|
+
}
|
|
121
137
|
}
|
|
122
138
|
if receiptType, ok := node.Attrs["type"]; node.Tag != "message" && ok {
|
|
123
139
|
attrs["type"] = receiptType
|
|
@@ -160,14 +176,14 @@ func (cli *Client) MarkRead(ids []types.MessageID, timestamp time.Time, chat, se
|
|
|
160
176
|
"t": timestamp.Unix(),
|
|
161
177
|
},
|
|
162
178
|
}
|
|
163
|
-
if chat.Server == types.NewsletterServer || cli.GetPrivacySettings().ReadReceipts == types.PrivacySettingNone {
|
|
179
|
+
if chat.Server == types.NewsletterServer || cli.GetPrivacySettings(context.TODO()).ReadReceipts == types.PrivacySettingNone {
|
|
164
180
|
switch receiptType {
|
|
165
181
|
case types.ReceiptTypeRead:
|
|
166
182
|
node.Attrs["type"] = string(types.ReceiptTypeReadSelf)
|
|
167
183
|
// TODO change played to played-self?
|
|
168
184
|
}
|
|
169
185
|
}
|
|
170
|
-
if !sender.IsEmpty() && chat.Server != types.DefaultUserServer && chat.Server != types.MessengerServer {
|
|
186
|
+
if !sender.IsEmpty() && chat.Server != types.DefaultUserServer && chat.Server != types.HiddenUserServer && chat.Server != types.MessengerServer {
|
|
171
187
|
node.Attrs["participant"] = sender.ToNonAD()
|
|
172
188
|
}
|
|
173
189
|
if len(ids) > 1 {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"f":1},{"f":3,"s":[{"f":2},{"f":3},{"f":8},{"f":11},{"f":17,"s":[{"f":21},{"f":22}]},{"f":25}]},{"f":4,"s":[{"f":1},{"f":16},{"f":17,"s":[{"f":21},{"f":22}]}]},{"f":5,"s":[{"f":3},{"f":4},{"f":5},{"f":16},{"f":17,"s":[{"f":21},{"f":22}]}]},{"f":6,"s":[{"f":1},{"f":17,"s":[{"f":21},{"f":22}]},{"f":30}]},{"f":7,"s":[{"f":2},{"f":7},{"f":10},{"f":17,"s":[{"f":21},{"f":22}]},{"f":20}]},{"f":8,"s":[{"f":2},{"f":7},{"f":9},{"f":17,"s":[{"f":21},{"f":22}]},{"f":21}]},{"f":9,"s":[{"f":2},{"f":6},{"f":7},{"f":13},{"f":17,"s":[{"f":21},{"f":22}]},{"f":20}]},{"f":12,"s":[{"f":1},{"f":2},{"f":14,"m":true},{"f":15}]},{"f":18,"s":[{"f":6},{"f":16},{"f":17,"s":[{"f":21},{"f":22}]}]},{"f":26,"s":[{"f":4},{"f":5},{"f":8},{"f":13},{"f":17,"s":[{"f":21},{"f":22}]}]},{"f":28,"s":[{"f":1},{"f":2},{"f":4},{"f":5},{"f":6},{"f":7,"s":[{"f":21},{"f":22}]}]},{"f":37,"s":[{"f":1,"m":true}]},{"f":49,"s":[{"f":2},{"f":3,"s":[{"f":1},{"f":2}]},{"f":5,"s":[{"f":21},{"f":22}]},{"f":8,"s":[{"f":1},{"f":2}]}]},{"f":53,"s":[{"f":1,"m":true}]},{"f":55,"s":[{"f":1,"m":true}]},{"f":58,"s":[{"f":1,"m":true}]},{"f":59,"s":[{"f":1,"m":true}]},{"f":60,"s":[{"f":2},{"f":3,"s":[{"f":1},{"f":2}]},{"f":5,"s":[{"f":21},{"f":22}]},{"f":8,"s":[{"f":1},{"f":2}]}]},{"f":64,"s":[{"f":2},{"f":3,"s":[{"f":1},{"f":2}]},{"f":5,"s":[{"f":21},{"f":22}]},{"f":8,"s":[{"f":1},{"f":2}]}]},{"f":66,"s":[{"f":2},{"f":6},{"f":7},{"f":13},{"f":17,"s":[{"f":21},{"f":22}]},{"f":20}]},{"f":74,"s":[{"f":1,"m":true}]},{"f":87,"s":[{"f":1,"m":true}]},{"f":88,"s":[{"f":1},{"f":2,"s":[{"f":1}]},{"f":3,"s":[{"f":21},{"f":22}]}]},{"f":92,"s":[{"f":1,"m":true}]},{"f":93,"s":[{"f":1,"m":true}]},{"f":94,"s":[{"f":1,"m":true}]}]
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// Copyright (c) 2025 Tulir Asokan
|
|
2
|
+
//
|
|
3
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
package whatsmeow
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"crypto/hmac"
|
|
11
|
+
"crypto/sha256"
|
|
12
|
+
_ "embed"
|
|
13
|
+
"encoding/binary"
|
|
14
|
+
"encoding/json"
|
|
15
|
+
"sort"
|
|
16
|
+
"sync"
|
|
17
|
+
|
|
18
|
+
"go.mau.fi/util/exerrors"
|
|
19
|
+
"go.mau.fi/util/exstrings"
|
|
20
|
+
|
|
21
|
+
waBinary "go.mau.fi/whatsmeow/binary"
|
|
22
|
+
"go.mau.fi/whatsmeow/proto/waE2E"
|
|
23
|
+
"go.mau.fi/whatsmeow/types"
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
//go:embed reportingfields.json
|
|
27
|
+
var reportingFieldsJSON string
|
|
28
|
+
var getReportingFields = sync.OnceValue(func() (output []reportingField) {
|
|
29
|
+
exerrors.PanicIfNotNil(json.Unmarshal(exstrings.UnsafeBytes(reportingFieldsJSON), &output))
|
|
30
|
+
return
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
type reportingField struct {
|
|
34
|
+
FieldNumber int `json:"f"`
|
|
35
|
+
IsMessage bool `json:"m,omitempty"`
|
|
36
|
+
Subfields []reportingField `json:"s,omitempty"`
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
func (cli *Client) shouldIncludeReportingToken(message *waE2E.Message) bool {
|
|
40
|
+
if !cli.SendReportingTokens {
|
|
41
|
+
return false
|
|
42
|
+
}
|
|
43
|
+
return message.ReactionMessage == nil &&
|
|
44
|
+
message.EncReactionMessage == nil &&
|
|
45
|
+
message.EncEventResponseMessage == nil &&
|
|
46
|
+
message.PollUpdateMessage == nil
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
func (cli *Client) getMessageReportingToken(
|
|
50
|
+
msgProtobuf []byte,
|
|
51
|
+
msg *waE2E.Message,
|
|
52
|
+
senderJID, remoteJID types.JID,
|
|
53
|
+
messageID types.MessageID,
|
|
54
|
+
) waBinary.Node {
|
|
55
|
+
reportingSecret, _ := generateMsgSecretKey(
|
|
56
|
+
EncSecretReportToken, senderJID, messageID, remoteJID,
|
|
57
|
+
msg.GetMessageContextInfo().GetMessageSecret(),
|
|
58
|
+
)
|
|
59
|
+
hasher := hmac.New(sha256.New, reportingSecret)
|
|
60
|
+
hasher.Write(getReportingToken(msgProtobuf))
|
|
61
|
+
return waBinary.Node{
|
|
62
|
+
Tag: "reporting",
|
|
63
|
+
Content: []waBinary.Node{{
|
|
64
|
+
Tag: "reporting_token",
|
|
65
|
+
Attrs: waBinary.Attrs{"v": "2"},
|
|
66
|
+
Content: hasher.Sum(nil)[:16],
|
|
67
|
+
}},
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
func getReportingToken(messageProtobuf []byte) []byte {
|
|
72
|
+
return extractReportingTokenContent(messageProtobuf, getReportingFields())
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Helper to find config for a field number
|
|
76
|
+
func getConfigForField(fields []reportingField, fieldNum int) *reportingField {
|
|
77
|
+
for i := range fields {
|
|
78
|
+
if fields[i].FieldNumber == fieldNum {
|
|
79
|
+
return &fields[i]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return nil
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Protobuf wire types
|
|
86
|
+
const (
|
|
87
|
+
wireVarint = 0
|
|
88
|
+
wire64bit = 1
|
|
89
|
+
wireBytes = 2
|
|
90
|
+
wire32bit = 5
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// Extracts the reporting token content recursively
|
|
94
|
+
func extractReportingTokenContent(data []byte, config []reportingField) []byte {
|
|
95
|
+
type field struct {
|
|
96
|
+
Num int
|
|
97
|
+
Bytes []byte
|
|
98
|
+
}
|
|
99
|
+
var fields []field
|
|
100
|
+
i := 0
|
|
101
|
+
for i < len(data) {
|
|
102
|
+
// Read tag (varint)
|
|
103
|
+
tag, tagLen := binary.Uvarint(data[i:])
|
|
104
|
+
if tagLen <= 0 {
|
|
105
|
+
break // malformed
|
|
106
|
+
}
|
|
107
|
+
fieldNum := int(tag >> 3)
|
|
108
|
+
wireType := int(tag & 0x7)
|
|
109
|
+
fieldCfg := getConfigForField(config, fieldNum)
|
|
110
|
+
fieldStart := i
|
|
111
|
+
i += tagLen
|
|
112
|
+
if fieldCfg == nil {
|
|
113
|
+
// Skip field
|
|
114
|
+
switch wireType {
|
|
115
|
+
case wireVarint:
|
|
116
|
+
_, n := binary.Uvarint(data[i:])
|
|
117
|
+
i += n
|
|
118
|
+
case wire64bit:
|
|
119
|
+
i += 8
|
|
120
|
+
case wireBytes:
|
|
121
|
+
l, n := binary.Uvarint(data[i:])
|
|
122
|
+
i += n + int(l)
|
|
123
|
+
case wire32bit:
|
|
124
|
+
i += 4
|
|
125
|
+
default:
|
|
126
|
+
return nil
|
|
127
|
+
}
|
|
128
|
+
continue
|
|
129
|
+
}
|
|
130
|
+
switch wireType {
|
|
131
|
+
case wireVarint:
|
|
132
|
+
_, n := binary.Uvarint(data[i:])
|
|
133
|
+
i += n
|
|
134
|
+
fields = append(fields, field{Num: fieldNum, Bytes: data[fieldStart:i]})
|
|
135
|
+
case wire64bit:
|
|
136
|
+
i += 8
|
|
137
|
+
fields = append(fields, field{Num: fieldNum, Bytes: data[fieldStart:i]})
|
|
138
|
+
case wireBytes:
|
|
139
|
+
l, n := binary.Uvarint(data[i:])
|
|
140
|
+
valStart := i + n
|
|
141
|
+
valEnd := valStart + int(l)
|
|
142
|
+
if fieldCfg.IsMessage || len(fieldCfg.Subfields) > 0 {
|
|
143
|
+
// Recursively extract subfields
|
|
144
|
+
sub := extractReportingTokenContent(data[valStart:valEnd], fieldCfg.Subfields)
|
|
145
|
+
if len(sub) > 0 {
|
|
146
|
+
// Re-encode tag and length
|
|
147
|
+
buf := make([]byte, 0, tagLen+n+len(sub))
|
|
148
|
+
tagBuf := make([]byte, binary.MaxVarintLen64)
|
|
149
|
+
tagN := binary.PutUvarint(tagBuf, tag)
|
|
150
|
+
lenBuf := make([]byte, binary.MaxVarintLen64)
|
|
151
|
+
lenN := binary.PutUvarint(lenBuf, uint64(len(sub)))
|
|
152
|
+
buf = append(buf, tagBuf[:tagN]...)
|
|
153
|
+
buf = append(buf, lenBuf[:lenN]...)
|
|
154
|
+
buf = append(buf, sub...)
|
|
155
|
+
fields = append(fields, field{Num: fieldNum, Bytes: buf})
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
fields = append(fields, field{Num: fieldNum, Bytes: data[fieldStart:valEnd]})
|
|
159
|
+
}
|
|
160
|
+
i = valEnd
|
|
161
|
+
case wire32bit:
|
|
162
|
+
i += 4
|
|
163
|
+
fields = append(fields, field{Num: fieldNum, Bytes: data[fieldStart:i]})
|
|
164
|
+
default:
|
|
165
|
+
return nil
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Sort by field number
|
|
169
|
+
sort.Slice(fields, func(i, j int) bool { return fields[i].Num < fields[j].Num })
|
|
170
|
+
// Concatenate
|
|
171
|
+
var out []byte
|
|
172
|
+
for _, f := range fields {
|
|
173
|
+
out = append(out, f.Bytes...)
|
|
174
|
+
}
|
|
175
|
+
return out
|
|
176
|
+
}
|
|
@@ -69,7 +69,7 @@ func (cli *Client) getRecentMessage(to types.JID, id types.MessageID) RecentMess
|
|
|
69
69
|
return msg
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
func (cli *Client) getMessageForRetry(receipt *events.Receipt, messageID types.MessageID) (RecentMessage, error) {
|
|
72
|
+
func (cli *Client) getMessageForRetry(ctx context.Context, receipt *events.Receipt, messageID types.MessageID) (RecentMessage, error) {
|
|
73
73
|
msg := cli.getRecentMessage(receipt.Chat, messageID)
|
|
74
74
|
if msg.IsEmpty() {
|
|
75
75
|
waMsg := cli.GetMessageForRetry(receipt.Sender, receipt.Chat, messageID)
|
|
@@ -87,10 +87,12 @@ func (cli *Client) getMessageForRetry(receipt *events.Receipt, messageID types.M
|
|
|
87
87
|
|
|
88
88
|
const recreateSessionTimeout = 1 * time.Hour
|
|
89
89
|
|
|
90
|
-
func (cli *Client) shouldRecreateSession(retryCount int, jid types.JID) (reason string, recreate bool) {
|
|
90
|
+
func (cli *Client) shouldRecreateSession(ctx context.Context, retryCount int, jid types.JID) (reason string, recreate bool) {
|
|
91
91
|
cli.sessionRecreateHistoryLock.Lock()
|
|
92
92
|
defer cli.sessionRecreateHistoryLock.Unlock()
|
|
93
|
-
if
|
|
93
|
+
if contains, err := cli.Store.ContainsSession(ctx, jid.SignalAddress()); err != nil {
|
|
94
|
+
return "", false
|
|
95
|
+
} else if !contains {
|
|
94
96
|
cli.sessionRecreateHistory[jid] = time.Now()
|
|
95
97
|
return "we don't have a Signal session with them", true
|
|
96
98
|
} else if retryCount < 2 {
|
|
@@ -110,7 +112,7 @@ type incomingRetryKey struct {
|
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
// handleRetryReceipt handles an incoming retry receipt for an outgoing message.
|
|
113
|
-
func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.Node) error {
|
|
115
|
+
func (cli *Client) handleRetryReceipt(ctx context.Context, receipt *events.Receipt, node *waBinary.Node) error {
|
|
114
116
|
retryChild, ok := node.GetOptionalChildByTag("retry")
|
|
115
117
|
if !ok {
|
|
116
118
|
return &ElementMissingError{Tag: "retry", In: "retry receipt"}
|
|
@@ -122,7 +124,7 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No
|
|
|
122
124
|
if !ag.OK() {
|
|
123
125
|
return ag.Error()
|
|
124
126
|
}
|
|
125
|
-
msg, err := cli.getMessageForRetry(receipt, messageID)
|
|
127
|
+
msg, err := cli.getMessageForRetry(ctx, receipt, messageID)
|
|
126
128
|
if err != nil {
|
|
127
129
|
return err
|
|
128
130
|
}
|
|
@@ -147,17 +149,12 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No
|
|
|
147
149
|
return nil
|
|
148
150
|
}
|
|
149
151
|
|
|
150
|
-
ownID := cli.getOwnID()
|
|
151
|
-
if ownID.IsEmpty() {
|
|
152
|
-
return ErrNotLoggedIn
|
|
153
|
-
}
|
|
154
|
-
|
|
155
152
|
var fbSKDM *waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage
|
|
156
153
|
var fbDSM *waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage
|
|
157
154
|
if receipt.IsGroup {
|
|
158
155
|
builder := groups.NewGroupSessionBuilder(cli.Store, pbSerializer)
|
|
159
|
-
senderKeyName := protocol.NewSenderKeyName(receipt.Chat.String(),
|
|
160
|
-
signalSKDMessage, err := builder.Create(senderKeyName)
|
|
156
|
+
senderKeyName := protocol.NewSenderKeyName(receipt.Chat.String(), cli.getOwnLID().SignalAddress())
|
|
157
|
+
signalSKDMessage, err := builder.Create(ctx, senderKeyName)
|
|
161
158
|
if err != nil {
|
|
162
159
|
cli.Log.Warnf("Failed to create sender key distribution message to include in retry of %s in %s to %s: %v", messageID, receipt.Chat, receipt.Sender, err)
|
|
163
160
|
}
|
|
@@ -215,10 +212,10 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No
|
|
|
215
212
|
if err != nil {
|
|
216
213
|
return fmt.Errorf("failed to read prekey bundle in retry receipt: %w", err)
|
|
217
214
|
}
|
|
218
|
-
} else if reason, recreate := cli.shouldRecreateSession(retryCount, receipt.Sender); recreate {
|
|
215
|
+
} else if reason, recreate := cli.shouldRecreateSession(ctx, retryCount, receipt.Sender); recreate {
|
|
219
216
|
cli.Log.Debugf("Fetching prekeys for %s for handling retry receipt with no prekey bundle because %s", receipt.Sender, reason)
|
|
220
217
|
var keys map[types.JID]preKeyResp
|
|
221
|
-
keys, err = cli.fetchPreKeys(
|
|
218
|
+
keys, err = cli.fetchPreKeys(ctx, []types.JID{receipt.Sender})
|
|
222
219
|
if err != nil {
|
|
223
220
|
return err
|
|
224
221
|
}
|
|
@@ -245,9 +242,19 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No
|
|
|
245
242
|
var encrypted *waBinary.Node
|
|
246
243
|
var includeDeviceIdentity bool
|
|
247
244
|
if msg.wa != nil {
|
|
248
|
-
|
|
245
|
+
encryptionIdentity := receipt.Sender
|
|
246
|
+
if receipt.Sender.Server == types.DefaultUserServer {
|
|
247
|
+
lidForPN, err := cli.Store.LIDs.GetLIDForPN(ctx, receipt.Sender)
|
|
248
|
+
if err != nil {
|
|
249
|
+
cli.Log.Warnf("Failed to get LID for %s: %v", receipt.Sender, err)
|
|
250
|
+
} else if !lidForPN.IsEmpty() {
|
|
251
|
+
cli.migrateSessionStore(ctx, receipt.Sender, lidForPN)
|
|
252
|
+
encryptionIdentity = lidForPN
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
encrypted, includeDeviceIdentity, err = cli.encryptMessageForDevice(ctx, plaintext, encryptionIdentity, bundle, encAttrs)
|
|
249
256
|
} else {
|
|
250
|
-
encrypted, err = cli.encryptMessageForDeviceV3(&waMsgTransport.MessageTransport_Payload{
|
|
257
|
+
encrypted, err = cli.encryptMessageForDeviceV3(ctx, &waMsgTransport.MessageTransport_Payload{
|
|
251
258
|
ApplicationPayload: &waCommon.SubProtocol{
|
|
252
259
|
Payload: plaintext,
|
|
253
260
|
Version: proto.Int32(FBMessageApplicationVersion),
|
|
@@ -280,7 +287,9 @@ func (cli *Client) handleRetryReceipt(receipt *events.Receipt, node *waBinary.No
|
|
|
280
287
|
}
|
|
281
288
|
var content []waBinary.Node
|
|
282
289
|
if msg.wa != nil {
|
|
283
|
-
content = cli.getMessageContent(
|
|
290
|
+
content = cli.getMessageContent(
|
|
291
|
+
*encrypted, msg.wa, attrs, includeDeviceIdentity, nodeExtraParams{},
|
|
292
|
+
)
|
|
284
293
|
} else {
|
|
285
294
|
content = []waBinary.Node{
|
|
286
295
|
*encrypted,
|
|
@@ -325,7 +334,7 @@ func (cli *Client) delayedRequestMessageFromPhone(info *types.MessageInfo) {
|
|
|
325
334
|
cli.pendingPhoneRerequestsLock.Unlock()
|
|
326
335
|
return
|
|
327
336
|
}
|
|
328
|
-
ctx, cancel := context.WithCancel(
|
|
337
|
+
ctx, cancel := context.WithCancel(cli.BackgroundEventCtx)
|
|
329
338
|
defer cancel()
|
|
330
339
|
cli.pendingPhoneRerequests[info.ID] = cancel
|
|
331
340
|
cli.pendingPhoneRerequestsLock.Unlock()
|
|
@@ -341,6 +350,10 @@ func (cli *Client) delayedRequestMessageFromPhone(info *types.MessageInfo) {
|
|
|
341
350
|
cli.Log.Debugf("Cancelled delayed request for message %s from phone", info.ID)
|
|
342
351
|
return
|
|
343
352
|
}
|
|
353
|
+
cli.immediateRequestMessageFromPhone(ctx, info)
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
func (cli *Client) immediateRequestMessageFromPhone(ctx context.Context, info *types.MessageInfo) {
|
|
344
357
|
_, err := cli.SendMessage(
|
|
345
358
|
ctx,
|
|
346
359
|
cli.getOwnID().ToNonAD(),
|
|
@@ -352,6 +365,7 @@ func (cli *Client) delayedRequestMessageFromPhone(info *types.MessageInfo) {
|
|
|
352
365
|
} else {
|
|
353
366
|
cli.Log.Debugf("Requested message %s from phone", info.ID)
|
|
354
367
|
}
|
|
368
|
+
return
|
|
355
369
|
}
|
|
356
370
|
|
|
357
371
|
func (cli *Client) clearDelayedMessageRequests() {
|
|
@@ -363,7 +377,7 @@ func (cli *Client) clearDelayedMessageRequests() {
|
|
|
363
377
|
}
|
|
364
378
|
|
|
365
379
|
// sendRetryReceipt sends a retry receipt for an incoming message.
|
|
366
|
-
func (cli *Client) sendRetryReceipt(node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) {
|
|
380
|
+
func (cli *Client) sendRetryReceipt(ctx context.Context, node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) {
|
|
367
381
|
id, _ := node.Attrs["id"].(string)
|
|
368
382
|
children := node.GetChildren()
|
|
369
383
|
var retryCountInMsg int
|
|
@@ -385,7 +399,11 @@ func (cli *Client) sendRetryReceipt(node *waBinary.Node, info *types.MessageInfo
|
|
|
385
399
|
return
|
|
386
400
|
}
|
|
387
401
|
if retryCount == 1 {
|
|
388
|
-
|
|
402
|
+
if cli.SynchronousAck {
|
|
403
|
+
cli.immediateRequestMessageFromPhone(ctx, info)
|
|
404
|
+
} else {
|
|
405
|
+
go cli.delayedRequestMessageFromPhone(info)
|
|
406
|
+
}
|
|
389
407
|
}
|
|
390
408
|
|
|
391
409
|
var registrationIDBytes [4]byte
|
|
@@ -415,7 +433,7 @@ func (cli *Client) sendRetryReceipt(node *waBinary.Node, info *types.MessageInfo
|
|
|
415
433
|
},
|
|
416
434
|
}
|
|
417
435
|
if retryCount > 1 || forceIncludeIdentity {
|
|
418
|
-
if key, err := cli.Store.PreKeys.GenOnePreKey(); err != nil {
|
|
436
|
+
if key, err := cli.Store.PreKeys.GenOnePreKey(ctx); err != nil {
|
|
419
437
|
cli.Log.Errorf("Failed to get prekey for retry receipt: %v", err)
|
|
420
438
|
} else if deviceIdentity, err := proto.Marshal(cli.Store.Account); err != nil {
|
|
421
439
|
cli.Log.Errorf("Failed to marshal account info: %v", err)
|