You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

59 lines
1.9 KiB

  1. #!/usr/bin/env python3
  2. import nilmrun.server
  3. import argparse
  4. import os
  5. import socket
  6. def main():
  7. """Main entry point for the 'nilmrun-server' command line script"""
  8. parser = argparse.ArgumentParser(
  9. description = 'Run the NilmRun server',
  10. formatter_class = argparse.ArgumentDefaultsHelpFormatter)
  11. parser.add_argument("-v", "--version", action="version",
  12. version=nilmrun.__version__)
  13. group = parser.add_argument_group("Standard options")
  14. group.add_argument('-a', '--address',
  15. help = 'Only listen on the given address',
  16. default = '0.0.0.0')
  17. group.add_argument('-p', '--port', help = 'Listen on the given port',
  18. type = int, default = 12381)
  19. group.add_argument('-q', '--quiet', help = 'Silence output',
  20. action = 'store_true')
  21. group.add_argument('-t', '--traceback',
  22. help = 'Provide tracebacks in client errors',
  23. action = 'store_true', default = False)
  24. args = parser.parse_args()
  25. # Configure the server
  26. if args.quiet:
  27. embedded = True
  28. else:
  29. embedded = False
  30. server = nilmrun.server.Server(host = args.address,
  31. port = args.port,
  32. force_traceback = args.traceback)
  33. # Print info
  34. if not args.quiet:
  35. print("NilmRun version: %s" % nilmrun.__version__)
  36. print(("Note: This server does not do any authentication! " +
  37. "Anyone who can connect can run arbitrary commands."))
  38. if args.address == '0.0.0.0' or args.address == '::':
  39. host = socket.getfqdn()
  40. else:
  41. host = args.address
  42. print("Server URL: http://%s:%d/" % ( host, args.port))
  43. print("----")
  44. server.start(blocking = True)
  45. if not args.quiet:
  46. print("Shutting down")
  47. if __name__ == "__main__":
  48. main()