Commit Graph

1402 Commits

Author SHA1 Message Date
Jon Chambers 2d132128e1 Switched to a composed request object model for anonymous keys gRPC operations 2023-07-28 14:20:24 -05:00
Chris Eager 6e5ffbe7b5 Restore `aci` field to `BatchIdentityCheckRequest` 2023-07-28 14:16:48 -05:00
Jon Chambers 4ead8527c8 Use `ClientReleasesManager` when deciding whether to add client version tags 2023-07-26 16:41:54 -04:00
Jon Chambers 6f4801fd6f Add a manager class for checking "liveness" of client versions 2023-07-26 16:41:54 -04:00
Jon Chambers 10689843b0 Add a repository for client release information 2023-07-26 16:41:54 -04:00
Chris Eager b44599cd59 Remove unused jedis library 2023-07-24 10:54:34 -04:00
Jordan Rose 7a5dcc700e Add support for AuthCredentialAsPni with pniAsServiceId=true
Update to libsignal 0.30.0, and add a new query param to
/v1/certificate/auth/group, "pniAsServiceId=true", that uses the new
encoding of PNIs in zkgroup rather than encoding PNIs the same way as
ACIs, as we have been doing.

Also includes all the adjustments for the libsignal 0.30.0 update.
2023-07-24 10:53:59 -04:00
ravi-signal 705fb93e45
Add v4 attachment controller
Add AttachmentControllerV4 which can be configured to generate upload
forms for a TUS based CDN
2023-07-21 12:09:45 -05:00
Jon Chambers 9df923d916
Update keys gRPC endpoint to use service identifiers 2023-07-21 13:03:01 -04:00
Jon Chambers abb32bd919
Introduce "service identifiers" 2023-07-21 09:34:10 -04:00
Sergey Skrobotov cf92007f66 Moving Account serialization logic to storage-specific classes 2023-07-20 14:28:07 -07:00
Jon Chambers 5627209fdd
Add a gRPC service for working with pre-keys 2023-07-20 11:10:26 -04:00
Jonathan Klabunde Tomer 0188d314ce
minor username api refinements 2023-07-19 15:12:47 -07:00
Jonathan Klabunde Tomer 67343f6bdc
accept encrypted username with confirm-username-hash requests 2023-07-19 10:54:11 -07:00
Katherine Yen ade2e9c6cf
Define asynchronous `ProfilesManager` operations 2023-07-19 10:43:58 -07:00
Sergey Skrobotov 352e1b2249 test classes moved to same packages with components they test 2023-07-17 13:34:58 -07:00
Jon Chambers b8d8d349f4 Control inbound message byte limits with a dynamic configuration flag 2023-07-14 16:25:33 -04:00
Jon Chambers e87468fbe0 Add a rate limit for inbound message bytes for a given account 2023-07-14 16:25:33 -04:00
Jon Chambers e38a713ccc Support sub-millisecond permit regeneration durations in rate limiters 2023-07-14 16:25:33 -04:00
Jon Chambers 82ed783a2d Introduce async account updaters 2023-07-14 16:25:19 -04:00
Jon Chambers 41f61c66a3 Add public methods for fetching accounts asynchronously 2023-07-13 13:53:29 -04:00
Jon Chambers 1b7a20619e Add tools for testing asynchronous Redis operations 2023-07-13 13:53:29 -04:00
Jon Chambers 7d19e58953 Add parallel pathways for getting accounts asyncronously to `Accounts` 2023-07-13 13:53:29 -04:00
Jon Chambers 1605676509 Store signed EC pre-keys in a dedicated table when setting signed pre-keys individually 2023-07-12 14:58:10 -04:00
Jon Chambers a0d6146ff5 Make key deletion operations asynchronous 2023-07-12 14:58:10 -04:00
Jon Chambers f709b00be3 Make `KeysManager` storage/retrieval operations asynchronous 2023-07-12 14:58:10 -04:00
Jonathan Klabunde Tomer 5847300290
Revert "Allow use of the token returned with spam challenges as auth for the challenge verification request" 2023-07-12 11:45:02 -07:00
Jon Chambers 6db97f5541 Standardize client tag version handling; add client version tags to delivery latency metrics 2023-07-11 13:35:29 -04:00
Jon Chambers adf6c751ee Use an explicit-allow model for tagging client versions in metrics 2023-07-11 13:35:29 -04:00
Jonathan Klabunde Tomer 098b177bd3
Allow use of the token returned with spam challenges as auth for the challenge verification request 2023-07-06 15:25:19 -07:00
Jon Chambers 2c0fc8fe3e Remove legacy methods from `RegistrationServiceClient` 2023-07-06 10:32:58 -04:00
Jon Chambers 08c7baafac Remove legacy registration endpoints from `AccountController` 2023-07-06 10:32:58 -04:00
Jon Chambers 8edb450d73 Parallelize single-shot account crawlers 2023-07-06 10:15:16 -04:00
ravi-signal fedeef4da5
Add an optional parameter to require atomic account creation
By default, if a registration request has no optional fields for atomic
account creation set, the request will proceed non-atomically. If a
client sets the `atomic` field, now such a request would be rejected.
2023-07-05 11:24:11 -05:00
Jon Chambers b593d49399 Control signed pre-key deletion via a dynamic configuration flag to facilitate migration 2023-07-05 12:17:17 -04:00
Chris Eager 457ecf145f Add test for Redis timeouts 2023-06-30 12:55:37 -05:00
Jon Chambers 2d154eb0cf Add a command to copy signed pre-keys from `Account` records to their own table 2023-06-30 10:33:24 -04:00
Jon Chambers a3e82dfae8 Add a temporary method for storing signed EC pre-keys if and only if another key has not already been stored 2023-06-30 10:33:24 -04:00
Jon Chambers 97a7469432 Measure signed EC pre-key agreement 2023-06-30 10:33:24 -04:00
Jon Chambers 1a1defb055 Store signed EC pre-keys in a dedicated table 2023-06-30 10:33:24 -04:00
Jon Chambers 93c78b6e40 Introduce `RepeatedUseECSignedPreKeyStore` 2023-06-30 10:33:24 -04:00
Chris Eager b852d6681d FaultTolerantHttpClient: used managed ScheduledExecutorService for retries 2023-06-30 10:24:18 -04:00
Chris Eager fb39b2edaf
Improve two `@Disabled` flaky tests 2023-06-29 14:56:41 -05:00
Chris Eager c93af9e31e Remove `MessagePersister` from WhisperServerService environment
Persistence is now exclusively done by a separate command.
2023-06-28 14:17:49 -05:00
Chris Eager b81a0e99d4 Always have 0 `ApnPushNotificationScheduler` worker threads in front-end service 2023-06-28 14:17:23 -05:00
Chris Eager f8fefe2e5e Remove `AccountCrawler` (and `doPeriodicWork`) from `WhisperServerService` 2023-06-28 14:16:07 -05:00
Jon Chambers f26bc70b59 Add a basic, prototype authentication interceptor for gRPC services 2023-06-27 10:21:11 -04:00
Jon Chambers 06997e19e0 Add a method for iterating across all accounts 2023-06-27 10:18:35 -04:00
Jon Chambers 97710540c0 Use `Timer.Sample` throughout `Experiment` 2023-06-27 10:18:20 -04:00
Jon Chambers c78c109577 Drop a disused endpoint for fetching the caller's own signed pre-key 2023-06-27 10:16:39 -04:00
Jonathan Klabunde Tomer 8d995e456e
initial grpc service code in chat 2023-06-26 17:10:13 -07:00
Jon Chambers 0122b410be Include push notification urgency in push latency metrics 2023-06-21 15:10:26 -04:00
Sergey Skrobotov a45aadae16 Cleaning up references to the legacy format from the rate limiters lua script 2023-06-21 15:09:46 -04:00
Chris Eager 98578b18aa Update to dynamodb-lock-client 1.2.0 2023-06-21 15:08:40 -04:00
Chris Eager 7dce183170 Add worker thread pool to PushFeedbackProcessor 2023-06-16 11:36:28 -05:00
Chris Eager befd336372 Remove static Remote Config auth tokens 2023-06-15 12:11:20 -05:00
Jon Chambers 9cfd88a23f Move turn secret to static configuration 2023-06-14 10:47:17 -04:00
Jonathan Klabunde Tomer 861dc0d021
reject message sends that have the same device more than once 2023-06-13 09:49:50 -07:00
Chris Eager 128d709c99
Additional counters and timers for WebSocket connections 2023-06-13 11:46:15 -05:00
Jon Chambers e8f01be8ef
Inject version bytes if missing from existing EC pre-keys 2023-06-09 11:41:51 -04:00
Jon Chambers 7f1ee015d1 Treat blank strings as null pre-keys 2023-06-09 10:39:16 -04:00
Jon Chambers 17aa5d8e74
Use strongly-typed pre-keys 2023-06-09 10:08:49 -04:00
Jon Chambers b27334b0ff Treat blank strings as null identity keys 2023-06-09 10:08:18 -04:00
Jon Chambers 234707169e
Represent identity keys as `IdentityKey` instances 2023-06-08 11:36:58 -04:00
Jon Chambers 2b08742c0a
Create separate key stores for different kinds of pre-keys 2023-06-06 17:08:26 -04:00
ravi-signal 2b266c7beb
Validate registration ids for new accounts 2023-06-06 11:08:54 -04:00
Jon Chambers 9c93d379a8 Fix a sneaky merge conflict 2023-06-05 12:38:35 -04:00
Jon Chambers 085c7a67c8
Refactor account locks/deleted account manager 2023-06-05 12:30:44 -04:00
Sergey Skrobotov e6917d8427 minor cleanup, docs, and integration tests for username API 2023-06-02 10:35:07 -07:00
Sergey Skrobotov 47cc7fd615 username links API 2023-06-02 10:26:14 -07:00
Jonathan Klabunde Tomer ecd207f0a1
Check structural validity of prekeys at upload time 2023-05-31 14:29:39 -07:00
Chris Eager d1e38737ce Support ID token at `PUT /v1/config` and `DELETE /v1/config` 2023-05-30 10:28:28 -05:00
Jon Chambers 91805caa9a Finalize rate limit unit inversion 2023-05-26 14:17:30 -04:00
Jon Chambers 184969336e Allow `RateLimiterConfig` to accept either a leak rate per minute or a permit regeneration duration 2023-05-26 11:37:06 -04:00
Jon Chambers d832eaa759 Represent identity keys as byte arrays 2023-05-26 10:12:22 -04:00
Jon Chambers 217b68a1e0 Represent pre-key public keys and signatures as byte arrays in DAOs 2023-05-26 09:58:38 -04:00
Jon Chambers a5f853c67a Change inactive account age threshold from 365 to 180 days 2023-05-26 08:23:19 -04:00
Jonathan Klabunde Tomer 1ab6bff54e
add `@Produces` annotations to a few methods in DeviceController 2023-05-25 09:57:06 -05:00
Jon Chambers b034a088b1 Add support for "atomic" device linking/activation 2023-05-19 16:13:37 -04:00
Jon Chambers 8ce2b04fe4 Discard test device codes 2023-05-19 15:57:14 -04:00
Chris Eager a3c37aed47 Remove obsolete field from `SecureValueRecovery2Configuration` 2023-05-19 15:57:01 -04:00
Jon Chambers fa8f19fd43 Group atomic account creation operations 2023-05-19 15:56:45 -04:00
Jon Chambers d3e0ba6d44 Prepare to read pre-keys stored as byte arrays 2023-05-19 15:56:13 -04:00
Jon Chambers 300ac16cf1 Handle "transport not allowed" responses from the registration service 2023-05-19 15:55:53 -04:00
Chris Eager 3e53884979 Add `MessagePersisterServiceCommand` 2023-05-18 15:37:54 -05:00
Chris Eager 6043c1a4e8 Add `ScheduledApnPushNotificationSenderServiceCommand` 2023-05-18 11:44:01 -05:00
Jon Chambers 66a619a378 Allow for atomic account creation and activation 2023-05-18 09:51:13 -04:00
Katherine Yen 9450f88c8c Add annotation to catch empty request body 2023-05-17 14:28:41 -07:00
Sergey Skrobotov 287e2fa89a Moving secret values out of the main configuration file 2023-05-17 11:25:59 -07:00
Chris Eager 8d1c26d07d
Add `CrawlAccountsCommand` 2023-05-17 12:22:49 -05:00
Jonathan Klabunde Tomer caae27c44c
PQXDH endpoints for chat server 2023-05-16 14:34:33 -07:00
Ravi Khadiwala 8c42199baf Add svr2 credentials to RegistrationLockFailure responses
Add an svr2 credential to 423 responses for:
  - PUT v2/accounts/number
  - POST v1/registration

