diff --git a/src/api.py b/src/api.py index cceff623..6c1191a4 100644 --- a/src/api.py +++ b/src/api.py @@ -37,6 +37,7 @@ from helper_ackPayload import genAckPayload from helper_sql import SqlBulkExecute, sqlExecute, sqlQuery, sqlStoredProcedure from inventory import Inventory from network.threads import StoppableThread +# pylint: disable=unused-variable str_chan = '[chan]' @@ -275,7 +276,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): data = '{"addresses":[' for addressInKeysFile in BMConfigParser().addresses(): - # pylint: disable=unused-variable status, addressVersionNumber, streamNumber, hash01 = decodeAddress( addressInKeysFile) if len(data) > 20: @@ -609,7 +609,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): label = str_chan + ' ' + passphrase except BaseException: label = str_chan + ' ' + repr(passphrase) - # pylint: disable=unused-variable status, addressVersionNumber, streamNumber, toRipe = self._verifyAddress( suppliedAddress) suppliedAddress = addBMIfNotPresent(suppliedAddress) @@ -634,7 +633,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): raise APIError(0, 'I need parameters.') elif len(params) == 1: address, = params - # pylint: disable=unused-variable status, addressVersionNumber, streamNumber, toRipe = \ self._verifyAddress(address) address = addBMIfNotPresent(address) @@ -657,7 +655,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): raise APIError(0, 'I need parameters.') elif len(params) == 1: address, = params - # pylint: disable=unused-variable status, addressVersionNumber, streamNumber, toRipe = \ self._verifyAddress(address) address = addBMIfNotPresent(address) @@ -878,7 +875,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): data = '{"sentMessages":[' for row in queryreturn: msgid, toAddress, fromAddress, subject, lastactiontime, message, \ - encodingtype, status, ackdata = row # pylint: disable=unused-variable + encodingtype, status, ackdata = row subject = shared.fixPotentiallyInvalidUTF8Data(subject) message = shared.fixPotentiallyInvalidUTF8Data(message) if len(data) > 25: @@ -988,7 +985,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): TTL = 28 * 24 * 60 * 60 toAddress = addBMIfNotPresent(toAddress) fromAddress = addBMIfNotPresent(fromAddress) - # pylint: disable=unused-variable status, addressVersionNumber, streamNumber, toRipe = \ self._verifyAddress(toAddress) self._verifyAddress(fromAddress) @@ -1165,7 +1161,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): def ListSubscriptions(self, params): """Handle a request to list susbcriptions""" - # pylint: disable=unused-variable queryreturn = sqlQuery( "SELECT label, address, enabled FROM subscriptions") data = {'subscriptions': []} @@ -1271,7 +1266,6 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): pubkeyReadPosition += 8 else: pubkeyReadPosition += 4 - # pylint: disable=unused-variable addressVersion, addressVersionLength = decodeVarint( payload[pubkeyReadPosition:pubkeyReadPosition + 10]) pubkeyReadPosition += addressVersionLength diff --git a/src/bitmessagecli.py b/src/bitmessagecli.py index 02fed7e9..ff8fb290 100644 --- a/src/bitmessagecli.py +++ b/src/bitmessagecli.py @@ -29,7 +29,8 @@ from bmconfigparser import BMConfigParser api = '' keysName = 'keys.dat' keysPath = 'keys.dat' -usrPrompt = 0 # 0 = First Start, 1 = prompt, 2 = no prompt if the program is starting up +# 0 = First Start, 1 = prompt, 2 = no prompt if the program is starting up +usrPrompt = 0 knownAddresses = dict() @@ -38,7 +39,7 @@ def userInput(message): global usrPrompt - print '\n' + message + print('\n' + message) uInput = raw_input('> ') if uInput.lower() == 'exit': # Returns the user to the main menu @@ -46,7 +47,7 @@ def userInput(message): main() elif uInput.lower() == 'quit': # Quits the program - print '\n Bye\n' + print('\n Bye\n') sys.exit(0) else: @@ -55,9 +56,9 @@ def userInput(message): def restartBmNotify(): """Prompt the user to restart Bitmessage""" - print '\n *******************************************************************' - print ' WARNING: If Bitmessage is running locally, you must restart it now.' - print ' *******************************************************************\n' + print('\n *******************************************************************') + print(' WARNING: If Bitmessage is running locally, you must restart it now.') + print(' *******************************************************************\n') # Begin keys.dat interactions @@ -96,8 +97,8 @@ def configInit(): with open(keysName, 'wb') as configfile: BMConfigParser().write(configfile) - print '\n ' + str(keysName) + ' Initalized in the same directory as daemon.py' - print ' You will now need to configure the ' + str(keysName) + ' file.\n' + print('\n ' + str(keysName) + ' Initalized in the same directory as daemon.py') + print(' You will now need to configure the ' + str(keysName) + ' file.\n') def apiInit(apiEnabled): @@ -114,20 +115,20 @@ def apiInit(apiEnabled): with open(keysPath, 'wb') as configfile: BMConfigParser().write(configfile) - print 'Done' + print('Done') restartBmNotify() return True elif uInput == "n": - print ' \n************************************************************' - print ' Daemon will not work when the API is disabled. ' - print ' Please refer to the Bitmessage Wiki on how to setup the API.' - print ' ************************************************************\n' + print(' \n************************************************************') + print(' Daemon will not work when the API is disabled. ') + print(' Please refer to the Bitmessage Wiki on how to setup the API.') + print(' ************************************************************\n') usrPrompt = 1 main() else: - print '\n Invalid Entry\n' + print('\n Invalid Entry\n') usrPrompt = 1 main() @@ -136,11 +137,11 @@ def apiInit(apiEnabled): return True else: # API information was not present. - print '\n ' + str(keysPath) + ' not properly configured!\n' + print('\n ' + str(keysPath) + ' not properly configured!\n') uInput = userInput("Would you like to do this now, (Y)es or (N)o?").lower() if uInput == "y": # User said yes, initalize the api by writing these values to the keys.dat file - print ' ' + print(' ') apiUsr = userInput("API Username") apiPwd = userInput("API Password") @@ -149,11 +150,11 @@ def apiInit(apiEnabled): daemon = userInput("Daemon mode Enabled? (True) or (False)").lower() if (daemon != 'true' and daemon != 'false'): - print '\n Invalid Entry for Daemon.\n' + print('\n Invalid Entry for Daemon.\n') uInput = 1 main() - print ' -----------------------------------\n' + print(' -----------------------------------\n') # sets the bitmessage port to stop the warning about the api not properly # being setup. This is in the event that the keys.dat is in a different @@ -168,18 +169,18 @@ def apiInit(apiEnabled): with open(keysPath, 'wb') as configfile: BMConfigParser().write(configfile) - print '\n Finished configuring the keys.dat file with API information.\n' + print('\n Finished configuring the keys.dat file with API information.\n') restartBmNotify() return True elif uInput == "n": - print '\n ***********************************************************' - print ' Please refer to the Bitmessage Wiki on how to setup the API.' - print ' ***********************************************************\n' + print('\n ***********************************************************') + print(' Please refer to the Bitmessage Wiki on how to setup the API.') + print(' ***********************************************************\n') usrPrompt = 1 main() else: - print ' \nInvalid entry\n' + print(' \nInvalid entry\n') usrPrompt = 1 main() @@ -206,11 +207,11 @@ def apiData(): BMConfigParser().get('bitmessagesettings', 'port') except: # keys.dat was not there either, something is wrong. - print '\n ******************************************************************' - print ' There was a problem trying to access the Bitmessage keys.dat file' - print ' or keys.dat is not set up correctly' - print ' Make sure that daemon is in the same directory as Bitmessage. ' - print ' ******************************************************************\n' + print('\n ******************************************************************') + print(' There was a problem trying to access the Bitmessage keys.dat file') + print(' or keys.dat is not set up correctly') + print(' Make sure that daemon is in the same directory as Bitmessage. ') + print(' ******************************************************************\n') uInput = userInput("Would you like to create a keys.dat in the local directory, (Y)es or (N)o?").lower() @@ -220,11 +221,11 @@ def apiData(): usrPrompt = 0 main() elif (uInput == "n" or uInput == "no"): - print '\n Trying Again.\n' + print('\n Trying Again.\n') usrPrompt = 0 main() else: - print '\n Invalid Input.\n' + print('\n Invalid Input.\n') usrPrompt = 1 main() @@ -249,7 +250,7 @@ def apiData(): apiUsername = BMConfigParser().get('bitmessagesettings', 'apiusername') apiPassword = BMConfigParser().get('bitmessagesettings', 'apipassword') - print '\n API data successfully imported.\n' + print('\n API data successfully imported.\n') # Build the api credentials return "http://" + apiUsername + ":" + apiPassword + "@" + apiInterface + ":" + str(apiPort) + "/" @@ -281,7 +282,7 @@ def bmSettings(): try: port = BMConfigParser().get('bitmessagesettings', 'port') except: - print '\n File not found.\n' + print('\n File not found.\n') usrPrompt = 0 main() @@ -300,27 +301,27 @@ def bmSettings(): socksusername = BMConfigParser().get('bitmessagesettings', 'socksusername') sockspassword = BMConfigParser().get('bitmessagesettings', 'sockspassword') - print '\n -----------------------------------' - print ' | Current Bitmessage Settings |' - print ' -----------------------------------' - print ' port = ' + port - print ' startonlogon = ' + str(startonlogon) - print ' minimizetotray = ' + str(minimizetotray) - print ' showtraynotifications = ' + str(showtraynotifications) - print ' startintray = ' + str(startintray) - print ' defaultnoncetrialsperbyte = ' + defaultnoncetrialsperbyte - print ' defaultpayloadlengthextrabytes = ' + defaultpayloadlengthextrabytes - print ' daemon = ' + str(daemon) - print '\n ------------------------------------' - print ' | Current Connection Settings |' - print ' -----------------------------------' - print ' socksproxytype = ' + socksproxytype - print ' sockshostname = ' + sockshostname - print ' socksport = ' + socksport - print ' socksauthentication = ' + str(socksauthentication) - print ' socksusername = ' + socksusername - print ' sockspassword = ' + sockspassword - print ' ' + print('\n -----------------------------------') + print(' | Current Bitmessage Settings |') + print(' -----------------------------------') + print(' port = ' + port) + print(' startonlogon = ' + str(startonlogon)) + print(' minimizetotray = ' + str(minimizetotray)) + print(' showtraynotifications = ' + str(showtraynotifications)) + print(' startintray = ' + str(startintray)) + print(' defaultnoncetrialsperbyte = ' + defaultnoncetrialsperbyte) + print(' defaultpayloadlengthextrabytes = ' + defaultpayloadlengthextrabytes) + print(' daemon = ' + str(daemon)) + print('\n ------------------------------------') + print(' | Current Connection Settings |') + print(' -----------------------------------') + print(' socksproxytype = ' + socksproxytype) + print(' sockshostname = ' + sockshostname) + print(' socksport = ' + socksport) + print(' socksauthentication = ' + str(socksauthentication)) + print(' socksusername = ' + socksusername) + print(' sockspassword = ' + sockspassword) + print(' ') uInput = userInput("Would you like to modify any of these settings, (Y)es or (N)o?").lower() @@ -328,74 +329,74 @@ def bmSettings(): while True: # loops if they mistype the setting name, they can exit the loop with 'exit' invalidInput = False uInput = userInput("What setting would you like to modify?").lower() - print ' ' + print(' ') if uInput == "port": - print ' Current port number: ' + port + print(' Current port number: ' + port) uInput = userInput("Enter the new port number.") BMConfigParser().set('bitmessagesettings', 'port', str(uInput)) elif uInput == "startonlogon": - print ' Current status: ' + str(startonlogon) + print(' Current status: ' + str(startonlogon)) uInput = userInput("Enter the new status.") BMConfigParser().set('bitmessagesettings', 'startonlogon', str(uInput)) elif uInput == "minimizetotray": - print ' Current status: ' + str(minimizetotray) + print(' Current status: ' + str(minimizetotray)) uInput = userInput("Enter the new status.") BMConfigParser().set('bitmessagesettings', 'minimizetotray', str(uInput)) elif uInput == "showtraynotifications": - print ' Current status: ' + str(showtraynotifications) + print(' Current status: ' + str(showtraynotifications)) uInput = userInput("Enter the new status.") BMConfigParser().set('bitmessagesettings', 'showtraynotifications', str(uInput)) elif uInput == "startintray": - print ' Current status: ' + str(startintray) + print(' Current status: ' + str(startintray)) uInput = userInput("Enter the new status.") BMConfigParser().set('bitmessagesettings', 'startintray', str(uInput)) elif uInput == "defaultnoncetrialsperbyte": - print ' Current default nonce trials per byte: ' + defaultnoncetrialsperbyte + print(' Current default nonce trials per byte: ' + defaultnoncetrialsperbyte) uInput = userInput("Enter the new defaultnoncetrialsperbyte.") BMConfigParser().set('bitmessagesettings', 'defaultnoncetrialsperbyte', str(uInput)) elif uInput == "defaultpayloadlengthextrabytes": - print ' Current default payload length extra bytes: ' + defaultpayloadlengthextrabytes + print(' Current default payload length extra bytes: ' + defaultpayloadlengthextrabytes) uInput = userInput("Enter the new defaultpayloadlengthextrabytes.") BMConfigParser().set('bitmessagesettings', 'defaultpayloadlengthextrabytes', str(uInput)) elif uInput == "daemon": - print ' Current status: ' + str(daemon) + print(' Current status: ' + str(daemon)) uInput = userInput("Enter the new status.").lower() BMConfigParser().set('bitmessagesettings', 'daemon', str(uInput)) elif uInput == "socksproxytype": - print ' Current socks proxy type: ' + socksproxytype - print "Possibilities: 'none', 'SOCKS4a', 'SOCKS5'." + print(' Current socks proxy type: ' + socksproxytype) + print("Possibilities: 'none', 'SOCKS4a', 'SOCKS5'.") uInput = userInput("Enter the new socksproxytype.") BMConfigParser().set('bitmessagesettings', 'socksproxytype', str(uInput)) elif uInput == "sockshostname": - print ' Current socks host name: ' + sockshostname + print(' Current socks host name: ' + sockshostname) uInput = userInput("Enter the new sockshostname.") BMConfigParser().set('bitmessagesettings', 'sockshostname', str(uInput)) elif uInput == "socksport": - print ' Current socks port number: ' + socksport + print(' Current socks port number: ' + socksport) uInput = userInput("Enter the new socksport.") BMConfigParser().set('bitmessagesettings', 'socksport', str(uInput)) elif uInput == "socksauthentication": - print ' Current status: ' + str(socksauthentication) + print(' Current status: ' + str(socksauthentication)) uInput = userInput("Enter the new status.") BMConfigParser().set('bitmessagesettings', 'socksauthentication', str(uInput)) elif uInput == "socksusername": - print ' Current socks username: ' + socksusername + print(' Current socks username: ' + socksusername) uInput = userInput("Enter the new socksusername.") BMConfigParser().set('bitmessagesettings', 'socksusername', str(uInput)) elif uInput == "sockspassword": - print ' Current socks password: ' + sockspassword + print(' Current socks password: ' + sockspassword) uInput = userInput("Enter the new password.") BMConfigParser().set('bitmessagesettings', 'sockspassword', str(uInput)) else: - print "\n Invalid input. Please try again.\n" + print("\n Invalid input. Please try again.\n") invalidInput = True if invalidInput is not True: # don't prompt if they made a mistake. uInput = userInput("Would you like to change another setting, (Y)es or (N)o?").lower() if uInput != "y": - print '\n Changes Made.\n' + print('\n Changes Made.\n') with open(keysPath, 'wb') as configfile: BMConfigParser().write(configfile) restartBmNotify() @@ -405,7 +406,7 @@ def bmSettings(): usrPrompt = 1 main() else: - print "Invalid input." + print("Invalid input.") usrPrompt = 1 main() @@ -433,10 +434,10 @@ def subscribe(): if address == "c": usrPrompt = 1 - print ' ' + print(' ') main() elif validAddress(address) is False: - print '\n Invalid. "c" to cancel. Please try again.\n' + print('\n Invalid. "c" to cancel. Please try again.\n') else: break @@ -444,7 +445,7 @@ def subscribe(): label = label.encode('base64') api.addSubscription(address, label) - print '\n You are now subscribed to: ' + address + '\n' + print('\n You are now subscribed to: ' + address + '\n') def unsubscribe(): @@ -456,31 +457,31 @@ def unsubscribe(): if address == "c": usrPrompt = 1 - print ' ' + print(' ') main() elif validAddress(address) is False: - print '\n Invalid. "c" to cancel. Please try again.\n' + print('\n Invalid. "c" to cancel. Please try again.\n') else: break userInput("Are you sure, (Y)es or (N)o?").lower() # uInput = api.deleteSubscription(address) - print '\n You are now unsubscribed from: ' + address + '\n' + print('\n You are now unsubscribed from: ' + address + '\n') def listSubscriptions(): """List subscriptions""" global usrPrompt - print '\nLabel, Address, Enabled\n' + print('\nLabel, Address, Enabled\n') try: - print api.listSubscriptions() + print(api.listSubscriptions()) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() - print ' ' + print(' ') def createChan(): @@ -490,9 +491,9 @@ def createChan(): password = userInput("Enter channel name") password = password.encode('base64') try: - print api.createChan(password) + print(api.createChan(password)) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -506,19 +507,19 @@ def joinChan(): if address == "c": usrPrompt = 1 - print ' ' + print(' ') main() elif validAddress(address) is False: - print '\n Invalid. "c" to cancel. Please try again.\n' + print('\n Invalid. "c" to cancel. Please try again.\n') else: break password = userInput("Enter channel name") password = password.encode('base64') try: - print api.joinChan(password, address) + print(api.joinChan(password, address)) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -532,17 +533,17 @@ def leaveChan(): if address == "c": usrPrompt = 1 - print ' ' + print(' ') main() elif validAddress(address) is False: - print '\n Invalid. "c" to cancel. Please try again.\n' + print('\n Invalid. "c" to cancel. Please try again.\n') else: break try: - print api.leaveChan(address) + print(api.leaveChan(address)) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -554,14 +555,14 @@ def listAdd(): jsonAddresses = json.loads(api.listAddresses()) numAddresses = len(jsonAddresses['addresses']) # Number of addresses except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() - # print '\nAddress Number,Label,Address,Stream,Enabled\n' - print '\n --------------------------------------------------------------------------' - print ' | # | Label | Address |S#|Enabled|' - print ' |---|-------------------|-------------------------------------|--|-------|' + # print('\nAddress Number,Label,Address,Stream,Enabled\n') + print('\n --------------------------------------------------------------------------') + print(' | # | Label | Address |S#|Enabled|') + print(' |---|-------------------|-------------------------------------|--|-------|') for addNum in range(0, numAddresses): # processes all of the addresses and lists them out label = (jsonAddresses['addresses'][addNum]['label']).encode( 'utf') # may still misdiplay in some consoles @@ -572,7 +573,7 @@ def listAdd(): if len(label) > 19: label = label[:16] + '...' - print ''.join([ + print(''.join([ ' |', str(addNum).ljust(3), '|', @@ -584,13 +585,13 @@ def listAdd(): '|', enabled.ljust(7), '|', - ]) + ])) - print ''.join([ + print(''.join([ ' ', 74 * '-', '\n', - ]) + ])) def genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe): @@ -603,7 +604,7 @@ def genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe): try: generatedAddress = api.createRandomAddress(addressLabel) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -614,7 +615,7 @@ def genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe): try: generatedAddress = api.createDeterministicAddresses(passphrase, numOfAdd, addVNum, streamNum, ripe) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() return generatedAddress @@ -646,7 +647,7 @@ def saveFile(fileName, fileData): with open(filePath, 'wb+') as path_to_file: path_to_file.write(fileData.decode("base64")) - print '\n Successfully saved ' + filePath + '\n' + print('\n Successfully saved ' + filePath + '\n') def attachment(): @@ -667,26 +668,26 @@ def attachment(): with open(filePath): break except IOError: - print '\n %s was not found on your filesystem or can not be opened.\n' % filePath + print('\n %s was not found on your filesystem or can not be opened.\n' % filePath) - # print filesize, and encoding estimate with confirmation if file is over X size (1mb?) + # print(filesize, and encoding estimate with confirmation if file is over X size (1mb?)) invSize = os.path.getsize(filePath) invSize = (invSize / 1024) # Converts to kilobytes round(invSize, 2) # Rounds to two decimal places if invSize > 500.0: # If over 500KB - print ''.join([ + print(''.join([ '\n WARNING:The file that you are trying to attach is ', invSize, 'KB and will take considerable time to send.\n' - ]) + ])) uInput = userInput('Are you sure you still want to attach it, (Y)es or (N)o?').lower() if uInput != "y": - print '\n Attachment discarded.\n' + print('\n Attachment discarded.\n') return '' elif invSize > 184320.0: # If larger than 180MB, discard. - print '\n Attachment too big, maximum allowed size:180MB\n' + print('\n Attachment too big, maximum allowed size:180MB\n') main() pathLen = len(str(ntpath.basename(filePath))) # Gets the length of the filepath excluding the filename @@ -694,17 +695,17 @@ def attachment(): filetype = imghdr.what(filePath) # Tests if it is an image file if filetype is not None: - print '\n ---------------------------------------------------' - print ' Attachment detected as an Image.' - print ' tags will automatically be included,' - print ' allowing the recipient to view the image' - print ' using the "View HTML code..." option in Bitmessage.' - print ' ---------------------------------------------------\n' + print('\n ---------------------------------------------------') + print(' Attachment detected as an Image.') + print(' tags will automatically be included,') + print(' allowing the recipient to view the image') + print(' using the "View HTML code..." option in Bitmessage.') + print(' ---------------------------------------------------\n') isImage = True time.sleep(2) # Alert the user that the encoding process may take some time. - print '\n Encoding Attachment, Please Wait ...\n' + print('\n Encoding Attachment, Please Wait ...\n') with open(filePath, 'rb') as f: # Begin the actual encoding data = f.read(188743680) # Reads files up to 180MB, the maximum size for Bitmessage. @@ -759,10 +760,10 @@ def sendMsg(toAddress, fromAddress, subject, message): if toAddress == "c": usrPrompt = 1 - print ' ' + print(' ') main() elif validAddress(toAddress) is False: - print '\n Invalid Address. "c" to cancel. Please try again.\n' + print('\n Invalid Address. "c" to cancel. Please try again.\n') else: break @@ -771,14 +772,14 @@ def sendMsg(toAddress, fromAddress, subject, message): jsonAddresses = json.loads(api.listAddresses()) numAddresses = len(jsonAddresses['addresses']) # Number of addresses except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() if numAddresses > 1: # Ask what address to send from if multiple addresses found = False while True: - print ' ' + print(' ') fromAddress = userInput("Enter an Address or Address Label to send from.") if fromAddress == "exit": @@ -795,7 +796,7 @@ def sendMsg(toAddress, fromAddress, subject, message): if found is False: if validAddress(fromAddress) is False: - print '\n Invalid Address. Please try again.\n' + print('\n Invalid Address. Please try again.\n') else: for addNum in range(0, numAddresses): # processes all of the addresses @@ -805,13 +806,13 @@ def sendMsg(toAddress, fromAddress, subject, message): break if found is False: - print '\n The address entered is not one of yours. Please try again.\n' + print('\n The address entered is not one of yours. Please try again.\n') if found: break # Address was found else: # Only one address in address book - print '\n Using the only address in the addressbook to send from.\n' + print('\n Using the only address in the addressbook to send from.\n') fromAddress = jsonAddresses['addresses'][0]['address'] if subject == '': @@ -828,9 +829,9 @@ def sendMsg(toAddress, fromAddress, subject, message): try: ackData = api.sendMessage(toAddress, fromAddress, subject, message) - print '\n Message Status:', api.getStatus(ackData), '\n' + print('\n Message Status:', api.getStatus(ackData), '\n') except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -845,7 +846,7 @@ def sendBrd(fromAddress, subject, message): jsonAddresses = json.loads(api.listAddresses()) numAddresses = len(jsonAddresses['addresses']) # Number of addresses except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -868,7 +869,7 @@ def sendBrd(fromAddress, subject, message): if found is False: if validAddress(fromAddress) is False: - print '\n Invalid Address. Please try again.\n' + print('\n Invalid Address. Please try again.\n') else: for addNum in range(0, numAddresses): # processes all of the addresses @@ -878,13 +879,13 @@ def sendBrd(fromAddress, subject, message): break if found is False: - print '\n The address entered is not one of yours. Please try again.\n' + print('\n The address entered is not one of yours. Please try again.\n') if found: break # Address was found else: # Only one address in address book - print '\n Using the only address in the addressbook to send from.\n' + print('\n Using the only address in the addressbook to send from.\n') fromAddress = jsonAddresses['addresses'][0]['address'] if subject == '': @@ -901,9 +902,9 @@ def sendBrd(fromAddress, subject, message): try: ackData = api.sendBroadcast(fromAddress, subject, message) - print '\n Message Status:', api.getStatus(ackData), '\n' + print('\n Message Status:', api.getStatus(ackData), '\n') except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -916,7 +917,7 @@ def inbox(unreadOnly=False): inboxMessages = json.loads(api.getAllInboxMessages()) numMessages = len(inboxMessages['inboxMessages']) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -926,16 +927,16 @@ def inbox(unreadOnly=False): message = inboxMessages['inboxMessages'][msgNum] # if we are displaying all messages or if this message is unread then display it if not unreadOnly or not message['read']: - print ' -----------------------------------\n' - print ' Message Number:', msgNum # Message Number - print ' To:', getLabelForAddress(message['toAddress']) # Get the to address - print ' From:', getLabelForAddress(message['fromAddress']) # Get the from address - print ' Subject:', message['subject'].decode('base64') # Get the subject - print ''.join([ + print(' -----------------------------------\n') + print(' Message Number:', msgNum) # Message Number + print(' To:', getLabelForAddress(message['toAddress'])) # Get the to address + print(' From:', getLabelForAddress(message['fromAddress'])) # Get the from address + print(' Subject:', message['subject'].decode('base64')) # Get the subject + print(''.join([ ' Received:', datetime.datetime.fromtimestamp( float(message['receivedTime'])).strftime('%Y-%m-%d %H:%M:%S'), - ]) + ])) messagesPrinted += 1 if not message['read']: messagesUnread += 1 @@ -943,9 +944,9 @@ def inbox(unreadOnly=False): if messagesPrinted % 20 == 0 and messagesPrinted != 0: userInput('(Press Enter to continue or type (Exit) to return to the main menu.)').lower() # uInput = - print '\n -----------------------------------' - print ' There are %d unread messages of %d messages in the inbox.' % (messagesUnread, numMessages) - print ' -----------------------------------\n' + print('\n -----------------------------------') + print(' There are %d unread messages of %d messages in the inbox.' % (messagesUnread, numMessages)) + print(' -----------------------------------\n') def outbox(): @@ -956,32 +957,32 @@ def outbox(): outboxMessages = json.loads(api.getAllSentMessages()) numMessages = len(outboxMessages['sentMessages']) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() for msgNum in range(0, numMessages): # processes all of the messages in the outbox - print '\n -----------------------------------\n' - print ' Message Number:', msgNum # Message Number - # print ' Message ID:', outboxMessages['sentMessages'][msgNum]['msgid'] - print ' To:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['toAddress']) # Get the to address + print('\n -----------------------------------\n') + print(' Message Number:', msgNum) # Message Number + # print(' Message ID:', outboxMessages['sentMessages'][msgNum]['msgid']) + # Get the to address + print(' To:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['toAddress'])) # Get the from address - print ' From:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['fromAddress']) - print ' Subject:', outboxMessages['sentMessages'][msgNum]['subject'].decode('base64') # Get the subject - print ' Status:', outboxMessages['sentMessages'][msgNum]['status'] # Get the subject - - print ''.join([ + print(' From:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['fromAddress'])) + print(' Subject:', outboxMessages['sentMessages'][msgNum]['subject'].decode('base64')) # Get the subject + print(' Status:', outboxMessages['sentMessages'][msgNum]['status']) # Get the subject + print(''.join([ ' Last Action Time:', datetime.datetime.fromtimestamp( float(outboxMessages['sentMessages'][msgNum]['lastActionTime'])).strftime('%Y-%m-%d %H:%M:%S'), - ]) + ])) if msgNum % 20 == 0 and msgNum != 0: userInput('(Press Enter to continue or type (Exit) to return to the main menu.)').lower() # uInput = - print '\n -----------------------------------' - print ' There are ', numMessages, ' messages in the outbox.' - print ' -----------------------------------\n' + print('\n -----------------------------------') + print(' There are ', numMessages, ' messages in the outbox.') + print(' -----------------------------------\n') def readSentMsg(msgNum): @@ -992,14 +993,14 @@ def readSentMsg(msgNum): outboxMessages = json.loads(api.getAllSentMessages()) numMessages = len(outboxMessages['sentMessages']) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() - print ' ' + print(' ') if msgNum >= numMessages: - print '\n Invalid Message Number.\n' + print('\n Invalid Message Number.\n') main() # Begin attachment detection @@ -1035,19 +1036,19 @@ def readSentMsg(msgNum): # End attachment Detection - print '\n To:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['toAddress']) # Get the to address + print('\n To:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['toAddress'])) # Get the to address # Get the from address - print ' From:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['fromAddress']) - print ' Subject:', outboxMessages['sentMessages'][msgNum]['subject'].decode('base64') # Get the subject - print ' Status:', outboxMessages['sentMessages'][msgNum]['status'] # Get the subject - print ''.join([ + print(' From:', getLabelForAddress(outboxMessages['sentMessages'][msgNum]['fromAddress'])) + print(' Subject:', outboxMessages['sentMessages'][msgNum]['subject'].decode('base64')) # Get the subject + print(' Status:', outboxMessages['sentMessages'][msgNum]['status']) # Get the subject + print(''.join([ ' Last Action Time:', datetime.datetime.fromtimestamp( float(outboxMessages['sentMessages'][msgNum]['lastActionTime'])).strftime('%Y-%m-%d %H:%M:%S'), - ]) - print ' Message:\n' - print message # inboxMessages['inboxMessages'][msgNum]['message'].decode('base64') - print ' ' + ])) + print(' Message:\n') + print(message) # inboxMessages['inboxMessages'][msgNum]['message'].decode('base64') + print(' ') def readMsg(msgNum): @@ -1057,12 +1058,12 @@ def readMsg(msgNum): inboxMessages = json.loads(api.getAllInboxMessages()) numMessages = len(inboxMessages['inboxMessages']) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() if msgNum >= numMessages: - print '\n Invalid Message Number.\n' + print('\n Invalid Message Number.\n') main() # Begin attachment detection @@ -1097,17 +1098,17 @@ def readMsg(msgNum): break # End attachment Detection - print '\n To:', getLabelForAddress(inboxMessages['inboxMessages'][msgNum]['toAddress']) # Get the to address + print('\n To:', getLabelForAddress(inboxMessages['inboxMessages'][msgNum]['toAddress'])) # Get the to address # Get the from address - print ' From:', getLabelForAddress(inboxMessages['inboxMessages'][msgNum]['fromAddress']) - print ' Subject:', inboxMessages['inboxMessages'][msgNum]['subject'].decode('base64') # Get the subject - print ''.join([ + print(' From:', getLabelForAddress(inboxMessages['inboxMessages'][msgNum]['fromAddress'])) + print(' Subject:', inboxMessages['inboxMessages'][msgNum]['subject'].decode('base64')) # Get the subject + print(''.join([ ' Received:', datetime.datetime.fromtimestamp( float(inboxMessages['inboxMessages'][msgNum]['receivedTime'])).strftime('%Y-%m-%d %H:%M:%S'), - ]) - print ' Message:\n' - print message # inboxMessages['inboxMessages'][msgNum]['message'].decode('base64') - print ' ' + ])) + print(' Message:\n') + print(message) # inboxMessages['inboxMessages'][msgNum]['message'].decode('base64') + print(' ') return inboxMessages['inboxMessages'][msgNum]['msgid'] @@ -1119,7 +1120,7 @@ def replyMsg(msgNum, forwardORreply): try: inboxMessages = json.loads(api.getAllInboxMessages()) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1141,14 +1142,14 @@ def replyMsg(msgNum, forwardORreply): if toAdd == "c": usrPrompt = 1 - print ' ' + print(' ') main() elif validAddress(toAdd) is False: - print '\n Invalid Address. "c" to cancel. Please try again.\n' + print('\n Invalid Address. "c" to cancel. Please try again.\n') else: break else: - print '\n Invalid Selection. Reply or Forward only' + print('\n Invalid Selection. Reply or Forward only') usrPrompt = 0 main() @@ -1180,7 +1181,7 @@ def delMsg(msgNum): msgAck = api.trashMessage(msgId) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1197,7 +1198,7 @@ def delSentMsg(msgNum): msgId = outboxMessages['sentMessages'][int(msgNum)]['msgid'] msgAck = api.trashSentMessage(msgId) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1233,7 +1234,7 @@ def buildKnownAddresses(): if entry['address'] not in knownAddresses: knownAddresses[entry['address']] = "%s (%s)" % (entry['label'].decode('base64'), entry['address']) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1248,7 +1249,7 @@ def buildKnownAddresses(): if entry['address'] not in knownAddresses: knownAddresses[entry['address']] = "%s (%s)" % (entry['label'].decode('base64'), entry['address']) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1263,21 +1264,20 @@ def listAddressBookEntries(): if "API Error" in response: return getAPIErrorCode(response) addressBook = json.loads(response) - print - print ' --------------------------------------------------------------' - print ' | Label | Address |' - print ' |--------------------|---------------------------------------|' + print() + print(' --------------------------------------------------------------') + print(' | Label | Address |') + print(' |--------------------|---------------------------------------|') for entry in addressBook['addresses']: label = entry['label'].decode('base64') address = entry['address'] if len(label) > 19: label = label[:16] + '...' - print ' | ' + label.ljust(19) + '| ' + address.ljust(37) + ' |' - print ' --------------------------------------------------------------' - print - + print(' | ' + label.ljust(19) + '| ' + address.ljust(37) + ' |') + print(' --------------------------------------------------------------') + print() except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1292,7 +1292,7 @@ def addAddressToAddressBook(address, label): if "API Error" in response: return getAPIErrorCode(response) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1307,7 +1307,7 @@ def deleteAddressFromAddressBook(address): if "API Error" in response: return getAPIErrorCode(response) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1331,7 +1331,7 @@ def markMessageRead(messageID): if "API Error" in response: return getAPIErrorCode(response) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1346,7 +1346,7 @@ def markMessageUnread(messageID): if "API Error" in response: return getAPIErrorCode(response) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() @@ -1359,7 +1359,7 @@ def markAllMessagesRead(): try: inboxMessages = json.loads(api.getAllInboxMessages())['inboxMessages'] except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() for message in inboxMessages: @@ -1375,7 +1375,7 @@ def markAllMessagesUnread(): try: inboxMessages = json.loads(api.getAllInboxMessages())['inboxMessages'] except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() for message in inboxMessages: @@ -1391,15 +1391,15 @@ def clientStatus(): try: client_status = json.loads(api.clientStatus()) except: - print '\n Connection Error\n' + print('\n Connection Error\n') usrPrompt = 0 main() - print "\nnetworkStatus: " + client_status['networkStatus'] + "\n" - print "\nnetworkConnections: " + str(client_status['networkConnections']) + "\n" - print "\nnumberOfPubkeysProcessed: " + str(client_status['numberOfPubkeysProcessed']) + "\n" - print "\nnumberOfMessagesProcessed: " + str(client_status['numberOfMessagesProcessed']) + "\n" - print "\nnumberOfBroadcastsProcessed: " + str(client_status['numberOfBroadcastsProcessed']) + "\n" + print("\nnetworkStatus: " + client_status['networkStatus'] + "\n") + print("\nnetworkConnections: " + str(client_status['networkConnections']) + "\n") + print("\nnumberOfPubkeysProcessed: " + str(client_status['numberOfPubkeysProcessed']) + "\n") + print("\nnumberOfMessagesProcessed: " + str(client_status['numberOfMessagesProcessed']) + "\n") + print("\nnumberOfBroadcastsProcessed: " + str(client_status['numberOfBroadcastsProcessed']) + "\n") def shutdown(): @@ -1409,7 +1409,7 @@ def shutdown(): api.shutdown() except socket.error: pass - print "\nShutdown command relayed\n" + print("\nShutdown command relayed\n") def UI(usrInput): @@ -1418,75 +1418,75 @@ def UI(usrInput): global usrPrompt if usrInput == "help" or usrInput == "h" or usrInput == "?": - print ' ' - print ' -------------------------------------------------------------------------' - print ' | https://github.com/Dokument/PyBitmessage-Daemon |' - print ' |-----------------------------------------------------------------------|' - print ' | Command | Description |' - print ' |------------------------|----------------------------------------------|' - print ' | help | This help file. |' - print ' | apiTest | Tests the API |' - print ' | addInfo | Returns address information (If valid) |' - print ' | bmSettings | BitMessage settings |' - print ' | exit | Use anytime to return to main menu |' - print ' | quit | Quits the program |' - print ' |------------------------|----------------------------------------------|' - print ' | listAddresses | Lists all of the users addresses |' - print ' | generateAddress | Generates a new address |' - print ' | getAddress | Get determinist address from passphrase |' - print ' |------------------------|----------------------------------------------|' - print ' | listAddressBookEntries | Lists entries from the Address Book |' - print ' | addAddressBookEntry | Add address to the Address Book |' - print ' | deleteAddressBookEntry | Deletes address from the Address Book |' - print ' |------------------------|----------------------------------------------|' - print ' | subscribe | Subscribes to an address |' - print ' | unsubscribe | Unsubscribes from an address |' - print ' |------------------------|----------------------------------------------|' - print ' | create | Creates a channel |' - print ' | join | Joins a channel |' - print ' | leave | Leaves a channel |' - print ' |------------------------|----------------------------------------------|' - print ' | inbox | Lists the message information for the inbox |' - print ' | outbox | Lists the message information for the outbox |' - print ' | send | Send a new message or broadcast |' - print ' | unread | Lists all unread inbox messages |' - print ' | read | Reads a message from the inbox or outbox |' - print ' | save | Saves message to text file |' - print ' | delete | Deletes a message or all messages |' - print ' -------------------------------------------------------------------------' - print ' ' + print(' ') + print(' -------------------------------------------------------------------------') + print(' | https://github.com/Dokument/PyBitmessage-Daemon |') + print(' |-----------------------------------------------------------------------|') + print(' | Command | Description |') + print(' |------------------------|----------------------------------------------|') + print(' | help | This help file. |') + print(' | apiTest | Tests the API |') + print(' | addInfo | Returns address information (If valid) |') + print(' | bmSettings | BitMessage settings |') + print(' | exit | Use anytime to return to main menu |') + print(' | quit | Quits the program |') + print(' |------------------------|----------------------------------------------|') + print(' | listAddresses | Lists all of the users addresses |') + print(' | generateAddress | Generates a new address |') + print(' | getAddress | Get determinist address from passphrase |') + print(' |------------------------|----------------------------------------------|') + print(' | listAddressBookEntries | Lists entries from the Address Book |') + print(' | addAddressBookEntry | Add address to the Address Book |') + print(' | deleteAddressBookEntry | Deletes address from the Address Book |') + print(' |------------------------|----------------------------------------------|') + print(' | subscribe | Subscribes to an address |') + print(' | unsubscribe | Unsubscribes from an address |') + print(' |------------------------|----------------------------------------------|') + print(' | create | Creates a channel |') + print(' | join | Joins a channel |') + print(' | leave | Leaves a channel |') + print(' |------------------------|----------------------------------------------|') + print(' | inbox | Lists the message information for the inbox |') + print(' | outbox | Lists the message information for the outbox |') + print(' | send | Send a new message or broadcast |') + print(' | unread | Lists all unread inbox messages |') + print(' | read | Reads a message from the inbox or outbox |') + print(' | save | Saves message to text file |') + print(' | delete | Deletes a message or all messages |') + print(' -------------------------------------------------------------------------') + print(' ') main() elif usrInput == "apitest": # tests the API Connection. if apiTest(): - print '\n API connection test has: PASSED\n' + print('\n API connection test has: PASSED\n') else: - print '\n API connection test has: FAILED\n' + print('\n API connection test has: FAILED\n') main() elif usrInput == "addinfo": tmp_address = userInput('\nEnter the Bitmessage Address.') address_information = json.loads(api.decodeAddress(tmp_address)) - print '\n------------------------------' + print('\n------------------------------') if 'success' in str(address_information['status']).lower(): - print ' Valid Address' - print ' Address Version: %s' % str(address_information['addressVersion']) - print ' Stream Number: %s' % str(address_information['streamNumber']) + print(' Valid Address') + print(' Address Version: %s' % str(address_information['addressVersion'])) + print(' Stream Number: %s' % str(address_information['streamNumber'])) else: - print ' Invalid Address !' + print(' Invalid Address !') - print '------------------------------\n' + print('------------------------------\n') main() elif usrInput == "bmsettings": # tests the API Connection. bmSettings() - print ' ' + print(' ') main() elif usrInput == "quit": # Quits the application - print '\n Bye\n' + print('\n Bye\n') sys.exit(0) elif usrInput == "listaddresses": # Lists all of the identities in the addressbook @@ -1508,17 +1508,17 @@ def UI(usrInput): if isRipe == "y": ripe = True - print genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe) + print(genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe)) main() elif isRipe == "n": ripe = False - print genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe) + print(genAdd(lbl, deterministic, passphrase, numOfAdd, addVNum, streamNum, ripe)) main() elif isRipe == "exit": usrPrompt = 1 main() else: - print '\n Invalid input\n' + print('\n Invalid input\n') main() elif uInput == "r" or uInput == "random": # Creates a random address with user-defined label @@ -1526,18 +1526,18 @@ def UI(usrInput): null = '' lbl = userInput('Enter the label for the new address.') - print genAdd(lbl, deterministic, null, null, null, null, null) + print(genAdd(lbl, deterministic, null, null, null, null, null)) main() else: - print '\n Invalid input\n' + print('\n Invalid input\n') main() elif usrInput == "getaddress": # Gets the address for/from a passphrase phrase = userInput("Enter the address passphrase.") - print '\n Working...\n' + print('\n Working...\n') address = getAddress(phrase, 4, 1) # ,vNumber,sNumber) - print '\n Address: ' + address + '\n' + print('\n Address: ' + address + '\n') usrPrompt = 1 main() @@ -1572,17 +1572,17 @@ def UI(usrInput): main() elif usrInput == "inbox": - print '\n Loading...\n' + print('\n Loading...\n') inbox() main() elif usrInput == "unread": - print '\n Loading...\n' + print('\n Loading...\n') inbox(True) main() elif usrInput == "outbox": - print '\n Loading...\n' + print('\n Loading...\n') outbox() main() @@ -1603,14 +1603,14 @@ def UI(usrInput): uInput = userInput("Would you like to read a message from the (I)nbox or (O)utbox?").lower() if (uInput != 'i' and uInput != 'inbox' and uInput != 'o' and uInput != 'outbox'): - print '\n Invalid Input.\n' + print('\n Invalid Input.\n') usrPrompt = 1 main() msgNum = int(userInput("What is the number of the message you wish to open?")) if (uInput == 'i' or uInput == 'inbox'): - print '\n Loading...\n' + print('\n Loading...\n') messageID = readMsg(msgNum) uInput = userInput("\nWould you like to keep this message unread, (Y)es or (N)o?").lower() @@ -1622,14 +1622,14 @@ def UI(usrInput): uInput = userInput("\nWould you like to (D)elete, (F)orward, (R)eply to, or (Exit) this message?").lower() if uInput in ['r', 'reply']: - print '\n Loading...\n' - print ' ' + print('\n Loading...\n') + print(' ') replyMsg(msgNum, 'reply') usrPrompt = 1 elif uInput == 'f' or uInput == 'forward': - print '\n Loading...\n' - print ' ' + print('\n Loading...\n') + print(' ') replyMsg(msgNum, 'forward') usrPrompt = 1 @@ -1638,12 +1638,12 @@ def UI(usrInput): if uInput == "y": delMsg(msgNum) - print '\n Message Deleted.\n' + print('\n Message Deleted.\n') usrPrompt = 1 else: usrPrompt = 1 else: - print '\n Invalid entry\n' + print('\n Invalid entry\n') usrPrompt = 1 elif (uInput == 'o' or uInput == 'outbox'): @@ -1657,12 +1657,12 @@ def UI(usrInput): if uInput == "y": delSentMsg(msgNum) - print '\n Message Deleted.\n' + print('\n Message Deleted.\n') usrPrompt = 1 else: usrPrompt = 1 else: - print '\n Invalid Entry\n' + print('\n Invalid Entry\n') usrPrompt = 1 main() @@ -1672,7 +1672,7 @@ def UI(usrInput): uInput = userInput("Would you like to save a message from the (I)nbox or (O)utbox?").lower() if uInput not in ['i', 'inbox', 'o', 'outbox']: - print '\n Invalid Input.\n' + print('\n Invalid Input.\n') usrPrompt = 1 main() @@ -1684,7 +1684,7 @@ def UI(usrInput): msgNum = int(userInput("What is the number of the message you wish to save?")) if msgNum >= numMessages: - print '\n Invalid Message Number.\n' + print('\n Invalid Message Number.\n') else: break @@ -1700,7 +1700,7 @@ def UI(usrInput): msgNum = int(userInput("What is the number of the message you wish to save?")) if msgNum >= numMessages: - print '\n Invalid Message Number.\n' + print('\n Invalid Message Number.\n') else: break @@ -1729,7 +1729,7 @@ def UI(usrInput): if msgNum == 'a' or msgNum == 'all': break elif int(msgNum) >= numMessages: - print '\n Invalid Message Number.\n' + print('\n Invalid Message Number.\n') else: break @@ -1737,17 +1737,17 @@ def UI(usrInput): if uInput == "y": if msgNum in ['a', 'all']: - print ' ' + print(' ') for msgNum in range(0, numMessages): # processes all of the messages in the inbox - print ' Deleting message ', msgNum + 1, ' of ', numMessages + print(' Deleting message ', msgNum + 1, ' of ', numMessages) delMsg(0) - print '\n Inbox is empty.' + print('\n Inbox is empty.') usrPrompt = 1 else: delMsg(int(msgNum)) - print '\n Notice: Message numbers may have changed.\n' + print('\n Notice: Message numbers may have changed.\n') main() else: usrPrompt = 1 @@ -1763,7 +1763,7 @@ def UI(usrInput): if msgNum in ['a', 'all']: break elif int(msgNum) >= numMessages: - print '\n Invalid Message Number.\n' + print('\n Invalid Message Number.\n') else: break @@ -1771,33 +1771,33 @@ def UI(usrInput): if uInput == "y": if msgNum in ['a', 'all']: - print ' ' + print(' ') for msgNum in range(0, numMessages): # processes all of the messages in the outbox - print ' Deleting message ', msgNum + 1, ' of ', numMessages + print(' Deleting message ', msgNum + 1, ' of ', numMessages) delSentMsg(0) - print '\n Outbox is empty.' + print('\n Outbox is empty.') usrPrompt = 1 else: delSentMsg(int(msgNum)) - print '\n Notice: Message numbers may have changed.\n' + print('\n Notice: Message numbers may have changed.\n') main() else: usrPrompt = 1 else: - print '\n Invalid Entry.\n' + print('\n Invalid Entry.\n') usrPrompt = 1 main() elif usrInput == "exit": - print '\n You are already at the main menu. Use "quit" to quit.\n' + print('\n You are already at the main menu. Use "quit" to quit.\n') usrPrompt = 1 main() elif usrInput == "listaddressbookentries": res = listAddressBookEntries() if res == 20: - print '\n Error: API function not supported.\n' + print('\n Error: API function not supported.\n') usrPrompt = 1 main() @@ -1806,9 +1806,9 @@ def UI(usrInput): label = userInput('Enter label') res = addAddressToAddressBook(address, label) if res == 16: - print '\n Error: Address already exists in Address Book.\n' + print('\n Error: Address already exists in Address Book.\n') if res == 20: - print '\n Error: API function not supported.\n' + print('\n Error: API function not supported.\n') usrPrompt = 1 main() @@ -1816,7 +1816,7 @@ def UI(usrInput): address = userInput('Enter address') res = deleteAddressFromAddressBook(address) if res == 20: - print '\n Error: API function not supported.\n' + print('\n Error: API function not supported.\n') usrPrompt = 1 main() @@ -1841,7 +1841,7 @@ def UI(usrInput): main() else: - print '\n "', usrInput, '" is not a command.\n' + print('\n "', usrInput, '" is not a command.\n') usrPrompt = 1 main() @@ -1853,24 +1853,24 @@ def main(): global usrPrompt if usrPrompt == 0: - print '\n ------------------------------' - print ' | Bitmessage Daemon by .dok |' - print ' | Version 0.3.1 for BM 0.6.2 |' - print ' ------------------------------' + print('\n ------------------------------') + print(' | Bitmessage Daemon by .dok |') + print(' | Version 0.3.1 for BM 0.6.2 |') + print(' ------------------------------') api = xmlrpclib.ServerProxy(apiData()) # Connect to BitMessage using these api credentials if apiTest() is False: - print '\n ****************************************************************' - print ' WARNING: You are not connected to the Bitmessage client.' - print ' Either Bitmessage is not running or your settings are incorrect.' - print ' Use the command "apiTest" or "bmSettings" to resolve this issue.' - print ' ****************************************************************\n' + print('\n ****************************************************************') + print(' WARNING: You are not connected to the Bitmessage client.') + print(' Either Bitmessage is not running or your settings are incorrect.') + print(' Use the command "apiTest" or "bmSettings" to resolve this issue.') + print(' ****************************************************************\n') - print 'Type (H)elp for a list of commands.' # Startup message + print('Type (H)elp for a list of commands.') # Startup message usrPrompt = 2 elif usrPrompt == 1: - print '\nType (H)elp for a list of commands.' # Startup message + print('\nType (H)elp for a list of commands.') # Startup message usrPrompt = 2 try: diff --git a/src/class_objectProcessor.py b/src/class_objectProcessor.py index 298b12bf..19f4861c 100644 --- a/src/class_objectProcessor.py +++ b/src/class_objectProcessor.py @@ -34,7 +34,8 @@ import tr from fallback import RIPEMD160Hash import l10n -# pylint: disable=too-many-locals, too-many-return-statements, too-many-branches, too-many-statements +# pylint: disable=too-many-locals, too-many-return-statements +# pylint: disable=too-many-branches, too-many-statements logger = logging.getLogger('default') @@ -644,7 +645,8 @@ class objectProcessor(threading.Thread): if decodeAddress(toAddress)[1] >= 3 \ and not BMConfigParser().safeGetBoolean(toAddress, 'chan'): # If I'm not friendly with this person: - if not shared.isAddressInMyAddressBookSubscriptionsListOrWhitelist(fromAddress): + if not shared.isAddressInMyAddressBookSubscriptionsListOrWhitelist( + fromAddress): requiredNonceTrialsPerByte = BMConfigParser().getint( toAddress, 'noncetrialsperbyte') requiredPayloadLengthExtraBytes = BMConfigParser().getint( diff --git a/src/class_smtpServer.py b/src/class_smtpServer.py index cdf867a9..013420cd 100644 --- a/src/class_smtpServer.py +++ b/src/class_smtpServer.py @@ -114,8 +114,9 @@ class smtpServerPyBitmessage(smtpd.SMTPServer): return ret - def process_message(self, peer, mailfrom, rcpttos, data): # pylint: disable=too-many-locals, too-many-branches + def process_message(self, peer, mailfrom, rcpttos, data): """Process an email""" + # pylint: disable=too-many-locals, too-many-branches # print 'Receiving message from:', peer p = re.compile(".*<([^>]+)>") if not hasattr(self.channel, "auth") or not self.channel.auth: diff --git a/src/depends.py b/src/depends.py index 8182fca3..ead33cae 100755 --- a/src/depends.py +++ b/src/depends.py @@ -231,12 +231,13 @@ def check_sqlite(): conn.close() -def check_openssl(): # pylint: disable=too-many-branches, too-many-return-statements +def check_openssl(): """Do openssl dependency check. Here we are checking for openssl with its all dependent libraries and version checking. """ + # pylint: disable=too-many-branches, too-many-return-statements # pylint: disable=protected-access, redefined-outer-name ctypes = try_import('ctypes') if not ctypes: @@ -365,6 +366,7 @@ def check_pyqt(): Here we are checking for PyQt4 with its version, as for it require PyQt 4.8 or later. """ + QtCore = try_import( 'PyQt4.QtCore', 'PyBitmessage requires PyQt 4.8 or later and Qt 4.7 or later.') diff --git a/src/helper_ackPayload.py b/src/helper_ackPayload.py index dcce3153..2f89d540 100644 --- a/src/helper_ackPayload.py +++ b/src/helper_ackPayload.py @@ -22,7 +22,7 @@ def genAckPayload(streamNumber=1, stealthLevel=0): - level 1: a getpubkey request for a (random) dummy key hash - level 2: a standard message, encrypted to a random pubkey """ - if stealthLevel == 2: # Generate privacy-enhanced payload + if stealthLevel == 2: # Generate privacy-enhanced payload # Generate a dummy privkey and derive the pubkey dummyPubKeyHex = highlevelcrypto.privToPub( hexlify(helper_random.randomBytes(32))) @@ -35,12 +35,12 @@ def genAckPayload(streamNumber=1, stealthLevel=0): acktype = 2 # message version = 1 - elif stealthLevel == 1: # Basic privacy payload (random getpubkey) + elif stealthLevel == 1: # Basic privacy payload (random getpubkey) ackdata = helper_random.randomBytes(32) acktype = 0 # getpubkey version = 4 - else: # Minimum viable payload (non stealth) + else: # Minimum viable payload (non stealth) ackdata = helper_random.randomBytes(32) acktype = 2 # message version = 1 diff --git a/src/helper_bitcoin.py b/src/helper_bitcoin.py index 695bdbcf..d4f1d105 100644 --- a/src/helper_bitcoin.py +++ b/src/helper_bitcoin.py @@ -53,3 +53,4 @@ def calculateTestnetAddressFromPubkey(pubkey): numberOfZeroBytesOnBinaryBitcoinAddress += 1 binaryBitcoinAddress = binaryBitcoinAddress[1:] base58encoded = arithmetic.changebase(binaryBitcoinAddress, 256, 58) + return "1" * numberOfZeroBytesOnBinaryBitcoinAddress + base58encoded diff --git a/src/helper_search.py b/src/helper_search.py index 69acec43..2384ff01 100644 --- a/src/helper_search.py +++ b/src/helper_search.py @@ -7,6 +7,7 @@ try: haveQt = True except ImportError: haveQt = False +# pylint: disable=too-many-arguments def search_translate(context, text): @@ -18,7 +19,7 @@ def search_translate(context, text): def search_sql(xAddress="toaddress", account=None, folder="inbox", where=None, what=None, unreadOnly=False): """Perform a search in mailbox tables""" - # pylint: disable=too-many-arguments, too-many-branches + # pylint: disable=too-many-branches if what is not None and what != "": what = "%" + what + "%" if where == search_translate("MainWindow", "To"): @@ -75,7 +76,6 @@ def search_sql(xAddress="toaddress", account=None, folder="inbox", where=None, w def check_match(toAddress, fromAddress, subject, message, where=None, what=None): """Check if a single message matches a filter (used when new messages are added to messagelists)""" - # pylint: disable=too-many-arguments if what is not None and what != "": if where in (search_translate("MainWindow", "To"), search_translate("MainWindow", "All")): if what.lower() not in toAddress.lower(): diff --git a/src/helper_sent.py b/src/helper_sent.py index 5a345fe7..47fc5bb4 100644 --- a/src/helper_sent.py +++ b/src/helper_sent.py @@ -1,8 +1,8 @@ """ Insert values into sent table """ +from helper_sql import sqlExecute -from helper_sql import * def insert(t): """Perform an insert into the `sent` table""" diff --git a/src/helper_sql.py b/src/helper_sql.py index a13747e2..f848ee24 100644 --- a/src/helper_sql.py +++ b/src/helper_sql.py @@ -101,7 +101,7 @@ def sqlStoredProcedure(procName): sqlLock.release() -class SqlBulkExecute(object): +class SqlBulkExecute(object): # pylint: disable=no-init """This is used when you have to execute the same statement in a cycle.""" def __enter__(self): diff --git a/src/helper_startup.py b/src/helper_startup.py index 8434f8ff..bc0ede92 100644 --- a/src/helper_startup.py +++ b/src/helper_startup.py @@ -4,7 +4,6 @@ Startup operations. # pylint: disable=too-many-branches,too-many-statements from __future__ import print_function -import configparser import os import platform import sys @@ -21,6 +20,7 @@ from bmconfigparser import BMConfigParser # the config files to stay in the application data folder. StoreConfigFilesInSameDirectoryAsProgramByDefault = False + def loadConfig(): """Load the config""" config = BMConfigParser() @@ -116,7 +116,6 @@ def loadConfig(): updateConfig() - def updateConfig(): """Save the config""" config = BMConfigParser() diff --git a/src/inventory.py b/src/inventory.py index 4b9ad226..fc06e455 100644 --- a/src/inventory.py +++ b/src/inventory.py @@ -1,8 +1,8 @@ """The Inventory singleton""" # TODO make this dynamic, and watch out for frozen, like with messagetypes -import storage.sqlite import storage.filesystem +import storage.sqlite from bmconfigparser import BMConfigParser from singleton import Singleton diff --git a/src/l10n.py b/src/l10n.py index a3237cb0..bf727244 100644 --- a/src/l10n.py +++ b/src/l10n.py @@ -64,25 +64,25 @@ else: # comprehensive decoding tests if time_format != DEFAULT_TIME_FORMAT: try: - #Check day names + # Check day names new_time_format = time_format import sys if sys.version_info >= (3, 0, 0) and time_format == '%%c': time_format = '%c' for i in range(7): - #this work for python2.7 + # this work for python2.7 # unicode(time.strftime(time_format, (0, 0, 0, 0, 0, 0, i, 0, 0)), encoding) - #this code for the python3 + # this code for the python3 (time.strftime(time_format, (0, 0, 0, 0, 0, 0, i, 0, 0))).encode() - #Check month names + # Check month names for i in range(1, 13): # unicode(time.strftime(time_format, (0, i, 0, 0, 0, 0, 0, 0, 0)), encoding) (time.strftime(time_format, (0, i, 0, 0, 0, 0, 0, 0, 0))).encode() - #Check AM/PM + # Check AM/PM (time.strftime(time_format, (0, 0, 0, 11, 0, 0, 0, 0, 0))).encode() (time.strftime(time_format, (0, 0, 0, 13, 0, 0, 0, 0, 0))).encode() - #Check DST + # Check DST (time.strftime(time_format, (0, 0, 0, 0, 0, 0, 0, 0, 1))).encode() except: diff --git a/src/openclpow.py b/src/openclpow.py index 717acc93..d90e55d1 100644 --- a/src/openclpow.py +++ b/src/openclpow.py @@ -119,4 +119,4 @@ if __name__ == "__main__": nonce = do_opencl_pow(initialHash.encode("hex"), target_) trialValue, = unpack( '>Q', hashlib.sha512(hashlib.sha512(pack('>Q', nonce) + initialHash).digest()).digest()[0:8]) - print ("{} - value {} < {}".format(nonce, trialValue, target_)) + print("{} - value {} < {}".format(nonce, trialValue, target_)) diff --git a/src/proofofwork.py b/src/proofofwork.py index 6fefb196..e79efc3b 100644 --- a/src/proofofwork.py +++ b/src/proofofwork.py @@ -294,7 +294,7 @@ def init(): global bitmsglib, bmpow openclpow.initCL() - if "win32" == sys.platform: + if sys.platform == "win32": if ctypes.sizeof(ctypes.c_voidp) == 4: bitmsglib = 'bitmsghash32.dll' else: @@ -323,7 +323,7 @@ def init(): elif platform == "android": try: bso = ctypes.CDLL('libbitmsghash.so') - except Exception as e: + except Exception: bso = None else: diff --git a/src/protocol.py b/src/protocol.py index 246ee8ad..fba68fe3 100644 --- a/src/protocol.py +++ b/src/protocol.py @@ -185,7 +185,8 @@ def checkIPv4Address(host, hostStandardFormat, private=False): logger.debug( 'Ignoring IP address in private range: %s', hostStandardFormat) return hostStandardFormat if private else False - if host[0:2] >= '\xAC\x10'.encode('raw_unicode_escape') and host[0:2] < '\xAC\x20'.encode('raw_unicode_escape'): # 172.16/12 + # 172.16/12 + if host[0:2] >= '\xAC\x10'.encode('raw_unicode_escape') and host[0:2] < '\xAC\x20'.encode('raw_unicode_escape'): if not private: logger.debug( 'Ignoring IP address in private range: %s', hostStandardFormat) @@ -198,15 +199,15 @@ def checkIPv6Address(host, hostStandardFormat, private=False): if host == ('\x00'.encode() * 15) + '\x01'.encode(): if not private: - logger.debug('Ignoring loopback address: {}'.format( hostStandardFormat)) + logger.debug('Ignoring loopback address: {}'.format(hostStandardFormat)) return False if host[0] == '\xFE' and (ord(host[1]) & 0xc0) == 0x80: if not private: - logger.debug('Ignoring local address: {}'.format( hostStandardFormat)) + logger.debug('Ignoring local address: {}'.format(hostStandardFormat)) return hostStandardFormat if private else False if (ord(host[0:1]) & 0xfe) == 0xfc: if not private: - logger.debug('Ignoring unique local address: {}'.format( hostStandardFormat)) + logger.debug('Ignoring unique local address: {}'.format(hostStandardFormat)) return hostStandardFormat if private else False return False if private else hostStandardFormat @@ -325,7 +326,7 @@ def assembleVersionMessage(remoteHost, remotePort, participatingStreams, server= ) # = 127.0.0.1. This will be ignored by the remote host. The actual remote connected IP will be used. - #python3 need to check + # python3 need to check payload += '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF'.encode() + pack('>L', 2130706433) # we have a separate extPort and incoming over clearnet @@ -338,11 +339,10 @@ def assembleVersionMessage(remoteHost, remotePort, participatingStreams, server= ): payload += pack('>H', extport) elif checkSocksIP(remoteHost) and server: # incoming connection over Tor - payload += pack('>H', int(BMConfigParser().safeGet('bitmessagesettings', 'onionport'))) + payload += pack('>H', int(BMConfigParser().safeGet('bitmessagesettings', 'onionport'))) else: # no extport and not incoming over Tor payload += pack('>H', int(BMConfigParser().safeGet('bitmessagesettings', 'port'))) - if nodeid is not None: payload += nodeid[0:8] else: @@ -374,7 +374,7 @@ def assembleErrorMessage(fatal=0, banTime=0, inventoryVector='', errorText=''): payload += encodeVarint(len(inventoryVector)) payload += inventoryVector.encode() if type(payload) == bytes else inventoryVector payload += encodeVarint(len(errorText)) - payload += errorText.encode() if type(payload)== bytes else errorText + payload += errorText.encode() if type(payload) == bytes else errorText return CreatePacket('error', payload) diff --git a/src/queues.py b/src/queues.py index bce5eb32..6a76adb6 100644 --- a/src/queues.py +++ b/src/queues.py @@ -1,6 +1,5 @@ - -import queue as Queue """Most of the queues used by bitmessage threads are defined here.""" +import queue as Queue import threading import time diff --git a/src/semaphores.py b/src/semaphores.py index 04120fe7..960d86a9 100644 --- a/src/semaphores.py +++ b/src/semaphores.py @@ -1,3 +1,3 @@ from threading import Semaphore -kivyuisignaler = Semaphore(0) \ No newline at end of file +kivyuisignaler = Semaphore(0) diff --git a/src/shared.py b/src/shared.py index d02578ce..98f47d19 100644 --- a/src/shared.py +++ b/src/shared.py @@ -101,6 +101,7 @@ def isAddressInMyAddressBookSubscriptionsListOrWhitelist(address): return True return False + def decodeWalletImportFormat(WIFstring): # pylint: disable=inconsistent-return-statements """ @@ -116,7 +117,7 @@ def decodeWalletImportFormat(WIFstring): ' 6 characters of the PRIVATE key: {}'.format(str(WIFstring)[:6]) ) - os._exit(0) + os._exit(0) # pylint: disable=protected-access if privkey[0:1] == '\x80'.encode()[1:]: # checksum passed return privkey[1:] diff --git a/src/singleinstance.py b/src/singleinstance.py index 169613a3..2936e49b 100644 --- a/src/singleinstance.py +++ b/src/singleinstance.py @@ -75,7 +75,7 @@ class singleinstance(object): fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB) self.lockPid = os.getpid() except IOError: - print ('Another instance of this application is already running') + print('Another instance of this application is already running') sys.exit(-1) else: pidLine = "%i\n" % self.lockPid @@ -95,10 +95,10 @@ class singleinstance(object): os.close(self.fd) else: fcntl.lockf(self.fp, fcntl.LOCK_UN) - except Exception as e: + except Exception: pass return - print ("Cleaning up lockfile") + print("Cleaning up lockfile") try: if sys.platform == 'win32': if hasattr(self, 'fd'): diff --git a/src/state.py b/src/state.py index 54251270..5207099f 100644 --- a/src/state.py +++ b/src/state.py @@ -109,4 +109,4 @@ availabe_credit = 0 in_sent_method = False -in_search_mode = False \ No newline at end of file +in_search_mode = False diff --git a/src/tr.py b/src/tr.py index ce8edc8e..f3498037 100644 --- a/src/tr.py +++ b/src/tr.py @@ -6,17 +6,17 @@ import os import state -class translateClass: +class translateClass(object): """ This is used so that the translateText function can be used when we are in daemon mode and not using any QT functions. """ - # pylint: disable=old-style-class,too-few-public-methods + # pylint: disable=too-few-public-methods def __init__(self, context, text): self.context = context self.text = text - def arg(self, argument): # pylint: disable=unused-argument + def arg(self, _): """Replace argument placeholders""" if '%' in self.text: return translateClass(self.context, self.text.replace('%', '', 1)) @@ -25,7 +25,7 @@ class translateClass: return self.text -def _translate(context, text, disambiguation=None, encoding=None, n=None): # pylint: disable=unused-argument +def _translate(context, text, disambiguation=None, encoding=None, n=None): # pylint: disable=unused-argument return translateText(context, text, n) @@ -39,12 +39,12 @@ def translateText(context, text, n=None): try: from PyQt4 import QtCore, QtGui except Exception as err: - print ('PyBitmessage requires PyQt unless you want to run it as a daemon and interact with it using the API\ + print('PyBitmessage requires PyQt unless you want to run it as a daemon and interact with it using the API\ .You can download PyQt from http://www.riverbankcomputing.com/software/pyqt/download\ or by searching Google for \'PyQt Download\'.\ If you want to run in daemon mode, see https://bitmessage.org/wiki/Daemon') - print ('Error message:', err) - os._exit(0) # pylint: disable=protected-access + print('Error message:', err) + os._exit(0) # pylint: disable=protected-access if n is None: return QtGui.QApplication.translate(context, text) diff --git a/src/upnp.py b/src/upnp.py index 9ef4c4e8..93753de3 100644 --- a/src/upnp.py +++ b/src/upnp.py @@ -1,8 +1,8 @@ -# pylint: disable=too-many-statements,too-many-branches,protected-access,no-self-use -""" +""" Complete UPnP port forwarding implementation in separate thread. Reference: http://mattscodecave.com/posts/using-python-and-upnp-to-forward-a-port """ +# pylint: disable=too-many-statements,too-many-branches,protected-access,no-self-use import httplib import socket @@ -19,8 +19,8 @@ import tr from bmconfigparser import BMConfigParser from debug import logger from network.connectionpool import BMConnectionPool -from network.threads import StoppableThread from network.node import Peer +from network.threads import StoppableThread def createRequestXML(service, action, arguments=None): @@ -83,6 +83,7 @@ class UPnPError(Exception): class Router: # pylint: disable=old-style-class """Encapulate routing""" + name = "" path = "" address = None @@ -152,7 +153,6 @@ class Router: # pylint: disable=old-style-class def DeletePortMapping(self, externalPort, protocol): """Delete UPnP port mapping""" - resp = self.soapRequest(self.upnp_schema + ':1', 'DeletePortMapping', [ ('NewRemoteHost', ''), ('NewExternalPort', str(externalPort)), @@ -163,16 +163,12 @@ class Router: # pylint: disable=old-style-class def GetExternalIPAddress(self): """Get the external address""" - - resp = self.soapRequest( - self.upnp_schema + ':1', 'GetExternalIPAddress') + resp = self.soapRequest(self.upnp_schema + ':1', 'GetExternalIPAddress') dom = parseString(resp.read()) - return dom.getElementsByTagName( - 'NewExternalIPAddress')[0].childNodes[0].data + return dom.getElementsByTagName('NewExternalIPAddress')[0].childNodes[0].data def soapRequest(self, service, action, arguments=None): """Make a request to a router""" - conn = httplib.HTTPConnection(self.routerPath.hostname, self.routerPath.port) conn.request( 'POST', @@ -223,7 +219,6 @@ class uPnPThread(StoppableThread): def run(self): """Start the thread to manage UPnP activity""" - logger.debug("Starting UPnP thread") logger.debug("Local IP: %s", self.localIP) lastSent = 0 @@ -261,16 +256,12 @@ class uPnPThread(StoppableThread): self.routers.append(newRouter) self.createPortMapping(newRouter) try: - self_peer = Peer( - newRouter.GetExternalIPAddress(), - self.extPort - ) + self_peer = Peer(newRouter.GetExternalIPAddress(), self.extPort) except: logger.debug('Failed to get external IP') else: with knownnodes.knownNodesLock: - knownnodes.addKnownNode( - 1, self_peer, is_self=True) + knownnodes.addKnownNode(1, self_peer, is_self=True) queues.UISignalQueue.put(('updateStatusBar', tr._translate( "MainWindow", 'UPnP port mapping established on port %1' ).arg(str(self.extPort)))) @@ -296,12 +287,12 @@ class uPnPThread(StoppableThread): deleted = True self.deletePortMapping(router) if deleted: - queues.UISignalQueue.put(('updateStatusBar', tr._translate("MainWindow", 'UPnP port mapping removed'))) + queues.UISignalQueue.put( + ('updateStatusBar', tr._translate("MainWindow", 'UPnP port mapping removed'))) logger.debug("UPnP thread done") def getLocalIP(self): """Get the local IP of the node""" - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) s.connect((uPnPThread.GOOGLE_DNS, 1)) @@ -309,7 +300,6 @@ class uPnPThread(StoppableThread): def sendSearchRouter(self): """Querying for UPnP services""" - ssdpRequest = "M-SEARCH * HTTP/1.1\r\n" + \ "HOST: %s:%d\r\n" % (uPnPThread.SSDP_ADDR, uPnPThread.SSDP_PORT) + \ "MAN: \"ssdp:discover\"\r\n" + \ @@ -324,7 +314,6 @@ class uPnPThread(StoppableThread): def createPortMapping(self, router): """Add a port mapping""" - for i in range(50): try: localIP = self.localIP @@ -336,10 +325,7 @@ class uPnPThread(StoppableThread): extPort = randint(32767, 65535) logger.debug( "Attempt %i, requesting UPnP mapping for %s:%i on external port %i", - i, - localIP, - self.localPort, - extPort) + i, localIP, self.localPort, extPort) router.AddPortMapping(extPort, self.localPort, localIP, 'TCP', 'BitMessage') self.extPort = extPort BMConfigParser().set('bitmessagesettings', 'extport', str(extPort))