send_sms.py 1.74 KB
Newer Older
1
#!/bin/bash /usr/scripts/python.sh
2
# -*- mode: python; coding: utf-8 -*-
3 4 5 6 7 8 9 10 11 12 13 14 15

"""
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
16
import gestion.secrets_new as secrets
17
import os
18
import getpass
19 20 21 22 23 24 25 26
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
27
# et non celui des libs python
28
import lc_ldap.shortcuts
29
from sip.asterisk import Manager, AsteriskError, Sms, Profile
30 31 32 33

if __name__ == '__main__':
    args = parser.parse_args(sys.argv[1:])

34
    login = getpass.getuser()
Daniel Stan's avatar
Daniel Stan committed
35 36
    if login == 'respbats':
        login = os.getenv('SUDO_USER')
37
    ldap = lc_ldap.shortcuts.lc_ldap_readonly()
38
    src = ldap.search(u'uid=%s' % login)[0]
39 40 41

    dst = args.dst
    if not dst:
42
        dst = src
43 44 45 46 47 48 49 50 51
    elif not dst.startswith('sip:') and '@' in dst and not dst.endswith('@crans.org'):
        dst = 'sip:%s' % dst
    elif not dst.startswith('sip:'):
        dst = dst.replace('@crans.org', '')
        try:
            dst = ldap.search(u"(|(uid=%(dst)s)(mailAlias=%(dst)s@crans.org)(canonicalAlias=%(dst)s@crans.org)(aid=%(dst)s))" % {'dst' : dst})[0]
        except IndexError:
            sys.stderr.write("Pas utilisateur trouvé pour %s\n" % args.dst)
            sys.exit(1)
52
    sms=Sms("dbname='django' user='crans' host='pgsql.v4.adm.crans.org'", "voip_sms")
53
    sms.send(dst, sys.stdin.read(), src)