diff --git a/src/bitmessagemain.py b/src/bitmessagemain.py
index 9bb61177..e8d82521 100755
--- a/src/bitmessagemain.py
+++ b/src/bitmessagemain.py
@@ -216,7 +216,7 @@ class singleListener(threading.Thread):
#The following code will, unfortunately, block an incoming connection if someone else on the same LAN is already connected because the two computers will share the same external IP. This is here to prevent connection flooding.
while HOST in shared.connectedHostsList:
shared.printLock.acquire()
- print 'incoming connection is from a host in shared.connectedHostsList (we are already connected to it). Ignoring it.'
+ print 'We are already connected to', HOST+'. Ignoring connection.'
shared.printLock.release()
a.close()
a,(HOST,PORT) = sock.accept()
@@ -1667,10 +1667,7 @@ class receiveDataThread(threading.Thread):
if data[28+lengthOfNumberOfAddresses+(34*i)] == '\x7F':
print 'Ignoring IP address in loopback range:', hostFromAddrMessage
continue
- if data[28+lengthOfNumberOfAddresses+(34*i)] == '\x0A':
- print 'Ignoring IP address in private range:', hostFromAddrMessage
- continue
- if data[28+lengthOfNumberOfAddresses+(34*i):30+lengthOfNumberOfAddresses+(34*i)] == '\xC0A8':
+ if isHostInPrivateIPRange(hostFromAddrMessage):
print 'Ignoring IP address in private range:', hostFromAddrMessage
continue
timeSomeoneElseReceivedMessageFromThisNode, = unpack('>I',data[lengthOfNumberOfAddresses+(34*i):4+lengthOfNumberOfAddresses+(34*i)]) #This is the 'time' value in the received addr message.
@@ -1836,21 +1833,21 @@ class receiveDataThread(threading.Thread):
for i in range(500):
random.seed()
HOST, = random.sample(shared.knownNodes[self.streamNumber], 1)
- if self.isHostInPrivateIPRange(HOST):
+ if isHostInPrivateIPRange(HOST):
continue
addrsInMyStream[HOST] = shared.knownNodes[self.streamNumber][HOST]
if len(shared.knownNodes[self.streamNumber*2]) > 0:
for i in range(250):
random.seed()
HOST, = random.sample(shared.knownNodes[self.streamNumber*2], 1)
- if self.isHostInPrivateIPRange(HOST):
+ if isHostInPrivateIPRange(HOST):
continue
addrsInChildStreamLeft[HOST] = shared.knownNodes[self.streamNumber*2][HOST]
if len(shared.knownNodes[(self.streamNumber*2)+1]) > 0:
for i in range(250):
random.seed()
HOST, = random.sample(shared.knownNodes[(self.streamNumber*2)+1], 1)
- if self.isHostInPrivateIPRange(HOST):
+ if isHostInPrivateIPRange(HOST):
continue
addrsInChildStreamRight[HOST] = shared.knownNodes[(self.streamNumber*2)+1][HOST]
shared.knownNodesLock.release()
@@ -1992,16 +1989,7 @@ class receiveDataThread(threading.Thread):
if self.verackReceived == True:
self.connectionFullyEstablished()
- def isHostInPrivateIPRange(self,host):
- if host[:3] == '10.':
- return True
- if host[:4] == '172.':
- if host[6] == '.':
- if int(host[4:6]) >= 16 and int(host[4:6]) <= 31:
- return True
- if host[:8] == '192.168.':
- return True
- return False
+
#Every connection to a peer has a sendDataThread (and also a receiveDataThread).
class sendDataThread(threading.Thread):
@@ -2294,6 +2282,17 @@ def assembleVersionMessage(remoteHost,remotePort,myStreamNumber):
datatosend = datatosend + hashlib.sha512(payload).digest()[0:4]
return datatosend + payload
+def isHostInPrivateIPRange(host):
+ if host[:3] == '10.':
+ return True
+ if host[:4] == '172.':
+ if host[6] == '.':
+ if int(host[4:6]) >= 16 and int(host[4:6]) <= 31:
+ return True
+ if host[:8] == '192.168.':
+ return True
+ return False
+
#This thread exists because SQLITE3 is so un-threadsafe that we must submit queries to it and it puts results back in a different queue. They won't let us just use locks.
class sqlThread(threading.Thread):
def __init__(self):
diff --git a/src/bitmessageui.py b/src/bitmessageui.py
index a7c85206..ca2d8b0b 100644
--- a/src/bitmessageui.py
+++ b/src/bitmessageui.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'bitmessageui.ui'
#
-# Created: Mon Apr 22 16:34:47 2013
+# Created: Tue May 21 14:09:58 2013
# by: PyQt4 UI code generator 4.9.4
#
# WARNING! All changes made in this file will be lost!
@@ -428,6 +428,30 @@ class Ui_MainWindow(object):
QtCore.QObject.connect(self.radioButtonSpecific, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.labelSendBroadcastWarning.hide)
QtCore.QObject.connect(self.radioButtonBroadcast, QtCore.SIGNAL(_fromUtf8("clicked()")), self.labelSendBroadcastWarning.show)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
+ MainWindow.setTabOrder(self.tabWidget, self.tableWidgetInbox)
+ MainWindow.setTabOrder(self.tableWidgetInbox, self.textEditInboxMessage)
+ MainWindow.setTabOrder(self.textEditInboxMessage, self.radioButtonSpecific)
+ MainWindow.setTabOrder(self.radioButtonSpecific, self.radioButtonBroadcast)
+ MainWindow.setTabOrder(self.radioButtonBroadcast, self.comboBoxSendFrom)
+ MainWindow.setTabOrder(self.comboBoxSendFrom, self.lineEditTo)
+ MainWindow.setTabOrder(self.lineEditTo, self.pushButtonLoadFromAddressBook)
+ MainWindow.setTabOrder(self.pushButtonLoadFromAddressBook, self.lineEditSubject)
+ MainWindow.setTabOrder(self.lineEditSubject, self.textEditMessage)
+ MainWindow.setTabOrder(self.textEditMessage, self.pushButtonSend)
+ MainWindow.setTabOrder(self.pushButtonSend, self.tableWidgetSent)
+ MainWindow.setTabOrder(self.tableWidgetSent, self.textEditSentMessage)
+ MainWindow.setTabOrder(self.textEditSentMessage, self.pushButtonNewAddress)
+ MainWindow.setTabOrder(self.pushButtonNewAddress, self.tableWidgetYourIdentities)
+ MainWindow.setTabOrder(self.tableWidgetYourIdentities, self.pushButtonAddSubscription)
+ MainWindow.setTabOrder(self.pushButtonAddSubscription, self.tableWidgetSubscriptions)
+ MainWindow.setTabOrder(self.tableWidgetSubscriptions, self.pushButtonAddAddressBook)
+ MainWindow.setTabOrder(self.pushButtonAddAddressBook, self.tableWidgetAddressBook)
+ MainWindow.setTabOrder(self.tableWidgetAddressBook, self.radioButtonBlacklist)
+ MainWindow.setTabOrder(self.radioButtonBlacklist, self.radioButtonWhitelist)
+ MainWindow.setTabOrder(self.radioButtonWhitelist, self.pushButtonAddBlacklist)
+ MainWindow.setTabOrder(self.pushButtonAddBlacklist, self.tableWidgetBlacklist)
+ MainWindow.setTabOrder(self.tableWidgetBlacklist, self.tableWidgetConnectionCount)
+ MainWindow.setTabOrder(self.tableWidgetConnectionCount, self.pushButtonStatusIcon)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Bitmessage", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/src/bitmessageui.ui b/src/bitmessageui.ui
index cef8cd69..8487b673 100644
--- a/src/bitmessageui.ui
+++ b/src/bitmessageui.ui
@@ -1003,6 +1003,33 @@ p, li { white-space: pre-wrap; }
+
+ tabWidget
+ tableWidgetInbox
+ textEditInboxMessage
+ radioButtonSpecific
+ radioButtonBroadcast
+ comboBoxSendFrom
+ lineEditTo
+ pushButtonLoadFromAddressBook
+ lineEditSubject
+ textEditMessage
+ pushButtonSend
+ tableWidgetSent
+ textEditSentMessage
+ pushButtonNewAddress
+ tableWidgetYourIdentities
+ pushButtonAddSubscription
+ tableWidgetSubscriptions
+ pushButtonAddAddressBook
+ tableWidgetAddressBook
+ radioButtonBlacklist
+ radioButtonWhitelist
+ pushButtonAddBlacklist
+ tableWidgetBlacklist
+ tableWidgetConnectionCount
+ pushButtonStatusIcon
+
diff --git a/src/images/can-icon-24px-green.png b/src/images/can-icon-24px-green.png
index 5e7e52ec..247bebc7 100644
Binary files a/src/images/can-icon-24px-green.png and b/src/images/can-icon-24px-green.png differ
diff --git a/src/images/can-icon-24px-red.png b/src/images/can-icon-24px-red.png
index 942daa7e..ca32b9ae 100644
Binary files a/src/images/can-icon-24px-red.png and b/src/images/can-icon-24px-red.png differ
diff --git a/src/images/can-icon-24px-yellow.png b/src/images/can-icon-24px-yellow.png
index e7eb0589..6470b000 100644
Binary files a/src/images/can-icon-24px-yellow.png and b/src/images/can-icon-24px-yellow.png differ