Commit graph

92 commits

Author SHA1 Message Date
oxalica
cd7d0f773f feat(blahd): impl ETag for server metadata 2024-09-25 14:08:12 -04:00
oxalica
70481e6c74 feat(blahd): impl ETag for feed 2024-09-25 14:04:58 -04:00
oxalica
fac146e859 build: validate CFG_SRC_URL and simplify CFG_RELEASE handling 2024-09-25 12:45:34 -04:00
oxalica
fa14844d0d feat(webapi): expose server metadata 2024-09-25 12:45:26 -04:00
oxalica
8551540798 refactor(types)!: blow up big lib.rs into submods 2024-09-25 11:15:31 -04:00
oxalica
a38b59da84 fix(types,blahd): reject timestamps > i64::MAX 2024-09-24 20:36:27 -04:00
oxalica
c4fbf1294b fix(blahd): merge queries for last-seen update 2024-09-24 19:37:50 -04:00
oxalica
0911d56e22 refactor(blahd,webapi)!: overhaul error type
Error types are now collected into a single place. Similar errors are
merged.

Request invariant violations are now all under 400 with type
"invalid_request" if it's a client mistake; and if it's caused by a
server restrction, under 403 with type "disabled".
2024-09-24 19:12:56 -04:00
oxalica
487099474f feat(webapi): impl atom feed and use tag URI for feed id 2024-09-23 20:32:24 -04:00
oxalica
94e5913513 refactor(blahd),test: move feed generation into submod and add test 2024-09-23 20:32:24 -04:00
oxalica
1e8c16888c refactor(blahd): use NonZero/u32 for page length
This avoids platform-dependent `usize` in configuration and webapi.
2024-09-23 18:04:26 -04:00
oxalica
82f69eb96a bench: move to blah-types and add for sign/verify 2024-09-23 14:49:36 -04:00
oxalica
2fe8dfdab7 test: add more tests for register verification 2024-09-22 12:18:41 -04:00
oxalica
dd940d5769 feat(types): impl Debug,From<{&,}VerifyingKey> for PubKey 2024-09-22 07:28:21 -04:00
oxalica
b93ff2882e fix(test/socket_activate): inherit env vars
This should fix coverage test.
2024-09-22 06:36:02 -04:00
oxalica
475bd59117 build(deps): update dependencies and omit minor version spec 2024-09-22 05:58:39 -04:00
oxalica
7384888128 feat(blahd): impl graceful shutdown 2024-09-22 05:16:10 -04:00
oxalica
883fac02ae test: add for WS 2024-09-22 04:43:11 -04:00
oxalica
4bca196df3 fix(event): consistently use i64 for uid 2024-09-21 15:21:52 -04:00
oxalica
a7f31e5fad refactor(webapi)!: avoid u64/i64 usage in types except timestamp
We do not need that many big numbers yet. This should simplify client
implementation without native u64 (eg. JavaScript).

Also put a hard limit on `unseen_cnt` query.
2024-09-21 15:14:50 -04:00
oxalica
ad3e422902 fix(webapi): reject mark-seen for future msgs 2024-09-21 14:58:51 -04:00
oxalica
bc856f6c62 feat(webapi): impl room deletion 2024-09-21 14:46:47 -04:00
oxalica
9acf857781 refactor(test): use real RNG and simplify
We do not assert on the fake RNG and it should work well with any RNG.
2024-09-21 14:20:36 -04:00
oxalica
8f20aa0cf2 feat(types): add trait SignExt for easy chaining 2024-09-21 13:57:27 -04:00
oxalica
8876480732 test: add method to dump query plans 2024-09-21 09:23:32 -04:00
oxalica
fafd2de2e3 refactor(database)!: decouple SQLs from backend logic and cache stmts
This decouples SQLs from handler logic, makes it easier for auditing and
caching. It also enables the possibility to switch or support multiple
database backends.
2024-09-21 07:37:06 -04:00
oxalica
b955d32099 fix(blahd): reject UNIX domain socket for now
It's too complex to bother with for the current `axum` API. Let's wait
for axum 0.8 release.

