Commit graph

3774 commits

Author SHA1 Message Date
Daniel Gultsch ddf597e0d3 invoke x509 verification upon receiving prekey message in rtp session 2021-05-06 18:40:35 +02:00
Daniel Gultsch e2324209ed make sure omemo sessions are verified if the the respective config flag is set 2021-05-04 19:04:01 +02:00
Daniel Gultsch 9544b994dc invoke omemo trust/fetch activity when triggering phone call in require_verification mode 2021-05-04 17:52:17 +02:00
Daniel Gultsch 3b25fb9038 encrypt to inactive and untrusted devices in jingle
encrypting to untrusted devices means no degradition of security
compared to not encrypting at all. Trust status display (shield) is made
independently at a later stage.
2021-05-04 10:49:45 +02:00
Daniel Gultsch 48156dd27f a/v calls: seperate out SECURITY error from APP_FAILURE
until now problems with verifying the call (omemo or DTLS missing) would
just be another app failure. This commit displays verifications problems as
their own thing.
2021-05-04 10:10:34 +02:00
Daniel Gultsch 6d91551f59 use onAddTrack instead of deprecated onAddStream 2021-05-03 13:06:42 +02:00
Daniel Gultsch 0717f9ba18 upgrade libwebrtc to m90 and enable extmap-allow-mixed 2021-05-03 09:48:46 +02:00
Daniel Gultsch ac7855a332 show domains in manual cert accept dialog 2021-05-03 08:28:03 +02:00
Daniel Gultsch c5e90199c3 trigger registration dialog on roster;ibr=y only if no accounts are configured
fixes #4065
2021-04-30 11:32:42 +02:00
Daniel Gultsch 9d9514a091 Add User-Agent to all HTTP calls 2021-04-30 10:54:36 +02:00
Daniel Gultsch bc58fb0fbd Always verify hostname/domain
There might be corner cases where it is required to use self signed
certificates. However there should be no corner cases where it is
required to use a wrong domain name. This commit swaps out the
MemorizingHostnameVerifier that let users accept wrong domains with the
standard XmppDomainVerifier.

closes #4066
2021-04-30 09:55:22 +02:00
Daniel Gultsch ec061bedc1 always show contact permission explain dialog on Quicksy
Until now Conversations and Quicksy would only disply the dialog that explains
why we want contact read permissions after the user rejected the request once

(following Android design guidelines and `shouldShowRequestPermissionRationale()`)

However for PlayStore policy this is no longer enough and the app needs to
explain and ask for consent before starting to upload the data.

This commit now displays the explain dialog immediately before asking for the
first time.
2021-04-24 08:20:30 +02:00
Daniel Gultsch 8aed588405 ensure vibration future is canceled when scheduling a new one 2021-04-18 16:09:36 +02:00
Daniel Gultsch ea2acc2963 use new hasInternet() API only on Android Q+
some VPN apps are broken on Android 7.1 (and below?)

fixes #4058
2021-04-18 15:47:31 +02:00
Daniel Gultsch 2760f07307 disable read timeout for HTTP Upload
fixes #4057
2021-04-18 15:46:47 +02:00
Daniel Gultsch 202bde46ed properly error out if upload fails. fixes #4052 2021-04-09 15:49:33 +02:00
Daniel Gultsch 37ce311764 do not attempt to play ringtone if none was found 2021-04-08 10:53:01 +02:00
Daniel Gultsch 9fc04c4b1e when receiving out-of-order session-init in terminal state do not move to terminal again
fixes #4049
2021-04-08 10:23:39 +02:00
Daniel Gultsch 55b2f2656d fix HTTP up/download for users that dont trust system CAs 2021-04-08 08:56:58 +02:00
Daniel Gultsch 0fc191d004 migrate hasInternetConnection() to new api
Thank you to @ailicic for figuring out the new API.

