#!/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":
		os.kill(int(message[2][0]), signal.SIGKILL)
	    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()
