From 2239bf61c099448ea096769c1f9fc4ac5f094e20 Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Wed, 14 Aug 2013 21:03:30 +0200 Subject: [PATCH] [sip] envoi de message en commandline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Petit script sans prétention pour s'envoyer des messages (ou à quelqu'un d'autre). --- sip/__init__.py | 0 sip/send_sms.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 sip/__init__.py create mode 100755 sip/send_sms.py diff --git a/sip/__init__.py b/sip/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sip/send_sms.py b/sip/send_sms.py new file mode 100755 index 00000000..c6ddca4a --- /dev/null +++ b/sip/send_sms.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Petit script d'envoi de message via sip. +Pour l'instant uniquement pour les personnes connectées +(le message est jeté sinon) +Prend le message sur stdin. + +Alternatives intéressantes à étudier : +https://github.com/grengojbo/python-sipsimple +https://github.com/grengojbo/sipclients +""" + +import sys +sys.path.append('/usr/scripts/gestion/secrets') +from secrets import asterisk_sms_passwd +sys.path.pop() +import os +import sys +import argparse + +parser = argparse.ArgumentParser(description="Envoi d'un message sip") +parser.add_argument('-d', '--dst', default=None, + help="Destinataire, peut être de la forme sip:13570. (Défaut: soi-même)") + +# Attention: on a besoin d'importer le module sip de /usr/scripts +# il existe déjà un module sip dans les libs python. +# il faut donc mettre notre path, avant +sys.path.insert(0, '/usr/scripts/') + +import lc_ldap.shortcuts +from sip.asterisk import Manager + +if __name__ == '__main__': + args = parser.parse_args(sys.argv[1:]) + + login = os.getenv("SUDO_USER") or os.getenv("USER") + ldap = lc_ldap.shortcuts.lc_ldap_readonly() + adh = ldap.search(u'uid=%s' % login)[0] + + own = "sip:1" + adh.dn.split(',')[0].split('aid=')[1] + # TODO utiliser le vrai caller id + # profile_manager = Profile("dbname='django' user='crans' host='pgsql.adm.crans.org'", "voip_profile") + # callerid = profile_manager.num_to_callerid(own) + callerid = os.path.basename(__file__) + caller = '"%s" <%s>' % (callerid, own) + + dst = args.dst + if not dst: + dst = own + + ast_manager = Manager('sms', asterisk_sms_passwd) + + # TODO mode hors ligne + ast_manager.messageSend(caller, dst, sys.stdin.read())