in cmd/gitlab-sshd/main.go [45:102]
func main() {
command.CheckForVersionFlag(os.Args, Version, BuildTime)
flag.Parse()
cfg := new(config.Config)
if *configDir != "" {
var err error
cfg, err = config.NewFromDir(*configDir)
if err != nil {
log.WithError(err).Fatal("failed to load configuration from specified directory")
}
}
overrideConfigFromEnvironment(cfg)
if err := cfg.IsSane(); err != nil {
if *configDir == "" {
log.WithError(err).Fatal("no config-dir provided, using only environment variables")
} else {
log.WithError(err).Fatal("configuration error")
}
}
cfg.ApplyGlobalState()
logCloser := logger.ConfigureStandalone(cfg)
defer func() {
if err := logCloser.Close(); err != nil {
log.WithError(err).Fatal("Error closing logCloser")
}
}()
ctx, finished := command.Setup("gitlab-sshd", cfg)
defer finished()
cfg.GitalyClient.InitSidechannelRegistry(ctx)
server, err := sshd.NewServer(cfg)
if err != nil {
log.WithError(err).Fatal("Failed to start GitLab built-in sshd")
}
// Startup monitoring endpoint.
if cfg.Server.WebListen != "" {
startupMonitoringEndpoint(cfg, server)
}
ctx, cancel := context.WithCancel(ctx)
defer cancel()
done := make(chan os.Signal, 1)
signal.Notify(done, syscall.SIGINT, syscall.SIGTERM)
gracefulShutdown(ctx, done, cfg, server, cancel)
if err := server.ListenAndServe(ctx); err != nil {
log.WithError(err).Fatal("GitLab built-in sshd failed to listen for new connections")
}
}