#!/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] # rajouter @crans.org ne semble pas marcher, pourquoi ? own = "sip:1" + str(adh['aid'][0]) + "@crans.org" # 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 = "sip:1" + str(adh['aid'][0]) ast_manager = Manager('sms', asterisk_sms_passwd) # TODO mode hors ligne ast_manager.messageSend(caller, dst, sys.stdin.read())