Creation d'un service alertsms sur zamok via rabbitmq
This commit is contained in:
parent
0adfe858cc
commit
79182f2b42
5 changed files with 97 additions and 0 deletions
7
utils/alertsms/README
Normal file
7
utils/alertsms/README
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Daemon qui recupère les sms de rabbitmq et les envoie via gammu sur zamok
|
||||||
|
# Il récupère les sms en tant que user sms et dans la queue SMS
|
||||||
|
# Largement repris de crans ticket
|
||||||
|
# Les autres scripts n'ont plus qu'a peupler la file d'attente avec
|
||||||
|
# des dicts (numero de tel, contenu du msg)
|
||||||
|
|
||||||
|
# Un service gammu tourne sur zamok, ainsi qu'un service cranssms qui appelle daemon
|
5
utils/alertsms/common.py
Normal file
5
utils/alertsms/common.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#-*- coding: utf-8 -*-
|
||||||
|
PIDFILE = '/var/run/daemon.pid'
|
||||||
|
USER='gammu'
|
||||||
|
GROUP='adm'
|
16
utils/alertsms/config.py
Normal file
16
utils/alertsms/config.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import pika
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if '/usr/scripts' not in sys.path:
|
||||||
|
sys.path.append('/usr/scripts')
|
||||||
|
|
||||||
|
from gestion import secrets_new as secrets
|
||||||
|
|
||||||
|
CREDS = pika.credentials.PlainCredentials('sms', secrets.get('rabbitmq_sms'), True)
|
||||||
|
|
||||||
|
PARAMS = pika.ConnectionParameters(host='rabbitmq.crans.org',
|
||||||
|
port=5671, credentials=CREDS, ssl=True)
|
||||||
|
|
||||||
|
QUEUE = "SMS"
|
69
utils/alertsms/daemon.py
Executable file
69
utils/alertsms/daemon.py
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Daemon d'envoie des sms par rabbitmq
|
||||||
|
# License GPL2
|
||||||
|
# Gabriel Détraz, pompé sur cransticket de Daniel Stan
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import sys,os,pwd,grp
|
||||||
|
from gammu import smsd
|
||||||
|
import common
|
||||||
|
import pika
|
||||||
|
import json
|
||||||
|
import config
|
||||||
|
|
||||||
|
daemon = smsd.SMSD('/etc/gammu-smsdrc')
|
||||||
|
|
||||||
|
def run():
|
||||||
|
conn = pika.BlockingConnection(config.PARAMS)
|
||||||
|
ch = conn.channel()
|
||||||
|
ch.queue_declare(queue=config.QUEUE)
|
||||||
|
def callback(ch, method, properties, body):
|
||||||
|
print (" [x] Received %r" % (body,))
|
||||||
|
message = {
|
||||||
|
'Text': json.loads(body)['sms'],
|
||||||
|
'SMSC' : { 'Location' : 1 },
|
||||||
|
'Number' : json.loads(body)['numero'],
|
||||||
|
}
|
||||||
|
daemon.InjectSMS([message])
|
||||||
|
ch.basic_consume(callback, queue=config.QUEUE, no_ack=True)
|
||||||
|
ch.start_consuming()
|
||||||
|
conn.close()
|
||||||
|
# fork en arrière plan + pidfile
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if '-fg' in sys.argv:
|
||||||
|
run()
|
||||||
|
exit()
|
||||||
|
# do the UNIX double-fork magic, see Stevens' "Advanced
|
||||||
|
# Programming in the UNIX Environment" for details (ISBN 0201563177)
|
||||||
|
try:
|
||||||
|
pid = os.fork()
|
||||||
|
if pid > 0:
|
||||||
|
# exit first parent
|
||||||
|
sys.exit(0)
|
||||||
|
except OSError, e:
|
||||||
|
print("fork #1 failed: %d (%s)" % (e.errno, e.strerror),file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# decouple from parent environment
|
||||||
|
os.chdir("/") #don't prevent unmounting....
|
||||||
|
os.setsid()
|
||||||
|
os.umask(0)
|
||||||
|
|
||||||
|
# do second fork
|
||||||
|
try:
|
||||||
|
pid = os.fork()
|
||||||
|
if pid > 0:
|
||||||
|
# exit from second parent, print eventual PID before
|
||||||
|
#print "Daemon PID %d" % pid
|
||||||
|
open(common.PIDFILE, 'w').write("%d" % pid)
|
||||||
|
sys.exit(0)
|
||||||
|
except OSError, e:
|
||||||
|
print("fork #2 failed: %d (%s)" % (e.errno, e.strerror),file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# start the daemon main loop
|
||||||
|
run()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue