#!/usr/bin/env python

import dbus
import dbus.service
import dbus.glib
import gobject
import os
import signal
import subprocess
import pwd
import gobject
import sys

if not os.getenv('LTSP_CLIENT'):
	sys.exit(0)

username = pwd.getpwuid(os.getuid())[0]
ppid = os.getppid()
bus = dbus.SystemBus()
#remote_object = bus.get_object("com.ubuntu.StudentControlPanel", "/SCPObject")
#iface = dbus.Interface(remote_object, "com.ubuntu.StudentControlPanel.Comm")

def new_message(message):
   print "reser"
   for user in message[0]:
       if user == username:
           if message[1][0] == "kill":
               subprocess.Popen(['killall', '-9', '-u', user, message[2][0]])
               print message
               #os.kill(int(message[2][0]), signal.SIGTERM)
           if message[1][0] == "exec":
               subprocess.Popen(message[2][0], shell=True)
               print "execing"
           if message[1][0] == "mess":
               print "messaging"
               subprocess.Popen(['zenity', '--info', '--text="' + message[2][0] + '"', '--title="Message from admin"'])
           if message[1][0] == "lock":
               subprocess.Popen(['gnome-screensaver-command', '--lock'])
           if message[1][0] == "unlock":
               subprocess.Popen(['gnome-screensaver-command', '--deactivate'])

def parent_poller(ppid):
	listutmp = subprocess.Popen(['ps ax| grep "^[ ]*' + str(ppid) + '"'], shell=True, stdout=subprocess.PIPE)
	listu = listutmp.stdout.read()
	if not listu:
		sys.exit(0)
	return True

bus.add_signal_receiver(new_message,
                        signal_name='GotSignal',
                        dbus_interface='com.ubuntu.StudentControlPanel.Comm',
                        path='/SCPObject')

parent_timer=gobject.timeout_add (10000, parent_poller, ppid)

mainloop = gobject.MainLoop()
mainloop.run()
