diff --git a/src/bitmessagemain.py b/src/bitmessagemain.py
index be2fdf48..0eec7149 100755
--- a/src/bitmessagemain.py
+++ b/src/bitmessagemain.py
@@ -64,146 +64,147 @@ class outgoingSynSender(threading.Thread):
time.sleep(1)
global alreadyAttemptedConnectionsListResetTime
while True:
- if len(selfInitiatedConnections[self.streamNumber]) >= 8: # maximum number of outgoing connections = 8
+ while len(selfInitiatedConnections[self.streamNumber]) >= 8: # maximum number of outgoing connections = 8
time.sleep(10)
- else:
- random.seed()
- HOST, = random.sample(shared.knownNodes[self.streamNumber], 1)
- alreadyAttemptedConnectionsListLock.acquire()
- while HOST in alreadyAttemptedConnectionsList or HOST in shared.connectedHostsList:
- alreadyAttemptedConnectionsListLock.release()
- # print 'choosing new sample'
- random.seed()
- HOST, = random.sample(shared.knownNodes[
- self.streamNumber], 1)
- time.sleep(1)
- # Clear out the alreadyAttemptedConnectionsList every half
- # hour so that this program will again attempt a connection
- # to any nodes, even ones it has already tried.
- if (time.time() - alreadyAttemptedConnectionsListResetTime) > 1800:
- alreadyAttemptedConnectionsList.clear()
- alreadyAttemptedConnectionsListResetTime = int(
- time.time())
- alreadyAttemptedConnectionsListLock.acquire()
- alreadyAttemptedConnectionsList[HOST] = 0
+ if shared.shutdown:
+ break
+ random.seed()
+ HOST, = random.sample(shared.knownNodes[self.streamNumber], 1)
+ alreadyAttemptedConnectionsListLock.acquire()
+ while HOST in alreadyAttemptedConnectionsList or HOST in shared.connectedHostsList:
alreadyAttemptedConnectionsListLock.release()
- PORT, timeNodeLastSeen = shared.knownNodes[
+ # print 'choosing new sample'
+ random.seed()
+ HOST, = random.sample(shared.knownNodes[
+ self.streamNumber], 1)
+ time.sleep(1)
+ # Clear out the alreadyAttemptedConnectionsList every half
+ # hour so that this program will again attempt a connection
+ # to any nodes, even ones it has already tried.
+ if (time.time() - alreadyAttemptedConnectionsListResetTime) > 1800:
+ alreadyAttemptedConnectionsList.clear()
+ alreadyAttemptedConnectionsListResetTime = int(
+ time.time())
+ alreadyAttemptedConnectionsListLock.acquire()
+ alreadyAttemptedConnectionsList[HOST] = 0
+ alreadyAttemptedConnectionsListLock.release()
+ PORT, timeNodeLastSeen = shared.knownNodes[
+ self.streamNumber][HOST]
+ sock = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
+ # This option apparently avoids the TIME_WAIT state so that we
+ # can rebind faster
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ sock.settimeout(20)
+ if shared.config.get('bitmessagesettings', 'socksproxytype') == 'none' and verbose >= 2:
+ shared.printLock.acquire()
+ print 'Trying an outgoing connection to', HOST, ':', PORT
+ shared.printLock.release()
+ # sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ elif shared.config.get('bitmessagesettings', 'socksproxytype') == 'SOCKS4a':
+ if verbose >= 2:
+ shared.printLock.acquire()
+ print '(Using SOCKS4a) Trying an outgoing connection to', HOST, ':', PORT
+ shared.printLock.release()
+ proxytype = socks.PROXY_TYPE_SOCKS4
+ sockshostname = shared.config.get(
+ 'bitmessagesettings', 'sockshostname')
+ socksport = shared.config.getint(
+ 'bitmessagesettings', 'socksport')
+ rdns = True # Do domain name lookups through the proxy; though this setting doesn't really matter since we won't be doing any domain name lookups anyway.
+ if shared.config.getboolean('bitmessagesettings', 'socksauthentication'):
+ socksusername = shared.config.get(
+ 'bitmessagesettings', 'socksusername')
+ sockspassword = shared.config.get(
+ 'bitmessagesettings', 'sockspassword')
+ sock.setproxy(
+ proxytype, sockshostname, socksport, rdns, socksusername, sockspassword)
+ else:
+ sock.setproxy(
+ proxytype, sockshostname, socksport, rdns)
+ elif shared.config.get('bitmessagesettings', 'socksproxytype') == 'SOCKS5':
+ if verbose >= 2:
+ shared.printLock.acquire()
+ print '(Using SOCKS5) Trying an outgoing connection to', HOST, ':', PORT
+ shared.printLock.release()
+ proxytype = socks.PROXY_TYPE_SOCKS5
+ sockshostname = shared.config.get(
+ 'bitmessagesettings', 'sockshostname')
+ socksport = shared.config.getint(
+ 'bitmessagesettings', 'socksport')
+ rdns = True # Do domain name lookups through the proxy; though this setting doesn't really matter since we won't be doing any domain name lookups anyway.
+ if shared.config.getboolean('bitmessagesettings', 'socksauthentication'):
+ socksusername = shared.config.get(
+ 'bitmessagesettings', 'socksusername')
+ sockspassword = shared.config.get(
+ 'bitmessagesettings', 'sockspassword')
+ sock.setproxy(
+ proxytype, sockshostname, socksport, rdns, socksusername, sockspassword)
+ else:
+ sock.setproxy(
+ proxytype, sockshostname, socksport, rdns)
+
+ try:
+ sock.connect((HOST, PORT))
+ rd = receiveDataThread()
+ rd.daemon = True # close the main program even if there are threads left
+ objectsOfWhichThisRemoteNodeIsAlreadyAware = {}
+ rd.setup(sock, HOST, PORT, self.streamNumber,
+ objectsOfWhichThisRemoteNodeIsAlreadyAware)
+ rd.start()
+ shared.printLock.acquire()
+ print self, 'connected to', HOST, 'during an outgoing attempt.'
+ shared.printLock.release()
+
+ sd = sendDataThread()
+ sd.setup(sock, HOST, PORT, self.streamNumber,
+ objectsOfWhichThisRemoteNodeIsAlreadyAware)
+ sd.start()
+ sd.sendVersionMessage()
+
+ except socks.GeneralProxyError as err:
+ if verbose >= 2:
+ shared.printLock.acquire()
+ print 'Could NOT connect to', HOST, 'during outgoing attempt.', err
+ shared.printLock.release()
+ PORT, timeLastSeen = shared.knownNodes[
self.streamNumber][HOST]
- sock = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
- # This option apparently avoids the TIME_WAIT state so that we
- # can rebind faster
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- sock.settimeout(20)
- if shared.config.get('bitmessagesettings', 'socksproxytype') == 'none' and verbose >= 2:
+ if (int(time.time()) - timeLastSeen) > 172800 and len(shared.knownNodes[self.streamNumber]) > 1000: # for nodes older than 48 hours old if we have more than 1000 hosts in our list, delete from the shared.knownNodes data-structure.
+ shared.knownNodesLock.acquire()
+ del shared.knownNodes[self.streamNumber][HOST]
+ shared.knownNodesLock.release()
shared.printLock.acquire()
- print 'Trying an outgoing connection to', HOST, ':', PORT
+ print 'deleting ', HOST, 'from shared.knownNodes because it is more than 48 hours old and we could not connect to it.'
shared.printLock.release()
- # sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- elif shared.config.get('bitmessagesettings', 'socksproxytype') == 'SOCKS4a':
- if verbose >= 2:
- shared.printLock.acquire()
- print '(Using SOCKS4a) Trying an outgoing connection to', HOST, ':', PORT
- shared.printLock.release()
- proxytype = socks.PROXY_TYPE_SOCKS4
- sockshostname = shared.config.get(
- 'bitmessagesettings', 'sockshostname')
- socksport = shared.config.getint(
- 'bitmessagesettings', 'socksport')
- rdns = True # Do domain name lookups through the proxy; though this setting doesn't really matter since we won't be doing any domain name lookups anyway.
- if shared.config.getboolean('bitmessagesettings', 'socksauthentication'):
- socksusername = shared.config.get(
- 'bitmessagesettings', 'socksusername')
- sockspassword = shared.config.get(
- 'bitmessagesettings', 'sockspassword')
- sock.setproxy(
- proxytype, sockshostname, socksport, rdns, socksusername, sockspassword)
- else:
- sock.setproxy(
- proxytype, sockshostname, socksport, rdns)
- elif shared.config.get('bitmessagesettings', 'socksproxytype') == 'SOCKS5':
- if verbose >= 2:
- shared.printLock.acquire()
- print '(Using SOCKS5) Trying an outgoing connection to', HOST, ':', PORT
- shared.printLock.release()
- proxytype = socks.PROXY_TYPE_SOCKS5
- sockshostname = shared.config.get(
- 'bitmessagesettings', 'sockshostname')
- socksport = shared.config.getint(
- 'bitmessagesettings', 'socksport')
- rdns = True # Do domain name lookups through the proxy; though this setting doesn't really matter since we won't be doing any domain name lookups anyway.
- if shared.config.getboolean('bitmessagesettings', 'socksauthentication'):
- socksusername = shared.config.get(
- 'bitmessagesettings', 'socksusername')
- sockspassword = shared.config.get(
- 'bitmessagesettings', 'sockspassword')
- sock.setproxy(
- proxytype, sockshostname, socksport, rdns, socksusername, sockspassword)
- else:
- sock.setproxy(
- proxytype, sockshostname, socksport, rdns)
-
- try:
- sock.connect((HOST, PORT))
- rd = receiveDataThread()
- rd.daemon = True # close the main program even if there are threads left
- objectsOfWhichThisRemoteNodeIsAlreadyAware = {}
- rd.setup(sock, HOST, PORT, self.streamNumber,
- objectsOfWhichThisRemoteNodeIsAlreadyAware)
- rd.start()
- shared.printLock.acquire()
- print self, 'connected to', HOST, 'during an outgoing attempt.'
- shared.printLock.release()
-
- sd = sendDataThread()
- sd.setup(sock, HOST, PORT, self.streamNumber,
- objectsOfWhichThisRemoteNodeIsAlreadyAware)
- sd.start()
- sd.sendVersionMessage()
-
- except socks.GeneralProxyError as err:
- if verbose >= 2:
+ except socks.Socks5AuthError as err:
+ shared.UISignalQueue.put((
+ 'updateStatusBar', _translate(
+ "MainWindow", "SOCKS5 Authentication problem: %1").arg(str(err))))
+ except socks.Socks5Error as err:
+ pass
+ print 'SOCKS5 error. (It is possible that the server wants authentication).)', str(err)
+ except socks.Socks4Error as err:
+ print 'Socks4Error:', err
+ except socket.error as err:
+ if shared.config.get('bitmessagesettings', 'socksproxytype')[0:5] == 'SOCKS':
+ print 'Bitmessage MIGHT be having trouble connecting to the SOCKS server. ' + str(err)
+ else:
+ if verbose >= 1:
shared.printLock.acquire()
print 'Could NOT connect to', HOST, 'during outgoing attempt.', err
shared.printLock.release()
PORT, timeLastSeen = shared.knownNodes[
self.streamNumber][HOST]
- if (int(time.time()) - timeLastSeen) > 172800 and len(shared.knownNodes[self.streamNumber]) > 1000: # for nodes older than 48 hours old if we have more than 1000 hosts in our list, delete from the shared.knownNodes data-structure.
+ if (int(time.time()) - timeLastSeen) > 172800 and len(shared.knownNodes[self.streamNumber]) > 1000: # for nodes older than 48 hours old if we have more than 1000 hosts in our list, delete from the knownNodes data-structure.
shared.knownNodesLock.acquire()
del shared.knownNodes[self.streamNumber][HOST]
shared.knownNodesLock.release()
shared.printLock.acquire()
- print 'deleting ', HOST, 'from shared.knownNodes because it is more than 48 hours old and we could not connect to it.'
+ print 'deleting ', HOST, 'from knownNodes because it is more than 48 hours old and we could not connect to it.'
shared.printLock.release()
- except socks.Socks5AuthError as err:
- shared.UISignalQueue.put((
- 'updateStatusBar', _translate(
- "MainWindow", "SOCKS5 Authentication problem: %1").arg(str(err))))
- except socks.Socks5Error as err:
- pass
- print 'SOCKS5 error. (It is possible that the server wants authentication).)', str(err)
- except socks.Socks4Error as err:
- print 'Socks4Error:', err
- except socket.error as err:
- if shared.config.get('bitmessagesettings', 'socksproxytype')[0:5] == 'SOCKS':
- print 'Bitmessage MIGHT be having trouble connecting to the SOCKS server. ' + str(err)
- else:
- if verbose >= 1:
- shared.printLock.acquire()
- print 'Could NOT connect to', HOST, 'during outgoing attempt.', err
- shared.printLock.release()
- PORT, timeLastSeen = shared.knownNodes[
- self.streamNumber][HOST]
- if (int(time.time()) - timeLastSeen) > 172800 and len(shared.knownNodes[self.streamNumber]) > 1000: # for nodes older than 48 hours old if we have more than 1000 hosts in our list, delete from the knownNodes data-structure.
- shared.knownNodesLock.acquire()
- del shared.knownNodes[self.streamNumber][HOST]
- shared.knownNodesLock.release()
- shared.printLock.acquire()
- print 'deleting ', HOST, 'from knownNodes because it is more than 48 hours old and we could not connect to it.'
- shared.printLock.release()
- except Exception as err:
- sys.stderr.write(
- 'An exception has occurred in the outgoingSynSender thread that was not caught by other exception types: %s\n' % err)
- time.sleep(0.1)
+ except Exception as err:
+ sys.stderr.write(
+ 'An exception has occurred in the outgoingSynSender thread that was not caught by other exception types: %s\n' % err)
+ time.sleep(0.1)
# Only one singleListener thread will ever exist. It creates the
# receiveDataThread and sendDataThread for each incoming connection. Note
diff --git a/src/about.py b/src/bitmessageqt/about.py
similarity index 100%
rename from src/about.py
rename to src/bitmessageqt/about.py
diff --git a/src/about.ui b/src/bitmessageqt/about.ui
similarity index 100%
rename from src/about.ui
rename to src/bitmessageqt/about.ui
diff --git a/src/bitmessageqt/addpeer.ui b/src/bitmessageqt/addpeer.ui
new file mode 100644
index 00000000..522759a8
--- /dev/null
+++ b/src/bitmessageqt/addpeer.ui
@@ -0,0 +1,118 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 362
+ 136
+
+
+
+ Dialog
+
+
+ -
+
+
+ When you opened this dialog box, you had X peers in your list of peers.
+
+
+
+ -
+
+
+ You can manually add a peer here:
+
+
+
+ -
+
+
+ IP
+
+
+
+ -
+
+
+ Port
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ Add
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 47
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Close
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/bitmessage_icons.qrc b/src/bitmessageqt/bitmessage_icons.qrc
similarity index 100%
rename from src/bitmessage_icons.qrc
rename to src/bitmessageqt/bitmessage_icons.qrc
diff --git a/src/bitmessage_icons_rc.py b/src/bitmessageqt/bitmessage_icons_rc.py
similarity index 100%
rename from src/bitmessage_icons_rc.py
rename to src/bitmessageqt/bitmessage_icons_rc.py
diff --git a/src/bitmessageui.py b/src/bitmessageqt/bitmessageui.py
similarity index 100%
rename from src/bitmessageui.py
rename to src/bitmessageqt/bitmessageui.py
diff --git a/src/bitmessageui.ui b/src/bitmessageqt/bitmessageui.ui
similarity index 100%
rename from src/bitmessageui.ui
rename to src/bitmessageqt/bitmessageui.ui
diff --git a/src/help.py b/src/bitmessageqt/help.py
similarity index 100%
rename from src/help.py
rename to src/bitmessageqt/help.py
diff --git a/src/help.ui b/src/bitmessageqt/help.ui
similarity index 100%
rename from src/help.ui
rename to src/bitmessageqt/help.ui
diff --git a/src/iconglossary.py b/src/bitmessageqt/iconglossary.py
similarity index 100%
rename from src/iconglossary.py
rename to src/bitmessageqt/iconglossary.py
diff --git a/src/iconglossary.ui b/src/bitmessageqt/iconglossary.ui
similarity index 100%
rename from src/iconglossary.ui
rename to src/bitmessageqt/iconglossary.ui
diff --git a/src/newaddressdialog.py b/src/bitmessageqt/newaddressdialog.py
similarity index 100%
rename from src/newaddressdialog.py
rename to src/bitmessageqt/newaddressdialog.py
diff --git a/src/newaddressdialog.ui b/src/bitmessageqt/newaddressdialog.ui
similarity index 100%
rename from src/newaddressdialog.ui
rename to src/bitmessageqt/newaddressdialog.ui
diff --git a/src/newsubscriptiondialog.py b/src/bitmessageqt/newsubscriptiondialog.py
similarity index 100%
rename from src/newsubscriptiondialog.py
rename to src/bitmessageqt/newsubscriptiondialog.py
diff --git a/src/newsubscriptiondialog.ui b/src/bitmessageqt/newsubscriptiondialog.ui
similarity index 100%
rename from src/newsubscriptiondialog.ui
rename to src/bitmessageqt/newsubscriptiondialog.ui
diff --git a/src/regenerateaddresses.py b/src/bitmessageqt/regenerateaddresses.py
similarity index 100%
rename from src/regenerateaddresses.py
rename to src/bitmessageqt/regenerateaddresses.py
diff --git a/src/regenerateaddresses.ui b/src/bitmessageqt/regenerateaddresses.ui
similarity index 100%
rename from src/regenerateaddresses.ui
rename to src/bitmessageqt/regenerateaddresses.ui
diff --git a/src/settings.py b/src/bitmessageqt/settings.py
similarity index 100%
rename from src/settings.py
rename to src/bitmessageqt/settings.py
diff --git a/src/settings.ui b/src/bitmessageqt/settings.ui
similarity index 100%
rename from src/settings.ui
rename to src/bitmessageqt/settings.ui
diff --git a/src/specialaddressbehavior.py b/src/bitmessageqt/specialaddressbehavior.py
similarity index 100%
rename from src/specialaddressbehavior.py
rename to src/bitmessageqt/specialaddressbehavior.py
diff --git a/src/specialaddressbehavior.ui b/src/bitmessageqt/specialaddressbehavior.ui
similarity index 100%
rename from src/specialaddressbehavior.ui
rename to src/bitmessageqt/specialaddressbehavior.ui
diff --git a/src/bitmessageqt/wanlan.ui b/src/bitmessageqt/wanlan.ui
new file mode 100644
index 00000000..156a111f
--- /dev/null
+++ b/src/bitmessageqt/wanlan.ui
@@ -0,0 +1,217 @@
+
+
+ Dialog
+
+
+ true
+
+
+
+ 0
+ 0
+ 338
+ 225
+
+
+
+ Dialog
+
+
+ -
+
+
+ Connect on the Internet with everyone else
+
+
+ true
+
+
+
+ -
+
+
+ Ignore Internet nodes. Only try to connect to these hosts:
+
+
+
+ -
+
+
+ false
+
+
+ example.domain.local:8444
+
+
+
+ -
+
+
+ false
+
+
+ 10.244.30.70:8080
+
+
+
+ -
+
+
+ false
+
+
+ Note that you can still receive incoming connections from anyone unless they are blocked by a firewall.
+
+
+ true
+
+
+
+ -
+
+
+ false
+
+
+ Store network objects for two months rather than two days
+
+
+
+ -
+
+
+ false
+
+
+ Forgo the proof of work
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 227
+ 201
+
+
+ 157
+ 218
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 295
+ 207
+
+
+ 286
+ 218
+
+
+
+
+ radioButton_2
+ toggled(bool)
+ checkBox
+ setEnabled(bool)
+
+
+ 127
+ 40
+
+
+ 93
+ 146
+
+
+
+
+ radioButton_2
+ toggled(bool)
+ checkBox_2
+ setEnabled(bool)
+
+
+ 160
+ 38
+
+
+ 135
+ 169
+
+
+
+
+ radioButton_2
+ toggled(bool)
+ lineEdit
+ setEnabled(bool)
+
+
+ 63
+ 41
+
+
+ 68
+ 74
+
+
+
+
+ radioButton_2
+ toggled(bool)
+ lineEdit_2
+ setEnabled(bool)
+
+
+ 43
+ 38
+
+
+ 50
+ 98
+
+
+
+
+ radioButton_2
+ toggled(bool)
+ label
+ setEnabled(bool)
+
+
+ 161
+ 44
+
+
+ 160
+ 120
+
+
+
+
+