Exemple #1
0
def update_record(domain, value, record_type="A"):
    """
    更新记录
    """
    info(">>>>>%s(%s)", domain, record_type)

    result = {}

    if not Config.TOKEN:  # 此处使用 TOKEN 参数透传 POST 参数所用的 JSON
        method = "GET"
        URLObj = urlparse(Config.ID)
        path = URLObj.path
        query = dict(parse_qsl(URLObj.query))
        params = replace_params(domain, record_type, value, query)
    else:
        method = "POST"
        URLObj = urlparse(Config.ID)
        path = URLObj.path
        params = replace_params(domain, record_type, value,
                                jsondecode(Config.TOKEN))

    res = request(method, path, params)

    if res:
        result = "Callback Request Success!\n" + res
    else:
        result = "Callback Request Fail!\n"

    return result
Exemple #2
0
def request(action, param=None, **params):
    """
    发送请求数据
    """
    if param:
        params.update(param)
    params = signature(params)
    info("%s : params:%s", action, params)

    if PROXY:
        conn = HTTPSConnection(PROXY)
        conn.set_tunnel(API_SITE, 443)
    else:
        conn = HTTPSConnection(API_SITE)

    conn.request(API_METHOD, '/api/' + action + '/', urlencode(params),
                 {"Content-type": "application/x-www-form-urlencoded"})
    response = conn.getresponse()
    result = response.read()
    conn.close()

    if response.status < 200 or response.status >= 300:
        raise Exception(result)
    else:
        data = jsondecode(result.decode('utf8'))
        debug('%s : result:%s', action, data)
        if data.get('code') != 0:
            raise Exception("api error:", data.get('message'))
        data = data.get('data')
        if data is None:
            raise Exception('response data is none')
        return data
Exemple #3
0
def request(param=None, **params):
    """
    发送请求数据
    """
    if param:
        params.update(param)
    params = dict((k, params[k]) for k in params if params[k] is not None)
    params = signature(params)
    info("%s: %s", API.SITE, params)

    if Config.PROXY:
        conn = HTTPSConnection(Config.PROXY)
        conn.set_tunnel(API.SITE, 443)
    else:
        conn = HTTPSConnection(API.SITE)
    conn.request(API.METHOD, '/', urlencode(params),
                 {"Content-type": "application/x-www-form-urlencoded"})
    response = conn.getresponse()
    data = response.read().decode('utf8')
    conn.close()

    if response.status < 200 or response.status >= 300:
        warning('%s : error[%d]: %s', params['Action'], response.status, data)
        raise Exception(data)
    else:
        data = jsondecode(data)
        debug('%s : result:%s', params['Action'], data)
        return data
Exemple #4
0
def request(action, param=None, **params):
    """
    发送请求数据
    """
    if param:
        params.update(param)

    params.update({API.TOKEN_PARAM: '***', 'format': 'json'})
    info("%s/%s : %s", API.SITE, action, params)
    params[API.TOKEN_PARAM] = "%s,%s" % (ID, TOKEN)

    if PROXY:
        conn = HTTPSConnection(PROXY)
        conn.set_tunnel(API.SITE, 443)
    else:
        conn = HTTPSConnection(API.SITE)

    conn.request(API.METHOD, '/' + action, urlencode(params),
                 {"Content-type": "application/x-www-form-urlencoded"})
    response = conn.getresponse()
    res = response.read()
    conn.close()

    if response.status < 200 or response.status >= 300:
        warning('%s : error:%s', action, res)
        raise Exception(res)
    else:
        data = jsondecode(res.decode('utf8'))
        debug('%s : result:%s', action, data)
        if not data:
            raise Exception("empty response")
        elif data.get("status", {}).get("code") == "1":
            return data
        else:
            raise Exception(data.get('status', {}))
Exemple #5
0
def request(param=None, **params):
    """
    发送请求数据
    """
    if param:
        params.update(param)
    params = signature(params)
    debug("params:%s", params)

    if PROXY:
        conn = HTTPSConnection(PROXY)
        conn.set_tunnel(API_SITE, 443)
    else:
        conn = HTTPSConnection(API_SITE)

    conn.request(API_METHOD, '/', urlencode(params),
                 {"Content-type": "application/x-www-form-urlencoded"})
    response = conn.getresponse()
    data = response.read()
    conn.close()

    if response.status < 200 or response.status >= 300:
        warn('%s : error:%s', params['Action'], data)
        raise Exception(data)
    else:
        data = jsondecode(data.decode('utf8'))
        debug('%s : result:%s', params['Action'], data)
        return data
Exemple #6
0
def handler(event, context):
    data = b64decode(event['awslogs']['data'])
    payload = jsondecode(gunzip(data))

    instance_id = payload['logStream']

    print('Terminating instance "{}"'.format(instance_id))

    ec2.terminate_instances(InstanceIds=[instance_id], )
