func switchnsGit() { var u *user.User var err error var repoId git.RepoIdentifier uid := os.Getuid() originalCommand := os.Getenv("SSH_ORIGINAL_COMMAND") if u, err = user.LookupId(strconv.Itoa(uid)); err != nil { fmt.Printf("Couldn't find user with uid %n\n", uid) os.Exit(2) } if uid != 0 { if !isValidGitCommand(originalCommand, !gitRw) { fmt.Printf("Invalid git command: %s\n", originalCommand) os.Exit(2) } if repoId, err = git.NewIdentifierFromUser(u); err != nil { fmt.Printf("Couldn't create identifier for user %v\n", u) os.Exit(2) } env := []string{fmt.Sprintf("HOME=%s", repoId.RepositoryPathFor())} client, err := docker.GetConnection("unix:///var/run/docker.sock") if err != nil { fmt.Printf("Unable to connect to server\n") os.Exit(3) } runCommandInContainer(client, "geard-githost", []string{"/usr/bin/git-shell", "-c", originalCommand}, env) } else { fmt.Println("Cannot switch into any git repo as root user") os.Exit(2) } }
func switchnsGit(cmd *cobra.Command, args []string) { var u *user.User var err error var repoId git.RepoIdentifier uid := os.Getuid() originalCommand := os.Getenv("SSH_ORIGINAL_COMMAND") if u, err = user.LookupId(strconv.Itoa(uid)); err != nil { os.Exit(2) } if uid != 0 { if !isValidGitCommand(originalCommand, !git_rw) { os.Exit(2) } if repoId, err = git.NewIdentifierFromUser(u); err != nil { os.Exit(2) } env := []string{fmt.Sprintf("HOME=%s", repoId.RepositoryPathFor())} runCommand("geard-githost", []string{"/usr/bin/git-shell", "-c", originalCommand}, env) } else { fmt.Println("Cannot switch into any git repo as root user") os.Exit(2) } }