all repos

mugit @ da1546430020daf5b14c456278e45471dff4d259

🐮 git server that your cow will love

mugit/internal/cli/ssh_shell.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
ssh: dont write slog to output, 1 month ago
1
package cli
2
3
import (
4
	"context"
5
	"errors"
6
	"fmt"
7
	"os"
8
9
	"github.com/urfave/cli/v3"
10
)
11
12
var errSSHDisabled = errors.New("ssh is disabled")
13
14
func (c *Cli) sshShellAction(ctx context.Context, cmd *cli.Command) error {
15
	if !c.cfg.SSH.Enable {
16
		return errSSHDisabled
17
	}
18
19
	sshCommand := os.Getenv("SSH_ORIGINAL_COMMAND")
20
	if err := c.ssh.HandleCommand(ctx, sshCommand, os.Stdin, os.Stdout, os.Stderr); err != nil {
21
		os.Exit(1)
22
		return nil
23
	}
24
	return nil
25
}
26
27
func (c *Cli) sshAuthorizedKeysAction(ctx context.Context, cmd *cli.Command) error {
28
	if !c.cfg.SSH.Enable {
29
		return errSSHDisabled
30
	}
31
32
	fingerprint := cmd.Args().First()
33
	if fingerprint == "" {
34
		return fmt.Errorf("fingerprint is required")
35
	}
36
37
	executablePath, err := os.Executable()
38
	if err != nil {
39
		return err
40
	}
41
42
	out := c.ssh.AuthorizedKeys(executablePath)
43
	fmt.Fprint(os.Stdout, out)
44
45
	return nil
46
}