Commit Graph

173 Commits

Author SHA1 Message Date
nicolas.dorier
6f027a24a0 Add dockerfile for cross compiling arm32v7 image 2019-01-04 22:48:20 +01:00
Rene Pickhardt
0321d79540 [plugin] Improved the example code to encourage usage of optional arguments (#2212)
The example code had the `plugin` argument as the last argument. this disallows arguments that have a standard value. As far as I understand the dispatching code the order of arguments does not matter since it is the name `plugin` that is relevant. Therefor I changed the order so that newbe's don't have to read the entire code and can easily add optional arguments
2019-01-02 23:16:56 +01:00
Christian Decker
4f16044404 fixup! pylightning: Added a tiny library for python plugins 2018-12-30 14:36:02 +01:00
Christian Decker
25ca49c444 pytest: Add a test for the event subscription and notification
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-30 14:36:02 +01:00
Christian Decker
5338d3115f pylightning: Add notification subscription handlers
Just like we added the RPC methods, the notification handlers can also
be registered using a function decorator, and we auto-subscribe when
asked for a manifest.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-30 14:36:02 +01:00
Christian Decker
7314c71695 pylightning: Increase buffer size for big JSON-RPC responses
This was causing `listchannels` to be incredibly slow. The response is
several megabyte in size, and we were only buffering 1Kb on each
iteration.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-29 12:19:56 +01:00
Christian Decker
42d8e07d70 pylightning: Merge option_values into options
Suggested-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-15 15:04:32 +01:00
Christian Decker
1eb23d6b29 pylightning: Split log messages on newlines
This is just cosmetic, and makes things like tracebacks much easier to
read.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-15 15:04:32 +01:00
Christian Decker
643480cfd8 pylightning: Migrate the test plugin to use the new wrapper
Should be a lot easier to see what happens :-)

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-15 15:04:32 +01:00
Christian Decker
d88228280e pylightning: Add option handling to the plugin library
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-15 15:04:32 +01:00
Christian Decker
ada69e7943 pylightning: Added a tiny library for python plugins
It's flask inspired with the Plugin instance and decorators to add
methods to the plugin description.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-15 15:04:32 +01:00
Christian Decker
a304db9be2 plugin: Handle log notifications from plugins
Logs are parsed and injected into the main daemon's logs.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-13 02:36:43 +00:00
Rusty Russell
19ecf8c6fb disconnect: add force option to disconnect even with a live channel.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-10 22:25:32 +00:00
William Casarin
db9e250df8 python: fix check-python errors in plugins
Fixes some lint errors with unused variables:

contrib/plugins/fail/failtimeout.py:48:5:
  F841 local variable 'e' is assigned to but never used

contrib/plugins/helloworld.py:86:5:
  F841 local variable 'e' is assigned to but never used

Signed-off-by: William Casarin <jb55@jb55.com>
2018-12-10 20:03:05 +01:00
Conor Scott
6470630db9 [doc] Add lightning-pay script as example for using pylightning library 2018-12-10 17:07:34 +01:00
lisa neigut
a39c97c960 channeld: support private channel creation, fixes #2125
Adds a new 'announce' field for `fundchannel`, which if false
won't broadcast a `channel_announcement`.
2018-12-08 15:15:55 -08:00
Christian Decker
be7674ed6c plugin: Added .params.configuration to init call
This tells the plugin both the `lightning-dir` as well as the
`rpc-filename` to use to talk to `lightningd`. Prior to this they'd
had to guess.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-07 17:17:53 +01:00
Christian Decker
5b6bb7c571 pylightning: Bump version number to 0.0.6 to make Pypi work again
Fixes #2135

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-07 10:29:21 +01:00
Christian Decker
bd6e3bfe6a pylightning: Add a compatibility mode for pre-\n\n versions
We inadvertently broke the compatibility between the python library
and the binary when switching to \n\n-delimiters. This reintroduces
the old inefficient parsing, and dynamically upgrades to the faster
version if it detects the \n\n-delimiter.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-07 10:29:21 +01:00
Christian Decker
a50529bcb0 pylightning: Allow both kwargs as well as positional args
We don't allow a mix (just like JSON-RPC), but we can use either or
now.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-07 10:29:21 +01:00
Christian Decker
f5a3f1f0a2 plugin: Add a test for timeout and broken manifest
Both of these plugins will fail in interesting ways, and we should
still handle them correctly.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
0f72e0bce8 plugin: The example plugin can now return errors
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
1e139e412b plugin: Allow both array as well as object params in example plugin
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
879f9b7986 plugin: Make a common directory of plugins in contrib
No need to create a directory each.

Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
e27b2ea69b pytest: Add a test for the plugin option passthrough
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
0040673e90 docker: Update pytest dependencies in the builder image
Adds timeout and progress to the output.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-11-26 22:53:37 +00:00
Rusty Russell
b9b7411d88 lightning.py: use double-\n as marker for RPC parsing.
This doesn't make a performance difference, but even better, it
simplifies the code.

