Commit Graph

689 Commits

Author SHA1 Message Date
binwiederhier 341e84f643 Limit number of webpush subscriptions per subscriber IP 2023-06-16 21:59:07 -04:00
binwiederhier c43a1166e2 Docs, mostly 2023-06-16 16:55:42 -04:00
binwiederhier 6e95d62726 Cosmetic changess 2023-06-15 22:25:05 -04:00
binwiederhier 2d0c043dfd Derp 2023-06-12 21:03:49 -04:00
binwiederhier a8def0aed2 Make allowed endpoints a list of patterns 2023-06-12 21:01:43 -04:00
binwiederhier 58992fc795 Make DELETE endpoint, add different UI description 2023-06-10 21:09:01 -04:00
binwiederhier 1abcc88fce Add subscription_topic table, change updated_at type to INT, split expire function 2023-06-09 23:17:48 -04:00
nimbleghost 4704b2a0e4 Set default TTL for web push to the cache duration 2023-06-09 11:32:44 +02:00
binwiederhier 966ffe1669 More refactor 2023-06-08 23:09:38 -04:00
binwiederhier 9d38aeb863 Docs in server.yml, schemaVersion table, refactoring 2023-06-08 21:45:52 -04:00
binwiederhier d3ac976d05 Remove web-push-(enabled|duration*), change endpoint, other cosmetic changes 2023-06-08 14:30:19 -04:00
binwiederhier 75a4b5bd88 Small refactor 2023-06-08 12:20:12 -04:00
nimbleghost 46f34ca1e3 Add push service allowlist and topic limit 2023-06-07 21:09:13 +02:00
nimbleghost 0f0074cbab Implement push subscription expiry 2023-06-07 21:09:13 +02:00
nimbleghost 47ad024ec7 Simplify web push UX and updates
- Use a single endpoint
- Use a declarative web push sync hook. This thus handles all edge cases
  that had to be manually handled before: logout, login, account sync,
  etc.
- Simplify UX: browser notifications are always enabled (unless denied),
  web push toggle only shows up if permissions are already granted.
2023-06-07 20:38:21 +02:00
nimbleghost 0c25425346 Use readJSONWithLimit for web push sub/unsub 2023-06-07 20:38:21 +02:00
nimbleghost 4648f83669 Format emojis in the service worker directly 2023-06-07 20:38:21 +02:00
nimbleghost 44913c1668 Replace if err-nil-Fatal check with require.Nil 2023-06-07 20:38:21 +02:00
binwiederhier 20c7650e51 server.yml update 2023-06-07 20:38:21 +02:00
binwiederhier e8139ad655 Move web-push-config endpoint to config.js 2023-06-07 20:38:21 +02:00
binwiederhier 9e0687e142 Random tiny changes 2023-06-07 20:38:21 +02:00
binwiederhier 7f3e4b5f47 Move stuff to server_web_push.go 2023-06-07 20:38:21 +02:00
binwiederhier 7b23158e0a Cosmetic changes 2023-06-07 20:38:21 +02:00
nimbleghost a9fef387fa Add web push tests 2023-06-07 20:38:21 +02:00
nimbleghost ff5c854192 Add PWA, service worker and Web Push
- Use new notification request/opt-in flow for push
- Implement unsubscribing
- Implement muting
- Implement emojis in title
- Add iOS specific PWA warning
- Don’t use websockets when web push is enabled
- Fix duplicate notifications
- Implement default web push setting
- Implement changing subscription type
- Implement web push subscription refresh
- Implement web push notification click
2023-06-07 20:38:20 +02:00
binwiederhier d084a415f3 Do not forward UP messages to upstream 2023-05-31 15:36:02 -04:00
binwiederhier 7d46f1eed9 Merge branch 'main' into markdown 2023-05-26 21:15:38 -04:00
binwiederhier 7812eb9d19 WIP: Markdown 2023-05-24 20:37:27 -04:00
nimbleghost e21327cec5 Add vite
Changes according to Vite defaults:

