1package main
2
3import (
4 "log"
5
6 "github.com/charmbracelet/soft"
7
8 "github.com/meowgorithm/babyenv"
9)
10
11type serverConfig struct {
12 Host string `env:"SOFT_SERVE_HOST" default:""`
13 Port int `env:"SOFT_SERVE_PORT" default:"23231"`
14 KeyPath string `env:"SOFT_SERVE_KEY_PATH" default:".ssh/soft_serve_server_ed25519"`
15 RepoPath string `env:"SOFT_SERVE_REPO_PATH" default:".repos"`
16 InitialAdminKey string `env:"SOFT_SERVE_INITIAL_ADMIN_KEY" default:""`
17}
18
19func main() {
20 var cfg serverConfig
21 err := babyenv.Parse(&cfg)
22 if err != nil {
23 log.Fatalln(err)
24 }
25 s := soft.NewServer(
26 cfg.Host,
27 cfg.Port,
28 cfg.KeyPath,
29 cfg.RepoPath,
30 cfg.InitialAdminKey,
31 )
32 log.Printf("Starting SSH server on %s:%d\n", cfg.Host, cfg.Port)
33 err = s.ListenAndServe()
34 if err != nil {
35 log.Fatalln(err)
36 }
37}