USE_DB = 0
+import ConfigParser
import sys, os, string, re, pwd
if USE_DB: import pg
from time import time, sleep
from random import random, seed
from Idler import TrainIdler,GrayIdler
import socket
-from traceback import print_tb
+from posix import geteuid
GREETING = 'UCC SNACKS'
PIN_LENGTH = 4
# XXX this should move somewhere else:
if cur_selection == '55':
mk.set_message('OPENSESAME')
- ret = os.system('su - "%s" -c "dispense door"'%username)
+ if geteuid() == 0:
+ ret = os.system('su - "%s" -c "dispense door"'%username)
+ else:
+ ret = os.system('dispense door')
if ret == 0:
mk.set_message(center('DOOR OPEN'))
else:
print "Error reading config file "+config_file+": " + str(e)
sys.exit(1)
-
-if __name__ == '__main__':
- import ConfigParser
-
+def do_vend_server():
options = parse_args()
config_opts = VendConfigFile(options.config_file, config_options)
rfh, wfh = connect_to_vend(options, config_opts)
except (LATClientException, socket.error), e:
(exc_type, exc_value, exc_traceback) = sys.exc_info()
+ del exc_traceback
print
print "Connection error: "+str(exc_type)+" "+str(e)
- print_tb(exc_traceback)
- del exc_traceback
print "Trying again in 5 seconds."
sleep(5)
continue
print
print "Connection died, trying again..."
+
+if __name__ == '__main__':
+ while True:
+ try:
+ do_vend_server()
+ except KeyboardInterrupt:
+ print "Killed by SIGINT."
+ break
+ except:
+ (exc_type, exc_value, exc_traceback) = sys.exc_info()
+ print
+ print "Uh-oh, unhandled " + str(exc_type) + " exception"
+ print "Message: ", str(exc_value)
+ print
+ print_tb(exc_traceback)
+ del exc_traceback
+ print
+ print "This message should be considered a bug in the Vend Server."
+ print "Please report this to someone who can fix it."
+ print
+ print "Trying again anyway (might not help, but hey...)"
+