<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinos-server.git/routes/lnurl.ts, branch regtest-fulcrum</title>
<subtitle>coinos server — legacy coinos.io backend (Lightning, on-chain, Liquid)</subtitle>
<id>https://git.coinos.io/coinos-server.git/atom?h=regtest-fulcrum</id>
<link rel='self' href='https://git.coinos.io/coinos-server.git/atom?h=regtest-fulcrum'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/'/>
<updated>2026-06-16T06:35:50Z</updated>
<entry>
<title>lnurl: SSRF-guard user-supplied URL fetches + validate zap events</title>
<updated>2026-06-16T06:35:50Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-16T06:35:50Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=497277ef7b48c86aa2f44b613e0a35a0c3b0c238'/>
<id>urn:sha1:497277ef7b48c86aa2f44b613e0a35a0c3b0c238</id>
<content type='text'>
The /lnurl/proxy, /decode and /encode handlers fetched an arbitrary
user-supplied URL via got() and returned the body — an unauthenticated
SSRF reaching internal services. Route those fetches through a new
safeGot() that rejects hosts resolving to loopback/private/link-local/
CGNAT/metadata ranges, re-validates on each redirect hop, restricts the
scheme to http(s), and caps timeout + response size. Also validate the
NIP-57 zap request (kind 9734 + signature) before storing it, instead of
trusting the client-supplied event.

These endpoints can't be removed — they back lightning-address/LNURL
parsing and resolution in the wallet UI.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>lnurl proxy</title>
<updated>2026-03-28T06:41:08Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-28T06:41:08Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=ef06f2eb48581c201e62fc2cde27b106e898e54d'/>
<id>urn:sha1:ef06f2eb48581c201e62fc2cde27b106e898e54d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix lnurl description_hash mismatch</title>
<updated>2026-02-25T20:05:46Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-25T20:05:40Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=b65425e4910167c1b3c04141a4df7e000d74ef11'/>
<id>urn:sha1:b65425e4910167c1b3c04141a4df7e000d74ef11</id>
<content type='text'>
Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>consult archive for older payments</title>
<updated>2026-01-30T20:31:59Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2026-01-30T20:31:59Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=edd76a99a90d56ab641c48b95dd5891558baa133'/>
<id>urn:sha1:edd76a99a90d56ab641c48b95dd5891558baa133</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rotate server key</title>
<updated>2025-09-30T04:50:57Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-09-30T04:47:18Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=481dec5b1cfa2a085dda500ce0c390b38cb4a8b0'/>
<id>urn:sha1:481dec5b1cfa2a085dda500ce0c390b38cb4a8b0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>only record invoice if amount is defined</title>
<updated>2025-08-01T04:45:58Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-08-01T04:45:58Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=f1fa75ee43bad1f9c5ea06f4160cfee9847a035f'/>
<id>urn:sha1:f1fa75ee43bad1f9c5ea06f4160cfee9847a035f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>always define minSendable and maxSendable</title>
<updated>2025-08-01T04:39:54Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-08-01T04:39:49Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=7032731d56ccb0d5b158b08b81fcf1c9e4e4211e'/>
<id>urn:sha1:7032731d56ccb0d5b158b08b81fcf1c9e4e4211e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>leave minSendable undefined if no amount</title>
<updated>2025-08-01T04:17:04Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-08-01T04:17:04Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=c1cd79795a5ac42e2a6071187ce8325ba355d4d4'/>
<id>urn:sha1:c1cd79795a5ac42e2a6071187ce8325ba355d4d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>respect null tips</title>
<updated>2025-07-20T05:55:10Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-07-20T05:55:10Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=59fe8d2e24085239b15ca282c182d5c7cd1ce4de'/>
<id>urn:sha1:59fe8d2e24085239b15ca282c182d5c7cd1ce4de</id>
<content type='text'>
</content>
</entry>
<entry>
<title>record prompt setting for lnurl invoices</title>
<updated>2025-07-19T15:42:13Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-07-19T15:42:13Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=d7290476c1722b1f6d8de4cec11c75e979e893eb'/>
<id>urn:sha1:d7290476c1722b1f6d8de4cec11c75e979e893eb</id>
<content type='text'>
</content>
</entry>
</feed>