Closes #4050
2021-03-29 10:58:15 +02:00
Daniel Gultsch 30c9e7399e log track class in onAddTrack 2021-03-29 10:57:56 +02:00
Daniel Gultsch 08f27ddcf8 don’t show video call button if no camera is available 2021-03-26 14:04:36 +01:00
Daniel Gultsch 1822a71c2a Do not crash when receiving video call on device w/o camera
Upon accepting a video call on a device that can not establish a video track on
its own (for example by not having a camera), displaying the video enable/disable
button would fail. This commit defaults this button to disabled.
2021-03-26 12:54:26 +01:00
Daniel Gultsch 77f448692c catch security exception when reading file 2021-03-24 10:47:50 +01:00
Daniel Gultsch ff756647a9 clear dns cache on network switch 2021-03-23 21:03:58 +01:00
Daniel Gultsch 9a7fc3d9b8 disable omemo by default for *.covid.monal.im domains 2021-03-23 11:52:34 +01:00
Daniel Gultsch aad34783ad remove logging from needsUploading() 2021-03-22 19:05:46 +01:00
Daniel Gultsch 914ea9c398 use http proxy below android 7.1 2021-03-22 18:03:25 +01:00
Daniel Gultsch 02b16063c6 show popup dialog when backup has been started. fixes #4031 2021-03-22 15:40:22 +01:00
Daniel Gultsch 4ac64f3a3b clean up code for posh cache 2021-03-22 15:15:35 +01:00
Daniel Gultsch 8b90c1c498 port POSH code to OkHttp 2021-03-22 14:32:31 +01:00
Daniel Gultsch 70fc08314f remove unused method 2021-03-22 11:14:35 +01:00
Daniel Gultsch ce7f59a76c use okhttp to fetch captcha 2021-03-22 10:39:53 +01:00
Daniel Gultsch 1cd95aefa6 migrate redirection urls to HttpUrl 2021-03-22 10:12:53 +01:00
Daniel Gultsch 739d20428a optimize imports 2021-03-21 21:39:04 +01:00
Daniel Gultsch a6244d986a use settable futures for slot requester 2021-03-21 20:45:26 +01:00
Daniel Gultsch 8ac97b0027 disable extmap_allow_mixed by default 2021-03-21 19:40:52 +01:00
Daniel Gultsch 72828c6c4e fix 'checking file size' status display 2021-03-20 11:21:48 +01:00
Daniel Gultsch 38ef69a926 do not display toast for cancelled downloads 2021-03-20 11:00:20 +01:00
Daniel Gultsch aaac8296b3 only overwrite body in text messages 2021-03-19 19:51:13 +01:00
Daniel Gultsch e217551a82 migrate to OkHttp instead of HttpUrlConnection
OkHttp gives us more fine grained control over the HTTP library and frees us from any platform bugs
2021-03-19 14:57:20 +01:00
Daniel Gultsch b09a1432a3 Stanza.getErrorCondation only ever needs the tag name 2021-03-18 11:35:41 +01:00
Daniel Gultsch 6f1b71970d parse extmap-allow-mixed 2021-03-16 18:52:38 +01:00
Daniel Gultsch 3baacf8862 switch to unified plan 2021-03-16 18:52:38 +01:00
Daniel Gultsch 2681ad82e1 complain if mLineIndex can not be found when receiving candidates 2021-03-16 18:52:25 +01:00
Daniel Gultsch 8764d11cce kill pending queries when archiving conversation 2021-03-16 10:22:52 +01:00
Daniel Gultsch 3c60de54cb minor code clean up 2021-03-16 08:16:07 +01:00
Daniel Gultsch 859f3b2a1d fix NPE after race condition. fixes #4033 2021-03-13 11:13:19 +01:00
Daniel Gultsch bf25b24967 modify away when locked behaviour to locked || screen off
this new behaviour still takes care of not going online when quickly
checking for the time but it also includes systems that don’t have a
lock screen or incorrectly report being unlocked.
2021-03-13 10:52:06 +01:00
Daniel Gultsch 7c53dcc4f4 fixed NPE when service isnt bound 2021-03-13 10:51:41 +01:00
Daniel Gultsch 0fa06d65b5 overwrite body for plaintext group chat messages only 2021-03-07 09:59:09 +01:00
Daniel Gultsch e947a3f808 modify boyy on muc reflection 2021-03-06 12:43:59 +01:00
Daniel Gultsch b34f6e0720 null check weak reference value 2021-03-06 09:45:42 +01:00
Christopher Vollick ef24d2050b Remove Renomination from WebRTC Options
This is a feature of WebRTC that's [not standardized][1] and only
supported by libwebrtc. Since there's no support in jingle for passing
this capability from one peer to another, we're currently hard-coding
this option into both the local candidate and also the remote candidate
so they can use it.

