William Casarin
c12da6a229
Command result notices
...
This introduces a new notice-like event with more structure so that clients
can know if an event is sucessfully written to the database. Clients
can't really do much with the current NOTICE messages, but with these
structured result messages, it can know if an event was sucessfully
saved.
Whenever there is an error and we have an id available (event id, sub
id, etc) we return these structured OK events instead.
Example:
When saving the following event:
["EVENT",{"id": "event_id" }]
The server will now return events in the following format:
["OK", event_id, "true|false", message]
For example, on a successful save:
["OK", "event_id", "true"]
If we already have the event:
["OK", "event_id", "true", "duplicate"]
If the event is rejected:
["OK", "event_id", "false", "you are blocked"]
If a subscription fails:
["OK", "sub_id", "false", "Too many subscriptions"]
NIP coming soon!
2022-11-09 07:44:39 -06:00
William Casarin
7adc5c9af7
perf: dont create intermediate vecs when matching subs
...
Avoid creating intermediate vectors when matching subscriptions. We can
just iterate over the hashmap directly.
2022-11-09 07:30:43 -06:00
Greg Heartsfield
9dd4571bee
refactor: reduce level of some common DB logs
2022-11-06 13:49:32 -06:00
Greg Heartsfield
9db5a26b9c
refactor: more consistent logging messages
2022-11-05 16:11:20 -05:00
Greg Heartsfield
ac345b5744
refactor: do not quote server-generated client id in logs
2022-11-05 15:59:39 -05:00
Greg Heartsfield
675662c7fb
improvement: upgrade docker builder and base images
2022-11-05 13:24:17 -05:00
Greg Heartsfield
505b0cb71f
improvement: upgrade multiple dependencies
...
Updating anyhow v1.0.65 -> v1.0.66
Updating async-trait v0.1.57 -> v0.1.58
Updating axum v0.5.16 -> v0.5.17
Updating axum-core v0.2.8 -> v0.2.9
Updating base64 v0.13.0 -> v0.13.1
Updating bumpalo v3.11.0 -> v3.11.1
Updating cc v1.0.73 -> v1.0.74
Updating cxx v1.0.79 -> v1.0.80
Updating cxx-build v1.0.79 -> v1.0.80
Updating cxxbridge-flags v1.0.79 -> v1.0.80
Updating cxxbridge-macro v1.0.79 -> v1.0.80
Updating futures v0.3.24 -> v0.3.25
Updating futures-channel v0.3.24 -> v0.3.25
Updating futures-core v0.3.24 -> v0.3.25
Updating futures-executor v0.3.24 -> v0.3.25
Updating futures-io v0.3.24 -> v0.3.25
Updating futures-macro v0.3.24 -> v0.3.25
Updating futures-sink v0.3.24 -> v0.3.25
Updating futures-task v0.3.24 -> v0.3.25
Updating futures-util v0.3.24 -> v0.3.25
Updating getrandom v0.2.7 -> v0.2.8
Updating h2 v0.3.14 -> v0.3.15
Updating hyper v0.14.20 -> v0.14.22
Updating iana-time-zone v0.1.51 -> v0.1.53
Updating libc v0.2.135 -> v0.2.137
Updating mio v0.8.4 -> v0.8.5
Updating native-tls v0.2.10 -> v0.2.11
Updating num_cpus v1.13.1 -> v1.14.0
Updating once_cell v1.15.0 -> v1.16.0
Updating openssl-sys v0.9.76 -> v0.9.77
Updating parking_lot_core v0.9.3 -> v0.9.4
Updating pest v2.4.0 -> v2.4.1
Updating pest_derive v2.4.0 -> v2.4.1
Updating pest_generator v2.4.0 -> v2.4.1
Updating pest_meta v2.4.0 -> v2.4.1
Updating pkg-config v0.3.25 -> v0.3.26
Updating ppv-lite86 v0.2.16 -> v0.2.17
Updating prost v0.11.0 -> v0.11.2
Updating prost-derive v0.11.0 -> v0.11.2
Updating prost-types v0.11.1 -> v0.11.2
Updating serde v1.0.145 -> v1.0.147
Updating serde_derive v1.0.145 -> v1.0.147
Updating serde_json v1.0.86 -> v1.0.87
Updating syn v1.0.102 -> v1.0.103
Adding windows-sys v0.42.0
Adding windows_aarch64_gnullvm v0.42.0
Adding windows_aarch64_msvc v0.42.0
Adding windows_i686_gnu v0.42.0
Adding windows_i686_msvc v0.42.0
Adding windows_x86_64_gnu v0.42.0
Adding windows_x86_64_gnullvm v0.42.0
Adding windows_x86_64_msvc v0.42.0
2022-11-05 10:59:03 -05:00
Greg Heartsfield
e8aa450802
build: bump version to 0.7.1
2022-11-05 10:35:38 -05:00
Greg Heartsfield
5a8860bb09
feat: log user-agent if present
2022-11-05 10:29:25 -05:00
Greg Heartsfield
11e43eccf9
refactor: add unit to ping_interval config
2022-11-05 07:42:08 -05:00
William Casarin
50577b2dfa
feat: add network.ping_interval setting
...
Add a ping interval setting that allows you to customize the websocket
ping interval. The default of 5 minutes may be too high for some proxy
servers that disconnect connections that are held open for too long.
2022-11-05 07:40:28 -05:00
William Casarin
a6cb6f8486
refactor: rename get_header_remote_ip -> get_header_string
...
This function has nothing to do with remote ips!
2022-11-05 07:37:18 -05:00
Greg Heartsfield
ae5bf98d87
feat: retrieve client IP from header in config.toml
...
If the config.toml has defined a HTTP header to look for a remote IP,
that will be logged. Otherwise, the socket address IP will be used.
closes: https://todo.sr.ht/~gheartsfield/nostr-rs-relay/47
2022-11-04 18:05:01 -05:00
William Casarin
1cf9d719f0
feat: look for proxied ip headers
...
This enables support for using the proxied IP from cloudflare. The damus
relay is behind cloudflare, so to get accurate remote ip logging we need
to look at the headers instead of the socket address.
Signed-off-by: William Casarin <jb55@jb55.com>
2022-11-04 17:09:28 -05:00
William Casarin
311f4b5283
refactor: switch new connections to debug log
...
These are pretty spammy on busy relays. I've been using the info log to
monitor spam attacks, and these are the least useful info log.
Leave the "stopping connection" log because it at least provides useful
sent/received information.
Signed-off-by: William Casarin <jb55@jb55.com>
2022-11-04 07:59:53 -05:00
Greg Heartsfield
14b5a51e3a
fix: log ephemeral events after send
2022-11-04 07:55:38 -05:00
Greg Heartsfield
8ecce3f566
feat: show client IP in logs
2022-11-02 18:33:44 -05:00
Greg Heartsfield
caffbbbede
build: bump version to 0.7.0
2022-10-16 15:42:11 -05:00
Greg Heartsfield
81045ad3d0
improvement: upgrade multiple dependencies
...
Updating anyhow v1.0.64 -> v1.0.65
Adding codespan-reporting v0.11.1
Updating const_format v0.2.28 -> v0.2.30
Updating const_format_proc_macros v0.2.22 -> v0.2.29
Updating crossbeam-utils v0.8.11 -> v0.8.12
Adding cxx v1.0.79
Adding cxx-build v1.0.79
Adding cxxbridge-flags v1.0.79
Adding cxxbridge-macro v1.0.79
Updating digest v0.10.3 -> v0.10.5
Updating hdrhistogram v7.5.1 -> v7.5.2
Updating iana-time-zone v0.1.50 -> v0.1.51
Adding iana-time-zone-haiku v0.1.1
Updating itertools v0.10.3 -> v0.10.5
Updating itoa v1.0.3 -> v1.0.4
Updating js-sys v0.3.59 -> v0.3.60
Updating libc v0.2.132 -> v0.2.135
Adding link-cplusplus v1.0.7
Updating lock_api v0.4.8 -> v0.4.9
Updating once_cell v1.14.0 -> v1.15.0
Updating openssl v0.10.41 -> v0.10.42
Updating openssl-sys v0.9.75 -> v0.9.76
Updating pest v2.3.0 -> v2.4.0
Updating pest_derive v2.3.0 -> v2.4.0
Updating pest_generator v2.3.0 -> v2.4.0
Updating pest_meta v2.3.0 -> v2.4.0
Updating proc-macro2 v1.0.43 -> v1.0.47
Updating rand_core v0.6.3 -> v0.6.4
Updating raw-cpuid v10.5.0 -> v10.6.0
Adding scratch v1.0.2
Updating serde v1.0.144 -> v1.0.145
Updating serde_derive v1.0.144 -> v1.0.145
Updating serde_json v1.0.85 -> v1.0.86
Adding sha1 v0.10.5
Updating smallvec v1.9.0 -> v1.10.0
Updating syn v1.0.99 -> v1.0.102
Adding termcolor v1.1.3
Updating thiserror v1.0.34 -> v1.0.37
Updating thiserror-impl v1.0.34 -> v1.0.37
Updating tokio v1.21.0 -> v1.21.2
Updating tokio-stream v0.1.9 -> v0.1.11
Updating tonic v0.8.1 -> v0.8.2
Updating tower-layer v0.3.1 -> v0.3.2
Updating tracing v0.1.36 -> v0.1.37
Updating tracing-attributes v0.1.22 -> v0.1.23
Updating tracing-core v0.1.29 -> v0.1.30
Updating tracing-subscriber v0.3.15 -> v0.3.16
Updating unicode-ident v1.0.3 -> v1.0.5
Updating unicode-normalization v0.1.21 -> v0.1.22
Adding unicode-width v0.1.10
Updating uuid v1.1.2 -> v1.2.1
Updating wasm-bindgen v0.2.82 -> v0.2.83
Updating wasm-bindgen-backend v0.2.82 -> v0.2.83
Updating wasm-bindgen-macro v0.2.82 -> v0.2.83
Updating wasm-bindgen-macro-support v0.2.82 -> v0.2.83
Updating wasm-bindgen-shared v0.2.82 -> v0.2.83
Updating web-sys v0.3.59 -> v0.3.60
Adding winapi-util v0.1.5
2022-10-16 15:33:11 -05:00
Greg Heartsfield
72f8a1aa5c
feat(NIP-26): allow searches for delegated public keys
...
Implements core NIP-26 delegated event functionality. Events can
include a `delegation` tag that provides a signature and restrictions
on which events can be delegated.
Notable points on the implementation so far:
* Schema has been upgraded to include an index and new column.
* Basic rune parsing/evaluation to implement the example event in the
NIP, but no more.
* No special logic for deletion.
* No migration logic for determining delegated authors for
already-stored events.
2022-10-16 15:25:06 -05:00
Greg Heartsfield
274c61bb72
improvement: upgrade docker images for base & builder
2022-10-13 18:42:55 -05:00
Greg Heartsfield
6eeefbcc4c
feat: quick script for making non-x86 Dockerfiles
2022-10-13 18:35:33 -05:00
Greg Heartsfield
3e8adf978f
refactor: move db migrations into isolated functions
2022-10-09 08:54:03 -05:00
Greg Heartsfield
2af5f9fbe8
fix: correct schema upgrade logic (and refactor)
...
Schema upgrades were buggy from 4->5 (the v5 would be skipped). This
change also refactors the logic slightly so that future additions can
be clearer (no need to have if and else-if combinations).
2022-10-09 08:24:01 -05:00
Greg Heartsfield
2739e49362
fix: correct future schema version detection
2022-10-08 13:15:48 -05:00
Greg Heartsfield
f9693f7ac3
fix(NIP-9): hide events received after their deletions
...
fixes: https://todo.sr.ht/~gheartsfield/nostr-rs-relay/40
2022-10-08 12:12:41 -05:00
Greg Heartsfield
8a63d88b0b
fix: prevent deletion of deletion events
2022-10-08 08:02:16 -05:00
Greg Heartsfield
a4df9445b6
test: improve port selection
2022-09-28 07:55:06 -05:00
Greg Heartsfield
92da9d71f8
feat: handle and log TERM signals
2022-09-28 07:20:31 -05:00
Greg Heartsfield
6633f8b472
feat: replace logging with tracing
2022-09-28 07:19:59 -05:00
Greg Heartsfield
93dfed0a87
refactor: misc clippy suggestions
2022-09-24 19:28:02 -05:00
Greg Heartsfield
bef7ca7e27
refactor: misc clippy suggestions
2022-09-24 09:19:16 -05:00
Greg Heartsfield
a98708ba47
refactor: misc clippy suggestions
2022-09-24 09:01:09 -05:00
Greg Heartsfield
ccf9b8d47b
refactor: remove unnecessary return types
2022-09-24 08:39:41 -05:00
Greg Heartsfield
8fa58de49a
refactor: clippy suggestions
2022-09-24 08:30:22 -05:00
Greg Heartsfield
480c5e4e58
docs: un-link NIP-22 note
2022-09-19 19:34:11 -05:00
dzdidi
5bd00f9107
docs: add refs for nostr-protocol organization
...
Signed-off-by: dzdidi <deniszalessky@gmail.com>
2022-09-19 19:26:36 -05:00
Greg Heartsfield
36b9f628c7
test: check for relay health after startup
2022-09-17 16:02:57 -05:00
Greg Heartsfield
baeb77af99
test: dynamically find open port for test relay
2022-09-17 14:36:05 -05:00
Greg Heartsfield
29b1e8ce58
refactor: move common test code into module
2022-09-17 12:37:49 -05:00
Greg Heartsfield
786a354776
test: simple integration test to start and stop relay
2022-09-11 12:54:24 -05:00
Greg Heartsfield
4fa8616c73
feat: enable use of tokio-console with diagnostics.tracing setting
...
View real-time tokio diagnostics by setting the configuration option
"diagnostics.tracing" to true.
2022-09-11 12:44:45 -05:00
Greg Heartsfield
74802522c2
improvement: do not create NIP-05 thread if feature is disabled
2022-09-11 11:01:36 -05:00
Greg Heartsfield
9ce5057af8
improvement: better log formatting
2022-09-11 10:22:01 -05:00
Greg Heartsfield
217429f538
build: add release flags, save artifacts
2022-09-11 10:21:29 -05:00
Greg Heartsfield
62a9548c27
docs: show build status for master branch only
2022-09-10 22:53:41 -05:00
Greg Heartsfield
c24dce8177
docs: add build status indicator
2022-09-10 22:48:23 -05:00
Greg Heartsfield
3503cf05ed
build: add sr.ht build manifest
2022-09-10 22:43:56 -05:00
Greg Heartsfield
8738e5baa9
improvement: upgrade multiple dependencies
...
Updating aho-corasick v0.7.18 -> v0.7.19
Updating block-buffer v0.10.2 -> v0.10.3
Updating cpufeatures v0.2.4 -> v0.2.5
Updating form_urlencoded v1.0.1 -> v1.1.0
Updating idna v0.2.3 -> v0.3.0
Removing matches v0.1.9
Updating percent-encoding v2.1.0 -> v2.2.0
Updating thiserror v1.0.33 -> v1.0.34
Updating thiserror-impl v1.0.33 -> v1.0.34
Updating tokio-util v0.7.3 -> v0.7.4
Updating ucd-trie v0.1.4 -> v0.1.5
Updating url v2.2.2 -> v2.3.1
2022-09-10 22:42:52 -05:00
Greg Heartsfield
78da92ccca
feat: advertise support for NIP-09 and NIP-12 in relay info
...
NIP-01 prefix search, and NIP-12 generic tags are no longer marked as
experimental.
NIP-11 relay info advertises NIP-09 event deletion and NIP-12 generic
tag search support.
2022-09-10 20:45:09 -05:00