ftpserver icon indicating copy to clipboard operation
ftpserver copied to clipboard

Support extended configuration fields to enable the extended features of ftpserverlib.

Open Ning-Qing opened this issue 1 year ago • 0 comments

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
}

Ning-Qing avatar Jan 23 '25 02:01 Ning-Qing