- Move index.html to root
- Replace `%PUBLIC_URL%` with plain `/`
2023-05-24 22:16:10 +02:00
binwiederhier f8a00dd411 Fix test 2023-05-23 14:24:11 -04:00
binwiederhier da06ae4485 Clarify error message for poll requests 2023-05-23 13:20:43 -04:00
binwiederhier 168ad8bf1b Support encoding any header as RFC 2047 2023-05-21 20:56:56 -04:00
binwiederhier 3b3e6ac2cd Rename twilio-from-number to twilio-phone-number 2023-05-18 13:32:27 -04:00
binwiederhier 25d3a66f91 Upstream access token 2023-05-18 13:08:10 -04:00
binwiederhier fc1087a42b The last one 2023-05-17 11:19:48 -04:00
binwiederhier 92c384374a More self-review 2023-05-17 10:58:28 -04:00
binwiederhier ac029c389e Self-review 2023-05-17 10:39:15 -04:00
binwiederhier 2c81773d01 Add call verification 2023-05-16 22:27:48 -04:00
binwiederhier 496d6e74b0 Staticcheck 2023-05-16 15:12:18 -04:00
binwiederhier 7c574d73de Cont'd Twilio stuff 2023-05-16 14:15:58 -04:00
binwiederhier deb4f24856 Cont'd, getting there 2023-05-15 22:06:43 -04:00
binwiederhier 4b9e0c5c38 Phone number verification in publishing 2023-05-15 20:42:43 -04:00
binwiederhier 69b01bc468 Merge branch 'main' into twilio 2023-05-15 20:02:51 -04:00
binwiederhier f14f0aaa26 Add tests for users, slightly change API a bit 2023-05-15 10:42:24 -04:00
binwiederhier 4f4165f46f Merge branch 'main' into access-api 2023-05-14 20:43:07 -04:00
Philipp C. Heckel 8f87e9008b
Merge pull request #728 from wunter8/attachment-filename
set attachment filename when download through browser
2023-05-14 14:15:31 -04:00
Hunter Kehoe 4fa0655438 set attachment filename when download through browser 2023-05-14 11:19:49 -06:00
binwiederhier 97fc287b78 User endpoint 2023-05-13 22:07:54 -04:00
binwiederhier 625b13280f WIP: Access API 2023-05-13 14:39:31 -04:00
binwiederhier 539ba43cd1 WIP twilio 2023-05-13 12:26:14 -04:00
Michael Manganiello 49bd6129ff Convert mailer_emoji JSON file to map
This fixes a pending TODO comment regarding inefficient tags to emojis
mapping, by requiring a full scan over emoji aliases to determine
matches.

Instead, now the JSON file is a map, with aliases as keys, and emojis as
values. The script to convert the file with Python was:

```python
import json

with open("./mailer_emoji.json", "r", encoding="utf-8") as f:
    content = json.load(f)

emoji_map = {}
for emoji in content:
    for alias in emoji["aliases"]:
        if alias in emoji_map:
            print("WARNING: Duplicate alias:", alias)
            continue
        emoji_map[alias] = str(emoji["emoji"])

sorted_emoji_map = {k: emoji_map[k] for k in sorted(emoji_map)}

with open("./mailer_emoji_map.json", "w", encoding="utf-8") as f:
    json.dump(sorted_emoji_map, f, indent=4, ensure_ascii=False)
```
2023-05-13 11:43:47 -03:00
binwiederhier cea434a57c WIP Twilio 2023-05-12 21:47:41 -04:00
binwiederhier f99159ee5b WIP calls, remove SMS 2023-05-12 20:01:12 -04:00
binwiederhier d4767caf30 Verify 2023-05-11 13:50:10 -04:00
binwiederhier a26a6be62b Merge branch 'main' into twilio 2023-05-10 14:18:55 -04:00
binwiederhier f4e6874ff0 Formatting 2023-05-09 20:57:09 -04:00
Guillaume Taquet Gasperini 5b8520b4e0 Add quoted-printable decoding to smtp server
Some e-mails are sent using quoted-printable encoding [0], resulting in
notifications with weird characters.

This commit adds support for this encoding, resulting in the following:

**Before**
```
A
=3D=3D=3D=3D=3D
B
=3D=3D=3D=3D=3D
C
```

**After**
```
A
=====
B
=====
C
```

