Commit Graph

12478 Commits

Author SHA1 Message Date
Vincenzo Palazzo
6c1e589ee8 cln-plugin: make available the configuration in plugin
There are several cases where you want to access to the configuration,
and given the nature of the rust API, there is no way to access to
the `configuration` field at any point after the configuration logic.

Suggested-by: Sergi Delgado Segura <@sr-gi>

Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
2022-12-24 11:32:22 +01:00
Rusty Russell
141c836b39 doc: note that grpc needs the protobuf-compiler
```
error: failed to run custom build command for `cln-grpc v0.1.2 (/home/rusty/devel/cvs/lightning/cln-grpc)`

Caused by:
  process didn't exit successfully: `/home/rusty/devel/cvs/lightning/target/debug/build/cln-grpc-933c4bf5006f522c/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-changed=proto/node.proto
  cargo:rerun-if-changed=proto

  --- stderr
  thread 'main' panicked at 'Could not find `protoc` installation and this build crate cannot proceed without
      this knowledge. If `protoc` is installed and this crate had trouble finding
      it, you can set the `PROTOC` environment variable with the specific path to your
      installed `protoc` binary.If you're on debian, try `apt-get install protobuf-compiler` or download it from https://github.com/protocolbuffers/protobuf/releases

  For more information: https://docs.rs/prost-build/#sourcing-protoc
  ', /home/rusty/.cargo/registry/src/github.com-1ecc6299db9ec823/prost-build-0.11.4/src/lib.rs:1296:10
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
make: *** [plugins/Makefile:211: target/debug/examples/cln-plugin-startup] Error 101
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-23 10:57:47 +01:00
Christian Decker
3ae58c4429 ci: Add protoc compiler to setup 2022-12-22 15:42:12 +01:00
Christian Decker
f63ec15116 ci: Unconditionally install protoc
We used to install it only when Rust was configured, but for some
reason all builds now seem to be Rust builds. That's ok, so just
provide the necessary dependency.
2022-12-22 15:42:12 +01:00
Christian Decker
465d9121bf rs: Bump crate versions for publication 2022-12-22 15:42:12 +01:00
Christian Decker
c5608897ad rs: Remove unused dependency from cln-plugin -> cln-rpc
We will likely re-add that dependency later as a feature (to
automatically provide an RPC instance if compiled with that feature)
but for now that dependency is unused.

Changelog-None Not user visible
2022-12-22 15:42:12 +01:00
Christian Decker
8e75232205 rs: Update outdated dependencies
This commit updates outdated dependencies and hangs all
bitcoin-related dependencies off of the `bitcoin` crate, using its
re-exports. This means that as long as the bitcoin crate matches, all
of its dependents will also match.

Changelog-None
2022-12-22 15:42:12 +01:00
Greg Sanders
3b56e90a13 Turn on logging for key topics in bitcoind for black box tests 2022-12-22 12:05:01 +01:00
Rusty Russell
d1b5943e90 tests: make test_libplugin use the datastore.
It's a bit convoluted, but it exercises all our datastore fetch APIs.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-22 12:04:30 +01:00
Rusty Russell
7b24ea60e3 libplugin: more datastore helpers.
These ones to fetch inside callbacks.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-22 12:04:30 +01:00
Rusty Russell
68f3e3fba9 pyln: add datastore routines.
Without explicit definitions, we don't get proper names args and help
messages.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-22 12:04:30 +01:00
Sergi Delgado Segura
6939671a1b Adds helper functions to cast Value variants
This is heavily based on https://github.com/serde-rs/json/blob/master/src/value/mod.rs
2022-12-21 10:56:13 +01:00
Simon Vrouwe
93c966c649 doc: sphinx-build fix external links (urls), language warning and broken footnote 2022-12-19 19:00:39 +01:00
Simon Vrouwe
3c8ec25a6f dox: fix "sphinx-build -b html" warning: reference target not found
when runnning `sphinx-build -b html . build/`:
WARNING: None:any reference target not found: #
2022-12-19 19:00:39 +01:00
Greg Sanders
c79c9c73fc Properly raise ValueError message in wait_for 2022-12-19 13:09:46 +01:00
Rusty Russell
5b3746172f lightningd: remove setchannelfee.
Replaced by `setchannel`.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changlog-Removed: JSON-RPC: `setchannelfee` (deprecated in v0.11.0)
2022-12-13 08:28:12 +10:30
Rusty Russell
62333425c2 sendpay: remove style legacy setting.
We ignored it anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Removed: JSON-RPC: `sendpay` `route` argument `style` "legacy" (deprecated v0.11.0)
2022-12-13 08:28:12 +10:30
Rusty Russell
66bde4bd9f lightningd: only allow closing to native segwit
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Removed: JSON-RPC: `close` `destination` no longer allows p2pkh or p2sh addresses (deprecated v0.11.0)
2022-12-13 08:28:12 +10:30
Rusty Russell
ae48c7b78d wallet: fundpsbt, utxopsbt reserve cannot be bool.
Changelog-Removed: JSON-RPC: `fundpsbt`/`utxopsbt` `reserve` must be a number, not bool (deprecated v0.11.0)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-13 08:28:12 +10:30
Rusty Russell
418bb3cb3b invoice: expiry must be in seconds.
Changelog-Removed: JSON-RPC: `invoice` `expiry` no longer allowed to be a string with suffix, use an integer number of seconds (deprecated v0.11.0)
2022-12-13 08:28:12 +10:30
Rusty Russell
2afe7a1856 pay: remove description_hash without description.
Deprecated v0.11.0.

