summaryrefslogtreecommitdiff
path: root/cmd/gitlab-sshd
diff options
context:
space:
mode:
authorLorenz Brun <lorenz@dolansoft.org>2021-01-18 18:36:25 +0000
committerNick Thomas <nick@gitlab.com>2021-01-18 18:36:25 +0000
commit2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828 (patch)
tree6ccc8b187438d1a218ee0ec833c339fa8faa8dd1 /cmd/gitlab-sshd
parent0e5660917f0316a2197ffc5add7a8f01d3e428be (diff)
downloadgitlab-shell-2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828.tar.gz
RFC: Simple built-in SSH server
Diffstat (limited to 'cmd/gitlab-sshd')
-rw-r--r--cmd/gitlab-sshd/Dockerfile3
-rw-r--r--cmd/gitlab-sshd/main.go57
2 files changed, 60 insertions, 0 deletions
diff --git a/cmd/gitlab-sshd/Dockerfile b/cmd/gitlab-sshd/Dockerfile
new file mode 100644
index 0000000..ba1f7f5
--- /dev/null
+++ b/cmd/gitlab-sshd/Dockerfile
@@ -0,0 +1,3 @@
+FROM gcr.io/distroless/static-debian10
+COPY gitlab-sshd /gitlab-sshd
+CMD ["/gitlab-sshd"] \ No newline at end of file
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)
+ }
+}