#!/usr/bin/env python3 import nilmrun.server import argparse import os import socket def main(): """Main entry point for the 'nilmrun-server' command line script""" parser = argparse.ArgumentParser( description = 'Run the NilmRun server', formatter_class = argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("-v", "--version", action="version", version=nilmrun.__version__) group = parser.add_argument_group("Standard options") group.add_argument('-a', '--address', help = 'Only listen on the given address', default = '0.0.0.0') group.add_argument('-p', '--port', help = 'Listen on the given port', type = int, default = 12381) group.add_argument('-q', '--quiet', help = 'Silence output', action = 'store_true') group.add_argument('-t', '--traceback', help = 'Provide tracebacks in client errors', action = 'store_true', default = False) args = parser.parse_args() # Configure the server if args.quiet: embedded = True else: embedded = False server = nilmrun.server.Server(host = args.address, port = args.port, force_traceback = args.traceback) # Print info if not args.quiet: print("NilmRun version: %s" % nilmrun.__version__) print(("Note: This server does not do any authentication! " + "Anyone who can connect can run arbitrary commands.")) if args.address == '0.0.0.0' or args.address == '::': host = socket.getfqdn() else: host = args.address print("Server URL: http://%s:%d/" % ( host, args.port)) print("----") server.start(blocking = True) if not args.quiet: print("Shutting down") if __name__ == "__main__": main()