mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-22 04:50:43 -05:00
502 lines
12 KiB
Go
502 lines
12 KiB
Go
package config
|
|
|
|
import "context"
|
|
|
|
// Log defines the available logging configuration.
|
|
type Log struct {
|
|
Level string
|
|
Pretty bool
|
|
Color bool
|
|
File string
|
|
}
|
|
|
|
// Debug defines the available debug configuration.
|
|
type Debug struct {
|
|
Addr string
|
|
Token string
|
|
Pprof bool
|
|
Zpages bool
|
|
}
|
|
|
|
// Gateway defines the available gateway configuration.
|
|
type Gateway struct {
|
|
Port
|
|
CommitShareToStorageGrant bool
|
|
CommitShareToStorageRef bool
|
|
DisableHomeCreationOnLogin bool
|
|
ShareFolder string
|
|
LinkGrants string
|
|
HomeMapping string
|
|
EtagCacheTTL int
|
|
}
|
|
|
|
// StorageRegistry defines the available storage registry configuration
|
|
type StorageRegistry struct {
|
|
Driver string
|
|
// HomeProvider is the path in the global namespace that the static storage registry uses to determine the home storage
|
|
HomeProvider string
|
|
Rules []string
|
|
JSON string
|
|
}
|
|
|
|
// AppRegistry defines the available app registry configuration
|
|
type AppRegistry struct {
|
|
Driver string
|
|
MimetypesJSON string
|
|
}
|
|
|
|
// AppProvider defines the available app provider configuration
|
|
type AppProvider struct {
|
|
Port
|
|
ExternalAddr string
|
|
Driver string
|
|
WopiDriver WopiDriver
|
|
AppsURL string
|
|
OpenURL string
|
|
}
|
|
|
|
type WopiDriver struct {
|
|
AppAPIKey string
|
|
AppDesktopOnly bool
|
|
AppIconURI string
|
|
AppInternalURL string
|
|
AppName string
|
|
AppURL string
|
|
Insecure bool
|
|
IopSecret string
|
|
JWTSecret string
|
|
WopiURL string
|
|
}
|
|
|
|
// Sharing defines the available sharing configuration.
|
|
type Sharing struct {
|
|
Port
|
|
UserDriver string
|
|
UserJSONFile string
|
|
UserSQLUsername string
|
|
UserSQLPassword string
|
|
UserSQLHost string
|
|
UserSQLPort int
|
|
UserSQLName string
|
|
PublicDriver string
|
|
PublicJSONFile string
|
|
PublicPasswordHashCost int
|
|
PublicEnableExpiredSharesCleanup bool
|
|
PublicJanitorRunInterval int
|
|
UserStorageMountID string
|
|
}
|
|
|
|
// Port defines the available port configuration.
|
|
type Port struct {
|
|
// MaxCPUs can be a number or a percentage
|
|
MaxCPUs string
|
|
LogLevel string
|
|
// GRPCNetwork can be tcp, udp or unix
|
|
GRPCNetwork string
|
|
// GRPCAddr to listen on, hostname:port (0.0.0.0:9999 for all interfaces) or socket (/var/run/reva/sock)
|
|
GRPCAddr string
|
|
// Protocol can be grpc or http
|
|
// HTTPNetwork can be tcp, udp or unix
|
|
HTTPNetwork string
|
|
// HTTPAddr to listen on, hostname:port (0.0.0.0:9100 for all interfaces) or socket (/var/run/reva/sock)
|
|
HTTPAddr string
|
|
// Protocol can be grpc or http
|
|
Protocol string
|
|
// Endpoint is used by the gateway and registries (eg localhost:9100 or cloud.example.com)
|
|
Endpoint string
|
|
// DebugAddr for the debug endpoint to bind to
|
|
DebugAddr string
|
|
// Services can be used to give a list of services that should be started on this port
|
|
Services []string
|
|
// Config can be used to configure the reva instance.
|
|
// Services and Protocol will be ignored if this is used
|
|
Config map[string]interface{}
|
|
|
|
// Context allows for context cancellation and propagation
|
|
Context context.Context
|
|
|
|
// Supervised is used when running under an oCIS runtime supervision tree
|
|
Supervised bool
|
|
}
|
|
|
|
// Users defines the available users configuration.
|
|
type Users struct {
|
|
Port
|
|
Driver string
|
|
JSON string
|
|
UserGroupsCacheExpiration int
|
|
}
|
|
|
|
// AuthMachineConfig defines the available configuration for the machine auth driver.
|
|
type AuthMachineConfig struct {
|
|
MachineAuthAPIKey string
|
|
}
|
|
|
|
// Groups defines the available groups configuration.
|
|
type Groups struct {
|
|
Port
|
|
Driver string
|
|
JSON string
|
|
GroupMembersCacheExpiration int
|
|
}
|
|
|
|
// FrontendPort defines the available frontend configuration.
|
|
type FrontendPort struct {
|
|
Port
|
|
|
|
AppProviderPrefix string
|
|
ArchiverPrefix string
|
|
DatagatewayPrefix string
|
|
Favorites bool
|
|
OCDavPrefix string
|
|
OCSPrefix string
|
|
OCSSharePrefix string
|
|
OCSHomeNamespace string
|
|
PublicURL string
|
|
OCSCacheWarmupDriver string
|
|
OCSResourceInfoCacheTTL int
|
|
Middleware Middleware
|
|
}
|
|
|
|
// Middleware configures reva middlewares.
|
|
type Middleware struct {
|
|
Auth Auth
|
|
}
|
|
|
|
// Auth configures reva http auth middleware.
|
|
type Auth struct {
|
|
CredentialsByUserAgent map[string]string
|
|
}
|
|
|
|
// DataGatewayPort has a public url
|
|
type DataGatewayPort struct {
|
|
Port
|
|
PublicURL string
|
|
}
|
|
|
|
// StoragePort defines the available storage configuration.
|
|
type StoragePort struct {
|
|
Port
|
|
Driver string
|
|
MountPath string
|
|
MountID string
|
|
ExposeDataServer bool
|
|
// url the data gateway will use to route requests
|
|
DataServerURL string
|
|
|
|
// for HTTP ports with only one http service
|
|
HTTPPrefix string
|
|
TempFolder string
|
|
ReadOnly bool
|
|
}
|
|
|
|
// PublicStorage configures a public storage provider
|
|
type PublicStorage struct {
|
|
StoragePort
|
|
|
|
PublicShareProviderAddr string
|
|
UserProviderAddr string
|
|
}
|
|
|
|
// StorageConfig combines all available storage driver configuration parts.
|
|
type StorageConfig struct {
|
|
EOS DriverEOS
|
|
Local DriverCommon
|
|
OwnCloud DriverOwnCloud
|
|
OwnCloudSQL DriverOwnCloudSQL
|
|
S3 DriverS3
|
|
S3NG DriverS3NG
|
|
OCIS DriverOCIS
|
|
// TODO checksums ... figure out what that is supposed to do
|
|
}
|
|
|
|
// DriverCommon defines common driver configuration options.
|
|
type DriverCommon struct {
|
|
// Root is the absolute path to the location of the data
|
|
Root string
|
|
//ShareFolder defines the name of the folder jailing all shares
|
|
ShareFolder string
|
|
// UserLayout contains the template used to construct
|
|
// the internal path, eg: `{{substr 0 1 .Username}}/{{.Username}}`
|
|
UserLayout string
|
|
// EnableHome enables the creation of home directories.
|
|
EnableHome bool
|
|
}
|
|
|
|
// DriverEOS defines the available EOS driver configuration.
|
|
type DriverEOS struct {
|
|
DriverCommon
|
|
|
|
// ShadowNamespace for storing shadow data
|
|
ShadowNamespace string
|
|
|
|
// UploadsNamespace for storing upload data
|
|
UploadsNamespace string
|
|
|
|
// Location of the eos binary.
|
|
// Default is /usr/bin/eos.
|
|
EosBinary string
|
|
|
|
// Location of the xrdcopy binary.
|
|
// Default is /usr/bin/xrdcopy.
|
|
XrdcopyBinary string
|
|
|
|
// URL of the Master EOS MGM.
|
|
// Default is root://eos-example.org
|
|
MasterURL string
|
|
|
|
// URI of the EOS MGM grpc server
|
|
// Default is empty
|
|
GrpcURI string
|
|
|
|
// URL of the Slave EOS MGM.
|
|
// Default is root://eos-example.org
|
|
SlaveURL string
|
|
|
|
// Location on the local fs where to store reads.
|
|
// Defaults to os.TempDir()
|
|
CacheDirectory string
|
|
|
|
// Enables logging of the commands executed
|
|
// Defaults to false
|
|
EnableLogging bool
|
|
|
|
// ShowHiddenSysFiles shows internal EOS files like
|
|
// .sys.v# and .sys.a# files.
|
|
ShowHiddenSysFiles bool
|
|
|
|
// ForceSingleUserMode will force connections to EOS to use SingleUsername
|
|
ForceSingleUserMode bool
|
|
|
|
// UseKeyTabAuth changes will authenticate requests by using an EOS keytab.
|
|
UseKeytab bool
|
|
|
|
// SecProtocol specifies the xrootd security protocol to use between the server and EOS.
|
|
SecProtocol string
|
|
|
|
// Keytab specifies the location of the keytab to use to authenticate to EOS.
|
|
Keytab string
|
|
|
|
// SingleUsername is the username to use when SingleUserMode is enabled
|
|
SingleUsername string
|
|
|
|
// gateway service to use for uid lookups
|
|
GatewaySVC string
|
|
}
|
|
|
|
// DriverOCIS defines the available oCIS storage driver configuration.
|
|
type DriverOCIS struct {
|
|
DriverCommon
|
|
|
|
ServiceUserUUID string
|
|
}
|
|
|
|
// DriverOwnCloud defines the available ownCloud storage driver configuration.
|
|
type DriverOwnCloud struct {
|
|
DriverCommon
|
|
|
|
UploadInfoDir string
|
|
Redis string
|
|
Scan bool
|
|
}
|
|
|
|
// DriverOwnCloudSQL defines the available ownCloudSQL storage driver configuration.
|
|
type DriverOwnCloudSQL struct {
|
|
DriverCommon
|
|
|
|
UploadInfoDir string
|
|
DBUsername string
|
|
DBPassword string
|
|
DBHost string
|
|
DBPort int
|
|
DBName string
|
|
}
|
|
|
|
// DriverS3 defines the available S3 storage driver configuration.
|
|
type DriverS3 struct {
|
|
DriverCommon
|
|
|
|
Region string
|
|
AccessKey string
|
|
SecretKey string
|
|
Endpoint string
|
|
Bucket string
|
|
}
|
|
|
|
// DriverS3NG defines the available s3ng storage driver configuration.
|
|
type DriverS3NG struct {
|
|
DriverCommon
|
|
|
|
Region string
|
|
AccessKey string
|
|
SecretKey string
|
|
Endpoint string
|
|
Bucket string
|
|
}
|
|
|
|
// OIDC defines the available OpenID Connect configuration.
|
|
type OIDC struct {
|
|
Issuer string
|
|
Insecure bool
|
|
IDClaim string
|
|
UIDClaim string
|
|
GIDClaim string
|
|
}
|
|
|
|
// LDAP defines the available ldap configuration.
|
|
type LDAP struct {
|
|
Hostname string
|
|
Port int
|
|
CACert string
|
|
Insecure bool
|
|
BaseDN string
|
|
LoginFilter string
|
|
UserFilter string
|
|
UserAttributeFilter string
|
|
UserFindFilter string
|
|
UserGroupFilter string
|
|
GroupFilter string
|
|
GroupAttributeFilter string
|
|
GroupFindFilter string
|
|
GroupMemberFilter string
|
|
BindDN string
|
|
BindPassword string
|
|
IDP string
|
|
UserSchema LDAPUserSchema
|
|
GroupSchema LDAPGroupSchema
|
|
}
|
|
|
|
// UserGroupRest defines the REST driver specification for user and group resolution.
|
|
type UserGroupRest struct {
|
|
ClientID string
|
|
ClientSecret string
|
|
RedisAddress string
|
|
RedisUsername string
|
|
RedisPassword string
|
|
IDProvider string
|
|
APIBaseURL string
|
|
OIDCTokenEndpoint string
|
|
TargetAPI string
|
|
}
|
|
|
|
// UserOwnCloudSQL defines the available ownCloudSQL user provider configuration.
|
|
type UserOwnCloudSQL struct {
|
|
DBUsername string
|
|
DBPassword string
|
|
DBHost string
|
|
DBPort int
|
|
DBName string
|
|
Idp string
|
|
Nobody int64
|
|
JoinUsername bool
|
|
JoinOwnCloudUUID bool
|
|
EnableMedialSearch bool
|
|
}
|
|
|
|
// LDAPUserSchema defines the available ldap user schema configuration.
|
|
type LDAPUserSchema struct {
|
|
UID string
|
|
Mail string
|
|
DisplayName string
|
|
CN string
|
|
UIDNumber string
|
|
GIDNumber string
|
|
}
|
|
|
|
// LDAPGroupSchema defines the available ldap group schema configuration.
|
|
type LDAPGroupSchema struct {
|
|
GID string
|
|
Mail string
|
|
DisplayName string
|
|
CN string
|
|
GIDNumber string
|
|
}
|
|
|
|
// OCDav defines the available ocdav configuration.
|
|
type OCDav struct {
|
|
WebdavNamespace string
|
|
DavFilesNamespace string
|
|
}
|
|
|
|
// Archiver defines the available archiver configuration.
|
|
type Archiver struct {
|
|
MaxNumFiles int64
|
|
MaxSize int64
|
|
ArchiverURL string
|
|
}
|
|
|
|
// Reva defines the available reva configuration.
|
|
type Reva struct {
|
|
// JWTSecret used to sign jwt tokens between services
|
|
JWTSecret string
|
|
SkipUserGroupsInToken bool
|
|
TransferSecret string
|
|
TransferExpires int
|
|
OIDC OIDC
|
|
LDAP LDAP
|
|
UserGroupRest UserGroupRest
|
|
UserOwnCloudSQL UserOwnCloudSQL
|
|
OCDav OCDav
|
|
Archiver Archiver
|
|
UserStorage StorageConfig
|
|
MetadataStorage StorageConfig
|
|
// Ports are used to configure which services to start on which port
|
|
Frontend FrontendPort
|
|
DataGateway DataGatewayPort
|
|
Gateway Gateway
|
|
StorageRegistry StorageRegistry
|
|
AppRegistry AppRegistry
|
|
Users Users
|
|
Groups Groups
|
|
AuthProvider Users
|
|
AuthBasic Port
|
|
AuthBearer Port
|
|
AuthMachine Port
|
|
AuthMachineConfig AuthMachineConfig
|
|
Sharing Sharing
|
|
StorageHome StoragePort
|
|
StorageUsers StoragePort
|
|
StoragePublicLink PublicStorage
|
|
StorageMetadata StoragePort
|
|
AppProvider AppProvider
|
|
// Configs can be used to configure the reva instance.
|
|
// Services and Ports will be ignored if this is used
|
|
Configs map[string]interface{}
|
|
// chunking and resumable upload config (TUS)
|
|
UploadMaxChunkSize int
|
|
UploadHTTPMethodOverride string
|
|
// checksumming capabilities
|
|
ChecksumSupportedTypes []string
|
|
ChecksumPreferredUploadType string
|
|
DefaultUploadProtocol string
|
|
}
|
|
|
|
// Tracing defines the available tracing configuration.
|
|
type Tracing struct {
|
|
Enabled bool
|
|
Type string
|
|
Endpoint string
|
|
Collector string
|
|
Service string
|
|
}
|
|
|
|
// Asset defines the available asset configuration.
|
|
type Asset struct {
|
|
Path string
|
|
}
|
|
|
|
// Config combines all available configuration parts.
|
|
type Config struct {
|
|
File string
|
|
Log Log
|
|
Debug Debug
|
|
Reva Reva
|
|
Tracing Tracing
|
|
Asset Asset
|
|
}
|
|
|
|
// New initializes a new configuration with or without defaults.
|
|
func New() *Config {
|
|
return &Config{}
|
|
}
|