| 1 |
#!/usr/bin/env python2.5 |
| 2 |
# -*- coding: utf-8 -*- |
| 3 |
""" daemon for fMMS |
| 4 |
|
| 5 |
fMMS - MMS for fremantle |
| 6 |
Copyright (C) 2010 Nick Leppänen Larsson <frals@frals.se> |
| 7 |
|
| 8 |
@license: GNU GPLv2, see COPYING file. |
| 9 |
""" |
| 10 |
import subprocess |
| 11 |
|
| 12 |
import dbus |
| 13 |
import gobject |
| 14 |
import dbus.mainloop.glib |
| 15 |
import dbus.service |
| 16 |
|
| 17 |
import logging |
| 18 |
log = logging.getLogger('fmms.fmmsd') |
| 19 |
|
| 20 |
class MMSHandler(dbus.service.Object): |
| 21 |
def __init__(self): |
| 22 |
# Here the service name |
| 23 |
bus_name = dbus.service.BusName('se.frals.mms', bus=dbus.SystemBus()) |
| 24 |
# Here the object path |
| 25 |
dbus.service.Object.__init__(self, bus_name, '/se/frals/mms') |
| 26 |
|
| 27 |
# TODO: This should filter by bearer and not number of arguments, really, it should. |
| 28 |
# Here the interface name, and the method is named same as on dbus. |
| 29 |
""" According to wappushd.h SMS PUSH is one less argument """ |
| 30 |
@dbus.service.method(dbus_interface='com.nokia.WAPPushHandler') |
| 31 |
def HandleWAPPush(self, bearer, source, srcport, dstport, header, payload): |
| 32 |
try: |
| 33 |
subprocess.Popen(["/usr/bin/run-standalone.sh", "/opt/fmms/wappushhandler.py", str(source), str(srcport), str(dstport), str(header), str(payload)]) |
| 34 |
except: |
| 35 |
log.exception("failed to spawn subprocess for processing") |
| 36 |
log.info("All done, signing off!") |
| 37 |
|
| 38 |
|
| 39 |
""" According to wappushd.h IP PUSH is one more argument |
| 40 |
@dbus.service.method(dbus_interface='com.nokia.WAPPushHandler') |
| 41 |
def HandleWAPPush(self, bearer, source, dest, srcport, dstport, header, payload): |
| 42 |
handler = PushHandler() |
| 43 |
ret = handler._incoming_ip_push(source, dest, srcport, dstport, header, payload) |
| 44 |
return 0 |
| 45 |
""" |
| 46 |
|
| 47 |
if __name__ == '__main__': |
| 48 |
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
| 49 |
bus = dbus.SystemBus() |
| 50 |
loop = gobject.MainLoop() |
| 51 |
server = MMSHandler() |
| 52 |
loop.run() |