def send_sms(ctx: ApiCtx, dest, msg: str):

    now = datetime.now()
    now_str = now.strftime("%Y-%m-%d %H:%M:%S")
    if type(dest) == str:
        phones_content = '<Phone>{}</Phone>'.format(dest)
    else:
        phones_content = ""
        for phone in dest:
            phones_content += '<Phone>{}</Phone>\n'.format(phone)
    xml_data = """
        <request>
            <Index>-1</Index>
            <Phones>
            {}
            </Phones>
            <Sca></Sca>
            <Content>{}</Content>
            <Length>{}</Length>
            <Reserved>1</Reserved>
            <Date>{}</Date>
        </request> 
    """.format(phones_content, msg, len(msg), now_str)
    tok = ctx.tokens.pop()

    headers = {
        '__RequestVerificationToken': tok,
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = "{}/sms/send-sms".format(API_URL)
    r = post_to_url(url, xml_data, ctx, headers)
    return r
Example #2
0
def send_sms(ctx, dest, msg):
    # type: (ApiCtx, ..., str) -> ...

    now = datetime.now()
    now_str = now.strftime("%Y-%m-%d %H:%M:%S")
    dest = [dest] if isinstance(dest, six.string_types) else dest

    phones_content = '\n'.join('<Phone>{}</Phone>'.format(phone)
                               for phone in dest)
    xml_data = """
        <request>
            <Index>-1</Index>
            <Phones>
            {}
            </Phones>
            <Sca></Sca>
            <Content>{}</Content>
            <Length>{}</Length>
            <Reserved>1</Reserved>
            <Date>{}</Date>
        </request>
    """.format(phones_content, msg, len(msg), now_str)

    headers = {
        '__RequestVerificationToken': ctx.token,
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = "{}/sms/send-sms".format(ctx.api_base_url)
    r = post_to_url(url, xml_data, ctx, headers)
    return r
Example #3
0
def login(ctx, user_name, password):
    # type: (ApiCtx, str, str) -> ...
    headers = common_headers()
    url = "{}/user/login".format(ctx.api_base_url)

    password_value = b64_sha256(user_name + b64_sha256(password) + ctx.login_token)

    xml_data = """
    <?xml version:"1.0" encoding="UTF-8"?>
    <request>
        <Username>{}</Username>
        <Password>{}</Password>
        <password_type>4</password_type>
    </request>
    """.format(user_name, password_value)

#   setup headers
    headers['__RequestVerificationToken'] = ctx.login_token
    headers['X-Requested-With'] = 'XMLHttpRequest'

    r = post_to_url(url, xml_data, ctx, headers)

    if r['type'] == "response" and r['response'] == "OK":
        ctx.logged_in = True

    return r
def get_sms(ctx: ApiCtx, box_type: int = 1, page: int = 1, qty: int = 1):
    xml_data = """
        <request>
            <PageIndex>{}</PageIndex>
            <ReadCount>{}</ReadCount>
            <BoxType>{}</BoxType>
            <SortType>0</SortType>
            <Ascending>0</Ascending>
            <UnreadPreferred>1</UnreadPreferred>
        </request>
    """.format(page, qty, box_type)

    headers = {
        '__RequestVerificationToken': ctx.token,
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = "{}/sms/sms-list".format(ctx.api_base_url)
    r = post_to_url(url, xml_data, ctx, headers)

    if r['type'] == 'response':
        if r['response']['Count'] != '0':
            if isinstance(r['response']['Messages']['Message'], dict):
                m = r['response']['Messages']['Message']
                r['response']['Messages']['Message'] = [m]
    return r
Example #5
0
def net2600(ctx):
    # type: (ApiCtx) -> dict

    url = '{}/net/net-mode'.format(ctx.api_base_url)
    headers = {
        '__RequestVerificationToken': ctx.token,
    }

    payload = '<?xml version: "1.0" encoding="UTF-8"?><request><NetworkMode>03</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>2000000000</LTEBand></request>'
    return post_to_url(url, payload, ctx, additional_headers=headers)
Example #6
0
def reboot(ctx: ApiCtx) -> dict:
    """
    Reboots the modem.
    """

    url = '{}/device/control'.format(ctx.api_base_url)
    headers = {
        '__RequestVerificationToken': ctx.token,
    }

    payload = '<?xml version: "1.0" encoding="UTF-8"?><request><Control>1</Control></request>'
    return post_to_url(url, payload, ctx, additional_headers=headers)
Example #7
0
def logout(ctx):
    url = "{}/user/logout".format(ctx.api_base_url)
    headers = {
        "__RequestVerificationToken": ctx.token,
        "X-Requested-With": "XMLHttpRequest"
    }
    payload = """
     <?xml version:"1.0" encoding="UTF-8"?>
     <request>
     <Logout>1</Logout>
     </request>
     """
    return post_to_url(url, payload, ctx, additional_headers=headers)
Example #8
0
def sms_set_read(ctx, index):
    # type: (ApiCtx) -> ...

    xml_data = """
        <?xml version:"1.0" encoding="UTF-8"?>
        <request>
            <Index>{}</Index>
        </request>
    """.format(index)

    headers = {
        "__RequestVerificationToken": ctx.token,
        "X-Requested-With": "XMLHttpRequest",
    }
    url = "{}/sms/set-read".format(ctx.api_base_url)
    return post_to_url(url, xml_data, ctx, headers)
def delete_sms(ctx: ApiCtx, index: int):

    xml_data = """
        <?xml version:"1.0" encoding="UTF-8"?>
        <request>
            <Index>{}</Index>
        </request>
    """.format(index)

    headers = {
        '__RequestVerificationToken': ctx.token,
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = "{}/sms/delete-sms".format(ctx.api_base_url)
    r = post_to_url(url, xml_data, ctx, headers)
    return r
Example #10
0
def send(ctx: ApiCtx, msg: str):
    xml_data = """
        <?xml version="1.0" encoding="UTF-8"?>
        <request>
           <content>{}</content>
           <codeType>CodeType</codeType>
           <timeout></timeout>
        </request>
    """.format(msg)

    headers = {
        '__RequestVerificationToken': ctx.token,
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = "{}/ussd/send".format(ctx.api_base_url)
    r = post_to_url(url, xml_data, ctx, headers)
    return r
Example #11
0
def get_sms(ctx, box_type=1, page=1, qty=1, unread_preferred=True):
    """
     Gets available SMS from the router.

    :param ctx: ApiCtx object.
    :param box_type: 1 == inbox, 2 == outbox. integer.
    :param page: page number during pagination (used with qty). integer.
    :param qty: maximum number of items per page. integer.
    :param unread_preferred: if True, unread SMS'es are listed first, otherwise
        they are listed by date in descending order. boolean.
    :return: a collection of sms records.
    """
    xml_data = """
        <request>
            <PageIndex>{}</PageIndex>
            <ReadCount>{}</ReadCount>
            <BoxType>{}</BoxType>
            <SortType>0</SortType>
            <Ascending>0</Ascending>
            <UnreadPreferred>{}</UnreadPreferred>
        </request>
    """.format(page, qty, box_type, 1 if unread_preferred else 0)

    headers = {
        '__RequestVerificationToken': ctx.token,
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = "{}/sms/sms-list".format(ctx.api_base_url)
    r = post_to_url(url, xml_data, ctx, headers)

    if r['type'] == 'response':
        if r['response']['Count'] != '0':
            if isinstance(r['response']['Messages']['Message'], dict):
                m = r['response']['Messages']['Message']
                r['response']['Messages']['Message'] = [m]
    return r
def login(ctx: ApiCtx, user_name: str, password: str):
    headers = common_headers()
    url = "{}/user/login".format(API_URL)

    #   original JS code:
    #   psd = base64encode(
    #    SHA256(
    #        name +
    #        base64encode(
    #                       SHA256($('#password').val())
    #        ) +
    #        g_requestVerificationToken[0]
    #    )
    #   );

    password_value = b64_sha256(user_name + b64_sha256(password) + ctx.token)

    xml_data = """
    <?xml version:"1.0" encoding="UTF-8"?>
    <request>
        <Username>{}</Username>
        <Password>{}</Password>
        <password_type>4</password_type>
    </request>
    """.format(user_name, password_value)

    #   setup headers
    headers['__RequestVerificationToken'] = ctx.token
    headers['X-Requested-With'] = 'XMLHttpRequest'

    r = post_to_url(url, xml_data, ctx, headers)

    if r['type'] == "response" and r['response'] == "OK":
        ctx.logged_in = True

    return r