SFTP: support reloading user store on HUP signal (#7651)
Fixes #7650 This change enables the SFTP server to reload the user store configuration (sftp_userstore.json) when a HUP signal is sent to the process, without requiring a service restart. Changes: - Add Reload() method to FileStore to re-read users from disk - Add Reload() method to SFTPService to handle reload requests - Register reload hook with grace.OnReload() in sftp command This allows administrators to add users or change access policies dynamically by editing the user store file and sending a HUP signal (e.g., 'systemctl reload seaweedfs' or 'kill -HUP <pid>').
This commit is contained in:
@@ -300,3 +300,15 @@ func (s *SFTPService) handleSFTP(channel ssh.Channel, fs *SftpServer) {
|
||||
glog.Errorf("SFTP server finished with error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Reload reloads the user store from disk, useful for HUP signal handling
|
||||
func (s *SFTPService) Reload() {
|
||||
glog.V(0).Info("Reload SFTP server...")
|
||||
if fileStore, ok := s.userStore.(*user.FileStore); ok {
|
||||
if err := fileStore.Reload(); err != nil {
|
||||
glog.Errorf("Failed to reload user store: %v", err)
|
||||
} else {
|
||||
glog.V(0).Info("Successfully reloaded SFTP user store")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,3 +264,8 @@ func (s *FileStore) CreateUser(username, password string) (*User, error) {
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
// Reload reloads users from the file, useful for HUP signal handling
|
||||
func (s *FileStore) Reload() error {
|
||||
return s.loadUsers()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user