Removed Compile route and behem0th, updated dashb0ard path

This commit is contained in:
Philip Trauner 2017-04-20 17:27:20 +02:00
parent 90e15a8c14
commit ae93513fb8

View file

@ -14,63 +14,22 @@ from wsgiref.simple_server import make_server
from ws4py.server.wsgirefserver import WSGIServer, WebSocketWSGIRequestHandler
from ws4py.server.wsgiutils import WebSocketWSGIApplication
import behem0th
from bottle.bottle import route, run, static_file
@route("/")
def index():
return static_file("index.html", root="Shared/dashb1ard")
return static_file("index.html", root="Shared/dashb0ard")
@route("/static/<filepath:path>")
def static(filepath):
return static_file(filepath, root="Shared/dashb1ard/static")
return static_file(filepath, root="Shared/dashb0ard/static")
class Info(Route):
def run(self, data, handler):
handler.send({"routes" : list(handler.routes.keys())}, "info")
class Compile:
HAS_MAIN = re.compile(r"\w*\s*main\(\)\s*(\{|.*)$")
@staticmethod
def is_valid_c_program(path):
for line in open(path, "r").read().split("\n"):
if Compile.HAS_MAIN.match(line):
return True
return False
def __init__(self, source_path, binary_path):
self.source_path = os.path.abspath(source_path) + "/"
self.binary_path = os.path.abspath(binary_path) + "/"
self.wallaby_library_avaliable = os.path.isfile("/usr/local/lib/libaurora.so") and os.path.isfile("/usr/local/lib/libdaylite.so")
if not self.wallaby_library_avaliable:
Logging.warning("Wallaby library not found. All Wallaby functions are unavaliable.")
if platform.machine() != "armv7l":
Logging.warning("Wrong processor architecture! Generated binaries will not run on Wallaby Controllers.")
def compile(self, path, relpath, handler=None):
if relpath.endswith(".c") and Compile.is_valid_c_program(path + relpath):
name = "-".join(relpath.split("/")).rstrip(".c")
full_path = self.binary_path + name
if not os.path.exists(full_path):
os.mkdir(full_path)
error = True
command = ["gcc", "-pipe", "-O0", "-lwallaby", "-I%s" % self.source_path, "-o", "%s" % full_path + "/botball_user_program", path + relpath]
if not self.wallaby_library_avaliable:
del command[command.index("-lwallaby")]
p = Popen(command, stdout=PIPE, stderr=PIPE)
error = False if p.wait() == 0 else True
result = ""
for line in p.communicate():
result += line.decode()
if handler != None:
handler.send({"failed" : error, "returned" : result, "relpath" : relpath}, self.handler.reverse_routes[self])
class Subscribe(Route):
EDITOR = 1
@ -237,8 +196,6 @@ server.set_app(WebSocketWSGIApplication(handler_cls=Handler,
"peers" : Peers(),
"sensor" : DummyPipe(),
"identify" : DummyPipe(),
"list_programs" : DummyPipe(),
"run_program" : DummyPipe(),
"std_stream" : DummyPipe(),
"stop_programs" : DummyPipe(),
"shutdown" : DummyPipe(),
@ -246,12 +203,8 @@ server.set_app(WebSocketWSGIApplication(handler_cls=Handler,
"output" : DummyPipe()}}))
sync_client = behem0th.Client(path=config.path, verbose_log=config.debug)
try:
Logging.header("Server loop starting.")
sync_client.listen()
start_new_thread(run, (), {"host" : config.dashb0ard_address[0],
"port" : config.dashb0ard_address[1], "quiet" : True})
Logging.info("Starting dashb0ard on 'http://%s:%d'" % (config.dashb0ard_address[0],
@ -262,5 +215,4 @@ try:
except KeyboardInterrupt:
Logging.header("Gracefully shutting down server.")
server.server_close()
sync_client.close()
Logging.success("Server shutdown successful.")