def serve(self): logging.disable(logging.INFO) key = Key.get(self.args.key_id) member = key.getMember() if not os.environ.get("SSH_ORIGINAL_COMMAND"): print "Hi %s!" % member.username print "You've successfully authenticated, but %s does not provide shell access." % Config.get("phoenix", "app_name", "Phoenix") print "Use the following command to clone a repository:" print " > git clone git@%s:%s/repository.git" % (gethostname(), member.username) return False else: (command, fullpath) = os.environ.get("SSH_ORIGINAL_COMMAND").replace("'", "").split() if not Validate.gitcommand(command): raise Exception(command) print "Hi %s!" % member.username print "You've successfully authenticated, but %s does not provide shell access." % Config.get("phoenix", "app_name", "Phoenix") print "Use the following command to clone a repository:" print " > git clone git@%s:%s/repository.git" % (gethostname(), member.username) return False (username, repopath) = fullpath.split("/") try: owner = Member.selectBy(username=username)[0] repo = Repository.selectBy(member=owner, path=repopath)[0] except IndexError: logging.error("Repository `%s' not found but requested ..." % fullpath) raise ClientException("You are not allowed in this repository!") if repo.hasAccess(member, "master", "", "U" if command == "git-receive-pack" else "R"): __import__("os").execvp("git", ["git", "shell", "-c", "%s '%s'" % (command, repo.getFullpath())]) else: logging.error("User `%s' tried to access repository `%s' ..." % (member.id, repo.id)) raise ClientException("You are not allowed in this repository!")
def removekey(self): logging.info("Defining key id ...") id = self.args.key_id logging.info("Checking if the key exists ...") key = Key.get(id) if not key: raise Exception("The key with the id `%s' does not exits." % id) logging.info("Removing the key from the database ...") key.destroySelf() print "Done."
def serve(self): logging.disable(logging.INFO) key = Key.get(self.args.key_id) member = key.getMember() if not os.environ.get("SSH_ORIGINAL_COMMAND"): print "Hi %s!" % member.username print "You've successfully authenticated, but %s does not provide shell access." % Config.get( "phoenix", "app_name", "Phoenix") print "Use the following command to clone a repository:" print " > git clone git@%s:%s/repository.git" % ( gethostname(), member.username) return False else: (command, fullpath) = os.environ.get("SSH_ORIGINAL_COMMAND").replace( "'", "").split() if not Validate.gitcommand(command): raise Exception(command) print "Hi %s!" % member.username print "You've successfully authenticated, but %s does not provide shell access." % Config.get( "phoenix", "app_name", "Phoenix") print "Use the following command to clone a repository:" print " > git clone git@%s:%s/repository.git" % ( gethostname(), member.username) return False (username, repopath) = fullpath.split("/") try: owner = Member.selectBy(username=username)[0] repo = Repository.selectBy(member=owner, path=repopath)[0] except IndexError: logging.error("Repository `%s' not found but requested ..." % fullpath) raise ClientException("You are not allowed in this repository!") if repo.hasAccess(member, "master", "", "U" if command == "git-receive-pack" else "R"): __import__("os").execvp("git", [ "git", "shell", "-c", "%s '%s'" % (command, repo.getFullpath()) ]) else: logging.error("User `%s' tried to access repository `%s' ..." % (member.id, repo.id)) raise ClientException("You are not allowed in this repository!")
def key(cls, id): from Phoenix.Models import Key if Key.get(id): return True return False