Commit Graph

188 Commits

Author SHA1 Message Date
ThomasV d3fb68575d daemon.py: Add authentication to Watchtower.
Define abstract class AuthenticatedServer
2020-05-12 10:12:30 +02:00
ThomasV e2c2c89988 follow-up prev 2020-05-10 22:11:09 +02:00
ThomasV 13317c2f51 fix callback name: request_status 2020-05-10 21:14:31 +02:00
ThomasV 87facaa781 payserver: do not allow create_invoice by default 2020-05-10 17:07:19 +02:00
ThomasV 11aaa0b66f Simplify services (watchtower, payserver):
- Do not expose services settings in GUI
 - Use a single netaddress configuration variable.
2020-05-10 14:52:50 +02:00
ThomasV 085b6ca2ab jsonrpc: pass timeout to aiohttp session 2020-05-02 17:25:30 +02:00
SomberNight 0ee73378c9 daemon: rm "daemon.wallet" reference
related: #4905 -- when closing a wallet, it can get gc-ed now

TODO: PayServer needs to choose wallet somehow
2020-05-01 06:56:21 +02:00
SomberNight 2b1a150c52 multi-wallet: properly stop lnworker/lnwatcher 2020-05-01 04:50:08 +02:00
SomberNight 47ab8f8dc5 daemon.on_stop: adapt to python 3.8
(py3.8 has breaking changes re asyncio.CancelledError and asyncio.TimeoutError)

follow-up 308517d473
2020-04-15 19:34:52 +02:00
SomberNight cf1f2ba4dc network: replace "server" strings with ServerAddr objects 2020-04-15 17:23:47 +02:00
ThomasV 9224404108 Move callback manager out of Network class 2020-04-14 18:29:51 +02:00
SomberNight b21bcf5977 taskgroups: don't log CancelledError 2020-02-27 20:22:49 +01:00
SomberNight 3d42fca86e daemon.run_gui: make sure to exit process on exception
previously, if GUI-related imports raised, the GUI would not start
but the process would not exit (e.g. asyncio event loop would go on)

Traceback (most recent call last):
  File "...\electrum\electrum\daemon.py", line 517, in run_gui
    gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
  File "...\electrum\electrum\gui\qt\__init__.py", line 39, in <module>
    from PyQt5.QtGui import QGuiApplication
ImportError: DLL load failed while importing QtGui: The specified module could not be found.
2020-02-19 15:45:36 +01:00
ThomasV 300888f21c fix path for payserver static files 2020-02-19 11:47:43 +01:00
SomberNight 004acb906d ecc: abstract away some usage of python-ecdsa: randrange 2020-02-11 16:41:45 +01:00
ThomasV e1ce3aace7 Separate db from storage
- storage is content-agnostic
 - db and storage are passed to wallet contructor
