diff options
author | Lorenz Brun <lorenz@dolansoft.org> | 2021-01-18 18:36:25 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2021-01-18 18:36:25 +0000 |
commit | 2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828 (patch) | |
tree | 6ccc8b187438d1a218ee0ec833c339fa8faa8dd1 /cmd/gitlab-sshd/main.go | |
parent | 0e5660917f0316a2197ffc5add7a8f01d3e428be (diff) | |
download | gitlab-shell-2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828.tar.gz |
RFC: Simple built-in SSH server
Diffstat (limited to 'cmd/gitlab-sshd/main.go')
-rw-r--r-- | cmd/gitlab-sshd/main.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/gitlab-sshd/main.go b/cmd/gitlab-sshd/main.go new file mode 100644 index 0000000..b9ea67a --- /dev/null +++ b/cmd/gitlab-sshd/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "flag" + "os" + + log "github.com/sirupsen/logrus" + + "gitlab.com/gitlab-org/gitlab-shell/internal/config" + "gitlab.com/gitlab-org/gitlab-shell/internal/logger" + "gitlab.com/gitlab-org/gitlab-shell/internal/sshd" +) + +var ( + configDir = flag.String("config-dir", "", "The directory the config is in") +) + +func overrideConfigFromEnvironment(cfg *config.Config) { + if gitlabUrl := os.Getenv("GITLAB_URL"); gitlabUrl != "" { + cfg.GitlabUrl = gitlabUrl + } + if gitlabTracing := os.Getenv("GITLAB_TRACING"); gitlabTracing != "" { + cfg.GitlabTracing = gitlabTracing + } + if gitlabShellSecret := os.Getenv("GITLAB_SHELL_SECRET"); gitlabShellSecret != "" { + cfg.Secret = gitlabShellSecret + } + if gitlabLogFormat := os.Getenv("GITLAB_LOG_FORMAT"); gitlabLogFormat != "" { + cfg.LogFormat = gitlabLogFormat + } + return +} + +func main() { + flag.Parse() + cfg := new(config.Config) + if *configDir != "" { + var err error + cfg, err = config.NewFromDir(*configDir) + if err != nil { + log.Fatalf("failed to load configuration from specified directory: %v", err) + } + } + overrideConfigFromEnvironment(cfg) + cfg.ApplyServerDefaults() + if err := cfg.IsSane(); err != nil { + if *configDir == "" { + log.Warn("note: no config-dir provided, using only environment variables") + } + log.Fatalf("configuration error: %v", err) + } + logger.ConfigureStandalone(cfg) + + if err := sshd.Run(cfg); err != nil { + log.Fatalf("Failed to start GitLab built-in sshd: %v", err) + } +} |