We hacked test_multirpc to send 200x as many commands, and timed the
pytest over 20 runs:

Before:
=================== 1 passed, 136 deselected in 8.550000-9.400000(9.0045+/-0.2) seconds ===================

After:
=================== 1 passed, 136 deselected in 8.540000-9.370000(8.97286+/-0.16) seconds ===================

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-19 21:36:40 +01:00
Rusty Russell
0c3f85d931 lightning.py: parse multiple JSON RPC commands accurately.
We need to keep the remaining buffer, and we need to try to parse it
before we read the next.  I first tried keeping it in the object, but
its lifetime is that of the *socket*, which we actually reopen for
every command.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-19 21:36:40 +01:00
Conor Scott
9a0f3a764c [pylightning] Fix lightning-pay script 2018-11-19 21:24:03 +01:00
Christian Decker
6c649ce775 docs: Mention that msatoshi on pay is not optional, but ignored
Reported-by: Tim Horie <@thorie7912>
Signed-off-by: Christian Decker <@cdecker>
2018-11-13 06:17:50 +01:00
Christian Decker
2b3059be0c plugin: Have the helloworld plugin accept a configure message
Just customizes the greeting, the actual sending is in the next commit.

Signed-off-by: Christian Decker <@cdecker>
2018-11-13 00:44:50 +01:00
Christian Decker
55d6d6b0e7 plugin: Register plugin cli options
We also make `--help` a non-early arg so it allows for the plugins to
register their options before printing the help message. The options
themselves are stored in a separate struct inbetween them being
registered and them being forwarded to the plugin. Currently only
supports string options.

Signed-off-by: Christian Decker <@cdecker>
2018-11-13 00:44:50 +01:00
Christian Decker
d0de6e59c6 plugin: Start each plugin and setup the connection to it
Mostly copied from bitcoind.c
2018-11-13 00:44:50 +01:00
Christian Decker
f7116c3a43 plugins: Add simple helloworld plugin to test against
It does double duty to show how a simple plugin might work.
2018-11-13 00:44:50 +01:00
Rusty Russell
f3329d6013 pylightning: add msatoshi optional sendpay param.
And there's a difference between no description and "" as a description:
for no description, listpayments doesn't show the field at all.  So fix
that.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-10-23 16:47:32 +02:00
Christian Decker
6b7546b94d json-rpc: Rename getroutestats and move stats to getinfo
Signed-off-by: Christian Decker <@cdecker>
2018-10-19 21:58:27 +00:00
Christian Decker
facd7d16aa json-rpc: Add listforwardings command 2018-10-19 21:58:27 +00:00
Christian Decker
e904fcc00c docker: Update docker images and docs to non-CVE-2018-17144 bitcoind
While not strictly necessary it's certainly a good idea to test
against the latest one and not encourage users to use old versions.

Reported-by: Jonas Nick <@jonasnick>
Signed-off-by: Christian Decker <@cdecker>
2018-10-15 23:05:25 +00:00
Christian Decker
0a5c45e8b1 docker: Prepare builder to include flask and cherrypy
This is in preparation for the next commit.
2018-09-16 00:05:34 +02:00
Christian Decker
b861e44f36 docker: Add missing dependencies to builder for a2x 2018-09-14 21:19:50 +02:00
Rusty Russell
e0952ceff2 feerate: use suffix, not separate argument.
And, reluctantly, default to bitcoind style.
"It's wrong to be right too soon."

