From 010a32d95aacb4d884edeb6bde584666e0bc2e55 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 3 Nov 2017 16:20:53 +0530 Subject: [PATCH] [fix] Header for sms send request (#4417) --- .../doctype/sms_settings/sms_settings.json | 2 +- .../core/doctype/sms_settings/sms_settings.py | 27 ++++++++++++++----- frappe/core/doctype/user/user.py | 2 +- frappe/twofactor.py | 4 +-- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/frappe/core/doctype/sms_settings/sms_settings.json b/frappe/core/doctype/sms_settings/sms_settings.json index 948329d081..3bb89604af 100755 --- a/frappe/core/doctype/sms_settings/sms_settings.json +++ b/frappe/core/doctype/sms_settings/sms_settings.json @@ -202,7 +202,7 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2017-10-23 12:57:20.943845", + "modified": "2017-11-01 12:57:20.943845", "modified_by": "Administrator", "module": "Core", "name": "SMS Settings", diff --git a/frappe/core/doctype/sms_settings/sms_settings.py b/frappe/core/doctype/sms_settings/sms_settings.py index 588b08a229..c6988bd587 100644 --- a/frappe/core/doctype/sms_settings/sms_settings.py +++ b/frappe/core/doctype/sms_settings/sms_settings.py @@ -64,18 +64,17 @@ def send_sms(receiver_list, msg, sender_name = '', success_msg = True): def send_via_gateway(arg): ss = frappe.get_doc('SMS Settings', 'SMS Settings') + headers = get_headers(ss) + args = {ss.message_parameter: arg.get('message')} - headers={'Accept': "text/plain, text/html, */*"} for d in ss.get("parameters"): - if d.header == 1: - headers.update({d.parameter: d.value}) - continue - args[d.parameter] = d.value + if not d.header: + args[d.parameter] = d.value success_list = [] for d in arg.get('receiver_list'): args[ss.receiver_parameter] = d - status = send_request(ss.sms_gateway_url, headers, args, ss.use_post) + status = send_request(ss.sms_gateway_url, args, headers, ss.use_post) if 200 <= status < 300: success_list.append(d) @@ -86,9 +85,23 @@ def send_via_gateway(arg): if arg.get('success_msg'): frappe.msgprint(_("SMS sent to following numbers: {0}").format("\n" + "\n".join(success_list))) +def get_headers(sms_settings=None): + if not sms_settings: + sms_settings = frappe.get_doc('SMS Settings', 'SMS Settings') -def send_request(gateway_url, headers, params, use_post=False): + headers={'Accept': "text/plain, text/html, */*"} + for d in sms_settings.get("parameters"): + if d.header == 1: + headers.update({d.parameter: d.value}) + + return headers + +def send_request(gateway_url, params, headers=None, use_post=False): import requests + + if not headers: + headers = get_headers() + if use_post: response = requests.post(gateway_url, headers=headers, data=params) else: diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py index 4fa1183e74..857019964d 100644 --- a/frappe/core/doctype/user/user.py +++ b/frappe/core/doctype/user/user.py @@ -930,7 +930,7 @@ def send_token_via_sms(tmp_id,phone_no=None,user=None): return False args[ss.receiver_parameter] = usr_phone - status = send_request(ss.sms_gateway_url, args) + status = send_request(ss.sms_gateway_url, args, use_post=ss.use_post) if 200 <= status < 300: frappe.cache().delete(tmp_id + '_token') diff --git a/frappe/twofactor.py b/frappe/twofactor.py index 9b402a8286..b890a35831 100644 --- a/frappe/twofactor.py +++ b/frappe/twofactor.py @@ -255,7 +255,6 @@ def get_link_for_qrcode(user, totp_uri): def send_token_via_sms(otpsecret, token=None, phone_no=None): '''Send token as sms to user.''' - otp_issuer = frappe.db.get_value('System Settings', 'System Settings', 'otp_issuer_name') try: from frappe.core.doctype.sms_settings.sms_settings import send_request except: @@ -280,7 +279,8 @@ def send_token_via_sms(otpsecret, token=None, phone_no=None): sms_args = { 'params': args, - 'gateway_url': ss.sms_gateway_url + 'gateway_url': ss.sms_gateway_url, + 'use_post': ss.use_post } enqueue(method=send_request, queue='short', timeout=300, event=None, async=True, job_name=None, now=False, **sms_args)