But I'm trying to call a user that isn't using WebRTC, and renomination
is causing the call to stay in "connecting..." state for 10 or 20
seconds, sometimes longer, while both sides wait for the other to
nominate something based on their individual beliefs about the standards
they're using.

Removing this seems to make connecting relatively instantaneous.

If we want to reintroduce this feature, we should probably make a XEP so
the peers can negotiate honestly about it, and only use it if both sides
truely support the feature.

[1]: https://datatracker.ietf.org/doc/html/draft-thatcher-ice-renomination-01
2021-03-04 08:26:52 +00:00
Daniel Gultsch 4a175f915d version bump to 2.9.8-beta 2021-03-04 09:25:20 +01:00
Daniel Gultsch 5848013a1e handle pre key messages in dtls verification 2021-03-03 14:03:08 +01:00
Daniel Gultsch c5f801c1fe do not push empty candidates to backlog 2021-03-03 13:12:10 +01:00
Daniel Gultsch d52c46d582 use omemo verification only if omemo is enabled in conversation 2021-03-03 12:55:27 +01:00
Daniel Gultsch 3ee70b1d48 show verified shield in rtp session activity 2021-03-03 09:41:05 +01:00
Daniel Gultsch e4b2bb4a42 throw exception when unable to encrypt 2021-03-03 08:22:21 +01:00
Daniel Gultsch 8a6430ae29 ground work for omemo dtls verification 2021-03-02 21:13:49 +01:00
Daniel Gultsch d889c02a0a make ascii armor parsing more resiliant 2021-02-24 11:05:11 +01:00
Daniel Gultsch 9450d49b0b do not vibrate when in DND mode 2021-02-24 10:35:33 +01:00
Daniel Gultsch 24f2f52512 limit http upload / download to 4 parallel connections 2021-02-22 09:24:41 +01:00
Daniel Gultsch f92ea5c70b resend <propose/> only if server has stream mgmt 2021-02-21 13:37:08 +01:00
Daniel Gultsch 0812bae1ab do not run alpha check on jpegs 2021-02-20 10:08:43 +01:00
Daniel Gultsch 6bfe16f044 replace away when screen off with away when locked
fixes #3978
2021-02-19 15:59:56 +01:00
Daniel Gultsch 53da64b7e2 do not attempt to play 'none' ringtone
trying to play 'none' ringtone resulted in the default ring tone being played
2021-02-19 15:31:01 +01:00
Daniel Gultsch ebb38d7d75 consume volume down event 2021-02-18 22:16:28 +01:00
Daniel Gultsch 484f633180 let Conversations (not Android) play ringtone and vibration
fixes #3972 fixes #3801 fixes #3931
2021-02-18 20:55:31 +01:00
Daniel Gultsch 72e268e6b1 add TODO comments wrt to missing <retract/> parsing 2021-02-18 09:36:51 +01:00
Daniel Gultsch 78901e3339 use detached signatures 2021-02-17 22:47:40 +01:00
Daniel Gultsch 149224a073 do not deduplicate disco queries
Conversations used to deduplicate disco queries based on their hash.
However that relies on the first query to go through (device to actually
respond) and to respond properly (hash matches).