Suggested-by: @cdecker
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-30 16:33:35 +02:00
Rusty Russell
14dc1c37ab fundchannel / withdraw: allow explicit feerate setting.
These are the two cases where we'll refuse without a fee estimate.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-30 16:33:35 +02:00
Rene Pickhardt
5848a5c718 channel_id unknown at funding time. Needs to be node_id
No semantical change but when using the python lib for the rpc-api it is confusing that my developing environment suggests that I should fund a channel and pass a channel_id when in fact I want to pass a node_id
2018-08-28 00:53:57 +00:00
Rusty Russell
c7c5affa3f feerates: new command to inject/query fee estimates.
This is useful mainly in the case where bitcoind is not giving estimates,
but can also be used to bias results if you want.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-25 00:33:12 +00:00
Rusty Russell
d93be58bd0 pytest: remove use dev-override-feerates.
Manipulate fees via fake-bitcoin-cli.  It's not quite the same, as
these are pre-smoothing, so we need a restart to override that where
we really need an exact change.  Or we can wait until it reaches a
certain value in cases we don't care about exact amounts.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-24 02:17:51 +00:00
Rusty Russell
2314a4aa5d contrib/short_channel_id-to-txid.sh: simple mapping util.
I use this to look up on smartbit.com.au to see if a channel is spent,
for example.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-21 22:53:45 +02:00
Douglas Schilling Landgraf
0a5dc713f0 contrib: add init file for systemd
Similar to init/bitcoind.service, this patch
includes an initial lightningd.service.

[ Squashed "trivial, fix comment" -- RR ]
2018-08-13 23:55:12 +00:00
Rusty Russell
71575b2115 ping: no longer a dev_ command.
Fixes: #1407
Suggested-by: conanoc@gmail.com
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-10 12:46:45 +02:00
Rusty Russell
60b95d4764 pylightning: add method and payload as proper fields.
They're much more useful being programatically-accessible, AFAICT.

The string stays the same so they're backwards compatible.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-08-08 16:05:58 +02:00
Douglas Schilling Landgraf
ea6c0d4506 contrib: Dockerfile.builder.fedora bump fedora release
Fedora 28 released
2018-08-05 13:09:58 +02:00
Christian Decker
1738107598 json-rpc: Add description argument to sendpay 2018-07-30 03:04:45 +00:00
Christian Decker
356dcbba97 pylightning: Don't attempt to deserialize after every read
We make use of the structure of the final read to decide when to deserialize.
2018-07-16 00:24:04 +00:00
Bertrand Marlier
760b053d7b pylightning: fix incorrect description for disconnect() method 2018-07-15 18:40:48 +02:00
gallizoltan
1220a4eb1d pylightning: add missing arguments to getroute 2018-07-13 13:12:49 +02:00
Christian Decker
13796f0d0f travis: Add xmllint to the builder image
Seems that it is required for the manpage conversion.
2018-07-05 00:24:33 +00:00
Christian Decker
582ea1a33b jsonrpc: Remove dev-blockheight in favor of getinfo
`getinfo` has been providing the blockheight for a good while and doesn't
require the `DEVELOPER=1` flag during compilation, so it should be the preferred
method to retrieve the blockchain height.
2018-07-04 00:08:14 +00:00
arowser
fecef618bc remove duplicate line 2018-07-01 04:14:10 +00:00
Christian Decker
6c82d1b8b0 pylightning: Subclass ValueError to access to the returned error 2018-07-01 04:13:04 +00:00
Christian Decker
e35da01d11 travis: Add asciidoc, excluding latex, to the builder images
Fixes #1641
2018-07-01 04:12:45 +00:00
Christian Decker
1899e000d6 docker: Add two more dependencies to the fedora builder
Strictly speaking not needed for the build and test, but if we want to use the
image also for packaging this is required.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-06-21 23:04:10 +00:00
Rusty Russell
f52245d442 gossipd: support and use zlib encoding in short_channel_id encoding.
We still use uncompressed if zlib turns out to be larger.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-06-06 03:25:56 +00:00
Rusty Russell
c633cbe2ee tests: add dev-query-scids
And write the test for it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-06-06 03:25:56 +00:00
Christian Decker
957b32affe contrib: Add the flaky dependency to the builder image
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-05-07 02:40:50 +00:00
Christian Decker
71857bad8e builder: Add the ephemeral-port-reserve dependency to the builder
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-05-07 02:40:50 +00:00
Christian Decker
e308423954 travis: Fix the locale in the builder images
These were spamming the logs and making the log view almost unusable.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-05-06 15:45:52 +02:00
Christian Decker
700a505727 doc: Remove libsodium-dev dependency, it's in-tree
Signed-off-by: Christian Decker <decker.christian@gmail.com>
Reported-by: Perlover <@Perlover>
2018-05-06 14:07:13 +02:00
ZmnSCPxj
eb42804fcc invoice: Support providing preimage when making invoice. 2018-04-24 11:54:02 +02:00
ZmnSCPxj
2cee1ab20f peer_control: Make close wait for complete closure, with timeout.
Also report tx and txid, and whether we closed unilaterally or
bilaterally, if we could close the channel.

