adding report_ config fields for different host and port settings on IRC for NAT...
authorEagle[TM] <eagletm@mpex.net>
Mon, 26 Nov 2012 23:30:27 +0000 (00:30 +0100)
committerEagle[TM] <eagletm@mpex.net>
Mon, 26 Nov 2012 23:30:27 +0000 (00:30 +0100)
README-IRC.md
backends/__init__.py [deleted file]
backends/irc/__init__.py
electrum.conf.sample
server.py

index a849fcc..1436ec8 100644 (file)
@@ -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 (file)
index e69de29..0000000
index d800a4a..46ec921 100644 (file)
@@ -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':
index 62c4477..d7f1199 100644 (file)
@@ -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
index f874cfe..c3cb6fb 100755 (executable)
--- 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', '')