Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
    def start(self):
        self.logger.info('Starting websocket server')

        term_settings = {
            'height': self.height,
            'width': self.width,
            'winheight': self.winheight,
            "winwidth": self.winwidth,
        }

        # term_manager = SingleTermManager(shell_command=[self.shell])
        term_manager = UniqueTermManager(shell_command = [self.shell], \
            max_terminals = self.max_terminals, term_settings = term_settings)

        handlers = [
            # (r"/websocket", MyTermSocket, {'term_manager': term_manager}),
            # (r"/websocket", TermSocket, {'term_manager': term_manager}),
            (r"/websocket/([^/]*)", TermSocket, {
                'term_manager': term_manager
            }),
        ]

        app = tornado.web.Application(handlers)

        app.listen(self.port)
        self.logger.info('Listen on port ' + str(self.port))

        self.running = True
        self.logger.info('Start websocket server done')

        # self.ioloop.current().start()
        IOLoop.current().start()
Ejemplo n.º 3
0
def main(argv):
    term_manager = UniqueTermManager(shell_command=['bash'])
    handlers = [
                (r"/websocket", TermSocket,
                     {'term_manager': term_manager}),
                (r"/", TerminalPageHandler),
                (r"/xstatic/(.*)", tornado_xstatic.XStaticFileHandler,
                     {'allowed_modules': ['termjs']})
               ]
    app = tornado.web.Application(handlers, static_path=STATIC_DIR,
                      template_path=TEMPLATE_DIR,
                      xstatic_url = tornado_xstatic.url_maker('/xstatic/'))
    app.listen(8765, 'localhost')
    run_and_show_browser("http://localhost:8765/", term_manager)
Ejemplo n.º 4
0
def addhandr(contiden, comdexec):
    try:
        # echo(" * " + comdexec + " attached to " + contiden)
        urlpatrn = sha256((contiden + comdexec).encode()).hexdigest()
        comdexec = comdexec.split()
        stndexec = ["docker", "exec", "-ti", contiden]
        for indx in comdexec:
            stndexec.append(indx)
        mainobjc.add_handlers(
            r".*",  # match any host
            [(r"/" + urlpatrn, TermSocket, {
                "term_manager": UniqueTermManager(shell_command=stndexec)
            })])
        return {"retnmesg": "allow", "urlpatrn": urlpatrn}
    except Exception as expt:
        # echo(" * Failed to attach terminal" + "\n" + str(expt))
        return {"retnmesg": "deny"}
Ejemplo n.º 5
0
def main(argv):
    term_manager = UniqueTermManager(shell_command=["bash"])
    handlers = [
        (r"/websocket", TermSocket, {
            "term_manager": term_manager
        }),
        (r"/", TerminalPageHandler),
        (
            r"/xstatic/(.*)",
            tornado_xstatic.XStaticFileHandler,
            {
                "allowed_modules": ["termjs"]
            },
        ),
    ]
    app = tornado.web.Application(
        handlers,
        static_path=STATIC_DIR,
        template_path=TEMPLATE_DIR,
        xstatic_url=tornado_xstatic.url_maker("/xstatic/"),
    )
    app.listen(8765, "localhost")
    run_and_show_browser("http://localhost:8765/", term_manager)
Ejemplo n.º 6
0
class AttachmentEndpoint(tornado.web.RequestHandler):
    def set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "*")

    def get(self):
        try:
            contiden = self.get_argument("contiden")
            comdexec = self.get_argument("comdexec")
            self.write(addhandr(contiden, comdexec))
        except Exception as expt:
            # echo(" * Console attachment failed! - " + str(expt))
            self.set_header("Access-Control-Allow-Origin", "*")
            self.write({"retnmesg": "deny"})


termmngr = UniqueTermManager(shell_command=["sh"])

handlers = [(r"/websocket", TermSocket, {
    "term_manager": termmngr
}), (r"/atchcons/", AttachmentEndpoint)]


def mainterm(portqant):
    try:
        global mainobjc
        mainobjc = tornado.web.Application(handlers)
        echo(" * TermSocket started on port " + portqant)
        mainobjc.listen(portqant, "0.0.0.0")
        IOLoop.instance().start()
    except KeyboardInterrupt:
        echo("\n" + " * Shutting down on SIGINT")
Ejemplo n.º 7
0
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)