123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package httpd
- type apiResponse struct {
- Error string `json:"error"`
- Message string `json:"message"`
- HTTPStatus int `json:"status"`
- }
- type externalAuthRequest struct {
- Username string `json:"username"`
- Password string `json:"password"`
- PublicKey string `json:"public_key"`
- }
- // SFTPGoExtensionsFilter defines filters based on file extensions
- type SFTPGoExtensionsFilter struct {
- Path string `json:"path"`
- AllowedExtensions []string `json:"allowed_extensions,omitempty"`
- DeniedExtensions []string `json:"denied_extensions,omitempty"`
- }
- // SFTPGoUserFilters defines additional restrictions for an SFTPGo user
- type SFTPGoUserFilters struct {
- AllowedIP []string `json:"allowed_ip,omitempty"`
- DeniedIP []string `json:"denied_ip,omitempty"`
- DeniedLoginMethods []string `json:"denied_login_methods,omitempty"`
- FileExtensions []SFTPGoExtensionsFilter `json:"file_extensions,omitempty"`
- }
- // S3FsConfig defines the configuration for S3 based filesystem
- type S3FsConfig struct {
- Bucket string `json:"bucket,omitempty"`
- KeyPrefix string `json:"key_prefix,omitempty"`
- Region string `json:"region,omitempty"`
- AccessKey string `json:"access_key,omitempty"`
- AccessSecret string `json:"access_secret,omitempty"`
- Endpoint string `json:"endpoint,omitempty"`
- StorageClass string `json:"storage_class,omitempty"`
- UploadPartSize int64 `json:"upload_part_size,omitempty"`
- UploadConcurrency int `json:"upload_concurrency,omitempty"`
- }
- // GCSFsConfig defines the configuration for Google Cloud Storage based filesystem
- type GCSFsConfig struct {
- Bucket string `json:"bucket,omitempty"`
- KeyPrefix string `json:"key_prefix,omitempty"`
- Credentials string `json:"credentials,omitempty"`
- AutomaticCredentials int `json:"automatic_credentials,omitempty"`
- StorageClass string `json:"storage_class,omitempty"`
- }
- // SFTPGoFilesystem defines cloud storage filesystem details
- type SFTPGoFilesystem struct {
- // 0 local filesystem, 1 Amazon S3 compatible, 2 Google Cloud Storage
- Provider int `json:"provider"`
- S3Config S3FsConfig `json:"s3config,omitempty"`
- GCSConfig GCSFsConfig `json:"gcsconfig,omitempty"`
- }
- type virtualFolder struct {
- VirtualPath string `json:"virtual_path"`
- MappedPath string `json:"mapped_path"`
- }
- // SFTPGoUser defines an SFTPGo user
- type SFTPGoUser struct {
- // Database unique identifier
- ID int64 `json:"id"`
- // 1 enabled, 0 disabled (login is not allowed)
- Status int `json:"status"`
- // Username
- Username string `json:"username"`
- // Account expiration date as unix timestamp in milliseconds. An expired account cannot login.
- // 0 means no expiration
- ExpirationDate int64 `json:"expiration_date"`
- Password string `json:"password,omitempty"`
- PublicKeys []string `json:"public_keys,omitempty"`
- HomeDir string `json:"home_dir"`
- // Mapping between virtual paths and filesystem paths outside the home directory. Supported for local filesystem only
- VirtualFolders []virtualFolder `json:"virtual_folders,omitempty"`
- // If sftpgo runs as root system user then the created files and directories will be assigned to this system UID
- UID int `json:"uid"`
- // If sftpgo runs as root system user then the created files and directories will be assigned to this system GID
- GID int `json:"gid"`
- // Maximum concurrent sessions. 0 means unlimited
- MaxSessions int `json:"max_sessions"`
- // Maximum size allowed as bytes. 0 means unlimited
- QuotaSize int64 `json:"quota_size"`
- // Maximum number of files allowed. 0 means unlimited
- QuotaFiles int `json:"quota_files"`
- // List of the granted permissions
- Permissions map[string][]string `json:"permissions"`
- // Used quota as bytes
- UsedQuotaSize int64 `json:"used_quota_size"`
- // Used quota as number of files
- UsedQuotaFiles int `json:"used_quota_files"`
- // Last quota update as unix timestamp in milliseconds
- LastQuotaUpdate int64 `json:"last_quota_update"`
- // Maximum upload bandwidth as KB/s, 0 means unlimited
- UploadBandwidth int64 `json:"upload_bandwidth"`
- // Maximum download bandwidth as KB/s, 0 means unlimited
- DownloadBandwidth int64 `json:"download_bandwidth"`
- // Last login as unix timestamp in milliseconds
- LastLogin int64 `json:"last_login"`
- // Additional restrictions
- Filters SFTPGoUserFilters `json:"filters"`
- // Filesystem configuration details
- FsConfig SFTPGoFilesystem `json:"filesystem"`
- }
|