Changelog-Removed: JSON-RPC: `pay` for a bolt11 which uses a `description_hash`, without setting `description` (deprecated v0.11.0).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-13 08:28:12 +10:30
Simon Vrouwe
80dacd183e doc: replace deprecated parameter keyword "msatoshi" with "amount_msat"
[ amount\_msat -- RR ]
2022-12-12 22:08:42 +10:30
Jesse de Wit
28b7c704dc add reserve to the fundchannel docs
[ Trivial conflict rebase -- RR ]
2022-12-12 21:07:19 +10:30
Vincenzo Palazzo
df29990454 docs: fix typo
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
2022-12-12 16:32:04 +10:30
Vincenzo Palazzo
48cfc437c0 docs: remove the table inside the reoribuild docs
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
2022-12-12 16:32:04 +10:30
Matt Whitlock
4d64374b85 doc: drive-by spelling corrections 2022-12-12 15:34:00 +10:30
Matt Whitlock
31732f7825 fromschema.py: escape underscores in descriptions 2022-12-12 15:34:00 +10:30
Matt Whitlock
09d52b3cb4 doc: escape more naughty underscores
The only time underscores aren't special in Markdown is when they appear
in preformatted text. We have gotten away with not escaping underscores
where an asterisk-enclosed span or the paragraph ends before the next
underscore appears, but this is fragile and bad practice. Conversely,
there are many places where we have not escaped underscores but needed
to.

Escape all underscores that do not appear in preformatted blocks or
preformatted spans and are not themselves delineating emphasized spans.

The changes in this commit are exactly the result of executing the
following Bash code:

```bash
e=':x;'           	# begin loop
e+='s/^'          	# anchor match at beginning of line
e+='('            	# begin capturing subexpression
	e+='('    	# begin list of alternatives
		e+='[^`_\\]|'        	# any mundane character, or
		e+='`([^`\\]|\\.)*`|'	# backtick-enclosed span, or
		e+='\b_|_\b|'        	# underscore at boundary, or
		e+='\\.'             	# backslash-escaped character
	e+=')*'   	# any number of the preceding alternatives
e+=')'            	# end capturing subexpression
e+='\B_\B/\1\\_/;'	# escape non-formatting underscore
e+='tx'           	# repeat loop if we escaped an underscore

escape_underscores=(
	sed

	# use extended regular expressions
	-E

	# skip over indented blocks (following an empty line)
	-e '/^$/{:i;n;/^( {4,}|\t)/bi}'

	# skip over preformatted blocks
	-e '/^\s*```/,/^\s*```/{p;d}'

	# skip over generated sections
	-e '/GENERATE-FROM-SCHEMA-START/,/GENERATE-FROM-SCHEMA-END/{p;d}'

	# escape underscores
	-e "${e}"
)

