ftpserver
ftpserver copied to clipboard
Support extended configuration fields to enable the extended features of ftpserverlib.
For example, enable the HASH feature.
// Extensions define the relevant configurations for extended features
type Extensions struct {
EnableHASH bool `json:"enable_hash"` // Enable support for calculating hash value of files
}
// Content defines the content of the config file
type Content struct {
Version int `json:"version"` // File format version
ListenAddress string `json:"listen_address"` // Address to listen on
PublicHost string `json:"public_host"` // Public host to listen on
MaxClients int `json:"max_clients"` // Maximum clients who can connect
HashPlaintextPasswords bool `json:"hash_plaintext_passwords"` // Overwrite plain-text passwords with hashed equivalents
Accesses []*Access `json:"accesses"` // Accesses offered to users
PassiveTransferPortRange *PortRange `json:"passive_transfer_port_range"` // Listen port range
Extensions Extensions `json:"extensions"` // Extended features
Logging Logging `json:"logging"` // Logging parameters
TLS *TLS `json:"tls"`
}
// GetSettings returns some general settings around the server setup
func (s *Server) GetSettings() (*serverlib.Settings, error) {
conf := s.config.Content
var portRange *serverlib.PortRange
if conf.PassiveTransferPortRange != nil {
portRange = &serverlib.PortRange{
Start: conf.PassiveTransferPortRange.Start,
End: conf.PassiveTransferPortRange.End,
}
}
return &serverlib.Settings{
ListenAddr: conf.ListenAddress,
PublicHost: conf.PublicHost,
PassiveTransferPortRange: portRange,
EnableHASH: conf.Extensions.EnableHASH,
}, nil
}