2020-02-10 17:45:23 +01:00
SomberNight a6dd17bfef fix daemon (don't close instantly)
follow-up 37747d7469
2020-01-11 00:04:00 +01:00
SomberNight 37747d7469 split network main_taskgroup: create daemon.taskgroup
network.main_taskgroup restarts every time the proxy settings are changed,
many long-running tasks (some introduced with lightning) are not prepared for and do not want this.
2020-01-09 19:23:21 +01:00
SomberNight a5a7c205e3 trivial: add a few log lines for startup 2019-12-10 23:31:58 +01:00
SomberNight 9d0ae2f95b adapt to aiohttp 4.0
related: #5753
2019-12-10 22:55:11 +01:00
SomberNight 420b1a6636 cli: load_wallet now auto-upgrades the WalletStorage when needed
previously it would bail out and just return False
2019-11-22 15:54:34 +01:00
Daniel Kraft 423c4b0695 Return 401 from RPC server for missing auth.
When no (supported) authentication is passed to the JSON-RPC server,
return a 401 HTTP error code instead of 403.  This indicates to the
client that authentication is required, and also requests that to be
sent using the "basic" method.  The previously-returned code 403 is now
only returned if authentication is passed but not valid.

There are some JSON-RPC clients out there that only send authentication
after a 401 code requested it.  Those fail to connect to the Electrum
RPC interface even if the correct password is configured.  Those same
clients can e.g. connect to Bitcoin Core successfully, which already
implements logic matching this change.

See also https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses.
2019-11-21 15:16:37 +01:00
SomberNight 04edad9984 config: no longer singleton. it is passed to Wallet.__init__
The few other cases that used SimpleConfig.get_instance() now
either get passed a config instance, or they try to get a reference
to something else that has a reference to a config.
(see lnsweep, qt/qrcodewidget, qt/qrtextedit)
2019-09-22 20:46:01 +02:00
ThomasV a35421ab71 qt settings: create services tab for both watchtower and payserver 2019-09-22 17:12:48 +02:00
ThomasV 1ecbafb920 add SSL context to watchtower server 2019-09-13 12:26:27 +02:00
ThomasV a43be6657d follow-up on SingleConfig 2019-09-10 17:14:25 +02:00
SomberNight 1a08063928 config: remove 'open_last_wallet' side-effecting
related: #5629
2019-09-10 17:10:52 +02:00
ThomasV cefa4762ba do not create multiple instances of SimpleConfig (fix #5629). Add config field to wallet 2019-09-10 08:57:40 +02:00
SomberNight ef5a5151e3 daemon: make 'wallets' dict private
especially as keys (paths) need to be standardized, this should not be exposed
2019-09-09 22:15:11 +02:00
ThomasV 103a37b0ca add wallet_path to kwargs in run_cmdline 2019-09-09 09:58:16 +02:00
ThomasV d5d9f5b46c fix #5618 2019-09-08 12:06:21 +02:00
ThomasV 5e92f637a6 fix CLI exception handling 2019-09-06 12:38:13 +02:00
ThomasV 35b0b3a43c Fix CLI. Some commands require wallet_path. Return error on exception. 2019-09-06 11:06:08 +02:00
ThomasV 5faa0ade3d ignore exceptions in payserver 2019-09-06 08:06:26 +02:00
SomberNight 58681e4d07 follow-up prev (commands) 2019-09-05 18:30:04 +02:00
ThomasV 9ec9e1760a CLI: always use the daemon's cmd_runner, and pass the 'wallet'
parameter explicitly to each command that requires it.
Previous code was relying on side effects to set the wallet.
This should fix #5614
2019-09-05 17:57:51 +02:00
ThomasV 28da62f51b add PayServer settings to settings_dialog 2019-09-05 14:43:27 +02:00
ThomasV 9d595f1fe1 fix websocket messages 2019-09-05 11:45:28 +02:00
ThomasV 466c2bd293 for now, use PR_PAID for onchain unconfirmed 2019-09-05 11:33:09 +02:00
ThomasV 128285a050 http server: add ssl and bip70 signed requests 2019-09-05 10:57:50 +02:00
SomberNight 9d65120e59 commands: fix "close_wallet" 2019-09-04 20:16:47 +02:00
ThomasV 54776ca1d9 disable http server by default 2019-09-04 13:07:44 +02:00
ThomasV 747ab7a0a2 Integrate http_server (previously in electrum-merchant)
Use submodule to fetch HTML and CSS files
2019-09-04 12:20:05 +02:00
ThomasV 7f870f5e09 replace daemon 'start' subdommand with -d 2019-09-02 19:04:08 +02:00
SomberNight 0534f937ab local jsonrpc: log exceptions daemon-side 2019-09-01 18:23:01 +02:00
ThomasV 9cfeadea70 Turn daemon subcommands into RPCs 2019-08-20 09:03:12 +02:00
ThomasV 54257cbcca Rewrite JsonRPC requests using asyncio.
- commands are async
 - the asyncio loop is started and stopped from the main script
 - the daemon's main loop runs in the main thread
 - use jsonrpcserver and jsonrpcclient instead of jsonrpclib
2019-08-20 09:03:12 +02:00
ThomasV 5e0427392f Daemon: Replace get_server with request.
This function performs a single RPC, and may raise a DaemonNotRunning exception.
2019-08-20 09:03:12 +02:00
ThomasV b81feb6550 daemon: simplify get_fd_or_server 2019-08-20 09:03:12 +02:00
ThomasV b2f61bdc06 use aiohttp + jsonrpcserver in watchtower 2019-08-20 09:03:12 +02:00