def start_web_server(args): settings.parse_args(args) mkdir_p(settings.rel_path(".esphome")) if settings.using_auth: path = esphome_storage_path(settings.config_dir) storage = EsphomeStorageJSON.load(path) if storage is None: storage = EsphomeStorageJSON.get_default() storage.save(path) settings.cookie_secret = storage.cookie_secret app = make_app(args.verbose) if args.socket is not None: _LOGGER.info( "Starting dashboard web server on unix socket %s and configuration dir %s...", args.socket, settings.config_dir, ) server = tornado.httpserver.HTTPServer(app) socket = tornado.netutil.bind_unix_socket(args.socket, mode=0o666) server.add_socket(socket) else: _LOGGER.info( "Starting dashboard web server on http://%s:%s and configuration dir %s...", args.address, args.port, settings.config_dir, ) app.listen(args.port, args.address) if args.open_ui: import webbrowser webbrowser.open(f"http://{args.address}:{args.port}") if settings.status_use_ping: status_thread = PingStatusThread() else: status_thread = MDNSStatusThread() status_thread.start() try: tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: _LOGGER.info("Shutting down...") STOP_EVENT.set() PING_REQUEST.set() status_thread.join() if args.socket is not None: os.remove(args.socket)
def start_web_server(args): global CONFIG_DIR global PASSWORD_DIGEST global USING_PASSWORD global ON_HASSIO global USING_HASSIO_AUTH global COOKIE_SECRET CONFIG_DIR = args.configuration mkdir_p(CONFIG_DIR) mkdir_p(os.path.join(CONFIG_DIR, ".esphome")) ON_HASSIO = args.hassio if ON_HASSIO: USING_HASSIO_AUTH = not get_bool_env('DISABLE_HA_AUTHENTICATION') USING_PASSWORD = False else: USING_HASSIO_AUTH = False USING_PASSWORD = args.password if USING_PASSWORD: if IS_PY2: PASSWORD_DIGEST = hmac.new(args.password).digest() else: PASSWORD_DIGEST = hmac.new(args.password.encode()).digest() if USING_HASSIO_AUTH or USING_PASSWORD: path = esphome_storage_path(CONFIG_DIR) storage = EsphomeStorageJSON.load(path) if storage is None: storage = EsphomeStorageJSON.get_default() storage.save(path) COOKIE_SECRET = storage.cookie_secret app = make_app(args.verbose) if args.socket is not None: _LOGGER.info( "Starting dashboard web server on unix socket %s and configuration dir %s...", args.socket, CONFIG_DIR) server = tornado.httpserver.HTTPServer(app) socket = tornado.netutil.bind_unix_socket(args.socket, mode=0o666) server.add_socket(socket) else: _LOGGER.info( "Starting dashboard web server on port %s and configuration dir %s...", args.port, CONFIG_DIR) app.listen(args.port) if args.open_ui: import webbrowser webbrowser.open('localhost:{}'.format(args.port)) if STATUS_USE_PING: status_thread = PingStatusThread() else: status_thread = MDNSStatusThread() status_thread.start() try: tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: _LOGGER.info("Shutting down...") STOP_EVENT.set() PING_REQUEST.set() status_thread.join() if args.socket is not None: os.remove(args.socket)