Greg Heartsfield
a843eaa939
improvement: db.rs from clippy
2022-09-02 10:30:51 -05:00
Greg Heartsfield
03a130b0b8
improvement: simplify config builder (clippy)
2022-09-02 10:18:16 -05:00
slaninas
77892b2064
fix: syntax error
2022-08-22 05:12:52 -07:00
Greg Heartsfield
4fe6191aa3
chore: formatting
2022-08-21 09:51:34 -07:00
Greg Heartsfield
79a982e3ef
improvement: send NOTICE for too-large messages
2022-08-21 09:28:31 -07:00
Greg Heartsfield
01d81db617
improvement: log client id for subscription removal
2022-08-21 09:11:38 -07:00
Greg Heartsfield
e6fef37d4e
chore: rustfmt
2022-08-21 09:10:19 -07:00
Greg Heartsfield
035cf34673
fix(NIP-12): correctly search for mixed-case hex-like tags
...
Only lowercase and even-length tag values are stored as binary BLOBs.
Previously there was an error which search results from being returned
if the tag value was mixed-case and could be interpreted as hex.
A new database migration has been created to repair the `tag` table
for existing relays.
fixes: https://todo.sr.ht/~gheartsfield/nostr-rs-relay/37
2022-08-17 16:34:11 -07:00
Greg Heartsfield
be8170342e
fix(NIP-12): multi-tag searches returns correct results
...
Logic of generated SQL was incorrect, causing multiple tag searches
(as defined in NIP-12) to produce no results.
fixes: https://todo.sr.ht/~gheartsfield/nostr-rs-relay/36
2022-08-11 22:16:10 -07:00
Greg Heartsfield
0a3b15f41f
fix(NIP-11): Add CORS header and content type for main page
2022-08-11 19:33:17 -07:00
Greg Heartsfield
5058d98ad6
fix(NIP-12): only allow single-char tag filters
2022-08-07 10:15:36 -05:00
Greg Heartsfield
1c14adc766
fix(NIP-01): allow limits on a per-filter basis
...
The original implementation of subscription limit applied to the
entire query, instead of the specific filter. Now, each filter gets
its own query limit. When a limit is applied, the most recent N
events will be returned, otherwise the default is to return the
earliest events (in order), for all matching events.
2022-07-04 17:25:32 -05:00
Semisol
168cfc3b26
feat(NIP-16): Implement NIP16
...
NIP16 introduces a replaceable and ephemeral event range:
[10000..20000) for replaceable and [20000..30000) for
ephemeral.
2022-05-30 21:43:06 -05:00
Semisol
a36ad378f6
feat(NIP-15): Implement NIP15
...
NIP15 sends an EOSE notice to clients after all stored events are sent
to allow loading indicators and other use cases.
2022-05-30 21:43:00 -05:00
Greg Heartsfield
9ed3391b46
fix(NIP-09): correct WHERE clause for event deletion
2022-05-10 16:50:52 -05:00
William Casarin
4ad483090e
feat(NIP-01): Implement limit
...
This was quickly sneaked in by fiatjaf per my request[0], it makes many
queries more efficient and allows for paging when combined with until.
It is a bit weird to have multiple limits on each filter... for now we
just choose any or the last limit seen.
[0]: a4aea5337f
Signed-off-by: William Casarin <jb55@jb55.com>
2022-05-10 16:47:56 -05:00
Greg Heartsfield
597749890e
improvement: remove unnecessary event logging
2022-02-27 19:30:48 -06:00
Greg Heartsfield
1d499cf12b
feat: handle NIP-09 for deletion events
2022-02-27 11:35:23 -06:00
Greg Heartsfield
ed3a6b9692
refactor: simplify NOTICE messages
2022-02-26 17:34:58 -06:00
Greg Heartsfield
414e83f696
refactor: import cleanup for config
2022-02-26 11:16:12 -06:00
Greg Heartsfield
225c8f762e
improvement: upgrade dependencies; config, tungstenite, tokio
2022-02-26 09:55:12 -06:00
Greg Heartsfield
887fc28ab2
fix: until filters in subscriptions now used
2022-02-26 09:15:45 -06:00
Greg Heartsfield
294d3b99c3
fix: correct imports for test cases
2022-02-26 09:07:07 -06:00
Greg Heartsfield
53990672ae
improvement: move db pool operations closer to query, do not panic on failure
2022-02-23 16:38:16 -06:00
Greg Heartsfield
9c1b21cbfe
improvement: more granular perf logging for SQL queries
2022-02-21 09:03:05 -06:00
Greg Heartsfield
2f63417646
improvement: better logging for connection resets
2022-02-21 08:57:07 -06:00
Greg Heartsfield
3b25160852
fix: abort on connection IO errors
2022-02-21 08:50:46 -06:00
Greg Heartsfield
f8b1fe5035
docs: line up comments with code
2022-02-17 16:18:05 -06:00
Greg Heartsfield
5913b9f87a
feat: send notices when authorization checks fail
2022-02-13 09:35:54 -06:00
Greg Heartsfield
77f35f9f43
feat: server-side pings and disconnects
2022-02-12 16:57:26 -06:00
Greg Heartsfield
9e06cc9482
improvement: better error messages on parse failures
2022-02-12 16:33:29 -06:00
Greg Heartsfield
e66fa4ac42
refactor: remove unnecessary Option wrapping
2022-02-12 16:29:27 -06:00
Greg Heartsfield
99e117f620
improvement: better handling of out-of-protocol messages
2022-02-12 16:26:55 -06:00
Greg Heartsfield
8250e00f05
fix: remove protostream module, and missing NOTICE
2022-02-12 16:22:12 -06:00
Greg Heartsfield
ceaa01e8b4
fix: removed manual nostr stream, so websocket pings work
2022-02-12 16:19:10 -06:00
Greg Heartsfield
e31d0729f2
chore: comment cleanup
2022-02-12 13:49:52 -06:00
Greg Heartsfield
89d96e7ccd
improvement: upgraded database schema to drop legacy tables
...
Database schema is upgraded to version 5. Legacy event and pubkey
tables are dropped, and indexes are added for NIP-05 verification.
2022-02-12 13:47:03 -06:00
Greg Heartsfield
7056aae227
refactor: create schema module
2022-02-12 09:58:42 -06:00
Greg Heartsfield
753df47443
refactor: create utils/hexrange utility modules
2022-02-12 09:29:38 -06:00
Greg Heartsfield
26a0ce2b32
docs: function/struct comments
2022-02-12 09:29:35 -06:00
Greg Heartsfield
fa66a0265e
docs: module headers
2022-02-12 09:29:31 -06:00
Greg Heartsfield
234a8ba0ac
feat: limit event publishing to NIP-05 verified users
...
This adds a new configurable feature to restrict event publishing to
only users with NIP-05 verified metadata. Domains can be whitelisted
or blacklisted. Verification expiration and schedules are
configurable.
This upgrades the database to add a table for tracking verification
records.
2022-02-12 09:29:25 -06:00
Greg Heartsfield
4cc313fa2d
fix: cleanup database connections with same name
...
When a large number of subscriptions is created with identical names,
we do not send a signal over the abandon-read channel. This
eventually leads to resource exhaustion.
2022-01-30 15:14:02 -06:00
Greg Heartsfield
6502f7dcd7
fix: do not panic when validating events with malformed pubkeys
2022-01-29 13:19:34 -06:00
Greg Heartsfield
98c6fa6f39
feat: allow whitelisting of pubkeys for new events
...
This adds a configuration option, `authorization.pubkey_whitelist`
which is an array of pubkeys that are allowed to publish events on
this relay.
2022-01-26 21:39:03 -06:00
Greg Heartsfield
ee0de6f875
improvement: clearer and less verbose database logging
2022-01-25 21:42:43 -06:00
Greg Heartsfield
a72eaec3b8
fix: never display hidden events
2022-01-25 20:48:46 -06:00
Greg Heartsfield
f1206e76f2
feat: database reader connection pooling
...
Added connection pooling for queries, as well as basic configuration
options for min/max connections.
2022-01-25 20:39:24 -06:00
Greg Heartsfield
af453548ee
feat: allow author and event id prefix search
...
This is an experimental non-NIP feature that allows a subscription
filter to include a prefix for authors and events.
2022-01-25 18:23:08 -06:00
Greg Heartsfield
2d28a95ff7
feat: allow arbitrary tag queries
...
This is an experimental feature, outside of any NIP, that demonstrates
generic tag queries.
Instead of limiting subscription filters to just querying only "e" or
"p" tags (via `#e` or `#p` attributes), any tag can be queried.
As an example, consider an event which uses a tag "url". With this
modification, a subscription filter could add a top-level field
"#url", with an array of strings as the key. Exact matches would be
returned.
A NIP is forthcoming to formalize this.
2022-01-22 21:29:15 -06:00