Exemple #7
0
def request(method, action, param=None, **params):
    """
        发送请求数据
    """
    if param:
        params.update(param)

    params = dict((k, params[k]) for k in params if params[k] is not None)
    info("%s/%s : %s", API.SITE, action, params)
    if Config.PROXY:
        conn = HTTPSConnection(Config.PROXY)
        conn.set_tunnel(API.SITE, 443)
    else:
        conn = HTTPSConnection(API.SITE)

    if method in ['PUT', 'POST', 'PATCH']:
        # 从public_v(4,6)获取的IP是bytes类型,在json.dumps时会报TypeError
        params['content'] = str(params.get('content'))
        params = jsonencode(params)
    else:  # (GET, DELETE) where DELETE doesn't require params in Cloudflare
        if params:
            action += '?' + urlencode(params)
        params = None
    if not Config.ID:
        headers = {
            "Content-type": "application/json",
            "Authorization": "Bearer " + Config.TOKEN
        }
    else:
        headers = {
            "Content-type": "application/json",
            "X-Auth-Email": Config.ID,
            "X-Auth-Key": Config.TOKEN
        }
    conn.request(method, '/client/v4/zones' + action, params, headers)
    response = conn.getresponse()
    res = response.read().decode('utf8')
    conn.close()
    if response.status < 200 or response.status >= 300:
        warning('%s : error[%d]:%s', action, response.status, res)
        raise Exception(res)
    else:
        data = jsondecode(res)
        debug('%s : result:%s', action, data)
        if not data:
            raise Exception("Empty Response")
        elif data.get('success'):
            return data.get('result', [{}])
        else:
            raise Exception(data.get('errors', [{}]))
Exemple #8
0
def request(method, action, param=None, **params):
    """
        发送请求数据
    """
    if param:
        params.update(param)

    info("$s %s : params:%s", action, params)
    if PROXY:
        conn = HTTPSConnection(PROXY)
        conn.set_tunnel(API_SITE, 443)
    else:
        conn = HTTPSConnection(API_SITE)

    if method in ['PUT', 'POST', 'PATCH']:
        # 从public_v(4,6)获取的IP是bytes类型,在json.dumps时会报TypeError
        params['content'] = str(params.get('content'))
        params = jsonencode(params)
    else:  # (GET, DELETE) where DELETE doesn't require params in Cloudflare
        if params:
            action += '?' + urlencode(params)
        params = None
    conn.request(
        method, '/client/v4/zones' + action, params, {
            "Content-type": "application/json",
            "X-Auth-Email": ID,
            "X-Auth-Key": TOKEN
        })
    response = conn.getresponse()
    res = response.read()
    conn.close()
    if response.status < 200 or response.status >= 300:
        raise Exception(res)
    else:
        data = jsondecode(res.decode('utf8'))
        debug('%s : result:%s', action, data)
        if not data:
            raise Exception("Empty Response")
        elif data.get('success'):
            return data.get('result', [{}])
        else:
            raise Exception(data.get('errors', [{}]))
Exemple #9
0
def request(action, param=None, **params):
    """
    发送请求数据
    """
    if param:
        params.update(param)
    params = dict((k, params[k]) for k in params if params[k] is not None)
    params.update({API.TOKEN_PARAM: '***', 'format': 'json'})
    info("%s/%s : %s", API.SITE, action, params)
    params[API.TOKEN_PARAM] = "%s,%s" % (Config.ID, Config.TOKEN)
    params[API.LENGTH] = "3000"  #添加参数
    if Config.PROXY:
        conn = HTTPSConnection(Config.PROXY)
        conn.set_tunnel(API.SITE, 443)
    else:
        conn = HTTPSConnection(API.SITE)

    conn.request(
        API.METHOD, '/' + action, urlencode(params), {
            "Content-type":
            "application/x-www-form-urlencoded",
            "User-Agent":
            "DDNS/%s ([email protected])" %
            environ.get("DDNS_VERSION", "1.0.0")
        })
    response = conn.getresponse()
    res = response.read().decode('utf8')
    conn.close()

    if response.status < 200 or response.status >= 300:
        warning('%s : error[%d]:%s', action, response.status, res)
        raise Exception(res)
    else:
        data = jsondecode(res)
        debug('%s : result:%s', action, data)
        if not data:
            raise Exception("empty response")
        elif data.get("status", {}).get("code") == "1":
            return data
        else:
            raise Exception(data.get('status', {}))
Exemple #10
0
def request(action, param=None, **params):
    """
    发送请求数据
    """
    if param:
        params.update(param)

    params.update({'login_token': '***', 'format': 'json'})
    info("%s : params:%s", action, params)
    params['user_token'] = "%s,%s" % (ID, TOKEN)

    if PROXY:
        conn = HTTPSConnection(PROXY)
        conn.set_tunnel(API_SITE, 443)
    else:
        conn = HTTPSConnection(API_SITE)

    conn.request(
        API_METHOD, '/' + action, urlencode(params), {
            "Content-type": "application/x-www-form-urlencoded",
            "User-Agent": "DDNS Client/1.0"
        })
    response = conn.getresponse()
    res = response.read()
    conn.close()

    if response.status < 200 or response.status >= 300:
        raise Exception(res)
    else:
        data = jsondecode(res.decode('utf8'))
        debug('%s : result:%s', action, data)
        if not data:
            raise Exception("empty response")
        elif data.get("status", {}).get("code") == "1":
            return data
        else:
            raise Exception(data.get('status', {}))
Exemple #11
0
from urllib.request import urlopen
from urllib.parse import urlencode
from json import loads as jsondecode
from time import time

EventSourceURL = 'http://tagpro.lol/stream/updates'
DataDropURL = 'https://script.google.com/macros/s/AKfycbznkUUI6B9nPjgU9XCBSPFdYwBqNEv3fv6nQc79YrDGZOkdhfaP/exec'

# Open the connection to the Event Source
es = urlopen(EventSourceURL)

while True:
    try:

        line = [_.strip() for _ in es.readline().decode('utf-8').split(':', 1)]

        if line[0] == 'data' and line[1] != '"connected"':

            datalist = jsondecode(line[1])

            for data in datalist:
                params = urlencode(data)
                result = urlopen(DataDropURL + '?' + params)
                print('Data sent. id:', data['id'])

    except Exception as e:
        print('Error:', e)