Also add some openapi annotations to those endpoints
2023-05-12 11:02:32 -05:00
Chris Eager 281b91a59a Remove obsolete `ContactDiscoveryWriter` 2023-05-10 14:01:09 -05:00
Jon Chambers a83fd1d3fe Include request method as a request counter dimension 2023-05-09 15:17:46 -05:00
Jon Chambers cb72e4f426 Simplify request counter 2023-05-09 15:17:46 -05:00
Jon Chambers 1057bd7e1f Resolve warnings/suggestions throughout `ProfileControllerTest` 2023-05-09 10:32:32 -04:00
Katherine Yen c309afc04b
Displace client presence when existing account reregisters 2023-05-05 11:31:18 -07:00
Katherine Yen 7ba86b40aa
Create call link credential endpoint 2023-05-04 14:33:45 -07:00
Katherine Yen b2b0aee4b7
Call link auth credential 2023-05-04 14:17:01 -07:00
Jon Chambers 919cc7e5eb
Update libsignal to 0.23 2023-05-04 14:10:51 -07:00
Jonathan Klabunde Tomer e38911b2c5
Always check prekey signatures when new prekeys are uploaded 2023-05-04 11:31:45 -07:00
Chris Eager bc68b67cdf account crawler: remove obsolete accelerated mode 2023-05-04 11:27:16 -05:00
Chris Eager 42a9f1b3e4 account crawler: remove `set*Dynamo` methods 2023-05-04 11:27:16 -05:00
ravi-signal 08333d5989
Implement /v2/backup/auth/check 2023-05-04 11:23:33 -05:00
Ravi Khadiwala 0e0c0c5dfe return 400 instead of 503 for bad verification session-id 2023-05-04 09:22:51 -07:00
Chris Eager 57b6c10dd1 Remove obsolete dynamic configuration 2023-05-03 13:20:44 -05:00
Jon Chambers 3ee5ac4514 Fix a late-breaking merge conflict 2023-05-02 16:12:26 -04:00
Jon Chambers 12b58a31a1
Retire integration with legacy contact discovery system 2023-05-02 15:57:03 -04:00
Chris Eager 487b5edc75 Handle potentially null payment method when canceling subscription 2023-05-01 13:42:05 -05:00
Jonathan Klabunde Tomer 47ad5779ad
new /v2/accounts endpoint to distribute PNI key material without changing phone number 2023-04-21 12:20:57 -07:00
Katherine Yen 4fb89360ce
Allow registration via recovery password for reglock enabled accounts 2023-04-20 09:21:04 -07:00
Jon Chambers dd27e3b0c8 Convert attachment descriptors to records 2023-04-19 17:00:34 -04:00
Jon Chambers 1083d8bde0 Remove the legacy group credential endpoint 2023-04-19 17:00:14 -04:00
Jon Chambers d1eb247d8c Clarify the purpose of an `addListener` method 2023-04-18 12:04:54 -04:00
Jon Chambers fd5e9ea016 Drop the old (and now unused!) `redis-dispatch` module 2023-04-18 12:04:54 -04:00
Jon Chambers 11829d1f9f Refactor provisioning plumbing to use Lettuce 2023-04-18 12:04:54 -04:00
Katherine Yen c485d317fb
Mock apnPushNotificationScheduler 2023-04-17 10:55:15 -07:00
Katherine Yen 350682b83a
Lock account and send notification when someone passes phone verification but fails reglock 2023-04-17 10:30:36 -07:00
ravi-signal 0fe6485038
Add a configuration to make rate limiters fail open 2023-04-14 13:08:14 -05:00
ravi-signal 8847cb92ac
Don't block when scheduling background apns pushes 2023-04-10 13:51:36 -05:00
Chris Eager 2697872bdd Use Apache StringUtils#join 2023-04-05 09:51:30 -05:00
Ravi Khadiwala 7b331edcde Separate username and signature truncation fields 2023-04-05 09:51:00 -05:00
Katherine Yen e4da59c236
Generic credential auth endpoint for call links 2023-04-04 10:28:35 -07:00
Jonathan Klabunde Tomer 48ebafa4e0
DynamoDBExtension refactor and helpers for our schema (#1327)
There's a lot of boilerplate involved in setting up a DynamoDBExtension, and some tests were creating several extensions
rather than one with several tables, which is probably slower than it has to be.

This change adds a new DynamoDbExtensionSchema class in which we can define the Dynamo schema for tests, and refactors
DynamoDbExtension to make it easy to instantiate a single extension with all the tables one wants (and no more, both to
minimize test startup time and to ensure we explicitly test our dependencies and lack thereof).

Tests requiring a DynamoDbExtension with a table schema that's not part of the normal Signal schema can instantiate a
DynamoDbExtension.RawSchema instead.

Test timings are unaffected, at least on my machine. Before:
```[INFO] service ............................................ SUCCESS [01:18 min]```

After:
```[INFO] service ............................................ SUCCESS [01:18 min]```

Co-authored-by: Jonathan Klabunde Tomer <jkt@viola.signal.org>
2023-04-03 13:08:43 -07:00
Jonathan Klabunde Tomer 391b070cff
KeysController: return correct number of unsigned prekeys
When GET /v2/keys was orignally added in b263f47, prekeys were stored in
Postgres, with a user's unsigned and signed keys together in the same table.
Therefore GET /v2/keys subtracted one from the count returned by storage.

In d4d9403, we changed to a different storage schema, with unsigned prekeys in
one DynamoDB table and unsigned prekeys in the accounts Dynamo table.
Unfortunately, GET /v2/keys was not changed to stop subtracting one from the
count of prekeys in the keys table at the same time. This commit fixes that.
2023-04-03 14:32:45 -04:00
gram-signal 781cd0ca3f
Truncate SVR2 IDs to 16 bytes rather than 10. 2023-03-30 17:19:18 -06:00
Chris Eager 3ccfeb490b Add retry after exceptions during a cluster topology change event callback 2023-03-29 11:41:19 -05:00
Chris Eager 0cc84131de Add `enabled` to SVR2 configuration 2023-03-29 11:40:21 -05:00
Chris Eager 4fa08fb189 Add secure value recovery 2 to `AccountsManager#delete()` 2023-03-29 11:40:21 -05:00
Chris Eager 2a551d1d41 Add `SecureValueRecovery2Client` 2023-03-29 11:40:21 -05:00
Chris Eager 391aa9c518 Wrap runtime exceptions during WebSocket auth into AuthenticationException 2023-03-29 10:08:55 -05:00
Chris Eager f5c62a3d85 Migrate from bounded elastic to dedicated executor for message delivery 2023-03-22 12:57:44 -05:00
Chris Eager 6075d5137b Add `/v2/accounts/data_report` 2023-03-22 12:57:21 -05:00
ravi-signal 890293e429
change v1/challenge response for invalid captcha 2023-03-21 17:38:30 -05:00
Ravi Khadiwala ee53260d72 Add filter-provided captcha score thresholds 2023-03-21 17:34:58 -05:00
Ravi Khadiwala a8eb27940d Add per-action captcha site-key configuration
- reject captcha requests without valid actions
- require specific site keys for each action
2023-03-21 17:34:58 -05:00
Katherine Yen a3a7d7108b
Change reglock expiration check to be > 0 instead of >= 0 2023-03-21 12:46:35 -07:00
Jon Chambers 35606a9afd Send "account already exists" flag when creating registration sessions 2023-03-20 15:18:55 -04:00
Chris Eager 292f69256e Refactor WebSocket message sending error and completion to subscriber from “doOn…” 2023-03-17 12:42:57 -05:00
Sergey Skrobotov c14ef7e6cf migrate token bucket redis record format from json to hash: phase 2 2023-03-16 09:15:22 -07:00
Sergey Skrobotov 483e444174 migrate token bucket redis record format from json to hash: phase 1 2023-03-15 16:01:06 -07:00
Sergey Skrobotov ebf8aa7b15 fixing embedded redis based tests 2023-03-15 13:56:40 -07:00
Sergey Skrobotov 4c85e7ba66 Moving RateLimiter logic to Redis Lua and adding async API 2023-03-13 14:50:26 -07:00
Katherine Yen 46fef4082c
Add metrics for registration lock flow 2023-03-09 09:07:21 -08:00
Ravi Khadiwala c06313dd2e Drop tagging for legacy user agents 2023-03-09 10:43:45 -06:00
Ravi Khadiwala 59bc2c5535 Add by-action captcha score config
Enable setting different captcha score thresholds for different captcha
actions via configuration
2023-03-09 10:43:16 -06:00
Chris Eager 437bc1358b Use server timestamp for queue score 2023-03-06 11:31:11 -06:00
Chris Eager 179f3df847 Allow `DisabledPermittedAuthenticatedAccount` at `/v1/accounts/me` 2023-03-03 13:17:17 -06:00
Chris Eager 8a889516b0 Improve `LoggingUnhandledExceptionMapper` combination with `CompletionExceptionMapper` 2023-03-03 13:17:07 -06:00
Chris Eager ef2cc6620e Add `@Produces` annotation for validation error response 2023-02-27 16:33:18 -06:00
Sergey Skrobotov b9b4e3fdd8 Adding a uniform configuration for all json/yaml mapper use cases: part 1 2023-02-23 16:38:48 -08:00
Sergey Skrobotov 7529c35013 Rate limiters code refactored 2023-02-23 10:49:06 -08:00
erik-signal 378b32d44d
Add missing token field to OutgoingMessageEntity 2023-02-23 11:18:07 -05:00
Chris Eager 35286f838e
Add `/v1/verification` 2023-02-22 14:27:05 -06:00
Jon Chambers e1ea3795bb Reuse registration sessions if possible when requesting pre-auth codes 2023-02-22 12:45:26 -05:00
erik-signal 95237a22a9
Relax validation to allow null reporting tokens. 2023-02-22 11:06:51 -05:00
Katherine Yen 11c93c5f53
Keep username hash during reregistration 2023-02-21 09:07:30 -08:00
Jon Chambers b59b8621c5 Add reporter platform as a reported message dimension 2023-02-17 16:44:13 -05:00
Chris Eager 44c61d9a58 Allow updates if the profile already has a payment address 2023-02-17 16:44:01 -05:00
Katherine Yen c03060fe3c
Phone number discoverability update endpoint 2023-02-10 11:52:51 -08:00
Chris Eager c16006dc4b Add `PUT /v2/account/number` 2023-02-10 12:09:03 -06:00
Sergey Skrobotov 8fc465b3e8
removing redundant logic in new registration flow 2023-02-09 09:06:48 -08:00
Chris Eager e23386ddc7
Remove unused JUnit extension from test 2023-02-09 09:05:11 -08:00
Jon Chambers 0f17d63774
Add tests for `ProvisioningController` 2023-02-09 09:04:52 -08:00
Katherine Yen 4fc3949367
Add zkproof validation in username flow 2023-02-09 09:02:53 -08:00
Sergey Skrobotov 7558489ad0 Registration Recovery Password support in `/v1/registration` 2023-02-08 13:20:23 -08:00
Katherine Yen 4a3880b5ae
`usernameHashes` on reserve request can't be null 2023-02-07 08:44:04 -08:00
Chris Eager a4a45de161
Add `/v1/registration` 2023-02-06 16:11:59 -06:00
Chris Eager 358a286523
Use `java.util` Hex and Base64 codecs 2023-02-06 12:16:59 -06:00
Sergey Skrobotov 8afe917a6c Registration recovery passwords store and manager 2023-02-03 16:33:03 -08:00
Katherine Yen 24f515ccb4
Revert "Revert "Stored hashed username"" 2023-02-02 11:20:44 -08:00
Katherine Yen c98b54ff15
Revert "Stored hashed username" 2023-02-01 14:31:44 -08:00
Katherine Yen d93d50d038
Stored hashed username 2023-02-01 12:08:25 -08:00
Sergey Skrobotov 8d0e23bde1 AuthenticationCredentials name changed to SaltedTokenHash 2023-01-30 15:45:24 -08:00
Sergey Skrobotov dc8f62a4ad `/v1/backup/auth/check` endpoint added 2023-01-30 15:39:42 -08:00
Jon Chambers cd4a4b1dcf Retire `VoiceVerificationController` 2023-01-30 16:28:14 -05:00
Jon Chambers 38a0737afb Retire `ReportSpamTokenHandler` interface in favor of `ReportedMessageListener` 2023-01-30 16:27:54 -05:00
Jon Chambers 4a2768b81d Add spam report token support to `ReportedMessageListener` 2023-01-30 16:27:54 -05:00
Jon Chambers 00e08b8402 Simplify parsing/validation of spam report tokens 2023-01-30 16:27:54 -05:00
erik-signal a89e30fe75
Clarify naming around spam filtering. 2023-01-27 11:40:33 -05:00
Sergey Skrobotov c934405a3e fixing config field names 2023-01-25 17:28:03 -08:00
Sergey Skrobotov eb499833c6 refactoring of ExternalServiceCredentialGenerator 2023-01-25 15:20:28 -08:00
Chris Eager dd98f7f043 Support changing just the currency of an existing subscription 2023-01-25 15:14:17 -06:00
Chris Eager e8978ef91c Add tests for `SubscriptionController#setSubscriptionLevel` 2023-01-25 15:14:17 -06:00
erik-signal ab26a65b6a
Introduce spam report tokens 2023-01-19 11:13:43 -05:00
Chris Eager f361f436d8
Support PayPal for recurring donations 2023-01-17 12:20:17 -06:00
Chris Eager e6ab97dc5a Update enabled-required authenticator metrics 2023-01-13 14:05:56 -06:00
Chris Eager b8967b75c6 Update dropwizard to 2.0.34 2023-01-13 12:17:39 -06:00
Fedor Indutny 96b753cfd0
Add an extra kb to max sticker size 2023-01-13 12:07:45 -06:00
Jon Chambers 5a89e66fc0 Convert `AccountIdentityResponse` to a record 2023-01-13 12:36:17 -05:00
Jon Chambers b4a143b9de Convert `RegistrationLockFailure` to a record 2023-01-13 12:36:02 -05:00
Jon Chambers 050035dd52 Convert `ExternalServiceCredentials` to a record 2023-01-13 12:36:02 -05:00
Jon Chambers 7018062606 Explicitly create registration sessions 2023-01-09 15:27:07 -05:00
Jon Chambers 9e1485de0a Assume stored verification codes will always have a session ID instead of a verification code 2023-01-09 15:27:07 -05:00
Jon Chambers 4e358b891f Retire `StoredVerificationCode#twilioVerificationSid` 2023-01-09 15:27:07 -05:00
Chris Eager b02b00818b Remove `Subscriptions.PCI` attribute 2023-01-04 11:31:46 -06:00
Chris Eager 010f88a2ad Remove `Subscriptions.C` attribute 2023-01-04 11:31:46 -06:00
Jon Chambers a60450d931 Convert `UserCapabilities` to a record 2022-12-21 16:26:07 -05:00
Katherine Yen cb5d3840d9
Add paymentActivation capability 2022-12-20 09:20:42 -08:00
Fedor Indutny 9aceaa7a4d
Introduce ArtController 2022-12-19 11:58:16 -08:00
Ravi Khadiwala 65ad3fe623 Add hCaptcha support 2022-12-16 11:28:30 -06:00
Katherine Yen 26f5ffdde3
Enable case-sensitive usernames 2022-12-13 07:59:37 -08:00
Chris Eager 2f21e930e2 Add `minimum` one-time donation amont to validation error map 2022-12-06 16:21:15 -06:00
Sergey Skrobotov 9cf2635528 some accounts classes refactorings 2022-12-05 09:30:40 -08:00
Chris Eager 2ecbb18fe5 Add support for one-time PayPal donations 2022-12-01 18:11:35 -06:00
Chris Eager df8fb5cab7 Move messages cache stale discard to a separate scheduler 2022-12-01 18:09:28 -06:00
katherine-signal 99ad211c01 Enforce minimum amount by currency for one time donations 2022-11-28 11:44:59 -08:00
katherine-signal fb4ed20ff5
Remove groups v2 capability
* wip removing groups v2 capabilities

* comments

* finish removing groups v2 references

* hardcode gv1migration flag on user capability, remove other references
2022-11-21 09:31:47 -08:00
Jon Chambers cb50b44d8f Allow the account cleaner to operate on multiple accounts in parallel 2022-11-18 11:15:00 -05:00
Jon Chambers 2881c0fd7e Allow the account cleaner to act on all accounts in a crawled chunk 2022-11-18 11:15:00 -05:00
Chris Eager 483fb0968b Use badge name in level configuration for one-time donations 2022-11-18 11:05:23 -05:00
Jon Chambers e8ee4b50ff Retire the legacy "abusive hosts" system in favor of newer tools 2022-11-18 10:54:25 -05:00
Chris Eager 4f8aa2eee2 Mark flaky test `@Disabled` 2022-11-17 13:23:42 -06:00
Chris Eager 397d3cb45a
Add consolidated subscription configuration API 2022-11-16 12:27:00 -06:00
Chris Eager 986545a140
Set `error_if_incomplete` for subscription payment behavior 2022-11-16 12:08:21 -06:00
Sergey Skrobotov 836307b0c7 adding a metric for ipv4/ipv6 requests count 2022-11-15 11:17:01 -08:00
Sergey Skrobotov c32067759c refactoring: use constants for header names 2022-11-15 11:16:49 -08:00
Chris Eager f41bdf1acb Make `MessagesController#getPendingMessages` fully async 2022-11-11 13:19:57 -06:00
Chris Eager 77d691df59 Always use reactived message processing in `WebSocketConnection` 2022-11-11 13:14:39 -06:00
Jon Chambers a01f96e0e4 Temporarily disable account freezing on contention 2022-11-10 18:53:58 -05:00
Jon Chambers d3f0ab8c6d
Introduce an alternative exchange rate data provider 2022-11-10 10:25:06 -05:00
erik-signal 80a3a8a43c Lock account when number owner lacks registration lock. 2022-11-09 14:03:09 -05:00
Chris Eager e0178fa0ea Move additional handling of `MessagesManager#delete` to executor 2022-11-03 13:02:25 -05:00
Jon Chambers afda5ca98f Add a test for checking push challenge tokens 2022-11-03 11:14:59 -05:00
Chris Eager fbf6b9826e tests: only call `SQLite.setLibraryPath` once 2022-11-03 11:08:43 -05:00
Chris Eager bd69905f2e Remove obsolete donation endpoint 2022-11-02 11:29:03 -05:00
Chris Eager aa829af43b Handle expected case of empty flux in message deletion 2022-10-31 12:29:25 -05:00
Chris Eager c10fda8363
Use reactive streams for WebSocket message queue
Initially, uses `ExperimentEnrollmentManager` to do a safe rollout.
2022-10-31 10:35:37 -05:00
Jon Chambers 74d65b37a8 Discard old Twilio machinery and rely entirely on the stand-alone registration service 2022-10-28 10:40:37 -04:00
sergey-signal 5868d9969a
minor changes to utility classes (#1127) 2022-10-25 08:48:56 -07:00
erik-signal 90490c9c84
Clean up the TestClock code a bit more. 2022-10-21 15:27:15 -04:00
Chris Eager 8ea794baef
Add additional handling for nullable field in recurring donation record 2022-10-21 12:56:39 -05:00
erik-signal fe60cf003f
Clean up testing with clocks. 2022-10-21 12:39:47 -04:00
Chris Eager b711288faa
Run GitHub Action in a container 2022-10-18 16:59:35 -05:00
Jon Chambers 0120a85c39 Allow HTTP clients to trust multiple certificates to support certificate rollover 2022-10-18 11:17:47 -04:00
Jon Chambers a41d047f58 Retire `CertificateExpirationGauge` in favor of other expiration monitoring tools 2022-10-18 11:17:47 -04:00
Jon Chambers 0a64e31625 Check verification codes for changing phone numbers against the stand-alone registration service when possible 2022-10-18 11:17:15 -04:00
erik-signal a7d5d51fb4
Improve testing of MultiRecipientMessageProvider 2022-10-17 16:50:39 -04:00
Chris Eager 378d7987a8
device capabilities: prevent `stories` downgrade 2022-10-17 15:25:13 -04:00
erik-signal 3e0baf82a4
Filter unknown UUIDs for /multi_recipient&story=true. 2022-10-13 15:33:51 -04:00
erik-signal 17a3c90286
Add "urgent" query parameter to /v1/messages/multi_recipient endpoint. 2022-10-11 11:10:11 -04:00
Chris Eager 6341770768
Update `SubscriptionManager` to store processor+customerId in a single attribute and a map
- add `type` query parameter to `/v1/subscription/{subscriberId}/create_payment_method`
2022-10-07 14:26:17 -05:00
Jon Chambers d2fa00f0c6
Add experiment to test standalone registration service 2022-10-06 15:42:53 -04:00
erik-signal d6c9652a70
Fix internal server error when sending stories to unknown recipient. 2022-10-06 13:53:57 -04:00
erik-signal 544e4fb89a
Adjust routing for stories. 2022-10-05 12:20:42 -04:00
erik-signal 966c3a8f47 Add routing for stories. 2022-10-05 10:44:50 -04:00
Ravi Khadiwala a79d709039 Return 403 when a push challenge is incorrect 2022-09-30 12:02:47 -05:00
Ravi Khadiwala 2e497b5834 Fix operator order in metric calculation 2022-09-15 14:04:18 -05:00
Ravi Khadiwala c14621a09f Add metrics for captcha scores 2022-09-14 16:00:11 -05:00
Ravi Khadiwala d0a8899daf Change discriminator seperator and default width 2022-09-14 15:53:15 -05:00
Chris Eager 8b65c11e1e Update batch check entities from two optional fields to a single field 2022-09-12 11:19:01 -05:00
Chris Eager 320c5eac53 Add support for PNIs at `v1/profile/identity_check/batch` 2022-09-09 10:55:34 -05:00
Ehren Kret abd0f9630c Create GCP Logging implementation of AdminEventLogger 2022-09-07 19:37:26 -05:00
Ehren Kret a4508ec84f Add new event logging module 2022-09-07 19:37:26 -05:00
Ravi Khadiwala 4032ddd4fd Add reserve/confirm for usernames 2022-09-07 11:49:49 -05:00
Chris Eager 4c677ec2da Remove deprecated /v1/attachments 2022-09-07 11:48:16 -05:00
Chris Eager c05692e417 Update deprecated `CircuitBreakerConfig` usage 2022-09-07 11:47:15 -05:00
gram-signal ae1edf3c5c
Remove experiment associated with auth1->auth2 rollout. 2022-08-31 12:10:46 -06:00
gram-signal b17f41c3e8
Check if dashes work in dynamic configuration keys. 2022-08-29 15:51:37 -06:00
gram-signal 08db4ba54b
Update authentication to use HKDF_SHA256. 2022-08-29 14:20:47 -06:00
Jon Chambers b280c768a4 Allow signup captchas to target CLDR two-letter region codes 2022-08-26 12:41:51 -04:00
Chris Eager 616513edaf Remove unused jdbi dependency 2022-08-25 13:40:46 -07:00
Chris Eager 38b77bb550 Update libphonenumber to 8.12.54 2022-08-25 13:40:32 -07:00
Ravi Khadiwala 1891622e69 Zero-pad discriminators less than initial width 2022-08-22 13:36:38 -07:00
Chris Eager 27b749abbd Filter expired items from Dynamo 2022-08-16 13:09:47 -07:00
Chris Eager 27f67a077c Add metrics for report-verification-succeeded response 2022-08-16 13:08:16 -07:00
Ravi Khadiwala 393e15815b Rename secondary account key namespace for usernames 2022-08-15 10:51:52 -05:00
Ravi Khadiwala a7f1cd25b9 Remove UAK normalization code
All accounts now have UAKs in top-level attributes
2022-08-15 10:47:52 -05:00
Ravi Khadiwala 953cd2ae0c Revert "Delete any leftover usernames in the accounts db"
This reverts commit a44c18e9b7.

Old username cleanup is finished.
2022-08-15 10:45:38 -05:00
ravi-signal a84a7dbc3d
Add support for generating discriminators
- adds `PUT accounts/username` endpoint
- adds `GET accounts/username/{username}` to lookup aci by username
- deletes `PUT accounts/username/{username}`, `GET profile/username/{username}`
- adds randomized discriminator generation
2022-08-15 10:44:36 -05:00
Chris Eager 24d01f1ab2 Revert "device capabilities: prevent `stories` downgrade"
This reverts commit 1c67233eb0.
2022-08-12 14:21:27 -05:00
Chris Eager 06eb890761 Improve e164 normalization check by re-parsing without country code 2022-08-12 10:52:55 -07:00
Chris Eager 6d0345d327 Clean up Util 2022-08-12 10:52:55 -07:00
Chris Eager 1c67233eb0 device capabilities: prevent `stories` downgrade 2022-08-12 10:51:16 -07:00
Jon Chambers b4281c5a70
Send non-urgent push notifications with lower priority 2022-08-12 11:06:31 -04:00
Jon Chambers 5f6b66dad6 Add support for scheduling background push notifications 2022-08-12 10:57:59 -04:00
Jon Chambers c2be0af9d9 Refactor `ApnPushNotificationSchedulerTest` to use a `Clock` 2022-08-12 10:57:59 -04:00
Jon Chambers a53a85d788
Refactor scheduled APNs notifications in preparation for future development 2022-08-12 10:47:49 -04:00
Ravi Khadiwala a44c18e9b7 Delete any leftover usernames in the accounts db
The account username field should not currently be populated
2022-08-11 16:23:51 -05:00
Chris Eager 65da844d70 Small test cleanup 2022-08-09 15:32:44 -05:00
Chris Eager 5275c27ee1 Fix incorrect test Javadoc 2022-08-09 13:06:15 -07:00
Chris Eager 390580a19d Count cases when the a message’s destination UUID doesn’t match the account’s PNI 2022-08-09 13:06:15 -07:00
Jon Chambers 9e9333424f Retire `RetryingApnsClient` 2022-08-04 09:59:18 -04:00
Jon Chambers 6f0faae4ce
Introduce common push notification interfaces/pathways 2022-08-03 10:07:53 -04:00
Jon Chambers 0a6d724f2c Remove `GCMSender` 2022-08-02 17:31:35 -04:00
Jon Chambers c9ae991aa3 Add an experiment to allow a phased transition from the old GCM API to the current FCM API 2022-08-02 15:34:09 -04:00
Jon Chambers 421d594507 Introduce an `FcmSender` 2022-08-02 15:34:09 -04:00
Jon Chambers 9c03f2e468
Add support for receiving, storing, and returning `urgent` flags on messages 2022-08-02 12:05:23 -04:00
Chris Eager 55df593561 Clean up `MessageAvailabilityListener` if the websocket client is closed 2022-08-02 08:35:16 -07:00
Chris Eager a06a663b94 Use the envelope’s destination UUID for receipt source UUID 2022-08-02 08:34:20 -07:00
Chris Eager 3d2f7e731f Remove `Envelope.source` 2022-08-02 08:34:20 -07:00
Jon Chambers faa6e8324a Fix a test issue where we were ignoring some test parameters 2022-08-01 11:02:33 -04:00
Jon Chambers d0e3fb1901 Unconditionally write messages to the messages table as envelopes 2022-08-01 10:44:27 -04:00
Jon Chambers 04287c5073 Optionally write messages as envelopes to the messages table 2022-07-29 11:10:50 -04:00
Jon Chambers 0c76fdd36c Read bare envelopes from the messages table if possible 2022-07-29 11:10:50 -04:00
Jon Chambers 3636626e09 Make `Envelope` the main unit of currency when working with stored messages 2022-07-29 10:59:02 -04:00
Jon Chambers 3e0919106d Add a method to build an `OutgoingMessageEntity` from an `Envelope` 2022-07-29 10:59:02 -04:00
Jon Chambers e28f1e8ceb Remove the unused `destination` property from `IncomingMessage` 2022-07-29 10:59:02 -04:00
Jon Chambers 3d875f1ce5 Convert incoming/outgoing message entities to records 2022-07-29 10:59:02 -04:00
Jon Chambers 6b6f9b2405 Add PNI to `GroupCredentials` responses that contain `AuthCredentialWithPni` instances 2022-07-28 10:08:25 -04:00
Jon Chambers e9119da040 Retire the (unused!) binary message format 2022-07-28 09:59:00 -04:00
Chris Eager a6f9409a39 Remove dynamic configuration feature flags; add `DynamicMessagePersisterConfiguration` 2022-07-27 14:19:10 -07:00
Chris Eager 41a113e22c Stop queue persistence attempt if items aren’t removed from cache 2022-07-27 14:19:10 -07:00
Ravi Khadiwala 36050f580e Handle duplicate device ids more gracefully 2022-07-27 11:15:32 -05:00
Jon Chambers dce391a248
Add support for setting PNI-associated registration IDs and identity keys when changing numbers 2022-07-26 15:19:27 -04:00
Jon Chambers 1ba00a66eb Pass the reason for displacement to presence displacement listeners 2022-07-13 15:30:03 -04:00
Jon Chambers 1dd7d33e23
Simplify `Device` entity 2022-07-13 13:55:20 -04:00
Jon Chambers e200548e35 Introduce an account change validator 2022-07-13 12:24:39 -04:00
Jon Chambers fdf7b69996 Remove a temporary workaround for incorrect envelope types from iOS clients 2022-07-13 11:30:52 -04:00
Jon Chambers 92d36b725f Allow presence keys to expire if not periodically renewed 2022-07-13 11:28:55 -04:00
Ravi Khadiwala a45d95905e Be permissive in account-create accept-language
Currently, if we fail to parse a user's accept-language in account
creation, creation will fail. While it's a suboptimal experience to get
a verify code in the wrong language, it might be better than not being
able to sign up at all.
2022-07-13 11:22:31 -04:00
Ehren Kret 0fdfdabf2a merge GroupController into CertificateController 2022-07-01 13:04:24 -05:00
Jon Chambers a25e967978 Remove spurious mocking 2022-07-01 12:26:22 -05:00
Jon Chambers 38e30c7513 Allow callers to get an expiring profile key credential 2022-07-01 12:26:22 -05:00
Jon Chambers e38e5fa17d Allow callers to request a combined group auth credential 2022-07-01 12:26:22 -05:00
Ehren Kret bf6d3aa324 Fix batching issue that was causing duplication in large queries 2022-06-20 12:41:10 -05:00
Ehren Kret 023ccc6563 Add a unit test for the batch identity check endpoint 2022-06-20 12:32:31 -05:00
Ehren Kret da49db5b9e Move batch identity checks off the common fork join pool 2022-06-20 11:07:33 -05:00
Ravi Khadiwala 327eb0219d Bypass account registration captcha on test devices 2022-06-13 15:01:46 -07:00
gram-signal a853748303
Revert "Update ChangeNumber to allow reset of registration IDs."
This reverts commit 7001ad1445.
2022-06-09 11:51:50 -06:00
gram-signal 7001ad1445
Update ChangeNumber to allow reset of registration IDs. 2022-06-02 16:37:32 -06:00
Ravi Khadiwala 5cfb133f79 Use redis for abusive hosts autoblock
Also delete postgres dependencies that we no longer need
2022-05-31 10:08:10 -05:00
Ehren Kret 5df24edebf Remove all unused imports remaining in project 2022-05-25 17:15:20 -05:00
Ehren Kret f5a2efb57c Clarify hidden static method call 2022-05-25 16:51:12 -05:00
Jon Chambers cf89e2215c Fully delete already-expired accounts 2022-05-25 14:19:04 -04:00
Jon Chambers a4ca1ef1a8 Move `AccountCleanerTest` out of the `test` package; reduce visibility of test-only fields 2022-05-25 14:19:04 -04:00
Fedor Indutny d31ddb72f3
Optimize message deletion by skipping lookup 2022-05-18 13:02:21 -07:00
Chris Eager 0445adcac3 Conclude `ReportMessageManager` ACI migration 2022-05-11 11:26:24 -07:00
gram-signal 06dd4c5026
Derive username from ACI for CDS{H,I} (#989)
* Derive username from ACI for CDS{H,I}

* Update sample YAML.
2022-05-02 08:41:38 -06:00
Ehren Kret 391c800bf5 Add gift configuration to subscription controller 2022-04-29 10:14:39 -05:00
Ehren Kret d94c171d63 Use new style switch statement 2022-04-19 13:35:26 -05:00
Ehren Kret 9e66f8ac11 Add gift badges device capability 2022-04-19 10:33:54 -05:00
gram-signal 473ecbdf2d
Allow primary to set and provide new signed prekeys for linked devices (#950) 2022-04-15 12:39:47 -06:00
Chris Eager 7b3703506b Remove number from `ReportMessageManager#store` 2022-04-13 16:41:32 -04:00
Jon Chambers 5816f76bbe Add support for getting (limited) profiles by phone number identifier 2022-04-13 16:27:57 -04:00
Jon Chambers 3dc0d0bb92 Revert "Revert "Replace curve25519-java with libsignal-server""
This reverts commit c06a5ac96c.
2022-03-29 12:24:45 -04:00
Jon Chambers 2bb8f92af1 Revert "Revert "Replace zkgroup with libsignal-server""
This reverts commit fa3a9570d6.
2022-03-29 12:24:45 -04:00
Chris Eager 77fd01bd9f Accept source ACI at `/v1/messages/report` 2022-03-25 14:27:09 -07:00
Jon Chambers fa3a9570d6 Revert "Replace zkgroup with libsignal-server"
This reverts commit 86a09b16ff.
2022-03-24 12:11:46 -04:00
Jon Chambers c06a5ac96c Revert "Replace curve25519-java with libsignal-server"
This reverts commit 06a57ef811.
2022-03-24 12:11:46 -04:00
Jon Chambers 33467b42da Remove a deprecated/unused field 2022-03-24 10:50:49 -04:00
Jon Chambers 53f17c2baa Drop the legacy message and relay fields from message entities 2022-03-24 10:50:49 -04:00
Jordan Rose 06a57ef811 Replace curve25519-java with libsignal-server
These APIs stemmed from a common source long ago, so there's not much
to change!
2022-03-24 10:50:18 -04:00
Jordan Rose 86a09b16ff Replace zkgroup with libsignal-server 2022-03-24 10:50:18 -04:00
Ravi Khadiwala c70d7535b9 Make TURN configuration dynamic
Also enables conditionally including more TURN servers for gradual
rollouts
2022-03-23 14:38:02 -05:00
Jon Chambers 2a832d36d7 Remove AcceptNumericOnlineFlagRequestFilter 2022-03-23 14:31:01 -05:00
gram-signal 1578c89475
Only allow primary device to update identity key. 2022-03-22 14:39:04 -06:00
Jon Chambers f75e616397 Introduce a listener pattern for reported messages 2022-03-22 09:56:27 -04:00
Jon Chambers c048074c31 Tag captcha attempt metrics with UA platform 2022-03-16 15:00:04 -04:00
Ravi Khadiwala 5a88ff0811 Use the async dynamo client to batch uak updates 2022-03-14 14:02:16 -05:00
Chris Eager fef37f739b Remove unused classes and methods 2022-03-10 11:08:38 -05:00
Ravi Khadiwala 1571f14815 Add a feature flag to disable account normalization 2022-03-09 14:03:21 -06:00
Ravi Khadiwala 9cb098ad8a Add a top-level uak to existing items
Items wirtten before we started storing the uak at
the top level only store the uak in the
account blob. The will be updated on account
crawl
2022-03-09 14:03:21 -06:00
Chris Eager 1395dcc0be Make the enterprise client canonical 2022-03-04 11:44:17 -08:00
Chris Eager 2a68d9095d Remove transitional and legacy client 2022-03-04 11:44:17 -08:00
Jon Chambers fe86e15d80 Remove PNI repair code 2022-03-03 10:25:11 -05:00
Jon Chambers 179b4a69eb Clear one-time pre-keys when PNIs are assigned 2022-03-03 10:24:54 -05:00
Chris Eager eee6307789
Move score floor to dynamic configuration, add distribution summary 2022-03-02 15:18:33 -08:00
Chris Eager 9fc5002619
Add stories capability 2022-03-02 15:16:21 -08:00
Ravi Khadiwala faa6ae284a Add uak as a top level attribute 2022-03-02 10:41:09 -06:00
Dimitris Apostolou 93d06e3f4d Fix typos 2022-03-01 14:14:52 -08:00
Chris Eager 935e268dec Parameterize sitekey 2022-03-01 10:40:42 -08:00
Jon Chambers 3a1c716c73 Remove an unused rate limiter 2022-02-25 13:50:17 -08:00
Chris Eager f3457502a6 Support different v2 captcha actions 2022-02-25 13:49:47 -08:00
Ravi Khadiwala d3cd1d1b15 Use GetLatestConfiguration in config manager
Use StartConfigurationSession/GetLatestConfiguration instead of
GetConfiguration since the latter has been deprecated
2022-02-23 15:36:33 -06:00
Ravi Khadiwala f5a75c6319 Simplify RateLimitExceeded with no retry-duration
- Avoid passing negative durations in error cases
- Drop unused message
- Return a duration for a bad forwarded-for
2022-02-23 15:25:24 -06:00
Ravi Khadiwala ae3a5c5f5e Return a Retry-After on rate-limited responses
Previously, only endpoints throwing a RetryLaterException would include
a Retry-After header in the 413 response. Now, by default, all
RateLimitExceededExceptions will be marshalled into a 413 with a
Retry-After included if possible.
2022-02-23 15:25:24 -06:00
Chris Eager 288cbf4a80 Clean up null-ability of incoming message entity fields 2022-02-17 13:23:48 -08:00
Chris Eager 73fa3c3fe4 Add test for content length validation 2022-02-17 13:23:48 -08:00
Chris Eager 579eb85175 Reject invalid envelope types 2022-02-17 13:23:48 -08:00
Ravi Khadiwala baaae6cd9f Add `@NotNull` to controller args where appropriate
Notably, `@Valid` doesn't imply `@NotNull`
2022-02-10 11:57:04 -06:00
Chris Eager ed398aa7b9 Add `DeviceCapabilities.pni` 2022-02-09 15:56:01 -08:00
Jordan Rose 41bf2b2c42
Add a binary format for incoming messages
The existing, general incoming message endpoint accepts messages as
JSON strings containing base64 data, along with all the metadata as
other JSON keys. That's not very efficient, and we don't make use of
that full generality anyway. This commit introduces a new binary
format that supports everything we're using from the old format (with
the help of some query parameters like multi-recipient messages).
2022-02-07 16:05:03 -08:00
Chris Eager 639d634426
Restore displaced UUID from deleted accounts table when present 2022-01-31 13:01:36 -08:00
Jon Chambers 05e7c98620 Return an `AccountIdentityResponse` when changing phone numbers 2022-01-26 14:44:53 -05:00
Jon Chambers 1f1d618dea Rename `AccountCreationResult` to `AccountIdentityResponse` (since it's not just for account creation any more) 2022-01-26 14:44:53 -05:00
Jon Chambers b18117ef89 Add tests for unidentified access when requesting profiles 2022-01-25 14:07:44 -05:00
Jon Chambers f69db11f42 Drop some unused dynamic configuration properties 2022-01-21 18:46:37 -05:00
Chris Eager 96a680dcf0 Remove displaced account from directory when changing numbers 2022-01-21 18:46:11 -05:00
Jon Chambers c612663490
Handle `null` `AccountAttributes` when verifying linked devices 2022-01-14 14:47:46 -05:00
Jordan Rose 146655e997 Add a "sameAvatar" flag to CreateProfileRequest
If sameAvatar is set (and "avatar" is also set), the avatar field for
a profile will be copied from the existing profile. This saves S3
churn and client bandwidth.
2022-01-04 13:57:41 -08:00
Chris Eager bb27dd0c3b Migrate from `Object[]` parameters to `Stream<Arguments>` 2022-01-03 15:10:02 -08:00
Chris Eager d7a3c12bbe Drop unused DynamoDB class rules 2022-01-03 15:10:02 -08:00
Chris Eager a1e84f5a88 Migrate service tests to JUnit 5 2022-01-03 15:10:02 -08:00
Chris Eager b758737907
Migrate remaining JUnit 4 Redis cluster tests to `RedisClusterExtension`
* Increase redis cluster initialization wait to 10 seconds
* Move to JUnit 5 `Assumptions`
2022-01-03 14:59:39 -08:00
Chris Eager 3e777df86c Timeout `sendNextMessagePage` after 5 minutes 2021-12-20 11:31:11 -08:00
Chris Eager 278b4e810d Add (failing) test for send message timeouts 2021-12-20 11:31:11 -08:00
Jon Chambers 5baa51d547 Migrate challenge-issuing configuration into the abusive message filter module 2021-12-16 12:22:19 -05:00
Jon Chambers 616db337e1 Remove an old rate limiting feature flag 2021-12-16 12:22:19 -05:00
Jon Chambers 3895871462 Repair missing PNIs in JSON blobs on account load 2021-12-16 11:17:51 -05:00
Jon Chambers a87b84fbe2 Return an empty response if somebody requests a profile key credential with a non-existent version 2021-12-16 10:30:55 -05:00
Jon Chambers e611a70ba4 Remove usernames from profile responses 2021-12-15 15:53:47 -05:00
Jon Chambers 66845d7080 Refactor: separate the various types of profile responses 2021-12-15 15:53:47 -05:00
Jon Chambers 4ea7278c6f Remove unversioned profile properties from `Account` entities 2021-12-15 15:53:47 -05:00
Jon Chambers 2b2e26f14b Remove deprecated, unversioned profile setters 2021-12-15 15:53:47 -05:00
Chris Eager 0ce87153e5 Remove second database for `AbusiveHostRules` 2021-12-08 16:03:02 -08:00
Chris Eager dba1711e8d Convert `AbusiveHostRule` to a record 2021-12-08 14:43:21 -08:00
Chris Eager a70b057e1c
Add second (migration) database to `AbusiveHostRules` 2021-12-08 12:46:05 -08:00
Ehren Kret 3df143dd3d Switch to zonky test embedded postgres and use postgres 11.13.0 2021-12-03 16:07:07 -05:00
Jon Chambers d0ad580c7d Add (failing!) tests for getting a profile key credentials for somebody else 2021-12-03 16:06:26 -05:00
Jon Chambers 20a71b7df2 Add tests for generating profile key credentials 2021-12-03 12:16:13 -05:00
Chris Eager 31e5058b15 Make temporary iOS envelope type adaptation a little wider 2021-12-03 12:06:31 -05:00
Jon Chambers 14cff958e9 Migrate challenge-issuing rate limiters to the abusive message filter 2021-12-03 11:52:58 -05:00
Jon Chambers 9628f147f1 Separate statically- and dynamically-configured rate limiters 2021-12-03 11:01:15 -05:00
Chris Eager 13e346d4eb
Distinguish local vs remote in `ClientPresenceManager#disconnectPresence` 2021-12-02 14:32:42 -08:00
Jon Chambers 401953313a Remove all vestiges of the relational account database 2021-12-02 12:46:43 -05:00
Chris Eager 4d2403d619 Use `assertTimeoutPreemptively` instead of `assertTimeout` 2021-12-02 12:17:08 -05:00
Jon Chambers c5f261305d Store destination UUIDs when persisting messages to DynamoDB 2021-12-02 12:17:08 -05:00
Jon Chambers 394f58f6cc Add a (failing!) check for destination UUIDs 2021-12-02 12:17:08 -05:00
Jon Chambers 674bf1b0e0 Drop a myserious empty test 2021-12-02 12:17:08 -05:00
Jon Chambers e23a1fac50 Remove old Postgres-backed remote config machinery 2021-12-02 12:16:43 -05:00
Jon Chambers efb410444b Introduce a username validator 2021-12-02 12:02:29 -05:00
Jon Chambers 23bc11f3b6 Introduce a DynamoDB-backed remote config store 2021-12-02 11:13:07 -05:00
Jon Chambers 4eb7dde1c8 Migrate RemoteConfigsTest to Junit 5 2021-12-02 11:13:07 -05:00
Jon Chambers 064861b930 Consolidate profiles store tests and discard `ProfilesStore` interface 2021-12-02 10:49:54 -05:00
Jon Chambers afa910bbd7 Drop relational profiles store 2021-12-02 10:49:54 -05:00
Jon Chambers 6aceb24fd2 Drop profile migration tools 2021-12-02 10:49:54 -05:00
Jon Chambers d94e86781f
Migrate username storage from a relational database to DynamoDB 2021-12-01 16:50:18 -05:00
Jon Chambers f7ff8e3837 Add a (failing!) test for deleting, then resetting profiles 2021-12-01 11:59:18 -05:00
Jon Chambers 048e17c62b Use a memoizing supplier instead of a looping thread to cache remote config entries 2021-11-30 16:35:42 -07:00
Jon Chambers d89b4f7e95 Compare versioned profiles synchronously; log a subset of mismatches for further investigation 2021-11-30 16:35:29 -07:00
Jon Chambers 65b49b2d9c
Use a "for each" strategy in profile migration methods 2021-11-24 16:54:30 -05:00
Jon Chambers 9e7010f185
Migrate profiles from a relational database to DynamoDB 2021-11-24 14:48:41 -05:00
Jon Chambers 3bb8e5bb00 Set a TTL for `Account` entries in the general cache 2021-11-24 14:47:36 -05:00
Jon Chambers ebf24fb125 Add a (failing!) test for clients omitting badges in profile update requests 2021-11-24 13:47:39 -05:00
Jon Chambers 6919354520
Fix a counting bug with reported messages 2021-11-23 17:28:39 -05:00
Jon Chambers a42fe9bfb0 Add crawler names to log messages 2021-11-23 16:22:09 -05:00
Jon Chambers c910fa406d Migrate reserved usernames from a relational database to DynamoDB 2021-11-23 16:21:03 -05:00
Jon Chambers 71dd0890de Restore an accidentally-removed PNI consistency check 2021-11-23 10:53:40 -05:00
Jon Chambers 067aee6664 Remove unused properties from `OutgoingMessageEntity` 2021-11-22 15:43:09 -05:00
Jon Chambers 138a2ebbd0 Drop transactional logic from phone number identifier migration 2021-11-22 15:32:24 -05:00
Jon Chambers 296f6a7a88 Make phone number identifiers non-optional 2021-11-22 15:32:24 -05:00
Jon Chambers 069ffa9921 Drop PNI migration tools 2021-11-22 15:32:24 -05:00
Jon Chambers 0bbd34d060 Use text blocks where possible 2021-11-22 15:30:31 -05:00
Ehren Kret caba110266 Revert "Revert "Remove transparent SVG for badging""
This reverts commit 0fdb23c1e9.
2021-11-18 10:23:09 -06:00
Ehren Kret 0fdb23c1e9 Revert "Remove transparent SVG for badging"
This reverts commit 13a84f0c72.
2021-11-18 10:09:34 -06:00
Ehren Kret 13a84f0c72 Remove transparent SVG for badging 2021-11-18 10:04:42 -06:00
Ehren Kret 7ea43a728d Set boost description from configuration 2021-11-16 17:21:57 -06:00
Chris Eager 71b38356b1 Update to Mockito 4.0.0 2021-11-16 15:56:35 -07:00
Jon Chambers f89a20dbc7 Allow callers to set/retrieve keys by ACI or PNI 2021-11-16 15:08:10 -05:00
Jon Chambers 3a4c5a2bfb Store and retrieve one-time pre-keys by UUID 2021-11-16 15:08:10 -05:00
Jon Chambers 5e1334e8de s/KeysDynamoDb/Keys/ 2021-11-16 15:08:10 -05:00
Jon Chambers fa6e3d3690 Allow clients to request PNI-based group credentials 2021-11-16 15:08:10 -05:00
Jon Chambers 9383e7716b Resolve `CertificateControllerTest` warnings and recommendations 2021-11-16 15:08:10 -05:00
Jon Chambers cfe34fbf0f Allow unsealed-sender messages to be addressed by PNI 2021-11-16 15:08:10 -05:00
Jon Chambers 975f753c2b Add an endpoint for testing whether an account with a given ACI or PNI exists 2021-11-16 15:08:10 -05:00
Jon Chambers e6237480f8 Require that unidentified access keys be exactly 16 bytes 2021-11-16 15:08:10 -05:00
Chris Eager 26f876a2cb Check service configurations in verify phase 2021-11-16 11:43:07 -07:00
Jon Chambers ab9e6ac48a Revert "Replace zkgroup with libsignal-client"
This reverts commit 73ea6e4251.
2021-11-16 11:35:10 -05:00
Jon Chambers c1d6c04ab2 Revert "Replace curve25519-java with libsignal-client"
This reverts commit 0011b8925b.
2021-11-16 11:35:10 -05:00