Taras Kushnir
668c9b0f86
Cosmetic fixes
2025-09-03 13:45:21 +03:00
Taras Kushnir
e1711360a5
Fix healthcheck job being exclusive
2025-09-03 13:29:18 +03:00
Taras Kushnir
5bf531bab0
Refactor puzzle verification and issue out of api.Server
2025-08-26 14:49:49 +03:00
Taras Kushnir
803b07d7f7
Protect maintenance job endpoints. closes PrivateCaptcha/issues#178
2025-08-25 11:22:43 +03:00
Taras Kushnir
a0ce451d0f
Switch to otter cache in leaky bucket manager
2025-08-23 19:48:24 +03:00
Taras Kushnir
94f088ebc2
Make email templates parsing lazy
2025-08-22 18:43:48 +03:00
Taras Kushnir
665431a621
Add ability to pass arguments to maintenance jobs. closes PrivateCaptcha/issues#171
2025-08-18 10:22:12 +03:00
Taras Kushnir
b74eacd23a
Cosmetic improvements
2025-08-17 21:41:42 +03:00
Taras Kushnir
8c8cfaf485
Add maintenance job to expire internal trials
2025-08-17 14:57:43 +03:00
Taras Kushnir
945100be86
Add circuit breaker for notifications processing
2025-08-17 12:50:00 +03:00
Taras Kushnir
6231572bee
Move portal mailer to portal package
2025-08-16 11:26:46 +03:00
Taras Kushnir
1e9a00f8c9
Add widget strings translations to few European languages
...
Bump widget lib version
2025-08-16 11:17:41 +03:00
Taras Kushnir
6c76c34df0
Add maintenance job to delete trial accounts
2025-08-16 10:42:46 +03:00
Taras Kushnir
335ea6dcb6
Store also plain-text version of notification template in DB
2025-08-16 09:01:03 +03:00
Taras Kushnir
25b81f38e3
Get rid of unnecessary config
2025-08-16 08:13:29 +03:00
Taras Kushnir
9a6dfdcd1f
Simplify notifications code
2025-08-15 19:29:10 +03:00
Taras Kushnir
3884c97c8c
Improve welcome email contents
2025-08-15 17:40:51 +03:00
Taras Kushnir
ff00d6fa1f
Add notifications for expiring API keys. closes PrivateCaptcha/issues#1
2025-08-14 20:16:49 +03:00
Taras Kushnir
6d525bd804
Disambiguate URLs in email templates
2025-08-14 12:09:06 +03:00
Taras Kushnir
fc8c04f686
Add notifications support
2025-08-14 10:52:45 +03:00
Taras Kushnir
a6be38e0be
Add site script compatibility mode with Google reCAPTCHA
2025-08-11 12:38:05 +03:00
Taras Kushnir
a804f76012
Update integrations and use Hugo-like data files
2025-07-28 15:55:24 +03:00
Taras Kushnir
e351ed6fb1
Allow changing log level in runtime
2025-07-27 11:32:08 +03:00
Taras Kushnir
5fd00615e1
Return success for echo puzzles
2025-07-18 17:19:55 +03:00
Taras Kushnir
6bb2d74779
Vibe-code activation keys packer for GitHub Action
2025-07-08 19:47:39 +03:00
Taras Kushnir
be96cf3d4c
Refactor rate limiter out of auth middleware
...
Now we have a normalized sequence of "security" middlewares for public endpoints:
1. crash recovery (always first)
2. CDN security (whatever that means)
3. HTTP metrics (prometheus)
4. rate limiter (effect will be visible via metrics, but not logs)
5. out tracing (for logs)
6. All the rest
Since this commit, this sequence is same in both portal and API servers.
2025-07-08 17:56:40 +03:00
Taras Kushnir
ebc2c27c68
Cosmetic improvement
2025-07-07 16:20:56 +03:00
Taras Kushnir
468c9c9cc3
Fix typo
2025-07-07 15:19:40 +03:00
Taras Kushnir
42f495c141
Use a single rate limiter based on IPs with views
2025-07-07 15:17:32 +03:00
Taras Kushnir
3466f9a023
Send stack version during activation
2025-07-06 11:19:53 +03:00
Taras Kushnir
fc87e8b063
Mirror cache key extension logic to env vars
2025-07-05 14:59:41 +03:00
Taras Kushnir
c1e55eed9a
Cosmetic improvements
...
- add common retriable error type
- run license check faster to support issuing logic (external)
- decrease API cache warmup limit to top 50
2025-07-04 16:41:24 +03:00
Taras Kushnir
a57d9bba9c
Fix linter error
2025-07-03 18:52:50 +03:00
Taras Kushnir
b9819b22d1
Embed all key files
...
This is done in order to make this package more "exportable" for Go.
As a benefit, we also got rid of extra "tests" tag.
2025-07-03 18:32:01 +03:00
Taras Kushnir
bab2f69ddf
Quit server gracefully on license error
2025-07-02 22:06:40 +03:00
Taras Kushnir
3c2edf64b2
Add EE license check functionality
2025-07-02 14:13:48 +03:00
Taras Kushnir
45d9781640
Cosmetic improvements
...
- fix not using "order by" for top usage query in CH
- skip querying users from CH entirely because we anyway have to get them
- fix typo in job crash handler
2025-06-21 17:59:15 +03:00
Taras Kushnir
bf0598c1a9
Make siteverify API more resilient for unauthorized access
...
- more aggressive caching of API keys and added cache warmup
- remove direct DB access in APIkey() middleware immediately
- decrease resources usage for test puzzles
- decrease cache collision possibility for cached solved puzzles
- cosmetic improvement in rate limiter and leaky bucket Updater logic
- move user limits check and API key backfill to a separate goroutine
2025-06-21 14:16:28 +03:00
Taras Kushnir
9ec1ef8d65
Refactor caching layer
...
Main reason being otter/v2 release with APIs for sliding expiration.
- added new cache API to use Loader logic from otter/v2 (fetch from DB)
- main direction of work is improving "negative caching" performance
(currently it is still intertwined with the main cache)
- expose new Prometheus metric for cache hit ratio
2025-06-21 14:16:28 +03:00
Taras Kushnir
f2c64f3cfb
Cosmetic security improvements to reduce spam from SonarCloud
2025-06-17 15:04:41 +03:00
Taras Kushnir
4951055189
Initial commit
2025-05-31 10:56:00 +03:00