Creating a proper retry behaviour for this is actually quite challanging.
(which one would you try next, how long do you wait?)
2021-02-17 18:14:18 +01:00
Daniel Gultsch db447f845e resend session proposal on rebind 2021-02-12 11:36:44 +01:00
Daniel Gultsch 6cab0ad496 make rtp proposal tracked by SM. fixes #3983 2021-02-12 10:35:13 +01:00
Daniel Gultsch 9f869d3895 slightly change wording of sync_with_contacts_long 2021-02-11 18:55:27 +01:00
Daniel Gultsch 7330d8a7f0 fixed race conditions around PROCEED state. fixes #3989 2021-02-11 16:56:57 +01:00
mimi89999 ab17f935c3 Fix formatting of openkeychain_required_long message 2021-02-10 13:16:56 +00:00
mimi89999 d51b4380d7 Add variable app name in res strings
Closes #3988
2021-02-10 11:35:49 +00:00
Daniel Gultsch b6d62c13ef use ascii notation for punycode domains in SNI 2021-02-07 09:38:55 +01:00
Daniel Gultsch b76b60df5c verify against IDN variant of domain 2021-02-04 11:15:59 +01:00
Daniel Gultsch 358c70828f close inputstream in image meta data analysers 2021-01-31 10:13:20 +01:00
maxim432 156c4da2b3 Fix couple of leaks 2021-01-30 17:56:54 -08:00
Daniel Gultsch ca496fd39f look at only subset of pixels to check for alpha 2021-01-30 01:50:03 +01:00
Daniel Gultsch 53a038d90e fix rtp offline discovery 2021-01-30 01:47:03 +01:00
Daniel Gultsch 2155a50875 do not compress images with alpha channels 2021-01-29 21:25:00 +01:00
Daniel Gultsch 4a9dfb9567 fix copy url to clipboard action for undownloaded files 2021-01-28 17:49:34 +01:00
Daniel Gultsch 10382e83bf remove unused methods 2021-01-28 17:40:58 +01:00
Daniel Gultsch c11ac40df4 use 'missed call' as label for missed call status 2021-01-28 11:00:27 +01:00
Daniel Gultsch 0a2c753620 do not use offline fallback rtp capability if account is disabled 2021-01-26 09:35:03 +01:00
Daniel Gultsch 619af9c6c5 back button should not end call if call is connected. fixes #3975 2021-01-23 18:42:34 +01:00
Daniel Gultsch 9c9a953281 pluralize x_unread_conversations string 2021-01-23 11:25:22 +01:00
Daniel Gultsch 8ce7bfb95e automated code clean up 2021-01-23 09:25:34 +01:00
Daniel Gultsch 582aee4718 do not use empty display name for /me command 2021-01-22 12:51:01 +01:00
Daniel Gultsch 3b43cb0bda do not offer share button when file hasnt been downloaded. fixes #3971 2021-01-22 08:24:19 +01:00
Daniel Gultsch e711b3d294 remember last rtp capability 2021-01-22 08:24:19 +01:00
Molly Miller ebbf1ff6b1 Use the account's display name (if set) when rendering /me messages in one-to-one chats. 2021-01-22 07:23:58 +00:00
Daniel Gultsch 9db0808306 show self contact with display name 2021-01-20 08:15:06 +01:00
Daniel Gultsch eea484af01 move SMS receiver into its own BroadcastReceiver 2021-01-20 08:14:36 +01:00
Daniel Gultsch 26a4598f3c automatically receive Quicksy SMS. fixes #3962
requires new version of QuicksyServer
2021-01-19 15:45:43 +01:00
Daniel Gultsch 49d0558da1 fix tab height in StartConversation screen 2021-01-19 12:58:05 +01:00
Daniel Gultsch 260b203ea3 Revert "just xmpp things"
This reverts commit d0a2f1f45f.
2021-01-19 08:55:22 +01:00
Daniel Gultsch 91cc8f5011 bump various libraries that have been waiting for androidx 2021-01-18 21:49:31 +01:00
Ferdinand Pöll 453ca7c0ed Migrate from Android Support Library to AndroidX
Unignored gradle.properties since androidX requires additions there
See also https://developer.android.com/jetpack/androidx/migrate
2021-01-18 20:49:35 +01:00
Daniel Gultsch bfccfba00e fix in call notification being shown twice 2021-01-15 13:03:54 +01:00
Daniel Gultsch 5b48b4027e code clean up 2021-01-15 10:45:03 +01:00
Daniel Gultsch d0a2f1f45f just xmpp things 2021-01-06 11:46:09 +01:00
Daniel Gultsch 372ddbfb49 Revert "offline presences aborts session proposals. fixes #3943"
This reverts commit f23016c967.
2021-01-06 09:03:42 +01:00
Emmanuel Gil Peyrot 17c697eed9 add 'id' attribute to outgoing ICE-UDP candidates
this attribute is mandatory as per the XEP.
2021-01-03 16:32:28 +00:00
Daniel Gultsch 2bec5459c5 properly null check ufrag and pwd before whitespace checking. fixes #3956 2021-01-03 16:05:17 +01:00
Daniel Gultsch 0569febf67 minor code clean up in XmppConnection class 2020-12-31 10:27:06 +01:00
Daniel Gultsch 0e54d8a2cf implement SCRAM-SHA512 2020-12-31 09:32:05 +01:00
Daniel Gultsch 2a57c92f63 rewrote scram cache implementation 2020-12-30 22:01:08 +01:00
Daniel Gultsch 692ee6c9fb SCRAM remove cache. made digest and hmac non static
DIGEST and HMAC were static variables. Those are initialized by
what ever concrete implementation gets executed first.

