def start(browser=False, debug=False): """ Start a bottle web server. Derived from WSGIRefServer.run() to have control over the main loop. """ global DEBUG DEBUG = debug class FixedHandler(wsgiref.simple_server.WSGIRequestHandler): def address_string(self): # Prevent reverse DNS lookups please. return self.client_address[0] def log_request(*args, **kw): if debug: return wsgiref.simple_server.WSGIRequestHandler.log_request( *args, **kw) S.server = wsgiref.simple_server.make_server( conf['network_host'], conf['network_port'], bottle.default_app(), wsgiref.simple_server.WSGIServer, FixedHandler) S.server.timeout = 0.01 S.server.quiet = not debug if debug: bottle.debug(True) print("Library Directory: " + conf['rootdir']) print("Config Directory: " + conf['confdir']) print( "-----------------------------------------------------------------------------" ) print("Starting server at http://%s:%d/" % ('127.0.0.1', conf['network_port'])) print( "-----------------------------------------------------------------------------" ) driveboard.connect_withfind() # open web-browser if browser: try: webbrowser.open_new_tab('http://127.0.0.1:' + str(conf['network_port'])) except webbrowser.Error: print("Cannot open Webbrowser, please do so manually.") sys.stdout.flush() # make sure everything gets flushed # start server # print "INFO: Starting web server thread." S.start() driveboard.air_off() if conf['home_on_startup']: try: # will fail if board not flashed driveboard.homing() except: pass
def homing(): driveboard.homing() return '{}'