"${escape_underscores[@]}" -i doc/*.[0-9].md
```

Changelog-None
2022-12-12 15:34:00 +10:30
Matt Whitlock
41987ed379 doc: check-manpages: add check for unescaped underscores 2022-12-12 15:34:00 +10:30
Christian Decker
b3a1d01e51 meta: Add changelog for hotfix release v22.11.1
Changelog-None
2022-12-09 18:32:09 +01:00
dependabot[bot]
2ed10196d0 build(deps): bump secp256k1 from 0.22.1 to 0.22.2
Bumps [secp256k1](https://github.com/rust-bitcoin/rust-secp256k1) from 0.22.1 to 0.22.2.
- [Release notes](https://github.com/rust-bitcoin/rust-secp256k1/releases)
- [Changelog](https://github.com/rust-bitcoin/rust-secp256k1/blob/secp256k1-0.22.2/CHANGELOG.md)
- [Commits](https://github.com/rust-bitcoin/rust-secp256k1/compare/secp256k1-0.22.1...secp256k1-0.22.2)

---
updated-dependencies:
- dependency-name: secp256k1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 13:11:06 +01:00
Rusty Russell
ec025344cc lightningd: don't announce names as DNS by default.
This broke BTCPayServer, so revert.  I originally (accidentally!)
implemented this such that it broadcast both DNS and IP entries, but
Michael reported earlier that they still don't propagage well, so
simply suppress them.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Fixes: #5795
Changelog-Changeed: Config: `announce-addr-dns` needs to be set to *true* to put DNS names into node announcements, otherwise they are suppressed.
Changelog-Deprecated: Config: `announce-addr-dns` (currently defaults to `false`).  This will default to `true` once enough of the network has upgraded to understand DNS entries.
2022-12-08 11:04:53 +01:00
Michael Schmoock
0ae6f4d6fb wireaddr: allow for UpperCase DNS names
This further relaxes the DNS hostname checks to allow for uppercase
input.

Changelog-None
2022-12-07 13:20:33 +01:00
Michael Schmoock
f0dd701bc5 doc: document the usage of DNS hostnames
This adds documentation on lightningd-config about the usage of DNS
hostnames for --addr, --bind-addr and --announce-addr

Changelog-None
2022-12-06 20:27:00 +01:00
Christian Decker
6af78c35df misc: Update cdecker's gpg key 2022-12-06 16:37:19 +01:00
Michael Schmoock
fb9d6684ad wireaddr: adds test for punycode
Changelog-None
2022-12-06 14:26:19 +01:00
Michael Schmoock
29f81baac9 wireaddr: is_dnsaddr allow underscore in hostname
The hostname part of a DNS FQDN can allow for additional characters
other than specified in `man 7 hostname`.

This extends is_dnsaddr and the test issue #5657.
Also fixes a typo in a comment.

Changelog-Fixed: wireaddr: #5657 allow '_' underscore in hostname part of DNS FQDN
2022-12-06 14:26:19 +01:00
nicolas.dorier
a96ff3b097 Update the contrib arm32v7 and arm64v8 dockerfiles 2022-12-06 10:48:57 +01:00
Rusty Russell
e778ebb9af wallet: only log broken if we have duplicate scids in channels.
This was reported, but the channel was closed.  So however we ended
up with a duplicate, we're no *worse* off than we were before migration?

Fixes: #5760
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-06 10:45:20 +01:00
Rusty Russell
37590eeeb2 common: fix arm32 compile breakage.
It's obviously the incorrect type, while our CI didn't catch it, Nicholas did:

```
plugins/fetchinvoice.c:1362:30: error: conversion from 'long long unsigned int' to 'size_t' {aka 'unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Werror=overflow]
 1362 |      || tlv_span(wire, 1001, UINT64_MAX, NULL) != 0) {
```

Reported-by: @NicholasDorier
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: Build: arm32 compiler error in fetchinvoice, due to bad types on 32-bit platforms.
Fixes: #5776
2022-12-06 10:44:39 +01:00
Rusty Russell
1d4f7f023d Revert "lightningd: always require "jsonrpc": "2.0" in request."
This reverts commit 43b037ab0b.

Nicholas Dorier says BTC Payserver still wants this for another year
or so.

Changelog-Added: JSON-RPC: reverts requirement for "jsonrpc" "2.0" inside requests (still deprecated though, just for a while longer!)
2022-12-06 10:43:54 +01:00
Alex Myers
70fc702ee4 reckless: further verbosity/squelch of pip output 2022-12-06 10:42:29 +01:00
Alex Myers
8653d1200f reckless: avoid redundant include statement in config 2022-12-06 10:42:29 +01:00
Alex Myers
3f2e923e81 reckless: fix verbose option
The switch to logging enabled verbose output regardless of the option
flag. Here the functionality is restored.

Changelog-Fixed: reckless verbosity properly applied.
2022-12-06 10:42:29 +01:00
Rusty Russell
9751502ff5 jsonrpc: fix error when we abort batching due to timeout.
The read_json() call expects len_read to be the amount of *new*
data read.  If we call this back without resetting, it will parse
this much random junk in the buffer.

Fixes: #5766
Changelog-Fixed: Plugin: `autoclean` could misperform or get killed due to lightningd's invalid handling of JSON batching.
2022-12-06 10:42:05 +01:00
Rusty Russell
24d7aad3d0 autoclean: fix uncleaned stats when we don't clean due to being too new.
We only incremented this if it was the wrong state.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: JSON-RPC: `autoclean-once` response `uncleaned` count is now correct.
2022-12-06 10:42:05 +01:00
Rusty Russell
4613b29815 doc: document autoclean-once command.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-12-06 10:42:05 +01:00
Christian Decker
a31575ca0b tools: Add multi-language support to blockreplace.py
Suggested-by: Rusty Russell <@rustyrussell>
2022-12-06 11:39:53 +10:30
Christian Decker
744d111cea doc: Create a blockreplace tool to update generated blocks in docs
We introduced a minor issue in #5757 that was causing the manpages to
be added every time we regenerate instead of replacing them. The
script was a bit unscrutable, and we do this block-replacement in
several places I thought it might be a good idea to have a dedicated
tool to do it.

This allows us to have simpler Makefiles whenever we update a
generated block inside another file. It's python, but does not have
dependencies :-)

Changelog-None
2022-12-06 11:39:53 +10:30
Christian Decker
d7cd3e1cb5 pyln: Fix an issue with the LightningConnection short-reading
We may end up with a short read, that is not empty, when a message
gets fragmented during transport, so we need to loop until we either
reach the full size or we have an empty read indicating a dropped
connection.

Changelog-None
2022-12-02 12:20:24 +01:00