Beispiel #1
0
    def send(self,apiurl,reqdata,secret):
        """ send radius request
        :param apiurl: oss server api
        :param reqdata: json data
        """
        try:
            if self.config.defaults.debug:
                log.msg("[HttpClient] ::::::: Send http request to {0}, {1}".format(safestr(apiurl),safestr(reqdata)))

            headers = {"Content-Type": ["application/json;charset=utf-8"]}
            resp = yield requests.post(safestr(apiurl), data=reqdata, headers=headers)
            resp_json = yield resp.json()

            if self.config.defaults.debug:
                log.msg("[HttpClient] ::::::: Received http response from {0}, {1}".format(safestr(apiurl), safestr(resp_json)))

            if resp.code != 200:
                defer.returnValue(dict(code=1, msg=u'server return error http status code {0}'.format(resp.code)))
            else:
                result = resp_json
                if not self.check_sign(secret, result):
                    defer.returnValue(dict(code=1, msg=u"sign error"))
                else:
                    defer.returnValue(result)
        except Exception as err:
            import traceback
            traceback.print_exc()
            defer.returnValue(dict(code=1, msg=u'server error'))
Beispiel #2
0
    def logger(self, nasaddr=None, content=None, level='info'):
        """
        send logger to logserver
        :param nasaddr:
        :param content:
        """
        nas = yield self.redb.get_nas(nasaddr)
        apiurl = nas and nas.get("api_logger_url") or self.config.defaults.get("log_server")
        if apiurl:
            if self.config.defaults.debug:
                log.msg("[HttpClient] ::::::: Send log Request to {0}, {1}".format(safestr(apiurl), safestr(content)))

            content = safestr(content)
            nonce = str(time.time())
            _datetime = get_currtime()
            sign = self.make_sign([nasaddr, content, _datetime, nonce], nas.get("api_secret"))
            reqdata = json.dumps(dict(
                nasaddr=nasaddr,
                content=content,
                datetime=_datetime,
                nonce=nonce,
                sign=sign
            ), ensure_ascii=False)

            headers = {"Content-Type": ["text/plain;charset=utf-8"]}
            resp = yield requests.post(safestr(apiurl), data=reqdata, headers=headers)
            log.msg("[HttpClient] ::::::: Received Resp {0}, Send log done".format(resp.code))
        else:
            log.msg("[HttpClient] ::::::: Not send, {0}".format(safestr(content)))
Beispiel #3
0
    def send(self, apiurl, reqdata, secret):
        """ send radius request
        :param apiurl: oss server api
        :param reqdata: json data
        """
        try:
            if self.config.defaults.debug:
                log.msg("[HttpClient] ::::::: Send http request to {0}, {1}".
                        format(safestr(apiurl), safestr(reqdata)))

            headers = {"Content-Type": ["application/json;charset=utf-8"]}
            resp = yield requests.post(safestr(apiurl),
                                       data=reqdata,
                                       headers=headers)
            resp_json = yield resp.json()

            if self.config.defaults.debug:
                log.msg(
                    "[HttpClient] ::::::: Received http response from {0}, {1}"
                    .format(safestr(apiurl), safestr(resp_json)))

            if resp.code != 200:
                defer.returnValue(
                    dict(
                        code=1,
                        msg=u'server return error http status code {0}'.format(
                            resp.code)))
            else:
                result = resp_json
                if not self.check_sign(secret, result):
                    defer.returnValue(dict(code=1, msg=u"sign error"))
                else:
                    defer.returnValue(result)
        except Exception as err:
            import traceback
            traceback.print_exc()
            defer.returnValue(dict(code=1, msg=u'server error'))
Beispiel #4
0
    def logger(self, nasaddr=None, content=None, level='info'):
        """
        send logger to logserver
        :param nasaddr:
        :param content:
        """
        nas = yield self.redb.get_nas(nasaddr)
        apiurl = nas and nas.get("api_logger_url") or self.config.defaults.get(
            "log_server")
        if apiurl:
            if self.config.defaults.debug:
                log.msg(
                    "[HttpClient] ::::::: Send log Request to {0}, {1}".format(
                        safestr(apiurl), safestr(content)))

            content = safestr(content)
            nonce = str(time.time())
            _datetime = get_currtime()
            sign = self.make_sign([nasaddr, content, _datetime, nonce],
                                  nas.get("api_secret"))
            reqdata = json.dumps(dict(nasaddr=nasaddr,
                                      content=content,
                                      datetime=_datetime,
                                      nonce=nonce,
                                      sign=sign),
                                 ensure_ascii=False)

            headers = {"Content-Type": ["text/plain;charset=utf-8"]}
            resp = yield requests.post(safestr(apiurl),
                                       data=reqdata,
                                       headers=headers)
            log.msg(
                "[HttpClient] ::::::: Received Resp {0}, Send log done".format(
                    resp.code))
        else:
            log.msg("[HttpClient] ::::::: Not send, {0}".format(
                safestr(content)))