From 8d48e90de1df905ab5b1b69f60fdb3da1be6f953 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 13 Mar 2024 13:35:49 -0700 Subject: [PATCH] Split git-receive-pack and git-upload-pack into separate functions --- ssh_commands.go | 8 ++++++++ ssh_server.go | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ssh_commands.go b/ssh_commands.go index aa10b41..f965f7a 100644 --- a/ssh_commands.go +++ b/ssh_commands.go @@ -22,6 +22,14 @@ func cmdNotFound(ctx context.Context, s ssh.Session, cmd []string) int { return 1 } +func (serv *Server) cmdGitReceivePack(ctx context.Context, s ssh.Session, cmd []string) int { + return serv.cmdRepoAction(ctx, s, cmd, AccessLevelWrite) +} + +func (serv *Server) cmdGitUploadPack(ctx context.Context, s ssh.Session, cmd []string) int { + return serv.cmdRepoAction(ctx, s, cmd, AccessLevelRead) +} + func (serv *Server) cmdRepoAction(ctx context.Context, s ssh.Session, cmd []string, access AccessLevel) int { if len(cmd) != 2 { _ = writeStringFmt(s.Stderr(), "Missing repo name argument\r\n") diff --git a/ssh_server.go b/ssh_server.go index 321e5a5..931dd57 100644 --- a/ssh_server.go +++ b/ssh_server.go @@ -218,9 +218,9 @@ func (serv *Server) handleSession(s ssh.Session) { case "whoami": exit = cmdWhoami(ctx, s, cmd) case "git-receive-pack": - exit = serv.cmdRepoAction(ctx, s, cmd, AccessLevelWrite) + exit = serv.cmdGitReceivePack(ctx, s, cmd) case "git-upload-pack": - exit = serv.cmdRepoAction(ctx, s, cmd, AccessLevelRead) + exit = serv.cmdGitUploadPack(ctx, s, cmd) default: exit = cmdNotFound(ctx, s, cmd) }