-
Notifications
You must be signed in to change notification settings - Fork 153
Expand file tree
/
Copy pathCHANGES
More file actions
192 lines (181 loc) · 11.2 KB
/
CHANGES
File metadata and controls
192 lines (181 loc) · 11.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
next
* New --print-missing argument for strfry sync. This option tells sync to
just print out the event IDs that you have and/or need, instead of actually
trying to transfer them.
* The amount of bytes sent by negentropy was incorrectly reported in a log.
* New --timeout flag for strfry sync. Aborts sync after the specified number
of seconds of inactivity, preventing the process from hanging indefinitely
when a relay does not support negentropy syncing.
* strfry sync now handles NOTICE messages from relays. If a NOTICE is
received before any negentropy response, the sync exits with an error,
since this indicates the relay does not support the negentropy protocol.
* Rejected events no longer log event content. Only the event ID and
rejection reason are logged, preventing a potential DoS vector where
oversized events could fill disks with log data.
* Truncate large messages in sync error/warning logs to 512 bytes.
1.1.0
* DEPRECATE stream command. Instead, suggest using strfry router
* Support for the COUNT command, NIP-45. Note that this is not yet complete
support for NIP-45 since it doesn't implement HyperLogLog. COUNT can
be disabled by setting relay.maxFilterLimitCount to 0.
* Support for AUTH, NIP-42. If a protected event is received by the relay,
it will return an AUTH challenge. The user must reply with a valid kind 22242
event, after which the protected event can be re-sent. Authentication state
is available to write policy plugins via `authed`. (fiatjaf and zk-bits)
* New upload and download convenience commands for uploading/downloading
events from a remote nostr relay.
* New `/metrics/` endpoint for Prometheus monitoring (alexgleason)
* Limit subId length to 64, as per new NIP-01 clarification (alltheseas)
* Added missing NIP-11 fields such as banner, privacy_policy, etc (1-leo)
* When a REQ is invalid, respond with the CLOSED message instead of a NOTICE.
This message contains the subscription ID so clients can determine which
request caused the error and release resources (suggested by alexgleason)
* Reworked the write policy plugin implementation. Instead of using stdio
buffering, it now uses a custom poll() mechanism and custom buffer. This
supports timeout detection of both reads and writes, and detects and reports
several other common error conditions with buggy plugins.
* Added a relay.writePolicy.timeoutSeconds config setting. This controls how
long strfry will wait for a write policy plugin's response before killing
and re-spawning the plugin.
* Added REQ filter validation. This allows you to restrict the filters that
can be provided to REQ/COUNT. You can restrict the number of filters, the
allowed kinds to query, and/or require authors/p/e tags. (frnandu)
* Implement deletion of parameterised replaceable events using a-tags in
kind 5 events, as described in NIP-09. This change creates a new index
`replaceDeletion`, but this is backwards and forwards compatible with the
current DB schema.
* Better error messages for incorrectly formed REQ filters.
* Improve relay's logging of negentropy activity.
* Bugfix: No longer attempt to print a stacktrace when we are killed. This
relied on non-signal safe behaviour in the loguru library, which could cause
deadlocks when attempting to kill a busy strfry process. (reported by jb55)
* Detect and block protected events inside reposts (fiatjaf)
* Remove 45 and 77 from the default supported NIP list when their respective
features are disabled. (requested by staab)
* Updated Dockerfile to clean artifacts before build, to help with cross
platform build workflows (l0rinc)
* Improvement to config file inline docs (n7ekb)
* Added a new deployment script: `scripts/idempotent-vps-deploy.sh` (chr15m)
* Better error reporting/handling when strfry.conf is malformed.
* Print cool ANSI strfry logo when strfry is run with no arguments.
Artwork thanks to Zen GT.
* HTML landing page improvements: Only show relay info fields that have
configured values, make URLs actual links, render pubkeys as npubs instead
of 32-byte hex, show relay uptime in days, add a favicon.ico.
* Pubkeys in strfry.conf are now allowed to be in npub format.
* There is now a hot-reloadable config flag "verbose" in the router config
to allow reducing the verbosity of strfry router logs (requested by kulak)
* New --verbosity flag that controls how chatty strfry's logging output is.
* --range flag for strfry sync, which is a more convenient way to specify
since and until in your nostr filter.
* Bugfix: Allow strfry import to import large events if the maxEventSize
config param has been increased
1.0.4
* New config: maxReqFilterSize. This allows REQs with many more filters (jb55)
* Default maxReqFilterSize was increased to 200
* Update nix build file (jb55)
* Reduces log spam by not dumping full invalid events (Kroese)
* In sync and stream commands, provide the connected URL to write policy
plugins (Kroese)
* Bugfix in router: The configured connection timeout was not applied on
the first connection, forcing a retry.
1.0.3
* Use negentropy error message format specified in NIP-77
1.0.2
* New config param: relay.info.nips which allows you to override the NIPs
that are claimed to be supported (requested by ismyhc)
* New connectionTimeout parameter in router config (thanks Braydon Fuller!)
* Bugfix: IPv4-mapped IPv6 addresses in X-Real-IP headers were not parsed
correctly (reported by Petr Kracík)
1.0.1
* Prevent exporting a v2 DB using --fried. The packed representation will be
corrupted. Instead, you should downgrade to 0.9.7 to do the export, or do
it without fried.
* Fix build error on some platforms that don't include stdint.h in another
header. Reported by fiatjaf.
1.0.0
* Refactored database format to use a custom PackedEvent encoding, removed some
unnecessary indices. This reduces the size of the DB and should help improve
query performance in some cases.
* Because of the above, the DB version has been increased to 3, meaning events
will need to be exported and reimported into a new DB.
* Added a special `--fried` mode for import and export that greatly (10x or more)
speeds up the process.
* Removed prefix matching on ids and authors fields. This was removed from
NIP-01. Now, you must use exactly 32 byte (64 hex character) values.
* Upgraded negentropy to protocol version 1.
* Use the C++ negentropy implementation's BTree support to cache the results
of negentropy fingerprints over arbitrary nostr queries. By default the
query {} (the full DB) is tracked, but additional queries can be added
using the new `strfry negentropy` command.
* Advertises NIP-77 support (negentropy syncing). The negentropy version is now
also indicated in the NIP-11 relay information and the HTML landing page.
* Parsing-related error messages were greatly improved. Instead of just getting
"bad msg: std::get: wrong index for variant", in most situations you will
now get a more useful message such as "first element not a command like REQ"
* Refactored some critical areas like ActiveMonitors to use a precise 32-byte
type instead of std::string. This will reduce pointer chasing and memory
usage and, more importantly, improve CPU caching.
* The perl libraries needed at compile-time are now bundled in golpe, so they
do not need to be separately installed to build strfry.
* Bugfix: When querying for 2 or more tags where one of the tags was a prefix
of the other, matching events would not be returned. Reported by mrkvon.
* Updated and re-organised the README.md docs
0.9.7
* `--fried` support from 1.0.0 was back-ported, allowing export of DBs
in a fried format for efficient import by 1.0.0+ relays.
* Bugfix: The cron thread was incorrectly removing expireable events prior
to their expiry. Reported and fixed by KoalaSat.
* A `limitation` entry is now included in the NIP-11 output. This exposes
configured relay limits such as max message size. Added by Alex Gleason.
* Node info support added: The relay now replies to requests to /nodeinfo/2.1
and /.well-known/nodeinfo . Added by Alex Gleason.
* NIP-70 support: Events with a "_" tag are considered protected and relays
should only allow them to be posted by their author. Since strfry does
not yet support AUTH, these events are always rejected. Added by fiatjaf.
* NIP-11 icon support added by zappityzap.
* Preliminary FreeBSD support added by cosmicpsyop.
* Switch import to use WriterPipeline, allowing strfry import be used as a
general-purpose non-relay event ingester. To do so, users must ensure that
the stdout of their process they pipe into import is line buffered.
0.9.6
* Bugfix: Sometimes malformed or old-format negentropy messages would throw
uncaught exceptions which would cause the relay to crash. Now it properly
handles and reports this situation in both logs and to the other side
of the protocol.
* New config option: relay.negentropy.enabled. Default is true. Set this to
false if you wish to entirely stop the relay from handling negentropy messages.
0.9.5
* New feature: strfry router!
* INCOMPATIBLE change: The "lookbehind" feature of plugins was removed
* INCOMPATIBLE change to negentropy sync protocol! (again)
- The fingerprint function has now been changed to SHA-256, to protect the
integrity of the sync mechanism in the presence of adversarial event creators
- Going forward, the protocol now has mechanisms for backwards/forwards compatibility
* Bugfix: Prevent a crash when a non-indexOnly scan was paused and then one of the
buffered levIds was deleted or replaced before the scan resumed
* Plugins can now be specified as shell commands, so you can pass command-line switches
to them, set environment variables, use pipes/redirects, etc.
* Plugins now propagate the environment variables of the strfry process to the
plugin processes
* Now if you don't return a "msg" (or return an empty string), it will no longer
pollute your logs with "blocked event" messages
0.9.4
* INCOMPATIBLE change to negentropy sync protocol!
- Necessary because the protocol had an unfixable issue when syncing a very large DB
into a small DB while using frameSizeLimit (sorry!)
* If a client disconnects before its pending EVENT write messages have been processed,
drop those messages instead of trying to write them
* Bulk export commands now exit gracefully on a SIGPIPE
* Fixed a race condition when sync command exits
* Some optimisations in sync and export
* noReadAhead config option: can reduce IO usage on instances where DB size > memory
* Close the LMDB map file when execing plugins (works around LMDB bug)
0.9.3
* Limit on events that can be processed by a sync
- Configurable with relay.negentropy.maxSyncEvents
* Warn when NIP-11 pubkey is in incorrect format (#52)
* Bugfix: Setting rejectEphemeralEventsOlderThanSeconds larger than ephemeralEventsLifetimeSeconds did
not work because events were then considered expired
* Config parameter to silence "Rejected invalid event" logs: relay.logging.invalidEvents
* Detect overflows when rejectEvents* config params are set very large