Ref: https://github.com/tokio-rs/axum/pull/2479
2024-09-19 09:04:50 -04:00
oxalica
ec7f428519 fix(webapi/register): fix shift overflow
This would make challenge always fail if difficulty is a multiple of 8.
2024-09-19 06:43:17 -04:00
oxalica
0c28c00c3d refactor(webapi)!: put all API under path /_blah 2024-09-19 05:12:42 -04:00
oxalica
82ab7f7d2c refactor(types): move UserIdentityDesc verification into types crate 2024-09-19 02:37:03 -04:00
oxalica
fac380fe55 refactor(types,register): introduce IdUrl and related types into submod
- `IdUrl` does basic validation for identity URL. Server could enforce
  additional restrictions on their own need.

- single-label doamins are now rejected by default.

- More tests are added for `IdUrl` validation.
2024-09-19 01:44:09 -04:00
oxalica
7b0ca8aa16 test,ci: validate version of sqlite and fix ci 2024-09-17 23:08:30 -04:00
oxalica
4108212f34 bench: bench register-pow for difficulty reference 2024-09-17 22:35:09 -04:00
oxalica
3af64f35a5 fix(register): fix CORS, nonce update and error reporting 2024-09-17 21:44:36 -04:00
oxalica
cb72d049e0 feat(types,webapi): impl id_key/act_key for all APIs and update docs 2024-09-17 21:44:36 -04:00
oxalica
fb76756482 feat(webapi): impl user registration and identity description format 2024-09-16 10:45:40 -04:00
oxalica
7f74d73c8c remove(webapi)!: remove auto user creation on joining or creating room
User must be explicitly created forehand using the registration API
(coming soon).
2024-09-16 06:41:26 -04:00
oxalica
985ea1d68a remove(types)!: remove members from CreateGroup
Now a group can only be created with the creator as the only initial
member. This forbids group creator from adding other members without
their consent. Additional members can join the group later at their own
will.
2024-09-16 06:39:10 -04:00
oxalica
93d779b615 feat(webapi): log backtrace on database errors 2024-09-16 06:13:14 -04:00
oxalica
2775068e49 refactor(config): split into subsections and verify on parsing 2024-09-13 07:20:48 -04:00
oxalica
93d1589730 refactor(types): WithSig -> Signed 2024-09-13 03:32:11 -04:00
oxalica
73eb441a26 refactor(*): use term msg to replace item
- `Msg` or `msg` is now the canonical term for the substructure in a
  room. It includes a `chat` subtype and (in the future) other
  administration subtypes like member joining or leaving.

- `Message` or `message` can used in human oriented context like docs
  and comments, but only when it is unambiguous.

- `message` is not chosen in code because it's hard to type (at least
  for me!), and have ambiguous meaning of:
  - "Human readable text" in context of `ApiError`'s field.
  - "A unit of data transfer, datagram" in context of WebSocket Message.

- `item` is not chosen because it is overly generic.
2024-09-13 03:32:11 -04:00
oxalica
98b2df2fdf feat(blahd): impl socket activation integration
This also allows arbitrary listening fd include UNIX domain sockets, via
environment variables as sd_listen_fds(3).
2024-09-11 13:17:52 -04:00
oxalica
348fdc2498 fix(config): set default value of database.in_memory 2024-09-10 16:34:50 -04:00
oxalica
ab4812e101 fix: deny room_admin on peer chat room 2024-09-10 12:46:47 -04:00
oxalica
1e944ead31 feat: impl basic peer chat 2024-09-10 12:26:37 -04:00
oxalica
4f48b390f7 feat(webapi): include member_permission in RoomMetadata
This is currently only included by `room_list` endpoint with
authentication.
2024-09-10 09:33:59 -04:00
oxalica
5eeb12c294 test(webapi): test last seen item 2024-09-10 09:20:32 -04:00
oxalica
74c6fa6f6a refactor(webapi): hoist RoomMetadata to blah_types and rename last_chat to last_item 2024-09-10 09:19:15 -04:00
oxalica
c0ec429c24 test(webapi): test room item posting and listing 2024-09-10 08:19:44 -04:00