Ejemplo n.º 1
0
 def setup_middleware(self):
     self.validate_config()
     checker = SSHPubKeyDatabase(self.authorized_keys)
     ssh_realm = manhole_ssh.TerminalRealm()
     ssh_realm.chainedProtocolFactory = manhole_tap.chainedProtocolFactory({
         'worker': self.worker,
     })
     ssh_portal = portal.Portal(ssh_realm, [checker])
     factory = manhole_ssh.ConchFactory(ssh_portal)
     endpoint = serverFromString(reactor, self.twisted_endpoint)
     self.socket = yield endpoint.listen(factory)
Ejemplo n.º 2
0
def conch_helper(endpoint,
                 proto=None,
                 namespace=dict(),
                 keyDir=None,
                 keySize=4096):
    """
    Return a L{SSHKeyDirectory} based SSH service with the given parameters.

    Authorized keys are read as per L{SSHKeyDirectory} with ``baseDir`` being
    ``keyDir/users``.

    @param endpoint: endpoint for the SSH service
    @param namespace: the manhole namespace
    @param keyDir: directory that holds server/server.key file and
        users directory, which is used as ``baseDir`` in L{SSHKeyDirectory}
    @see: L{SSHKeyDirectory}
    """
    if keyDir is None:
        from twisted.python._appdirs import getDataDirectory

        keyDir = getDataDirectory()

    keyDir = filepath.FilePath(keyDir)
    keyDir.child("server").makedirs(True)
    keyDir.child("users").makedirs(True)

    checker = SSHPublicKeyChecker(SSHKeyDirectory(keyDir.child("users")))

    if proto is None:
        sshRealm = manhole_ssh.TerminalRealm()
        sshRealm.chainedProtocolFactory = chainedProtocolFactory(namespace)
    else:
        sshRealm = SSHSimpleRealm(proto)
    sshPortal = portal.Portal(sshRealm, [checker])

    sshKeyPath = keyDir.child("server").child("server.key")
    sshKey = keys._getPersistentRSAKey(sshKeyPath, keySize)

    sshFactory = manhole_ssh.ConchFactory(sshPortal)
    sshFactory.publicKeys[b"ssh-rsa"] = sshKey
    sshFactory.privateKeys[b"ssh-rsa"] = sshKey

    sshService = strports.service(endpoint, sshFactory)
    return sshService
Ejemplo n.º 3
0
    def makeService(self, options):
        settings.loadConfig(options["file"])

        svc = service.MultiService()

        checker = PublicKeyCredentialsChecker(pubAuthKeys)

        namespace = {"host": "67.23.43.147",
                     "user": "******",
                     "pw": "pkxmen0w",
                     "provision": provision}

        sshRealm = TerminalRealm()
        sshRealm.chainedProtocolFactory = chainedProtocolFactory(namespace)

        sshPortal = portal.Portal(sshRealm, [checker])
        sshFactory = ConchFactory(sshPortal)
        sshService = strports.service(str(settings.config["ssh"]["port"]),
                                      sshFactory)
        sshService.setServiceParent(svc)

        site = server.Site(web.getRoot(),
                           logPath=settings.config["web"]["log"])

        if int(settings.config["web"]["port"]) != 0:
            siteService = strports.service(settings.config["web"]["port"],
                                           site)
            siteService.setServiceParent(svc)

        if int(settings.config["web"]["sslport"]) != 0:
            key = settings.config["web"]["key"]
            cert = settings.config["web"]["cert"]
            port = int(settings.config["web"]["sslport"])

            sslFactory = ChainedOpenSSLContextFactory(key, cert)
            sslServer = internet.SSLServer(port, site, sslFactory)
            sslServer.setServiceParent(svc)

        return svc
Ejemplo n.º 4
0
    def makeService(self, options):
        settings.loadConfig(options["file"])

        svc = service.MultiService()

        checker = PublicKeyCredentialsChecker(pubAuthKeys)

        from shaft import supervisor 
        s = supervisor.get()

        # We don't start by default since this will be triggered by web
        #s.startMinecraft(jar=settings.config["minecraft"]["jar"],
        #                 path=settings.config["minecraft"]["home"])

        s.setServiceParent(svc)

        namespace = {"s": s,
                     "log": log,
                     "p": s.protocols}

        sshRealm = TerminalRealm()
        sshRealm.chainedProtocolFactory = chainedProtocolFactory(namespace)

        sshPortal = portal.Portal(sshRealm, [checker])
        sshFactory = ConchFactory(sshPortal)
        sshService = strports.service(str(settings.config["ssh"]["port"]),
                                      sshFactory)
        sshService.setServiceParent(svc)

        site = server.Site(web.getRoot(),
                           logPath=settings.config["web"]["log"])

        if int(settings.config["web"]["port"]) != 0:
            siteService = strports.service(settings.config["web"]["port"],
                                           site)
            siteService.setServiceParent(svc)

        return svc
Ejemplo n.º 5
0
    def makeService(self, options):
        settings.loadConfig(options["file"])

        svc = service.MultiService()

        checker = PublicKeyCredentialsChecker(pubAuthKeys)

        from shaft import supervisor
        s = supervisor.get()

        # We don't start by default since this will be triggered by web
        #s.startMinecraft(jar=settings.config["minecraft"]["jar"],
        #                 path=settings.config["minecraft"]["home"])

        s.setServiceParent(svc)

        namespace = {"s": s, "log": log, "p": s.protocols}

        sshRealm = TerminalRealm()
        sshRealm.chainedProtocolFactory = chainedProtocolFactory(namespace)

        sshPortal = portal.Portal(sshRealm, [checker])
        sshFactory = ConchFactory(sshPortal)
        sshService = strports.service(str(settings.config["ssh"]["port"]),
                                      sshFactory)
        sshService.setServiceParent(svc)

        site = server.Site(web.getRoot(),
                           logPath=settings.config["web"]["log"])

        if int(settings.config["web"]["port"]) != 0:
            siteService = strports.service(settings.config["web"]["port"],
                                           site)
            siteService.setServiceParent(svc)

        return svc