Also make a manpage.

Fixes: #1207
Fixes: #714
Fixes: #622
2018-04-23 05:24:46 +00:00
Christian Decker
36c335fb09 contrib: Updated the builder images to include shellcheck
As requested in #1319

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-04-09 00:21:20 +00:00
Rusty Russell
09c4203767 bolt11: allow multiple fallback addresses.
We can have more than one; eg we might offer both bech32 and a p2sh
address, and in future we might offer v1 segwit, etc.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-04-06 14:26:53 +02:00
practicalswift
bc4a099bff Add shell script linting: Check for shellcheck warnings in shell scripts 2018-04-04 15:06:30 +02:00
Christian Decker
f2e81fde44 travis: Updated docker builder images to include cppcheck
It's a check dependency from PR #1262.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-03-27 23:17:48 +00:00
Zhen Zhang
d1010673b5 contrib: Rewrite contrib/lightning-pay in Python, support bolt11
fixes #718
2018-03-25 23:19:35 +02:00
ZmnSCPxj
a4a5d6002c pylightning: Add new waitsendpay command 2018-03-14 05:33:09 +00:00
John Barboza
9a2950628d test: disconnect command 2018-03-07 16:14:01 +01:00
Douglas Schilling Landgraf
d8e764efa0 contrib: Dockerfile.builder.fedora - remove git clone lightning
The original Dockerfile.builder don't build lightning
2018-03-07 16:01:03 +01:00
Douglas Schilling Landgraf
887b5048f1 contrib: Add Dockerfile.builder.fedora
The Fedora distro version of Dockerfile.builder
2018-03-07 16:01:03 +01:00
ZmnSCPxj
8e8d7c2aba pay/sendpay: Use spec names for rhash and r. 2018-03-05 20:21:37 +00:00
Douglas Schilling Landgraf
ef34efa93f pylightning: label is required for waitinvoice()
This patch make sure label don't have default value.
2018-03-03 18:12:26 +01:00
Christian Decker
136a5f2b74 contrib: Updated builder image to include v0.16.0 of bitcoind
Now that 0.16.0 is stable we should make use of it

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-03-01 03:52:21 +00:00
John Barboza
b028a0a439 invoice: add fallback address to invoice command
* Modifies invoice command to have the following format
  invoice <msatoshi> <label> <desc> <?expiry> <?fallbackaddr>
* Adds support for Segwit bcrt1 addresses for withdraw
* Add test case for fallback address in invoice creation
* Create a common json_tok_address_scriptpubkey to be used
  by invoice and withdraw commands.
