fix sftpd.login_banner_file

This commit is contained in:
Jedrzej Gontarczyk 2024-06-21 18:02:58 +02:00
parent 47924716c1
commit 24614817b6

View file

@ -342,7 +342,10 @@ func (c *Configuration) Initialize(configDir string) error {
return err
}
c.configureKeyboardInteractiveAuth(serverConfig)
c.configureLoginBanner(serverConfig, configDir)
banner, err := c.getLoginBanner(configDir)
if err == nil {
serverConfig.ServerVersion = fmt.Sprintf("SSH-2.0-%s", banner)
}
c.checkSSHCommands()
exitChannel := make(chan error, 1)
@ -512,7 +515,8 @@ func (c *Configuration) configureSecurityOptions(serverConfig *ssh.ServerConfig)
return nil
}
func (c *Configuration) configureLoginBanner(serverConfig *ssh.ServerConfig, configDir string) {
func (c *Configuration) getLoginBanner(configDir string) (string, error) {
var err error
if c.LoginBannerFile != "" {
bannerFilePath := c.LoginBannerFile
if !filepath.IsAbs(bannerFilePath) {
@ -521,14 +525,16 @@ func (c *Configuration) configureLoginBanner(serverConfig *ssh.ServerConfig, con
bannerContent, err := os.ReadFile(bannerFilePath)
if err == nil {
banner := util.BytesToString(bannerContent)
serverConfig.BannerCallback = func(_ ssh.ConnMetadata) string {
return banner
}
return banner, nil
} else {
logger.WarnToConsole("unable to read SFTPD login banner file: %v", err)
logger.Warn(logSender, "", "unable to read login banner file: %v", err)
}
err = errors.New("Banner file inaccessible")
return "", err
}
err = errors.New("No banner file configured")
return "", err
}
func (c *Configuration) configureKeyboardInteractiveAuth(serverConfig *ssh.ServerConfig) {