Commit graph

56 commits

Author SHA1 Message Date
eta 99df4a56fe Don't differentiate between account and resource in disco#info
- So the entity caps stuff didn't actually work, because we don't implement
  XEP-0030 properly and don't honour the "node" attribute on the query.
- To hack around this, we misimplement XEP-0030 some more, and always return the
  bridged user disco info list, even if they ask for the bare JID instead of the
  full JID. That way, the caps stuff works as it should.
2020-08-01 17:54:37 +01:00
eta 912c09edc4 Fix order of entity caps in hash function 2020-08-01 17:37:36 +01:00
eta 599123dbef Generate entity caps & process disconnect messages
- The bridge should now support XEP-0115 Entity Capabilities, which actually
  brings us into compliance with XEP-0085 Chat State Notifications (there were
  clients, like Miranda NG, that wouldn't send to us without us actually doing
  this XEP and advertising support in disco#info).
- We now handle the :disconnect message from whatscl, which lets us properly
  deal with the connection being removed from the app or replaced with another
  session. (Before, this would drop the connection, it'd loop and retry, and
  then hit a status code error on login; this way is slightly cleaner and also
  prevents the bridge getting into a war with another bridge.)
- The :ws-open whatscl event never existed. The bridge was doing just fine
  not executing its handler, so it's just been removed. Future work might
  improve the amount of spam sent to the user about the bridge state.
2020-08-01 16:58:50 +01:00
eta b54fec4aa9 Adapt WA-HANDLE-ERROR-STATUS-CODE to recent whatscl changes
- We can now differentiate fatal login errors from other types of errors. For
  non-fatal errors, we just send an informational warning message.
  (Login errors kill the connection as before.)
2020-08-01 15:53:29 +01:00
eta e4e9aa0ec1 Don't break on nodes with whitespace/text in between
- The child nodes of a given node can include both text nodes and
  actual XML element nodes. Trying to pass a text node to something
  like DOM:TAG-NAME signals an error condition.
- To avoid this, use DOM:ELEMENT-P and the CHILD-ELEMENTS helper
  function to filter lists of nodes down to elements where elements
  are expected.
2020-07-31 15:45:07 +01:00
eta 1e59c2a6c7 add fixup_1.sql, which corrects the UNIQUE error on user_contacts
- The user_contacts table contained an incorrect UNIQUE constraint
  on wa_jid that meant only one user of the bridge could have any
  given whatsapp user in their contacts.
- This is fixed in fixup_1.sql, which should be applied over schema.sql.
2020-07-23 08:08:44 +01:00
eta f951fab325 :error now emits a backtrace as well, so handle that 2020-07-23 07:58:04 +01:00
eta 37b3ae2014 don't send presence subscription requests for nameless numbers 2020-07-13 22:34:15 +01:00
eta ae303489ad bump wsd version 2020-07-13 22:33:57 +01:00
eta c59400b459 fix crash issue on incomplete / denied group metadata 2020-07-12 10:46:46 +01:00
eta c9f27dc69a tentative chopped QR issue fix 2020-07-10 20:42:12 +01:00
eta 2e4e375196 handle missing subject in group metadata 2020-07-10 20:36:55 +01:00
eta 5ce6d47266 add MUC disco#items handler, fix children including text DOM nodes 2020-07-07 21:27:21 +01:00
eta 7e457266f8 nix: add Nix derivation for whatsxmpp (yay!)
- Using tazjin's buildLisp.nix (you need the TVL Monorepo installed
  as <depot>), we have a derivation for whatsxmpp and its million
  dependencies.
- The derivation currently just assumes whatscl is in ../whatscl,
  but we'll fix that eventually.
- Also there are tons of buildLisp derivations in here, and even
  two instances where we had to vendor stuff in order to get it to
  work with nix (usually because it had some data file).
