Commit Graph

1979 Commits

Author SHA1 Message Date
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 4a91fc3c3d Set `daemon=true` for pubsub topology change event thread 2023-07-05 11:15:12 -05:00
Chris Eager bb9605d7c3 Use RedisClient#setDefaultTimeout for a non-clustered client 2023-07-05 11:09:28 -05:00
Jon Chambers 1049326a70 Turn on Lettuce latency metrics 2023-06-30 18:20:43 -04:00
Chris Eager 457ecf145f Add test for Redis timeouts 2023-06-30 12:55:37 -05:00
Chris Eager bdcd055aaf Configure Redis timeouts using TimeoutOptions and RediURI 2023-06-30 12:55:37 -05:00
Jon Chambers 30ae2037e8 Correct order of constructor arguments for `KeysManager` 2023-06-30 12:05:16 -04:00
Jon Chambers ce4fdbfb3c Untangle metric names for `RepeatedUseSignedPreKeyStore` subclasses 2023-06-30 10:33:24 -04: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 8e48ac4ede Add `messagesCache` and `clientPresenceManager` to managed command dependencies 2023-06-30 10:24:18 -04:00
Ehren Kret 859f646c55 Correct timestamp resolution to intended integer value 2023-06-29 16:05:59 -05: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 b5fd131aba Add an abstract base class for single-shot account crawls 2023-06-27 10:18:35 -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
Ehren Kret cc3cab9c88 Add server time to remote config fetch
Enable clients to very roughly adjust some actions for clock skew by
providing current server time in the remote config fetch.
2023-06-21 17:11:35 -05:00
Jon Chambers 0122b410be Include push notification urgency in push latency metrics 2023-06-21 15:10:26 -04:00
Jon Chambers 2ddd2b9476 Convert `PushRecord` to a `record` and make `PushType` non-optional 2023-06-21 15:10:26 -04:00
Jon Chambers a768498250 Record general message delivery latency 2023-06-21 15:10:14 -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 6d81f69785 Start and stop all lifecycle-managed objects in `CrawlAccountsCommand` 2023-06-17 10:17:46 -05:00
Chris Eager 7dce183170 Add worker thread pool to PushFeedbackProcessor 2023-06-16 11:36:28 -05:00
Chris Eager f1962a03ef Parameterize worker thread count in CrawlAccountsCommand 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
Chris Eager 8501e61eb1 Set maxThreads = minThreads on command thread pools 2023-06-15 12:11:10 -05:00
Jon Chambers ae489e5a52 Log account ages when identity keys change 2023-06-15 13:10:35 -04:00
Chris Eager 13afdbda97
Report system resource metrics from background tasks 2023-06-14 16:48:23 -05:00
Jon Chambers 9cfd88a23f Move turn secret to static configuration 2023-06-14 10:47:17 -04:00
Jon Chambers 13456bad3a Update date math with JSR310 types 2023-06-14 10:47:17 -04:00
Jon Chambers 45be85c5ef Update formatting and resolve warnings/suggestions 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 7fc6b1e802 Count invalid pre-keys 2023-06-09 09:25:31 -04:00
Jon Chambers 8ec6a24a2d Fix a metric name/tag set 2023-06-08 12:34:27 -04:00
Jon Chambers 234707169e
Represent identity keys as `IdentityKey` instances 2023-06-08 11:36:58 -04:00
Jon Chambers 1c8443210a Check for missing version bytes in invalid identity keys 2023-06-08 09:56:21 -04:00
g1a55er aaf43a592f Replace reserved "notification" key with "newMessageAlert" 2023-06-08 09:53:31 -04:00
Jon Chambers 2b08742c0a
Create separate key stores for different kinds of pre-keys 2023-06-06 17:08:26 -04:00
Jon Chambers cac04146de Identify specific cases with invalid identity keys 2023-06-06 17:08:01 -04:00
ravi-signal 2b266c7beb
Validate registration ids for new accounts 2023-06-06 11:08:54 -04:00
Jonathan Klabunde Tomer 099932ae68 ApnPushNotifcationScheduler: always run worker thread at least once 2023-06-06 11:04:44 -04:00
Jon Chambers 8579babde6 Count instances where an account's identity key could not be interpreted as an `IdentityKey` 2023-06-06 11:01:25 -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
Chris Eager f17de58a71 Change `ScheduledApnPushNotificationSenderServiceCommand` to extend `ServerCommand` 2023-05-30 10:14:33 -05:00
Chris Eager dd552e8e8f Change `MessagePersisterServiceCommand` to extend `ServerCommand` 2023-05-30 10:14:33 -05:00
Chris Eager 18480e9d18 Move metrics registry `environment.manage()` to utility 2023-05-30 10:14:33 -05:00
Chris Eager 7ffccd9c3a Initialize metrics in `ScheduledApnPushNotificationSenderServiceCommand` 2023-05-26 16:41:17 -05:00
Chris Eager 0edd99e9cf Initialize metrics in `MessagePersisterServiceCommand` 2023-05-26 16:41:17 -05:00
Chris Eager defdc14d5e Initialize metrics in `CrawlAccountsCommand` 2023-05-26 16:41:17 -05:00
Chris Eager 5dcf8edd38 Factor metrics registry intialization to a utility 2023-05-26 16:41:17 -05:00
Jon Chambers 91805caa9a Finalize rate limit unit inversion 2023-05-26 14:17:30 -04:00
Jon Chambers 48d39dccbd Fix rate limit division errors 2023-05-26 13:13:02 -04:00
Chris Eager e7bc8bd6b9 Consistently use AWS credentials providers from `WhisperServerService` 2023-05-26 12:45:38 -04:00
Jon Chambers f513dc0398 Invert rate limit units in default configurations 2023-05-26 11:37:06 -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
Chris Eager 1534f1aa6a Add web identity token AWS SDK credentials provider 2023-05-26 11:07:41 -04:00
Chris Eager cd8f74e60b Add support for environment-dependent secondary OAuth2 credentials JSON 2023-05-26 11:07:30 -04:00
Jon Chambers d832eaa759 Represent identity keys as byte arrays 2023-05-26 10:12:22 -04:00
Jon Chambers 796863341d Revert "Count identity keys that are present, but can't be parsed as base64"
This reverts commit 024dd02628a7d989424273501528b52fe18c3ee9.
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 4a8ad3103c Actually write pre-keys as byte arrays 2023-05-26 08:23:54 -04:00
Jon Chambers a5f853c67a Change inactive account age threshold from 365 to 180 days 2023-05-26 08:23:19 -04:00
Jon Chambers 70b54e227e Count the prevalence of keys stored as strings or as bytes 2023-05-25 10:04:38 -05:00
Jonathan Klabunde Tomer 1ab6bff54e
add `@Produces` annotations to a few methods in DeviceController 2023-05-25 09:57:06 -05:00
Chris Eager c2317e8493 Start the dynamic configuration manager in dependent commands 2023-05-25 09:52:01 -05:00
Jon Chambers b034a088b1 Add support for "atomic" device linking/activation 2023-05-19 16:13:37 -04:00
Jon Chambers ae7cb8036e Factor `DeviceActivationRequest` out into its own record 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 c9a9409b9a Count identity keys that are present, but can't be parsed as base64 2023-05-19 15:56:27 -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
Katherine Yen 34d77e73ff
Fix integer division in call link ratelimit leak rate 2023-05-16 14:34:06 -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
Katherine Yen 7395b5760a Remove unused call link config 2023-05-12 11:01:42 -05:00
Jon Chambers d2baa8b8fb Stop sending API keys to the registration service 2023-05-10 15:28:12 -04:00
Chris Eager 281b91a59a Remove obsolete `ContactDiscoveryWriter` 2023-05-10 14:01:09 -05:00
Jon Chambers 2be2b4ff23 Authenticate with the registration service using OIDC identity tokens in addition to shared API keys 2023-05-10 14:59:07 -04: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
Chris Eager 3214852a41 Fix `401` on `/v1/keepalive` 2023-05-09 15:08:03 -05:00
Jon Chambers 1057bd7e1f Resolve warnings/suggestions throughout `ProfileControllerTest` 2023-05-09 10:32:32 -04:00
Jonathan Klabunde Tomer 33903553ab
reinstate per-{path,status,platform,is-websocket} request counters 2023-05-09 09:49:20 -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
Ravi Khadiwala 59ebe65643 Add counter to /v2/attachments 2023-05-04 09:22:18 -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
Jonathan Klabunde Tomer be176f98ad
metric for take-prekey yielding an empty result 2023-05-02 13:03:49 -07:00
Jon Chambers 12b58a31a1
Retire integration with legacy contact discovery system 2023-05-02 15:57:03 -04:00
Jon Chambers 8d468d17e3 Add a temporary counter for profile key credential types 2023-05-02 15:56:19 -04:00
Chris Eager e135d50d82 Add counter for `ContactDiscoverWriter` updates 2023-05-01 13:42:14 -05: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 6dfdbeb7bb Check for no-op APNs token changes 2023-04-19 17:01:01 -04:00
Jon Chambers d0ccbd5526 Simplify a check for no-op FCM token changes 2023-04-19 17:01:01 -04:00
Jon Chambers 031ee57371 Convert "set push token" request objects to records 2023-04-19 17:01:01 -04:00
Jon Chambers 2043678739 Remove the `removeSignalingKey` API endpoint 2023-04-19 17:00:47 -04: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
Sergey Skrobotov a553093046 integration tests initial setup 2023-04-13 11:12:34 -07:00
Katherine Yen 61af1ba029
Clean up prohibited username references 2023-04-10 15:21:02 -07:00
ravi-signal 8847cb92ac
Don't block when scheduling background apns pushes 2023-04-10 13:51:36 -05:00
Chris Eager 33a6577b6e Decrease message delivery executor thread count to 20 2023-04-07 10:56:23 -05:00
Chris Eager 23d5006f70 Add prefix to executor metric names 2023-04-05 09:51:53 -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 05b43a878b Register unlink device command 2023-03-21 17:35:57 -05:00
Chris Eager fe9c3982a1 Remove prepended username from `/v2/backup/auth` response 2023-03-21 17:35:42 -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
Jon Chambers 2052e62c01 Use a purpose-specific method when checking verification codes via the legacy registration API 2023-03-20 15:18:38 -04:00
Chris Eager 292f69256e Refactor WebSocket message sending error and completion to subscriber from “doOn…” 2023-03-17 12:42:57 -05:00
ravi-signal fbdcb942e8
Add unlink user command 2023-03-16 11:17:36 -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
Jon Chambers a04fe133b6 Fix a typo in a method name 2023-03-15 16:01:14 -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
Katherine Yen 7c52be2ac1
Bump old registration default ratelimiter to match Bravo 2023-03-15 09:44:02 -07:00
Katherine Yen 2683f1c6e7
Encode username hash to base64 string without padding 2023-03-13 15:35:27 -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
Jon Chambers 7de5c0a27d Keep counts of open websockets by client platform 2023-03-03 13:16:24 -06:00
Chris Eager 71d234e1e4 Update default rate limiter config 2023-03-02 10:27:07 -06:00
Chris Eager b5fb33e21e Remove unused metrics 2023-03-02 10:14:58 -06:00
Chris Eager db198237f3 Expand `try`-`finally` scope of deleted accounts reconciliation lock 2023-02-28 12:42:18 -06:00
Chris Eager d0ccae129a Remove obsolete metric 2023-02-27 16:33:34 -06:00
Chris Eager ecbef9c6ee Add micrometer metrics to RateLimiter 2023-02-27 16:33:27 -06:00
Chris Eager ef2cc6620e Add `@Produces` annotation for validation error response 2023-02-27 16:33:18 -06:00
ravi-signal b8f363b187
Add documentation to challenge controller 2023-02-24 17:41:15 -06:00
Sergey Skrobotov c3f4956ead OpenAPI support 2023-02-24 13:03:30 -08:00
Chris Eager 047f4a1c00 Update metric name 2023-02-24 13:07:07 -06:00
Sergey Skrobotov 41c0fe9ffa Adding a uniform configuration for all json/yaml mapper use cases: part 2 2023-02-24 09:28:55 -08:00
Sergey Skrobotov 6edb0d49e9 Adding a uniform configuration for all json/yaml mapper use cases: bugfix 2023-02-23 20:01:32 -08: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
Jon Chambers 6ee9c6ad46 Remove deprecated registration service response fields 2023-02-23 12:41:56 -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 e1fcd3e3f6 Remove Lettuce command latency recorder 2023-02-23 10:17:31 -06:00
Chris Eager d7ad8dd448 Add micrometer timer to `FaultTolerantPubSubConnection` 2023-02-23 10:17:24 -06:00
Chris Eager 859f2302a9 Remove unused metrics 2023-02-23 10:17:24 -06:00
Chris Eager a6d11789e9 Add `ClosedChannelException` to expected errors 2023-02-23 10:17:16 -06:00
Chris Eager 43f83076fa Update to reactor 3.5.3 2023-02-23 10:16:57 -06:00
erik-signal 71c0fc8d4a
Improve metrics around spam report tokens. 2023-02-22 15:43:44 -05:00
Chris Eager 1f4f926ce6 Add platform tag to subscription receipt metrics 2023-02-22 14:31:30 -06: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
Jon Chambers 7561622bc8 Log cases where we fall back to a no-op spam-reporting token provider 2023-02-14 12:35:56 -05:00
Jon Chambers b041566aba Simplify construction of spam reporting token providers 2023-02-14 12:35:56 -05:00
Jon Chambers cb72158abc Add the presence of spam reporting tokens as a dimension 2023-02-14 12:35:21 -05:00
Jon Chambers 5c432d094f Fix a typo in a metric name 2023-02-14 12:34:48 -05:00
Chris Eager 24ac48b3b1 Update counter name 2023-02-10 14:54:02 -06: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 ce689bdff3
Use `DisabledPermittedAuthenticatedAccount` at `DELETE /v1/accounts/me` 2023-02-09 09:05:29 -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 7c3f429c56 Update E164 constraint message 2023-02-08 13:22:00 -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
Jon Chambers 448365c7a0 Preserve legacy registration API error handling 2023-01-31 15:45:23 -05: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
gram-signal a01fcdad28
Add in controller for SVR2 auth. 2023-01-27 09:15:52 -07:00
Chris Eager 2a99529921 Remove old badge strings 2023-01-26 09:23:11 -06: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