adding report_ config fields for different host and port settings on IRC for NAT...
[electrum-server.git] / backends / irc / __init__.py
index 0372002..46ec921 100644 (file)
@@ -15,13 +15,26 @@ class IrcThread(threading.Thread):
         self.daemon = True
         self.stratum_tcp_port = config.get('server','stratum_tcp_port')
         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':
             self.prepend = 'EL_'
+        self.pruning = config.get('server', 'backend') == 'leveldb'
         self.nick = self.prepend + self.nick
 
     def get_peers(self):
@@ -30,10 +43,15 @@ class IrcThread(threading.Thread):
 
     def getname(self):
         s = 'v' + VERSION + ' '
+        if self.pruning: s += 'p '
         if self.stratum_tcp_port:
             s += 't' + self.stratum_tcp_port + ' ' 
         if self.stratum_http_port:
             s += 'h' + self.stratum_http_port + ' '
+        if self.stratum_tcp_port:
+            s += 's' + self.stratum_tcp_ssl_port + ' ' 
+        if self.stratum_http_port:
+            s += 'g' + self.stratum_http_ssl_port + ' '
         return s
 
 
@@ -44,6 +62,11 @@ class IrcThread(threading.Thread):
             try:
                 s = socket.socket()
                 s.connect(('irc.freenode.net', 6667))
+            except:
+                time.sleep(10)
+                continue
+
+            try:
                 s.send('USER electrum 0 * :' + self.host + ' ' + ircname + '\n')
                 s.send('NICK ' + self.nick + '\n')
                 s.send('JOIN #electrum\n')
@@ -138,7 +161,7 @@ class ServerProcessor(Processor):
 
         elif method == 'server.stop':
             self.shared.stop()
-            result = 'ok'
+            result = 'stopping, please wait until all threads terminate.'
 
         elif method == 'server.info':
             result = map(lambda s: { "time":s.time,