def _dispatch(self, method, params): self.cookies = [] validuser = self.APIAuthenticateClient() if not validuser: time.sleep(2) return "RPC Username or password incorrect or HTTP header lacks authentication at all." self.apiDir = _handle_request if method in dir(self.apiDir): logger.warn('Found "{}" in API'.format(method)) try: statusCode, data = object.__getattribute__( _handle_request, method)(self, *params) except Exception as e: logger.exception(e) statusCode = 500 data = "500" else: statusCode = 404 data = "Method not found" if statusCode != 200: data = {'error': data} response = {'data': data, 'status': statusCode, 'method': method} return json.dumps(response)
def sendSearchRouter(self): from debug import logger ssdpRequest = "M-SEARCH * HTTP/1.1\r\n" + \ "HOST: %s:%d\r\n" % (uPnPThread.SSDP_ADDR, uPnPThread.SSDP_PORT) + \ "MAN: \"ssdp:discover\"\r\n" + \ "MX: %d\r\n" % (uPnPThread.SSDP_MX, ) + \ "ST: %s\r\n" % (uPnPThread.SSDP_ST, ) + "\r\n" try: logger.debug("Sending UPnP query") self.sock.sendto(ssdpRequest, (uPnPThread.SSDP_ADDR, uPnPThread.SSDP_PORT)) except: logger.exception("UPnP send query failed")
def _dispatch(self, method, params): self.cookies = [] validuser = self.APIAuthenticateClient() if not validuser: time.sleep(2) return "RPC Username or password incorrect or HTTP header lacks authentication at all." try: return self._handle_request(method, params) except APIError as e: return str(e) except Exception as e: logger.exception(e) return "API Error 0021: Unexpected API Failure - " + str(e) + ".\nFull stack trace: " + traceback.format_exc()
def _dispatch(self, method, params): self.cookies = [] validuser = self.APIAuthenticateClient() if not validuser: time.sleep(2) return "RPC Username or password incorrect or HTTP header lacks authentication at all." try: return self._handle_request(method, params) except APIError as e: return str(e) except Exception as e: logger.exception(e) return "API Error 0021: Unexpected API Failure - " + str( e) + ".\nFull stack trace: " + traceback.format_exc()
def sendSearchRouter(self): from debug import logger SSDP_ADDR = "239.255.255.250" SSDP_PORT = 1900 SSDP_MX = 2 SSDP_ST = "urn:schemas-upnp-org:device:InternetGatewayDevice:1" ssdpRequest = "M-SEARCH * HTTP/1.1\r\n" + \ "HOST: %s:%d\r\n" % (SSDP_ADDR, SSDP_PORT) + \ "MAN: \"ssdp:discover\"\r\n" + \ "MX: %d\r\n" % (SSDP_MX, ) + \ "ST: %s\r\n" % (SSDP_ST, ) + "\r\n" try: logger.debug("Sending UPnP query") self.sock.sendto(ssdpRequest, (SSDP_ADDR, SSDP_PORT)) except: logger.exception("UPnP send query failed")
def fixSensitiveFilePermissions(filename, hasEnabledKeys): if hasEnabledKeys: logger.warning( 'Keyfile had insecure permissions, and there were enabled' ' keys. The truly paranoid should stop using them immediately.') else: logger.warning( 'Keyfile had insecure permissions, but there were no enabled keys.' ) try: present_permissions = os.stat(filename)[0] disallowed_permissions = stat.S_IRWXG | stat.S_IRWXO allowed_permissions = ((1 << 32) - 1) ^ disallowed_permissions new_permissions = (allowed_permissions & present_permissions) os.chmod(filename, new_permissions) logger.info('Keyfile permissions automatically fixed.') except Exception: logger.exception('Keyfile permissions could not be fixed.') raise
def parse(self): #logger.debug('Parsing addr message %s' % (repr(self.data))) listOfAddressDetailsToBroadcast = [] numberOfAddresses = self.__consumeNumberOfAddresses() if not numberOfAddresses: raise StopIteration logger.debug('addr message contains %d IP addresses.', numberOfAddresses) needToWriteKnownNodes = False for addressIndex in range(numberOfAddresses): try: hostDetails = self.__consumeAddress() except Exception as err: logger.exception('ERROR TRYING TO UNPACK addr message.') break if not hostDetails: continue timestamp, stream, services, host, port = hostDetails yield hostDetails
def query(self, string): """ Query for the lmessage address corresponding to the given identity string. If it doesn't contain a slash, id/ is prepended. We return the result as (Error, Address) pair, where the Error is an error message to display or None in case of success. """ slashPos = string.find("/") if slashPos < 0: string = "id/" + string try: if self.nmctype == "namecoind": res = self.callRPC("name_show", [string]) res = res["value"] elif self.nmctype == "nmcontrol": res = self.callRPC("data", ["getValue", string]) res = res["reply"] if not res: return (tr._translate("MainWindow", 'The name %1 was not found.').arg( unicode(string)), None) else: assert False except RPCError as exc: logger.exception("Namecoin query RPC exception") if isinstance(exc.error, dict): errmsg = exc.error["message"] else: errmsg = exc.error return (tr._translate("MainWindow", 'The namecoin query failed (%1)').arg( unicode(errmsg)), None) except Exception: logger.exception("Namecoin query exception") return (tr._translate("MainWindow", 'The namecoin query failed.'), None) try: val = json.loads(res) except: logger.exception("Namecoin query json exception") return (tr._translate("MainWindow", 'The name %1 has no valid JSON data.').arg( unicode(string)), None) if "lmessage" in val: if "name" in val: ret = "%s <%s>" % (val["name"], val["lmessage"]) else: ret = val["lmessage"] return (None, ret) return (tr._translate( "MainWindow", 'The name %1 has no associated LMessage address.').arg( unicode(string)), None)
def query(self, string): """ Query for the bitmessage address corresponding to the given identity string. If it doesn't contain a slash, id/ is prepended. We return the result as (Error, Address) pair, where the Error is an error message to display or None in case of success. """ slashPos = string.find("/") if slashPos < 0: display_name = string string = "id/" + string else: display_name = string.split("/")[1] try: if self.nmctype == "namecoind": res = self.callRPC("name_show", [string]) res = res["value"] elif self.nmctype == "nmcontrol": res = self.callRPC("data", ["getValue", string]) res = res["reply"] if not res: return (tr._translate("MainWindow", 'The name %1 was not found.').arg( unicode(string)), None) else: assert False except RPCError as exc: logger.exception("Namecoin query RPC exception") if isinstance(exc.error, dict): errmsg = exc.error["message"] else: errmsg = exc.error return (tr._translate("MainWindow", 'The namecoin query failed (%1)').arg( unicode(errmsg)), None) except AssertionError: return (tr._translate("MainWindow", 'Unknown namecoin interface type: %1').arg( unicode(self.nmctype)), None) except Exception: logger.exception("Namecoin query exception") return (tr._translate("MainWindow", 'The namecoin query failed.'), None) try: res = json.loads(res) except ValueError: pass else: try: display_name = res["name"] except KeyError: pass res = res.get("bitmessage") valid = decodeAddress(res)[0] == 'success' return (None, "%s <%s>" % (display_name, res)) if valid else (tr._translate( "MainWindow", 'The name %1 has no associated Bitmessage address.').arg( unicode(string)), None)