mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 16:17:49 +00:00
84 lines
2.2 KiB
Python
84 lines
2.2 KiB
Python
|
import urllib
|
||
|
import tornado.web, tornado.template, tornado.ioloop, tornado.httpserver
|
||
|
import rparse, utils
|
||
|
|
||
|
class _Page(tornado.web.RequestHandler):
|
||
|
def render(self, name, **kwargs):
|
||
|
b = self.application.templates.load(name + ".html").generate(**kwargs)
|
||
|
self.write(b)
|
||
|
|
||
|
|
||
|
class Index(_Page):
|
||
|
name = "index"
|
||
|
section = "main"
|
||
|
def get(self):
|
||
|
self.render(self.name, section=self.section)
|
||
|
|
||
|
|
||
|
class Preview(_Page):
|
||
|
name = "preview"
|
||
|
section = "main"
|
||
|
def get(self):
|
||
|
self.render(self.name, section=self.section)
|
||
|
|
||
|
|
||
|
class Help(_Page):
|
||
|
name = "help"
|
||
|
section = "help"
|
||
|
def get(self):
|
||
|
self.render(self.name, section=self.section)
|
||
|
|
||
|
|
||
|
class Log(_Page):
|
||
|
name = "log"
|
||
|
section = "log"
|
||
|
def get(self):
|
||
|
self.render(self.name, section=self.section)
|
||
|
|
||
|
|
||
|
class Pathod(object):
|
||
|
anchor = "/p/"
|
||
|
def __init__(self, application, request, **settings):
|
||
|
self.application, self.request, self.settings = application, request, settings
|
||
|
spec = urllib.unquote(self.request.uri)[len(self.anchor):]
|
||
|
try:
|
||
|
self.response = rparse.parse(self.settings, spec)
|
||
|
except rparse.ParseException, v:
|
||
|
self.response = rparse.InternalResponse(
|
||
|
800,
|
||
|
"Error parsing response spec: %s\n"%v.msg + v.marked()
|
||
|
)
|
||
|
|
||
|
def _execute(self, transforms, *args, **kwargs):
|
||
|
self.response.render(self.request)
|
||
|
|
||
|
|
||
|
class PathodApp(tornado.web.Application):
|
||
|
def __init__(self, **settings):
|
||
|
self.templates = tornado.template.Loader(utils.data.path("templates"))
|
||
|
tornado.web.Application.__init__(
|
||
|
self,
|
||
|
[
|
||
|
(r"/", Index),
|
||
|
(r"/log", Log),
|
||
|
(r"/help", Help),
|
||
|
(r"/preview", Preview),
|
||
|
(r"/p/.*", Pathod, settings),
|
||
|
],
|
||
|
static_path = utils.data.path("static"),
|
||
|
template_path = utils.data.path("templates"),
|
||
|
debug=True
|
||
|
)
|
||
|
|
||
|
|
||
|
# begin nocover
|
||
|
def run(application, port, ssl_options):
|
||
|
http_server = tornado.httpserver.HTTPServer(
|
||
|
application,
|
||
|
ssl_options=ssl_options
|
||
|
)
|
||
|
http_server.listen(port)
|
||
|
tornado.ioloop.IOLoop.instance().start()
|
||
|
|
||
|
|