def start(listen_address='127.0.0.1', listen_port=8001, ssl_crt=None, ssl_key=None, asterisk_binary='/usr/sbin/asterisk', asterisk_options='-vvvvvr'): salt.utils.process.appendproctitle('AsteriskCLI') log.info('Starting Asterisk CLI server at %s:%s.', listen_address, listen_port) io_loop = salt.ext.tornado.ioloop.IOLoop(make_current=False) io_loop.make_current() term_manager = UniqueTermManager( shell_command=[asterisk_binary, asterisk_options], ioloop=io_loop) handlers = [(r'/ws', MyTermSocket, { 'term_manager': term_manager }), (r"/xstatic/(.*)", tornado_xstatic.XStaticFileHandler, { 'allowed_modules': ['termjs'] })] # Init app. app = salt.ext.tornado.web.Application( handlers, static_path=STATIC_DIR, xstatic_url=tornado_xstatic.url_maker('/xstatic/')) ssl_options = None if all([ssl_crt, ssl_key]): ssl_options = {"certfile": ssl_crt, "keyfile": ssl_key} http_server = salt.ext.tornado.httpserver.HTTPServer( app, ssl_options=ssl_options) http_server.listen(listen_port, address=listen_address) try: if not io_loop._running: io_loop.start() finally: term_manager.shutdown()
import tornado.web from tornado.ioloop import IOLoop from terminado import TermSocket, UniqueTermManager import os,sys pid = str(os.getpid()) pidfile = "/home/try/xterm.pid" file(pidfile, 'w').write(pid) if __name__ == '__main__': term_manager = UniqueTermManager(shell_command=["firejail","--quiet","--seccomp=rmdir,exit","--nosound","--caps.drop=all","--name=code-playground","--rlimit-fsize=5000000","--rlimit-nofile=50","--private=/tmp","--net=none","--blacklist=/usr/bin/man","--blacklist=/bin/ps","--blacklist=/usr/bin/passwd","rbash"]) handlers = [ (r"/websocket", TermSocket, {'term_manager': term_manager}), (r"/()", tornado.web.StaticFileHandler, {'path':'/home/try/compiler/index.html'}), (r"/(.*)", tornado.web.StaticFileHandler, {'path':'/home/try/compiler/.'}) ] app = tornado.web.Application(handlers) app.listen(8079) try: IOLoop.current().start() finally: term_manager.shutdown() os.unlink(pidfile)