From 3989b283341f5d456a5c6ffdd4e7fd00f57d0fcd Mon Sep 17 00:00:00 2001 From: Eagle[TM] Date: Tue, 27 Nov 2012 00:30:27 +0100 Subject: [PATCH] adding report_ config fields for different host and port settings on IRC for NAT setups --- README-IRC.md | 15 ++++++++++++++- backends/irc/__init__.py | 10 ++++++++++ electrum.conf.sample | 3 +++ server.py | 5 +++++ 4 files changed, 32 insertions(+), 1 deletions(-) delete mode 100644 backends/__init__.py diff --git a/README-IRC.md b/README-IRC.md index a849fcc..1436ec8 100644 --- a/README-IRC.md +++ b/README-IRC.md @@ -8,7 +8,9 @@ The following config file options are used by the IRC part of Electrum server: [server] irc = yes host = fqdn.host.name.tld + #report_host = fqdn.host.name.tld irc_nick = server nickname + #report_stratum_http_port = 80 `irc` is used to determine whether the IRC thread will be started or the Electrum server will run in private mode. In private mode, @@ -18,7 +20,18 @@ Electrum server will run in private mode. In private mode, used both when binding the listener for incoming client connections and as part of the realname field in IRC (see below). -`irc_nick` is a nick name that will be appended to E_ when +`report_host` is a an optional fully-qualified domain name (FQDN) of your Electrum server +instead of `host`. It is used as part of the name field in IRC for incoming client connections. +This is useful in a NAT setup where you bind to a private IP locally but have an external IP +and set up at your router and external DNS. + +`report_stratum_tcp_port`, `report_stratum_http_port`, `report_stratum_tcp_ssl_port`, +`report_stratum_http_ssl_port` are optional settings for a port number to be reported in the +IRC name field without actually binding this port locally. This is useful in a NAT setup +where you might want to bind to a high port locally but DNAT a different possibly privileged +port for inbound connections + +`irc_nick` is a nick name that will be appended to the E_ suffix when composing the IRC nickname to identify your server on #electrum. Please note the IRC name field can only contain 50 chars and will be composed diff --git a/backends/__init__.py b/backends/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backends/irc/__init__.py b/backends/irc/__init__.py index d800a4a..46ec921 100644 --- a/backends/irc/__init__.py +++ b/backends/irc/__init__.py @@ -17,9 +17,19 @@ class IrcThread(threading.Thread): self.stratum_http_port = config.get('server','stratum_http_port') self.stratum_tcp_ssl_port = config.get('server','stratum_tcp_ssl_port') self.stratum_http_ssl_port = config.get('server','stratum_http_ssl_port') + self.report_stratum_tcp_port = config.get('server','report_stratum_tcp_port') + self.report_stratum_http_port = config.get('server','report_stratum_http_port') + self.report_stratum_tcp_ssl_port = config.get('server','report_stratum_tcp_ssl_port') + self.report_stratum_http_ssl_port = config.get('server','report_stratum_http_ssl_port') self.peers = {} self.host = config.get('server','host') + self.report_host = config.get('server','report_host') self.nick = config.get('server', 'irc_nick') + if self.report_stratum_tcp_port: self.stratum_tcp_port = self.report_stratum_tcp_port + if self.report_stratum_http_port: self.stratum_http_port = self.report_stratum_http_port + if self.report_stratum_tcp_ssl_port: self.stratum_tcp_ssl_port = self.report_stratum_tcp_ssl_port + if self.report_stratum_http_ssl_port: self.stratum_http_ssl_port = self.report_stratum_http_ssl_port + if self.report_host: self.host = self.report_host if not self.nick: self.nick = random_string(10) self.prepend = 'E_' if config.get('server', 'coin') == 'litecoin': diff --git a/electrum.conf.sample b/electrum.conf.sample index 62c4477..d7f1199 100644 --- a/electrum.conf.sample +++ b/electrum.conf.sample @@ -1,7 +1,10 @@ [server] host = localhost +#report_host = stratum_tcp_port = 50001 stratum_http_port = 8081 +#report_stratum_tcp_port = 50001 +#report_stratum_http_port = 80 password = secret banner = Welcome to Electrum! irc = yes diff --git a/server.py b/server.py index f874cfe..c3cb6fb 100755 --- a/server.py +++ b/server.py @@ -38,10 +38,15 @@ def create_config(): config.add_section('server') config.set('server', 'banner', 'Welcome to Electrum!') config.set('server', 'host', 'localhost') + config.set('server', 'report_host', '') config.set('server', 'stratum_tcp_port', '50001') config.set('server', 'stratum_http_port', '8081') config.set('server', 'stratum_tcp_ssl_port', '50002') config.set('server', 'stratum_http_ssl_port', '8082') + config.set('server', 'report_stratum_tcp_port', '') + config.set('server', 'report_stratum_http_port', '') + config.set('server', 'report_stratum_tcp_ssl_port', '') + config.set('server', 'report_stratum_http_ssl_port', '') config.set('server', 'password', '') config.set('server', 'irc', 'yes') config.set('server', 'irc_nick', '') -- 1.7.1