From 4c93dc7bb34af069ff6ea35aefe4eeacbf6f9b45 Mon Sep 17 00:00:00 2001 From: Valentin DEVILLE Date: Mon, 4 Dec 2017 14:43:36 +0100 Subject: [PATCH 1/5] Add logging text and message --- smsgateway.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/smsgateway.py b/smsgateway.py index df43d97..c90acd6 100755 --- a/smsgateway.py +++ b/smsgateway.py @@ -167,10 +167,10 @@ def pduformat(phonenumber, message): # debug output # print(phonenumber, message) # print(pdu.length, pdu.pdu) - return pdustring, pdulength + return pdustring, pdulength, phonenumber, message -def send_ascii_sms(phonenumber, sms): +def send_ascii_sms(phonenumber, sms, phonenumbre, message): """ Send SMS using telnetlib, returns exception when issues with telnet communication :param phonenumber: Phone number to insert in pdu @@ -195,12 +195,13 @@ def send_ascii_sms(phonenumber, sms): tn.write("%s\x1A" % decoded_sms) tn.read_until("+CMGS") tn.close() + print ("SMS send to telnet to %s with message %s" % phonenumber, message) except: print("Unexpected error :", sys.exc_info()[0]) raise -def send_pdu_sms(pdustring, pdulength): +def send_pdu_sms(pdustring, pdulength, phonenumber, message): """ Send SMS using telnetlib, returns exception when issues with telnet communication :param pdustring: is the converted sms to pdu format @@ -224,6 +225,7 @@ def send_pdu_sms(pdustring, pdulength): tn.write("%s\r\n\x1A" % pdustring) tn.read_until("+CMGS") tn.close() + print ("SMS send to telnet to %s with message %s" % phonenumber, message) except: print("Unexpected error:", sys.exc_info()[0]) raise @@ -263,11 +265,11 @@ if len(sys.argv) > 1: if len(sys.argv) == 4: phonenumber = sys.argv[2] sms = sys.argv[3] - pdustring, pdulength = pduformat(phonenumber, sms) + pdustring, pdulength, phonenumber, message = pduformat(phonenumber, sms) if config.smsformat == "pdu": - send_pdu_sms(pdustring, pdulength) + send_pdu_sms(pdustring, pdulength, phonenumber, message) elif config.smsformat == "ascii": - send_ascii_sms(phonenumber, sms) + send_ascii_sms(phonenumber, sms, phoneumber, message) else: print(usage()) From 2b43461f76981a083758b859f6664474bb770a89 Mon Sep 17 00:00:00 2001 From: Valentin Deville Date: Wed, 6 Dec 2017 17:11:38 +0100 Subject: [PATCH 2/5] Rework log system and send_sms method --- config.py.sample | 3 ++- smsgateway.py | 62 +++++++++++++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/config.py.sample b/config.py.sample index 9db6772..a460163 100644 --- a/config.py.sample +++ b/config.py.sample @@ -5,6 +5,7 @@ smssize = 160 smstemplate = "Nouveau mail de %s. Object %s. Message ..." smsformat = "ascii" -mailboxes = "/home/paul/PycharmProjects/smsgateway/mailbox.csv" +mailboxes = "mailbox.csv" pidfile = "/run/lock/smsgateway.pid" +log = True diff --git a/smsgateway.py b/smsgateway.py index c90acd6..6d354bf 100755 --- a/smsgateway.py +++ b/smsgateway.py @@ -8,11 +8,20 @@ import telnetlib import config import fcntl import sys +import datetime from email.header import decode_header from messaging.sms import SmsSubmit +def log(message, level = 'INFO'): + if config.log: + date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + print ("%s [ %s ] %s" % (date, level, message)) + + return True + + def csv_config_parser(mailboxes): """ Reads CSV config, returns as a list @@ -85,7 +94,7 @@ def clear_all_sms(): tn.read_until("\r\n") tn.close() except: - print("Unexpected error:", sys.exc_info()[0]) + log(("Error clear sms %s" % sys.exc_info()[0]), 'ERROR') raise @@ -144,16 +153,26 @@ def imap2sms(conf): for mail in mails: sender = mail[0] subject = mail[1] - if config.smsformat == "pdu": - sms = resize_pdu_sms(sms_template(sender, subject)) - pdustring, pdulength = pduformat(number, sms) - send_pdu_sms(pdustring, pdulength) - elif config.smsformat == "ascii": - sms = resize_ascii_sms(sms_template(sender, subject)) - send_ascii_sms(number, sms) + send_sms(number, subject, sender) -def pduformat(phonenumber, message): +def send_sms(number, subject, sender): + if config.smsformat == 'pdu': + sms = resize_pdu_sms(sms_template(sender, subject)) + pdustring, pdulength, phonenumber, message = pdu_format(number, sms) + send_pdu_sms(pdustring, pdulength) + log(("Message sent to %s with text %s using PDU method" % (number, message))) + return True + elif config.smsformat == 'ascii': + sms = resize_ascii_sms(sms_template(sender, subject)) + send_ascii_sms(number, sms) + log(("Message sent to %s with text %s using ASCII method" % (number, sms))) + return True + else: + return False + + +def pdu_format(phonenumber, message): """ Formats SMS using pdu encoding :param phonenumber: Phone number to insert in pdu @@ -164,13 +183,10 @@ def pduformat(phonenumber, message): pdu = sms.to_pdu()[0] pdustring = pdu.pdu pdulength = pdu.length - # debug output - # print(phonenumber, message) - # print(pdu.length, pdu.pdu) return pdustring, pdulength, phonenumber, message -def send_ascii_sms(phonenumber, sms, phonenumbre, message): +def send_ascii_sms(phonenumber, sms): """ Send SMS using telnetlib, returns exception when issues with telnet communication :param phonenumber: Phone number to insert in pdu @@ -195,13 +211,12 @@ def send_ascii_sms(phonenumber, sms, phonenumbre, message): tn.write("%s\x1A" % decoded_sms) tn.read_until("+CMGS") tn.close() - print ("SMS send to telnet to %s with message %s" % phonenumber, message) except: - print("Unexpected error :", sys.exc_info()[0]) + log(("Error when send SMS with Telnet: %s" % sys.exc_info()[0]), 'ERROR') raise -def send_pdu_sms(pdustring, pdulength, phonenumber, message): +def send_pdu_sms(pdustring, pdulength): """ Send SMS using telnetlib, returns exception when issues with telnet communication :param pdustring: is the converted sms to pdu format @@ -225,9 +240,8 @@ def send_pdu_sms(pdustring, pdulength, phonenumber, message): tn.write("%s\r\n\x1A" % pdustring) tn.read_until("+CMGS") tn.close() - print ("SMS send to telnet to %s with message %s" % phonenumber, message) except: - print("Unexpected error:", sys.exc_info()[0]) + log(("Error when send SMS with Telnet: %s" % sys.exc_info()[0]), 'ERROR') raise @@ -254,7 +268,7 @@ try: fcntl.lockf(fh, fcntl.LOCK_EX | fcntl.LOCK_NB) except IOError: # another instance is running - print 'Error: Another instance is running...' + log("Error: Another instance is running...", 'ERROR') sys.exit(0) if len(sys.argv) > 1: @@ -265,11 +279,11 @@ if len(sys.argv) > 1: if len(sys.argv) == 4: phonenumber = sys.argv[2] sms = sys.argv[3] - pdustring, pdulength, phonenumber, message = pduformat(phonenumber, sms) if config.smsformat == "pdu": - send_pdu_sms(pdustring, pdulength, phonenumber, message) + pdustring, pdulength, phonenumber, message = pdu_format(phonenumber, sms) + send_pdu_sms(pdustring, pdulength) elif config.smsformat == "ascii": - send_ascii_sms(phonenumber, sms, phoneumber, message) + send_ascii_sms(phonenumber, sms) else: print(usage()) @@ -279,6 +293,10 @@ if len(sys.argv) > 1: elif sys.argv[1] == "debug": print debug() + + else: + print(usage()) + exit(1) else: print(usage()) exit(1) From 1cd3beb55eb631cd66eece56f95ec14d29d5735c Mon Sep 17 00:00:00 2001 From: Valentin DEVILLE Date: Mon, 11 Dec 2017 15:54:22 +0100 Subject: [PATCH 3/5] Add separator between instance --- smsgateway.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/smsgateway.py b/smsgateway.py index 6d354bf..56604fe 100755 --- a/smsgateway.py +++ b/smsgateway.py @@ -13,8 +13,13 @@ import datetime from email.header import decode_header from messaging.sms import SmsSubmit +instanceSeprator = True def log(message, level = 'INFO'): + if instanceSeparator: + print "" + print "=== (INSTANCE) ===" + instanceSeparator = False if config.log: date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') print ("%s [ %s ] %s" % (date, level, message)) From dbc84943e0cba84c331230a0f69d9749a6075298 Mon Sep 17 00:00:00 2001 From: Valentin DEVILLE Date: Mon, 11 Dec 2017 15:56:32 +0100 Subject: [PATCH 4/5] Fix variables names --- smsgateway.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) mode change 100755 => 100644 smsgateway.py diff --git a/smsgateway.py b/smsgateway.py old mode 100755 new mode 100644 index 56604fe..222392f --- a/smsgateway.py +++ b/smsgateway.py @@ -144,16 +144,15 @@ def imap2sms(conf): :return: """ for l in conf: - username = l[0] - password = l[1] - mailserver = l[2] + username = l[1] + password = l[2] + mailserver = l[0] numbers = [] i = 3 while i < len(l): numbers.append(l[i]) i += 1 - - mails = fetch_unread_mails(username, password, mailserver) + mails = fetch_unread_mails(mailserver, username, password) for number in numbers: for mail in mails: sender = mail[0] From 75d0a7fa0559c62db27abc628eb1f74673c506c9 Mon Sep 17 00:00:00 2001 From: Valentin DEVILLE Date: Mon, 11 Dec 2017 16:02:05 +0100 Subject: [PATCH 5/5] Fix missing letter in var name --- smsgateway.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/smsgateway.py b/smsgateway.py index 222392f..6d9bc5e 100644 --- a/smsgateway.py +++ b/smsgateway.py @@ -13,9 +13,10 @@ import datetime from email.header import decode_header from messaging.sms import SmsSubmit -instanceSeprator = True +instanceSeparator = True def log(message, level = 'INFO'): + global instanceSeparator if instanceSeparator: print "" print "=== (INSTANCE) ==="