Example #1
0
    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)
Example #2
0
    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")
Example #3
0
    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")
Example #4
0
 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()
Example #5
0
 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()
Example #6
0
    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")
Example #7
0
    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")
Example #8
0
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
Example #9
0
    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
Example #10
0
    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)