[0] https://www.rfc-editor.org/rfc/rfc2045.html
2023-05-08 10:54:34 +02:00
binwiederhier eb0805a470 Update web app with SMS and calls stuff 2023-05-07 22:28:07 -04:00
binwiederhier f9e2d6ddcb Add limiters and database changes 2023-05-07 11:59:15 -04:00
binwiederhier 113b7c8a08 Metrics, tests 2023-05-06 14:23:48 -04:00
binwiederhier 3863357207 WIP 2023-05-05 20:14:46 -04:00
binwiederhier 1c0162c434 WIP: Twilio 2023-05-05 16:22:54 -04:00
binwiederhier c997e4911a Fix test and retry 2023-05-02 14:16:59 -04:00
Rahul Tyagi d2fa768151 fix: removes an issue with topic.Subscribe function not checking duplicate ID 2023-05-02 21:40:27 +05:30
binwiederhier 6ad3b2e802 Remove old homepage 2023-05-01 11:58:49 -04:00
binwiederhier 59a5077713 Add RFC 2047 encoding support for tags 2023-04-24 13:00:14 -04:00
binwiederhier 35eac5b9ad Simplify 2023-04-21 21:07:07 -04:00
binwiederhier cfa8d92af1 UTF-8 headers 2023-04-21 18:45:27 -04:00
binwiederhier 91d2603fe0 Add tests, and proper rate 2023-04-21 11:09:13 -04:00
binwiederhier 6be95f8285 WIP: persist message stats 2023-04-20 22:04:11 -04:00
binwiederhier d88dbbc90f WIP 2023-04-02 13:59:26 -04:00
binwiederhier bdae48afba Disable iOS polling entirely 2023-03-30 14:48:52 -04:00
binwiederhier 46c798c71a Just comment the test for now 2023-03-29 15:03:41 -04:00
binwiederhier 4596e4bcab Blog posts, fix lint 2023-03-29 00:23:08 -04:00
binwiederhier 29c9551548 Profiling support 2023-03-28 14:41:16 -04:00
binwiederhier 502d0a0abd Fix delayed message sending from authenticated users, closes #679 2023-03-22 15:30:20 -04:00
binwiederhier 73069ae9a0 Fix test 2023-03-17 22:05:07 -04:00
binwiederhier e20fd0f84f Changelog 2023-03-16 22:40:52 -04:00
binwiederhier ca9fed7b67 More metrics 2023-03-16 22:19:20 -04:00
binwiederhier 358b344916 Allow /metrics on default port; reduce memory if not enabled 2023-03-15 22:34:06 -04:00
binwiederhier fe731d43cd More metrics 2023-03-14 10:19:15 -04:00
binwiederhier 754b456320 Merge branch 'main' into metrics 2023-03-12 21:23:24 -04:00
binwiederhier c6bfdd45be Increase allowed auth failure attempts, Increase maximum incremental backoff retry interval 2023-03-08 14:51:47 -05:00
binwiederhier 9370acbcfe Cosmetic changes 2023-03-06 23:12:46 -05:00
binwiederhier 2783a52cad WIP metrics 2023-03-06 22:16:10 -05:00
Hunter Kehoe 25be5b47e4 allow default-token and per-subscription tokens in client.yml 2023-03-05 22:57:51 -07:00
binwiederhier 6f4b260035 Tiny changes 2023-03-04 09:32:29 -05:00
binwiederhier 346d8d7967 Works 2023-03-03 22:22:07 -05:00
binwiederhier 3eeeac2c13 Merge branch 'enable-subscriber-rate-limiting' into matrix-507-reject 2023-03-03 20:34:33 -05:00
binwiederhier 94f6d2d5b5 Rename flag 2023-03-03 20:23:18 -05:00
binwiederhier 1c4420bca8 EnableRateVisitor flag 2023-03-03 14:55:37 -05:00
binwiederhier 1ce92714c4 Add `visitor_seen` to the log context 2023-03-03 13:56:48 -05:00
binwiederhier 90db1283dd Allow SMTP servers without auth 2023-03-02 20:25:13 -05:00
binwiederhier 983afb2b45 Fix some iffy tests with waitFor function 2023-03-01 11:36:48 -05:00
binwiederhier 4d22ccc7f6 WIP Reject 507s after a while 2023-02-28 22:25:13 -05:00
binwiederhier fe3a225f8f Add `billing-contact` config option 2023-02-28 14:38:31 -05:00
binwiederhier 8ca08ce868 Fix panic when using Firebase without users 2023-02-27 22:07:22 -05:00
binwiederhier ba46630138 Various things 2023-02-27 21:13:15 -05:00
binwiederhier 217ca81b17 Remove broken test, replace with simpler one 2023-02-27 14:07:06 -05:00
binwiederhier 7edcebad1f Give test more time 2023-02-27 11:06:03 -05:00