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)
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
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
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
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