ovpn-lb-socks5/test.py
2020-04-03 15:50:29 -04:00

83 lines
2.3 KiB
Python

import tornado.ioloop
import tornado.web
import json
import argparse
from o_manager import OManager
ap = argparse.ArgumentParser()
ap.add_argument("-s", "--session_folder", required=True,
help="path to the session folder")
args = vars(ap.parse_args())
session_folder = args["session_folder"]
om = OManager(session_folder)
class MainHandler(tornado.web.RequestHandler):
def get(self):
buf = f"ops len: {len(om.ops)} <br/>\n"
if len(om.ops):
for idx, op in enumerate(om.ops):
buf += f"op #{idx}, name: {op.name} <br/>\n"
buf += f"status: {op.status} <br/>\n"
buf += f"pid: {op.PID} <br/>\n"
buf += "log: <br/>\n"
buf += "<pre>\n"
buf += op.get_log()
buf += "\n</pre>\n"
self.write(buf)
class ConfigsHandeler(tornado.web.RequestHandler):
def get(self):
cfgs = json.loads(open("profiles.json", "r").read())
buf = "Select one configuration to create. <br/>\n"
for idx, cfg in enumerate(cfgs):
buf += f"<a href='/create?i={idx}'>{cfg['name']}</a><br/>\n"
self.write(buf)
class CreateInstantceHandler(tornado.web.RequestHandler):
def get(self):
idx = self.get_query_argument("i", None)
if idx != None:
idx = int(idx)
cfgs = json.loads(open("profiles.json", "r").read())
cfg = cfgs[idx]
om.new_op(cfg["cfg_fp"], cfg["name"],
additional_cfg=cfg["additional_cfg"])
self.write("create sucess!")
else:
self.write("need idx")
class StartInstatnceHandler(tornado.web.RequestHandler):
def get(self):
idx = self.get_query_argument("i", None)
if idx != None:
om.start_op(int(idx))
self.write("start sucess!")
else:
self.write("need idx")
class StopAll(tornado.web.RequestHandler):
def get(self):
om.stop_all()
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
(r"/select", ConfigsHandeler),
(r"/create", CreateInstantceHandler),
(r"/start", StartInstatnceHandler),
(r"/stop", StopAll)
])
if __name__ == "__main__":
app = make_app()
app.listen(8000)
tornado.ioloop.IOLoop.current().start()