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
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
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
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)
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)
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)
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
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
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