- But yay, we can build via docker and it's not utter trash!
2020-07-06 22:44:28 +01:00
eta 8fc623bb1c get ironclad from github 2020-07-06 13:28:10 +01:00
eta 677bbc6748 actually update quicklisp (docker caching sucks btw) 2020-07-02 18:27:43 +01:00
eta a312057849 remove some whitespace 2020-06-25 17:26:26 +01:00
eta 0962c5d488 *: move 750 LoC from 'stuff.lisp' into other sensibly-named files 2020-06-25 16:56:36 +01:00
eta 6c0e61f2a5 whoops 2020-06-19 12:55:48 +01:00
eta 26620cf36b add Content-Length header when doing uploads 2020-06-19 12:17:38 +01:00
eta 38e79749a8 Dockerfile: reduce size, fix entrypoint 2020-06-19 09:23:57 +01:00
eta 22871c2c0c security warning 2020-05-28 18:39:49 +01:00
eta 0427fdf30b more glitches 2020-05-28 18:35:59 +01:00
eta c891841231 fix docker thing 2020-05-28 18:34:17 +01:00
eta 242614fc68 README, LICENSE, and general user friendliness 2020-05-28 18:33:03 +01:00
eta b8760ac948 Initial support for typing notifications / chat state (1-to-1 only) 2020-05-28 14:02:37 +01:00
eta f0612e6613 dockerfile 2020-04-29 22:17:18 +01:00
eta 3d3393c5c5 fix RETURN bug 2020-04-29 21:38:40 +01:00
eta 93e8e3aca3 don't crash on new chat 2020-04-27 15:14:53 +01:00
eta 401ec20930 Only do roster exchange when a command is issued; minor fixes 2020-04-24 16:28:14 +01:00
eta bab110bea0 add some basic (hacky) support for XEP-0359 2020-04-21 13:45:49 +01:00
eta 08b8ac8334 fix the whatsxmpp admin user thing 2020-04-21 09:09:40 +01:00
eta 39001728b3 slightly hacky but functional groupchat / MUC support 2020-04-12 08:27:04 +01:00
eta a3a660507e -contact-avatar => -contact-presence (oops) 2020-04-07 16:20:33 +01:00
eta bdc817a068 oops, don't break photos 2020-04-07 14:45:53 +01:00
eta 9d02fb6050 Handle picture & status changes, bridge status as well as picture 2020-04-07 13:06:26 +01:00
eta 8e70490d78 Add support for receiving WhatsApp media files! 2020-04-07 11:51:04 +01:00
eta 2f4e78bc8c Revert "hold my beer, let's remove *DB-LOCK*"
This reverts commit f6561a64a3.
2020-04-06 21:24:16 +01:00
eta 2a1e7303d0 name your damn locks, people 2020-04-06 21:22:41 +01:00
eta 297170ae6b display quoted message text, if there is any 2020-04-06 20:46:33 +01:00
eta f6561a64a3 hold my beer, let's remove *DB-LOCK*
- We shouldn't need it anyway because of the component data lock, and having two
  locks around causes deadlocks (they're taken in different orders)
2020-04-06 20:31:59 +01:00
eta 3985aba03f I swear, this stream is gonna cause anger management issues 2020-04-05 19:11:02 +01:00
eta 2604bbe2cb really dodgy SWANK code 2020-04-05 18:13:14 +01:00
eta f1ea7070c6 Do nothing on the main thread to prevent it exiting 2020-04-05 17:06:31 +01:00
eta 590390347b don't overwhelm everyone with copious amounts of XMPP output 2020-04-05 16:46:20 +01:00
eta 3337500b90 make more deployable, support XEP-0144 for BIG contact 2020-04-05 16:31:18 +01:00
eta 1b169e7741 remove stray INVOKE-DEBUGGER calls 2020-04-05 15:08:56 +01:00
eta 47024701a5 Handle avatars (!) and various types of presence requests 2020-04-05 15:05:27 +01:00
eta 29eecd2b03 Bridge read and delivery receipts as well, yay 2020-04-05 12:04:19 +01:00
eta 12cb121100 Handle presence subscriptions, vcard-temp, and other stuff 2020-04-04 23:12:39 +01:00