Beremiz_service.py
changeset 2323 33a0dbabccd3
parent 2321 0a3103cd825d
child 2324 1cf3768ebf85
equal deleted inserted replaced
2322:7ce4e5cf6339 2323:33a0dbabccd3
    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 
    76 
    76 
    77 # default values
    77 # default values
    78 interface = ''
    78 interface = ''
    79 port = 3000
    79 port = 3000
    80 webport = 8009
    80 webport = 8009
    81 wampsecret = None
    81 pskpath = None
    82 wampconf = None
    82 wampconf = None
    83 servicename = None
    83 servicename = None
    84 autostart = False
    84 autostart = False
    85 enablewx = True
    85 enablewx = True
    86 havewx = False
    86 havewx = False
   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()