2018-02-26 03:09:15 +00:00
Christian Decker
68a9951fb9 contrib: Add pytest-reruns into the builder image
Should allow us to reduce the number of manual reruns, but may hide
some flaky tests.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-02-24 10:40:03 +01:00
Christian Decker
ac21ac3653 contrib: Add flake8 to builder container images
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-02-24 10:40:03 +01:00
Anton Astafiev
8787766d44 Pylightning (#1003)
* Fix dev_setfees to set slow and normal fees correctly.

Due to a bug def_setfees(100, slow=100) would instead set immediate and
normal fees to 100. This behavior has been updated to set fees to
correct values, make the values truly optional as per documentation and
unit test this behavior.

* Fix pay() to set msatoshi, description and risk factor properly

Due to a bug pay(invoice, description='1000') resulted in payment of
1000 msatoshi instead. This was fixed and covered with tests.

* Fix named args in listpayments, listpeers and connect

* Do not pass None to methods where it is default value

* Make description on invoice and pay match.

Suggested-by: @ZmnSCPxj

* Fix dev_setfees to set slow and normal fees correctly.

Due to a bug def_setfees(100, slow=100) would instead set immediate and
normal fees to 100. This behavior has been updated to set fees to
correct values, make the values truly optional as per documentation and
unit test this behavior.

* Fix pay() to set msatoshi, description and risk factor properly

Due to a bug pay(invoice, description='1000') resulted in payment of
1000 msatoshi instead. This was fixed and covered with tests.

* Fix named args in listpayments, listpeers and connect

* Do not pass None to methods where it is default value

* Make description on invoice and pay match.

Suggested-by: @ZmnSCPxj
2018-02-16 22:40:55 +01:00
Douglas Schilling Landgraf
cb1a4a5180 pylightning: make flake8 happy
Trivial changes to make the code pythonic

Signed-off-by: Douglas Schilling Landgraf <dougsland@gmail.com>
2018-02-16 12:55:04 +01:00
Christian Decker
e48a97ffd4 pylightning: Filter out None arguments in JSON-RPC calls
Passing them in doesn't hurt, but better to avoid ambivalences.

Suggested-by: @graphite
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-02-15 23:56:38 +00:00
Christian Decker
0e40b9b08c pylightning: Switch to dict-based params instead of positional
Signed-off-by: Christian Decker <decker.christian@gmail.com>
Co-authored-by: Guido Dassori @gdassori
2018-02-15 23:56:38 +00:00
Christian Decker
ed2fee8977 pylightning: Added explicit logger to log to
Signed-off-by: Christian Decker <decker.christian@gmail.com>
Co-authored-by: Guido Dassori @gdassori
2018-02-15 23:56:38 +00:00
Christian Decker
b2cec18a81 contrib: Add the addrtype argument to newaddr
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-02-06 01:37:58 +00:00
Rusty Russell
7fd5808803 contrib/lightning-cli.bash-completion: fix for new simpler help format.
Plus, we don't need awk *and* sed for this!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-02-02 00:05:00 +01:00
gdassori
7101db060b add mutually exclusive bolt11 & payment_hash to listpayments method 2018-01-31 12:38:18 +01:00
gdassori
b9b0b7ebe0 fix LightningRpc signatures according to tests 2018-01-31 12:38:18 +01:00
gdassori
bdcf38442b add port argument in connect, add getpeer method for test convenience 2018-01-31 12:38:18 +01:00
gdassori
67dbe71dfa update pylightning readme installation informations 2018-01-31 12:38:18 +01:00
gdassori
825ccb33a6 version bump 2018-01-31 12:38:18 +01:00
gdassori
51a491ef74 same methods of lightning-cli in pylightning 2018-01-31 12:38:18 +01:00
Christian Decker
0223d836ac contrib: Updated bitcoind in CI builder image to 0.15.1
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-01-29 20:35:59 +00:00
alaniz
5421e9f6f2 pylightning: Add and move example to README 2018-01-24 17:30:32 +01:00
Tomas Stary
e2d66136d3 adding the bash completition script for the client 2018-01-19 22:28:14 +00:00
Rusty Russell
cf54f23947 JSONRPC: add id argument to listpeers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-01-19 22:23:45 +00:00