48 def usage(): |
48 def usage(): |
49 version() |
49 version() |
50 print(""" |
50 print(""" |
51 Usage of Beremiz PLC execution service :\n |
51 Usage of Beremiz PLC execution service :\n |
52 %s {[-n servicename] [-i IP] [-p port] [-x enabletaskbar] [-a autostart]|-h|--help} working_dir |
52 %s {[-n servicename] [-i IP] [-p port] [-x enabletaskbar] [-a autostart]|-h|--help} working_dir |
53 -n zeroconf service name (default:disabled) |
53 -n service name (default:None, zeroconf discovery disabled) |
54 -i IP address of interface to bind to (default:localhost) |
54 -i IP address of interface to bind to (default:localhost) |
55 -p port number default:3000 |
55 -p port number default:3000 |
56 -h print this help text and quit |
56 -h print this help text and quit |
57 -a autostart PLC (0:disable 1:enable) (default:0) |
57 -a autostart PLC (0:disable 1:enable) (default:0) |
58 -x enable/disable wxTaskbarIcon (0:disable 1:enable) (default:1) |
58 -x enable/disable wxTaskbarIcon (0:disable 1:enable) (default:1) |
59 -t enable/disable Twisted web interface (0:disable 1:enable) (default:1) |
59 -t enable/disable Twisted web interface (0:disable 1:enable) (default:1) |
60 -w web server port or "off" to disable web server (default:8009) |
60 -w web server port or "off" to disable web server (default:8009) |
61 -c WAMP client config file (can be overriden by wampconf.json in project) |
61 -c WAMP client config file (can be overriden by wampconf.json in project) |
62 -s WAMP client secret, given as a file (can be overriden by wamp.secret in project) |
62 -s PSK secret path (default:PSK disabled) |
63 -e python extension (absolute path .py) |
63 -e python extension (absolute path .py) |
64 |
64 |
65 working_dir - directory where are stored PLC files |
65 working_dir - directory where are stored PLC files |
66 """ % sys.argv[0]) |
66 """ % sys.argv[0]) |
67 |
67 |
118 elif o == "-w": |
118 elif o == "-w": |
119 webport = None if a == "off" else int(a) |
119 webport = None if a == "off" else int(a) |
120 elif o == "-c": |
120 elif o == "-c": |
121 wampconf = None if a == "off" else a |
121 wampconf = None if a == "off" else a |
122 elif o == "-s": |
122 elif o == "-s": |
123 wampsecret = None if a == "off" else a |
123 pskpath = None if a == "off" else a |
124 elif o == "-e": |
124 elif o == "-e": |
125 fnameanddirname = list(os.path.split(os.path.realpath(a))) |
125 fnameanddirname = list(os.path.split(os.path.realpath(a))) |
126 fnameanddirname.reverse() |
126 fnameanddirname.reverse() |
127 extensions.append(fnameanddirname) |
127 extensions.append(fnameanddirname) |
128 else: |
128 else: |
487 # Load extensions |
487 # Load extensions |
488 for extention_file, extension_folder in extensions: |
488 for extention_file, extension_folder in extensions: |
489 sys.path.append(extension_folder) |
489 sys.path.append(extension_folder) |
490 execfile(os.path.join(extension_folder, extention_file), locals()) |
490 execfile(os.path.join(extension_folder, extention_file), locals()) |
491 |
491 |
|
492 # Service name is used as an ID for stunnel's PSK |
|
493 # Some extension may set 'servicename' to a computed ID or Serial Number |
|
494 # instead of using commandline '-n' |
|
495 if servicename is not None and pskpath is not None: |
|
496 from runtime.Stunnel import ensurepsk |
|
497 ensurepsk(servicename, pskpath) |
492 |
498 |
493 runtime.CreatePLCObjectSingleton( |
499 runtime.CreatePLCObjectSingleton( |
494 WorkingDir, argv, statuschange, evaluator, pyruntimevars) |
500 WorkingDir, argv, statuschange, evaluator, pyruntimevars) |
495 |
501 |
496 pyroserver = Server(servicename, interface, port) |
502 pyroserver = Server(servicename, interface, port) |
509 LogMessageAndException(_("Nevow Web service failed. ")) |
515 LogMessageAndException(_("Nevow Web service failed. ")) |
510 |
516 |
511 if havewamp: |
517 if havewamp: |
512 try: |
518 try: |
513 WC.SetServer(pyroserver) |
519 WC.SetServer(pyroserver) |
514 WC.RegisterWampClient(wampconf, wampsecret) |
520 WC.RegisterWampClient(wampconf, pskpath) |
515 WC.RegisterWebSettings(NS) |
521 WC.RegisterWebSettings(NS) |
516 except Exception: |
522 except Exception: |
517 LogMessageAndException(_("WAMP client startup failed. ")) |
523 LogMessageAndException(_("WAMP client startup failed. ")) |
518 |
524 |
519 pyro_thread_started = Lock() |
525 pyro_thread_started = Lock() |