You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a Tornado websocket backend for the
Xterm.js Javascript terminal emulator library.
It evolved out of pyxterm, which
was part of GraphTerm (as
lineterm.py), v0.57.0 (2014-07-18), and ultimately derived from the
public-domain Ajaxterm
code, v0.11 (2008-11-13) (also on Github as part of
QWeb).
Modules:
terminado.management: controls launching virtual terminals,
connecting them to Tornado's event loop, and closing them down.
terminado.websocket: Provides a websocket handler for
communicating with a terminal.
terminado.uimodule: Provides a Terminal Tornado UI
Module.
JS:
terminado/_static/terminado.js: A lightweight wrapper to set up a
term.js terminal with a websocket.
Local Installation:
$ pip install -e .[test]
Usage example:
importos.pathimporttornado.webimporttornado.ioloop# This demo requires tornado_xstatic and XStatic-term.jsimporttornado_xstaticimportterminadoSTATIC_DIR=os.path.join(os.path.dirname(terminado.__file__), "_static")
classTerminalPageHandler(tornado.web.RequestHandler):
defget(self):
returnself.render(
"termpage.html",
static=self.static_url,
xstatic=self.application.settings["xstatic_url"],
ws_url_path="/websocket",
)
if__name__=="__main__":
term_manager=terminado.SingleTermManager(shell_command=["bash"])
handlers= [
(r"/websocket", terminado.TermSocket, {"term_manager": term_manager}),
(r"/", TerminalPageHandler),
(
r"/xstatic/(.*)",
tornado_xstatic.XStaticFileHandler,
{"allowed_modules": ["termjs"]},
),
]
app=tornado.web.Application(
handlers,
static_path=STATIC_DIR,
xstatic_url=tornado_xstatic.url_maker("/xstatic/"),
)
# Serve at https://localhost:8765/ N.B. Leaving out 'localhost' here will# work, but it will listen on the public network interface as well.# Given what terminado does, that would be rather a security hole.app.listen(8765, "localhost")
try:
tornado.ioloop.IOLoop.instance().start()
finally:
term_manager.shutdown()
See the demos
directory for
more examples. This is a simplified version of the single.py demo.