(Perform SCRAM-SHA1 first and those variables got initialized with
SHA1 variants)

For subsequent SHA256 executions those variables contained wrong
values.
2020-12-30 15:57:44 +01:00
Daniel Gultsch f23016c967 offline presences aborts session proposals. fixes #3943 2020-12-22 17:50:26 +01:00
Daniel Gultsch b4db2e5284 make ongoing call check null safe. fixes #3951 2020-12-22 14:30:54 +01:00
Daniel Gultsch 39229c34f6 cancel touch event after opening context menu in search view 2020-12-18 21:18:09 +01:00
Daniel Gultsch 090b3b18d0 don’t check for inRoster when doing jingle with oneself. fixes #3947 2020-12-11 14:25:56 +01:00
Daniel Gultsch d1490673bb work around race condition after opening easy invite dialog 2020-12-11 11:29:23 +01:00
Daniel Gultsch e38aa30a84 minor code clean up 2020-12-11 11:05:08 +01:00
Daniel Gultsch f584179f2f store avatars in cache folder 2020-12-10 19:05:04 +01:00
Daniel Gultsch 9c67e8fec2 fix long pressing on a textview with link 2020-12-08 07:10:54 +01:00
Daniel Gultsch 849968107e remove unused CopyTextView
after removing the ability to select and copy text the transformation methods
provided by CopyTextView are no longer necessary.
2020-12-08 07:08:59 +01:00
Daniel Gultsch 261207a4c0 ignore whitespace when trying to detect provisioning json
fixes #3940
2020-12-07 09:03:05 +01:00
Daniel Gultsch 303e205276 if file extension doesn’t exist. try to guess from content type. fixes #3939 2020-12-06 19:22:36 +01:00
Daniel Gultsch 99cb23fe14 share xmpp uri if landing url is not available 2020-12-06 17:57:55 +01:00
Daniel Gultsch 528f192f76 stop parsing random strings as xmpp addresses when scanning uris 2020-12-02 08:19:06 +01:00
Daniel Gultsch 00e1a93014 fixed typo in easy invites request code 2020-12-01 22:39:56 +01:00
Daniel Gultsch 1f392a688d initial (untested) support for easy onboarding invites 2020-12-01 20:31:30 +01:00
Daniel Gultsch 36f5f77c30 disable autofill for password field when not in init mode
maybe fixes #3924
2020-11-16 12:08:10 +01:00
Daniel Gultsch c7ec6a9dae let media scanner scan backup file. fixes #3913
note that the ROMs I tested this on don’t require scanning for it
to appear on MTP. However it certainly don’t hurt either.
2020-11-15 10:43:21 +01:00
Daniel Gultsch 1fafe4287d don’t send origin-ids to rooms that support stable-ids. fixes #3905 2020-11-14 11:59:35 +01:00
Daniel Gultsch 16c4e3eec7 keep conversation bold (unread) after responding to a call. fixes #3926 2020-11-14 09:55:43 +01:00
Daniel Gultsch afb2fb1326 use CoW data structure for read markers. fixes #3904 2020-11-13 20:37:32 +01:00
Christoph Scholz 386b224123 fix escapeing in local channel discovery 2020-11-13 13:35:46 +00:00
Alexei Sorokin 501cdd5edf do not prepend asterisks before words in search
An asterisk is a special FTS4 operator when appended to a word but has no
special meaning when prepended.
2020-11-13 12:43:18 +00:00
Daniel Gultsch b327548c85 show toast if no application found to attach 2020-11-13 12:50:05 +01:00
Daniel Gultsch 5ad054617b use instead of message id for receipt processing 2020-11-12 13:33:27 +01:00
Daniel Gultsch ff13cc2766 extracting chat state for chat with self should not cause markRead event. fixes #3906 2020-10-20 10:20:58 +02:00
Daniel Gultsch dc72bc5bc3 extend logging for not finding query 2020-10-08 20:21:53 +02:00
eta 364502d1a3 Fix various memory leaks reported by LeakCanary
- In some places, we weren't nulling out references to destroyed objects. This
  fixes that.
