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()