Documentation ¶
Overview ¶
Package config provides tools for managing configurations
Index ¶
- Constants
- Variables
- func DefaultBindOverrideToFlags() (flags []string)
- func Del(path ...string)
- func DelSecret(uuid string)
- func EnvOverrideDefaultBind() bool
- func ExposedConfigsForService(serviceName string) common.XMLSerializableForm
- func FactorizeMinioServers(existingConfigs map[string]*object.MinioConfig, newSource *object.DataSource, ...) (config *object.MinioConfig, e error)
- func Get(path ...string) configx.Values
- func GetDatabase(key string) (string, string)
- func GetDefaultSiteURL(sites ...*install.ProxyConfig) string
- func GetPublicBaseUri() string
- func GetSecret(uuid string) configx.Values
- func GetSitesAllowedURLs() map[string]*url.URL
- func GetSourceInfoByName(dsName string) (*object.DataSource, error)
- func GetStorageDriver(configKey, serviceName string) (driver string, dsn string, defined bool)
- func GetTLSClientConfig(t string) *tls.Config
- func GetTLSServerConfig(t string) *tls.Config
- func GetUpdatesConfigs() configx2.Values
- func HasDatabase(key string) bool
- func IndexServiceTableNames(dsName string) map[string]string
- func IsRestEditable(path string) bool
- func ListMinioConfigsFromConfig() map[string]*object.MinioConfig
- func ListSourcesFromConfig() map[string]*object.DataSource
- func LoadSites(configOnly ...bool) ([]*install.ProxyConfig, error)
- func MinioConfigNamesToConfig(sources map[string]*object.MinioConfig)
- func NewKeyForSecret() string
- func Register(store Store)
- func RegisterCustomValueDiffer(differ diff.ValueDiffer)
- func RegisterExposedConfigs(serviceName string, form common.XMLSerializableForm)
- func RegisterProxy(key string, interceptors ...interface{})
- func RegisterRestEditablePath(segments ...string)
- func RegisterRevisionsStore(store revisions.Store)
- func RegisterVault(store Store)
- func RegisterVaultKey(s ...string)
- func ResetTlsConfigs()
- func RevisionsStore() revisions.Store
- func Save(ctxUser string, ctxMessage string) error
- func SaveSites(sites []*install.ProxyConfig, user, msg string) error
- func Set(val interface{}, path ...string) error
- func SetDatabase(key string, driver string, dsn string, defaultsKey string) error
- func SetSecret(uuid string, val string)
- func SourceNamesFiltered(names []string) []string
- func SourceNamesForDataServices(dataSrvType string) []string
- func SourceNamesFromDataConfigs(values configx.Values) []string
- func SourceNamesToConfig(sources map[string]*object.DataSource)
- func TouchSourceNamesForDataServices(dataSrvType string)
- func UnusedMinioServers(minios map[string]*object.MinioConfig, sources map[string]*object.DataSource) []string
- func Vault() configx.Entrypoint
- func Watch(opts ...configx.WatchOption) (configx.Receiver, error)
- type DistributedStore
- type ProxyDeleter
- type ProxyGetter
- type ProxySetter
- type RevisionsProvider
- type RevisionsStoreOption
- type RevisionsStoreOptions
- type Saver
- type Store
- type URLMux
- type URLOpener
Constants ¶
const ( // KeyFrontPluginEnabled is the frontend config to enable/disable plugins KeyFrontPluginEnabled = "PYDIO_PLUGIN_ENABLED" // DefaultOAuthClientID set the default client id to use DefaultOAuthClientID = "cells-frontend" )
Variables ¶
var CustomValueDiffers []diff.ValueDiffer
var ( DefaultBindingSite = &install.ProxyConfig{ Binds: []string{"0.0.0.0:" + runtime.DefaultBindingSitePort}, TLSConfig: &install.ProxyConfig_SelfSigned{SelfSigned: &install.TLSSelfSigned{}}, SSLRedirect: false, } )
var SampleConfig = `{ "version": "` + common.Version().String() + `", "defaults": { "update": { "publicKey": "` + common.UpdateDefaultPublicKey + `", "updateUrl": "` + common.UpdateDefaultServerUrl + `" } }, "ports":{ "nats": 4222 }, "frontend":{ "secureHeaders":{ "X-XSS-Protection": "1; mode=block" }, "plugin": { "editor.libreoffice": { "LIBREOFFICE_HOST": "localhost", "LIBREOFFICE_PORT": "9980", "LIBREOFFICE_SSL": true } } }, "services":{ "pydio.grpc.config":{ "dsn": "default" }, "pydio.grpc.user":{ "dsn": "default", "tables":{ "tree": "idm_user_tree", "nodes":"idm_user_nodes", "roles":"idm_user_roles", "attributes":"idm_user_attributes" } }, "pydio.grpc.mailer": { "queue": { "@value": "boltdb" }, "sender": { "@value": "disabled" } }, "pydio.grpc.role":{ "dsn": "default" }, "pydio.grpc.workspace":{ "dsn": "default" }, "pydio.grpc.acl":{ "dsn": "default" }, "pydio.grpc.tree":{ "dsn":"default" }, "pydio.grpc.meta":{ "dsn":"default" }, "pydio.thumbs_store":{ "datasource" : "default", "bucket" : "thumbs" }, "pydio.docstore-binaries":{ "datasource" : "default", "bucket" : "binaries" }, "pydio.versions-store":{ "datasource" : "default", "bucket" : "versions" }, "pydio.grpc.search": { "indexContent": false, "basenameAnalyzer": "standard", "contentAnalyzer": "en" }, "pydio.grpc.policy": { "dsn": "databaseParseTime" }, "pydio.grpc.data-key": { "dsn": "default" }, "pydio.grpc.user-key": { "dsn": "default" }, "pydio.grpc.update" : { "channel": "` + common.UpdateDefaultChannel + `" }, "pydio.grpc.user-meta": { "dsn": "default" }, "pydio.grpc.tasks": { "fork": true }, "pydio.web.oauth":{ "connectors": [ { "type": "pydio", "id" : "pydio", "name": "Pydio Cells" } ], "cors": { "public": { "allowedOrigins": "*" } }, "staticClients": [ { "client_id": "` + DefaultOAuthClientID + `", "client_name": "CellsFrontend Application", "revokeRefreshTokenAfterInactivity": "2h", "grant_types": [ "authorization_code", "refresh_token" ], "redirect_uris": [ "#default_bind#/auth/callback" ], "post_logout_redirect_uris": [ "#default_bind#/auth/logout" ], "response_types": ["code", "token", "id_token"], "scope": "openid email profile pydio offline" }, { "client_id": "cells-sync", "client_name": "CellsSync Application", "grant_types": [ "authorization_code", "refresh_token" ], "redirect_uris": [ "http://localhost:3000/servers/callback", "http://localhost:[3636-3666]/servers/callback" ], "response_types": ["code", "token", "id_token"], "scope": "openid email profile pydio offline" }, { "client_id": "cells-client", "client_name": "Cells Client CLI Tool", "grant_types": [ "authorization_code", "refresh_token" ], "redirect_uris": [ "http://localhost:3000/servers/callback", "#binds...#/oauth2/oob" ], "response_types": [ "code", "token", "id_token" ], "scope": "openid email profile pydio offline" }, { "client_id": "cells-mobile", "client_name": "Mobile Applications", "grant_types": [ "authorization_code", "refresh_token" ], "redirect_uris": [ "cellsauth://callback" ], "response_types": [ "code", "token", "id_token" ], "scope": "openid email profile pydio offline" } ] } } }`
SampleConfig is the default config used during the first install
Functions ¶
func DefaultBindOverrideToFlags ¶
func DefaultBindOverrideToFlags() (flags []string)
func EnvOverrideDefaultBind ¶
func EnvOverrideDefaultBind() bool
func ExposedConfigsForService ¶
func ExposedConfigsForService(serviceName string) common.XMLSerializableForm
ExposedConfigsForService returns exposed configs for service
func FactorizeMinioServers ¶
func FactorizeMinioServers(existingConfigs map[string]*object.MinioConfig, newSource *object.DataSource, update bool) (config *object.MinioConfig, e error)
FactorizeMinioServers tries to find exisiting MinioConfig that can be directly reused by the new source, or creates a new one
func GetDatabase ¶
GetDatabase retrieves the database data from the config
func GetDefaultSiteURL ¶
func GetDefaultSiteURL(sites ...*install.ProxyConfig) string
GetDefaultSiteURL returns the first available bindURL of all available sites
func GetPublicBaseUri ¶
func GetPublicBaseUri() string
GetPublicBaseUri returns the default public uri
func GetSitesAllowedURLs ¶
GetSitesAllowedURLs returns a map of hostname => url for all sites. TODO : this function could switch to a list of specific authorized hostnames
func GetSourceInfoByName ¶
func GetSourceInfoByName(dsName string) (*object.DataSource, error)
func GetStorageDriver ¶
GetStorageDriver looks up for a storage driver/dsn definition It may find databases/[(services/{serviceName}/storage)|{serviceName}|default]
func GetTLSClientConfig ¶
GetTLSClientConfig returns the configuration ssl for a server handler.
func GetTLSServerConfig ¶
GetTLSServerConfig returns the configuration ssl for a server handler
func GetUpdatesConfigs ¶
GetUpdatesConfigs gather update configs from correct location
func IndexServiceTableNames ¶
IndexServiceTableNames returns table names for indexes
func IsRestEditable ¶
IsRestEditable checks if the given path is allowed to be read/written via the REST API.
func ListMinioConfigsFromConfig ¶
func ListMinioConfigsFromConfig() map[string]*object.MinioConfig
ListMinioConfigsFromConfig scans configs for objects services configs
func ListSourcesFromConfig ¶
func ListSourcesFromConfig() map[string]*object.DataSource
ListSourcesFromConfig scans configs for sync services configs
func LoadSites ¶
func LoadSites(configOnly ...bool) ([]*install.ProxyConfig, error)
LoadSites returns all sites defined by order of preference : - ENV VARS - YAML CONFIG - INTERNAL CONFIG - If none is found, returns a default value If configOnly is set to true, will only return the ones saved in configs
func MinioConfigNamesToConfig ¶
func MinioConfigNamesToConfig(sources map[string]*object.MinioConfig)
MinioConfigNamesToConfig saves objects sources to config
func RegisterCustomValueDiffer ¶ added in v4.2.2
func RegisterCustomValueDiffer(differ diff.ValueDiffer)
func RegisterExposedConfigs ¶
func RegisterExposedConfigs(serviceName string, form common.XMLSerializableForm)
RegisterExposedConfigs let services register specific forms for configs editions Used by discovery service
func RegisterProxy ¶ added in v4.0.1
func RegisterProxy(key string, interceptors ...interface{})
func RegisterRestEditablePath ¶
func RegisterRestEditablePath(segments ...string)
RegisterRestEditablePath registers a config path that can be exposed and modified via the REST API
func RegisterRevisionsStore ¶ added in v4.0.1
RegisterRevisionsStore sets the default version store
func RegisterVaultKey ¶
func RegisterVaultKey(s ...string)
RegisterVaultKey adds a key to the configuration so that the value associated with the key is swapped to an encrypted value
func ResetTlsConfigs ¶
func ResetTlsConfigs()
func RevisionsStore ¶ added in v4.0.1
func SaveSites ¶
func SaveSites(sites []*install.ProxyConfig, user, msg string) error
SaveSites saves a list of sites inside configuration
func SetDatabase ¶
SetDatabase adds a database entry, plus an optional reference in the defaults
func SourceNamesFiltered ¶
SourceNamesFiltered excludes the timestamp key from a slice of source names
func SourceNamesForDataServices ¶
SourceNamesForDataServices list sourceNames from the config, excluding the timestamp key
func SourceNamesFromDataConfigs ¶
SourceNamesFromDataConfigs list sourceNames from the config, excluding the timestamp key
func SourceNamesToConfig ¶
func SourceNamesToConfig(sources map[string]*object.DataSource)
SourceNamesToConfig saves index and sync sources to configs
func TouchSourceNamesForDataServices ¶
func TouchSourceNamesForDataServices(dataSrvType string)
TouchSourceNamesForDataServices update the timestamp set with the source list
func UnusedMinioServers ¶
func UnusedMinioServers(minios map[string]*object.MinioConfig, sources map[string]*object.DataSource) []string
UnusedMinioServers searches for existing minio configs that are not used anywhere in datasources
Types ¶
type DistributedStore ¶ added in v4.0.6
type ProxyDeleter ¶ added in v4.0.1
type ProxySetter ¶ added in v4.0.1
type RevisionsProvider ¶ added in v4.0.1
type RevisionsProvider interface {
AsRevisionsStore(...RevisionsStoreOption) (Store, revisions.Store)
}
type RevisionsStoreOption ¶ added in v4.0.1
type RevisionsStoreOption func(o *RevisionsStoreOptions)
func WithDebounce ¶ added in v4.0.1
func WithDebounce(d time.Duration) RevisionsStoreOption
type RevisionsStoreOptions ¶ added in v4.0.1
type Store ¶
type Store interface { configx.Entrypoint configx.Watcher Close() error Done() <-chan struct{} Saver sync.Locker }
Store defines the functionality a config must provide
func NewVersionStore ¶
NewVersionStore based on a file Version Store and a store
func OpenStore ¶
OpenStore opens the Store identified by the URL given. See the URLOpener documentation in driver subpackages for details on supported URL formats, and https://gocloud.dev/concepts/urls for more information.
type URLMux ¶
type URLMux struct {
// contains filtered or unexported fields
}
URLMux is a URL opener multiplexer. It matches the scheme of the URLs against a set of registered schemes and calls the opener that matches the URL's scheme. See https://gocloud.dev/concepts/urls/ for more information.
The zero value is a multiplexer with no registered schemes.
func DefaultURLMux ¶
func DefaultURLMux() *URLMux
DefaultURLMux returns the URLMux used by OpenTopic and OpenSubscription.
Driver packages can use this to register their TopicURLOpener and/or SubscriptionURLOpener on the mux.
func (*URLMux) OpenStore ¶
OpenStore calls OpenURL with the URL parsed from urlstr. OpenStore is safe to call from multiple goroutines.
func (*URLMux) Register ¶
Register registers the opener with the given scheme. If an opener already exists for the scheme, Register panics.
func (*URLMux) ValidScheme ¶
ValidScheme returns true if scheme has been registered.