- (These were all discovered via LeakCanary instrumentation, and the fixes are
  hopefully rather straightforward-looking.)
2020-10-05 11:33:29 +00:00
eta b4805ac2c5 Remove the ListSelectionManager / message body selection (fixes memory leak!)
- When the `viewHolder.messageBody` `TextView` created by a `MessageAdapter` is
  set to selectable, it leaks an `android.widget.Editor` (because that editor
  registers a view observer that never gets unregistered).
  - This memory leak is really quite problematic, as the message adapter is used
    a lot!
- Having the text be selectable is useless anyway, though; there isn't any way
  to select it (because long pressing just opens the context menu anyway).
  - It looks like the ListSelectionManager was meant to track selections across
    multiple messages. However, I'm not sure this feature ever gets used.
- Accordingly, this commit removes the entire feature, thus fixing the memory
  leak (since no `Editor` objects are ever created).
  - It should also reduce memory usage in general, since we aren't attaching an
    `Editor` to every single textview we create.
  - A `TextView` only allocates an `Editor` if you ask it to do certain things,
    like make the text selectable or register custom selection callbacks.
2020-10-05 11:33:12 +00:00
Daniel Gultsch 7fb617e39a disable 'leave before join'
leaving a MUC before joining it was a work around for servers that did not treat a
<x/> join as a full join and didn’t send the full user list if they thought the user was
still in the room.
this happens if Conversations restarts after an inproper disconnect. The MUC will think
the user is still in the room.

however nowadays most modern servers will treat <x/> joins as full joins. on the user hand
leave before join would trigger flood prevention on ejabberds and race the first message
with the actual join (making the message arrive before the user is considered in the room)
2020-09-02 10:14:02 +02:00
Daniel Gultsch 27c89e487a restructure conversation menu
we don’t want 'manage accounts' and 'settings' to show up when within a conversation.
we also move out disable notifications and add to favorites into an overflow overflow
to make the menu shorter (after adding 'Search messages' it became very crowded)
2020-09-01 16:50:28 +02:00
Daniel Gultsch 73dac680e5 show notification if message failed to deliver. closes #3540 2020-09-01 14:04:38 +02:00
Daniel Gultsch 3281a93dc3 use content description for play/pause button in audio player 2020-08-31 17:42:03 +02:00
Daniel Gultsch f76ef17494 provide content descriptions for call screen 2020-08-31 17:30:54 +02:00
Daniel Gultsch ce81123112 use content description in search fields 2020-08-31 17:12:31 +02:00
Daniel Gultsch 2de8f3d35b change title of lock icon when changing encryption 2020-08-31 16:56:23 +02:00
Daniel Gultsch 97fe9fa01f parse error messages from MAM results 2020-08-31 14:38:48 +02:00