diff --git a/extensions/storage/pkg/command/frontend.go b/extensions/frontend/pkg/command/command.go similarity index 70% rename from extensions/storage/pkg/command/frontend.go rename to extensions/frontend/pkg/command/command.go index 45af7b96c1..35a4819f9b 100644 --- a/extensions/storage/pkg/command/frontend.go +++ b/extensions/frontend/pkg/command/command.go @@ -12,12 +12,13 @@ import ( "github.com/cs3org/reva/v2/cmd/revad/runtime" "github.com/gofrs/uuid" "github.com/oklog/run" - "github.com/owncloud/ocis/extensions/storage/pkg/config" + "github.com/owncloud/ocis/extensions/frontend/pkg/config" "github.com/owncloud/ocis/extensions/storage/pkg/server/debug" - "github.com/owncloud/ocis/extensions/storage/pkg/tracing" ociscfg "github.com/owncloud/ocis/ocis-pkg/config" "github.com/owncloud/ocis/ocis-pkg/conversions" + "github.com/owncloud/ocis/ocis-pkg/log" "github.com/owncloud/ocis/ocis-pkg/sync" + "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/thejerf/suture/v4" "github.com/urfave/cli/v2" ) @@ -31,12 +32,18 @@ func Frontend(cfg *config.Config) *cli.Command { if err := loadUserAgent(c, cfg); err != nil { return err } - return ParseConfig(c, cfg, "storage-frontend") + // return ParseConfig(c, cfg, "storage-frontend") + return nil }, Action: func(c *cli.Context) error { - logger := NewLogger(cfg) - - tracing.Configure(cfg, logger) + logCfg := cfg.Logging + logger := log.NewLogger( + log.Level(logCfg.Level), + log.File(logCfg.File), + log.Pretty(logCfg.Pretty), + log.Color(logCfg.Color), + ) + tracing.Configure(cfg.Tracing.Enabled, cfg.Tracing.Type, logger) gr := run.Group{} ctx, cancel := context.WithCancel(context.Background()) @@ -59,9 +66,9 @@ func Frontend(cfg *config.Config) *cli.Command { "enabled": true, "version": "2.0.0", "formats": []string{"tar", "zip"}, - "archiver_url": cfg.Reva.Archiver.ArchiverURL, - "max_num_files": strconv.FormatInt(cfg.Reva.Archiver.MaxNumFiles, 10), - "max_size": strconv.FormatInt(cfg.Reva.Archiver.MaxSize, 10), + "archiver_url": cfg.Archiver.URL, + "max_num_files": strconv.FormatInt(cfg.Archiver.MaxNumFiles, 10), + "max_size": strconv.FormatInt(cfg.Archiver.MaxSize, 10), }, } @@ -69,9 +76,9 @@ func Frontend(cfg *config.Config) *cli.Command { { "enabled": true, "version": "1.0.0", - "apps_url": cfg.Reva.AppProvider.AppsURL, - "open_url": cfg.Reva.AppProvider.OpenURL, - "new_url": cfg.Reva.AppProvider.NewURL, + "apps_url": cfg.AppProvider.AppsURL, + "open_url": cfg.AppProvider.OpenURL, + "new_url": cfg.AppProvider.NewURL, }, } @@ -83,16 +90,16 @@ func Frontend(cfg *config.Config) *cli.Command { "versioning": true, "archivers": archivers, "app_providers": appProviders, - "favorites": cfg.Reva.Frontend.Favorites, + "favorites": cfg.EnableFavorites, } - if cfg.Reva.DefaultUploadProtocol == "tus" { + if cfg.DefaultUploadProtocol == "tus" { filesCfg["tus_support"] = map[string]interface{}{ "version": "1.0.0", "resumable": "1.0.0", "extension": "creation,creation-with-upload", - "http_method_override": cfg.Reva.UploadHTTPMethodOverride, - "max_chunk_size": cfg.Reva.UploadMaxChunkSize, + "http_method_override": cfg.UploadHTTPMethodOverride, + "max_chunk_size": cfg.UploadMaxChunkSize, } } @@ -109,10 +116,12 @@ func Frontend(cfg *config.Config) *cli.Command { { server, err := debug.Server( debug.Name(c.Command.Name+"-debug"), - debug.Addr(cfg.Reva.Frontend.DebugAddr), + debug.Addr(cfg.Debug.Addr), debug.Logger(logger), debug.Context(ctx), - debug.Config(cfg), + debug.Pprof(cfg.Debug.Pprof), + debug.Zpages(cfg.Debug.Zpages), + debug.Token(cfg.Debug.Token), ) if err != nil { @@ -129,7 +138,7 @@ func Frontend(cfg *config.Config) *cli.Command { }) } - if !cfg.Reva.Frontend.Supervised { + if !cfg.Supervised { sync.Trap(&gr, cancel) } @@ -142,78 +151,77 @@ func Frontend(cfg *config.Config) *cli.Command { func frontendConfigFromStruct(c *cli.Context, cfg *config.Config, filesCfg map[string]interface{}) map[string]interface{} { return map[string]interface{}{ "core": map[string]interface{}{ - "max_cpus": cfg.Reva.Users.MaxCPUs, "tracing_enabled": cfg.Tracing.Enabled, "tracing_endpoint": cfg.Tracing.Endpoint, "tracing_collector": cfg.Tracing.Collector, "tracing_service_name": c.Command.Name, }, "shared": map[string]interface{}{ - "jwt_secret": cfg.Reva.JWTSecret, - "gatewaysvc": cfg.Reva.Gateway.Endpoint, // Todo or address? - "skip_user_groups_in_token": cfg.Reva.SkipUserGroupsInToken, + "jwt_secret": cfg.JWTSecret, + "gatewaysvc": cfg.GatewayEndpoint, // Todo or address? + "skip_user_groups_in_token": cfg.SkipUserGroupsInToken, }, "http": map[string]interface{}{ - "network": cfg.Reva.Frontend.HTTPNetwork, - "address": cfg.Reva.Frontend.HTTPAddr, + "network": cfg.HTTP.Protocol, + "address": cfg.HTTP.Addr, "middlewares": map[string]interface{}{ "cors": map[string]interface{}{ "allow_credentials": true, }, "auth": map[string]interface{}{ - "credentials_by_user_agent": cfg.Reva.Frontend.Middleware.Auth.CredentialsByUserAgent, + "credentials_by_user_agent": cfg.Middleware.Auth.CredentialsByUserAgent, "credential_chain": []string{"bearer"}, }, }, // TODO build services dynamically "services": map[string]interface{}{ "appprovider": map[string]interface{}{ - "prefix": cfg.Reva.Frontend.AppProviderPrefix, - "transfer_shared_secret": cfg.Reva.TransferSecret, + "prefix": cfg.AppProvider.Prefix, + "transfer_shared_secret": cfg.TransferSecret, "timeout": 86400, - "insecure": cfg.Reva.Frontend.AppProviderInsecure, + "insecure": cfg.AppProvider.Insecure, }, "archiver": map[string]interface{}{ - "prefix": cfg.Reva.Frontend.ArchiverPrefix, + "prefix": cfg.Archiver.Prefix, "timeout": 86400, - "insecure": cfg.Reva.Frontend.ArchiverInsecure, - "max_num_files": cfg.Reva.Archiver.MaxNumFiles, - "max_size": cfg.Reva.Archiver.MaxSize, + "insecure": cfg.Archiver.Insecure, + "max_num_files": cfg.Archiver.MaxNumFiles, + "max_size": cfg.Archiver.MaxSize, }, "datagateway": map[string]interface{}{ - "prefix": cfg.Reva.Frontend.DatagatewayPrefix, - "transfer_shared_secret": cfg.Reva.TransferSecret, + "prefix": cfg.DataGateway.Prefix, + "transfer_shared_secret": cfg.TransferSecret, "timeout": 86400, "insecure": true, }, "ocs": map[string]interface{}{ - "storage_registry_svc": cfg.Reva.Gateway.Endpoint, - "share_prefix": cfg.Reva.Frontend.OCSSharePrefix, - "home_namespace": cfg.Reva.Frontend.OCSHomeNamespace, - "resource_info_cache_ttl": cfg.Reva.Frontend.OCSResourceInfoCacheTTL, - "prefix": cfg.Reva.Frontend.OCSPrefix, - "additional_info_attribute": cfg.Reva.Frontend.OCSAdditionalInfoAttribute, - "machine_auth_apikey": cfg.Reva.AuthMachineConfig.MachineAuthAPIKey, - "cache_warmup_driver": cfg.Reva.Frontend.OCSCacheWarmupDriver, + "storage_registry_svc": cfg.GatewayEndpoint, + "share_prefix": cfg.OCS.SharePrefix, + "home_namespace": cfg.OCS.HomeNamespace, + "resource_info_cache_ttl": cfg.OCS.ResourceInfoCacheTTL, + "prefix": cfg.OCS.Prefix, + "additional_info_attribute": cfg.OCS.AdditionalInfoAttribute, + "machine_auth_apikey": cfg.AuthMachine.APIKey, + "cache_warmup_driver": cfg.OCS.CacheWarmupDriver, "cache_warmup_drivers": map[string]interface{}{ "cbox": map[string]interface{}{ - "db_username": cfg.Reva.Sharing.UserSQLUsername, - "db_password": cfg.Reva.Sharing.UserSQLPassword, - "db_host": cfg.Reva.Sharing.UserSQLHost, - "db_port": cfg.Reva.Sharing.UserSQLPort, - "db_name": cfg.Reva.Sharing.UserSQLName, - "namespace": cfg.Reva.UserStorage.EOS.Root, - "gatewaysvc": cfg.Reva.Gateway.Endpoint, + "db_username": cfg.OCS.CacheWarmupDrivers.CBOX.DBUsername, + "db_password": cfg.OCS.CacheWarmupDrivers.CBOX.DBPassword, + "db_host": cfg.OCS.CacheWarmupDrivers.CBOX.DBHost, + "db_port": cfg.OCS.CacheWarmupDrivers.CBOX.DBPort, + "db_name": cfg.OCS.CacheWarmupDrivers.CBOX.DBName, + "namespace": cfg.OCS.CacheWarmupDrivers.CBOX.Namespace, + "gatewaysvc": cfg.GatewayEndpoint, }, }, "config": map[string]interface{}{ "version": "1.7", "website": "ownCloud", - "host": cfg.Reva.Frontend.PublicURL, + "host": cfg.PublicURL, "contact": "", "ssl": "false", }, - "default_upload_protocol": cfg.Reva.DefaultUploadProtocol, + "default_upload_protocol": cfg.DefaultUploadProtocol, "capabilities": map[string]interface{}{ "capabilities": map[string]interface{}{ "core": map[string]interface{}{ @@ -232,8 +240,8 @@ func frontendConfigFromStruct(c *cli.Context, cfg *config.Config, filesCfg map[s "support_url_signing": true, }, "checksums": map[string]interface{}{ - "supported_types": cfg.Reva.ChecksumSupportedTypes, - "preferred_upload_type": cfg.Reva.ChecksumPreferredUploadType, + "supported_types": cfg.Checksums.SupportedTypes, + "preferred_upload_type": cfg.Checksums.PreferredUploadType, }, "files": filesCfg, "dav": map[string]interface{}{}, @@ -287,7 +295,7 @@ func frontendConfigFromStruct(c *cli.Context, cfg *config.Config, filesCfg map[s }, "spaces": map[string]interface{}{ "version": "0.0.1", - "enabled": cfg.Reva.Frontend.ProjectSpaces, + "enabled": cfg.EnableProjectSpaces, }, }, "version": map[string]interface{}{ @@ -313,7 +321,7 @@ func frontendConfigFromStruct(c *cli.Context, cfg *config.Config, filesCfg map[s // have the indexes reversed and the tuple is in the format of [challenge:user-agent], then the same process is applied // in reverse for each individual part func loadUserAgent(c *cli.Context, cfg *config.Config) error { - cfg.Reva.Frontend.Middleware.Auth.CredentialsByUserAgent = make(map[string]string) + cfg.Middleware.Auth.CredentialsByUserAgent = make(map[string]string) locks := c.StringSlice("user-agent-whitelist-lock-in") for _, v := range locks { @@ -323,7 +331,7 @@ func loadUserAgent(c *cli.Context, cfg *config.Config) error { return fmt.Errorf("unexpected config value for user-agent lock-in: %v, expected format is user-agent:challenge", v) } - cfg.Reva.Frontend.Middleware.Auth.CredentialsByUserAgent[conversions.Reverse(parts[1])] = conversions.Reverse(parts[0]) + cfg.Middleware.Auth.CredentialsByUserAgent[conversions.Reverse(parts[1])] = conversions.Reverse(parts[0]) } return nil @@ -336,28 +344,29 @@ type FrontendSutureService struct { // NewFrontend creates a new frontend.FrontendSutureService func NewFrontend(cfg *ociscfg.Config) suture.Service { - cfg.Storage.Commons = cfg.Commons + cfg.Frontend.Commons = cfg.Commons return FrontendSutureService{ - cfg: cfg.Storage, + cfg: cfg.Frontend, } } func (s FrontendSutureService) Serve(ctx context.Context) error { - s.cfg.Reva.Frontend.Context = ctx + // s.cfg.Reva.Frontend.Context = ctx + cmd := Frontend(s.cfg) f := &flag.FlagSet{} - cmdFlags := Frontend(s.cfg).Flags + cmdFlags := cmd.Flags for k := range cmdFlags { if err := cmdFlags[k].Apply(f); err != nil { return err } } cliCtx := cli.NewContext(nil, f, nil) - if Frontend(s.cfg).Before != nil { - if err := Frontend(s.cfg).Before(cliCtx); err != nil { + if cmd.Before != nil { + if err := cmd.Before(cliCtx); err != nil { return err } } - if err := Frontend(s.cfg).Action(cliCtx); err != nil { + if err := cmd.Action(cliCtx); err != nil { return err } diff --git a/extensions/frontend/pkg/config/config.go b/extensions/frontend/pkg/config/config.go new file mode 100644 index 0000000000..97220485d8 --- /dev/null +++ b/extensions/frontend/pkg/config/config.go @@ -0,0 +1,131 @@ +package config + +import "github.com/owncloud/ocis/ocis-pkg/shared" + +type Config struct { + *shared.Commons `yaml:"-"` + Service Service `yaml:"-"` + Tracing *Tracing `yaml:"tracing"` + Logging *Logging `yaml:"log"` + Debug Debug `yaml:"debug"` + Supervised bool + + HTTP HTTPConfig `yaml:"http"` + + // JWTSecret used to verify reva access token + JWTSecret string `yaml:"jwt_secret"` + GatewayEndpoint string + SkipUserGroupsInToken bool + + EnableFavorites bool `yaml:"favorites"` + EnableProjectSpaces bool + UploadMaxChunkSize int `yaml:"upload_max_chunk_size"` + UploadHTTPMethodOverride string `yaml:"upload_http_method_override"` + DefaultUploadProtocol string `yaml:"default_upload_protocol"` + TransferSecret string `yaml:"transfer_secret"` + PublicURL string + + Archiver Archiver + AppProvider AppProvider + DataGateway DataGateway + OCS OCS + AuthMachine AuthMachine + Checksums Checksums + + Middleware Middleware +} +type Tracing struct { + Enabled bool `yaml:"enabled" env:"OCIS_TRACING_ENABLED;FRONTEND_TRACING_ENABLED" desc:"Activates tracing."` + Type string `yaml:"type" env:"OCIS_TRACING_TYPE;FRONTEND_TRACING_TYPE"` + Endpoint string `yaml:"endpoint" env:"OCIS_TRACING_ENDPOINT;FRONTEND_TRACING_ENDPOINT" desc:"The endpoint to the tracing collector."` + Collector string `yaml:"collector" env:"OCIS_TRACING_COLLECTOR;FRONTEND_TRACING_COLLECTOR"` +} + +type Logging struct { + Level string `yaml:"level" env:"OCIS_LOG_LEVEL;FRONTEND_LOG_LEVEL" desc:"The log level."` + Pretty bool `yaml:"pretty" env:"OCIS_LOG_PRETTY;FRONTEND_LOG_PRETTY" desc:"Activates pretty log output."` + Color bool `yaml:"color" env:"OCIS_LOG_COLOR;FRONTEND_LOG_COLOR" desc:"Activates colorized log output."` + File string `yaml:"file" env:"OCIS_LOG_FILE;FRONTEND_LOG_FILE" desc:"The target log file."` +} + +type Service struct { + Name string `yaml:"-"` +} + +type Debug struct { + Addr string `yaml:"addr" env:"FRONTEND_DEBUG_ADDR"` + Token string `yaml:"token" env:"FRONTEND_DEBUG_TOKEN"` + Pprof bool `yaml:"pprof" env:"FRONTEND_DEBUG_PPROF"` + Zpages bool `yaml:"zpages" env:"FRONTEND_DEBUG_ZPAGES"` +} + +type HTTPConfig struct { + Addr string `yaml:"addr" env:"FRONTEND_HTTP_ADDR" desc:"The address of the http service."` + Protocol string `yaml:"protocol" env:"FRONTEND_HTTP_PROTOCOL" desc:"The transport protocol of the http service."` + Prefix string `yaml:"prefix"` +} + +// Middleware configures reva middlewares. +type Middleware struct { + Auth Auth `yaml:"auth"` +} + +// Auth configures reva http auth middleware. +type Auth struct { + CredentialsByUserAgent map[string]string `yaml:"credentials_by_user_agenr"` +} + +type Archiver struct { + MaxNumFiles int64 `yaml:"max_num_files"` + MaxSize int64 `yaml:"max_size"` + URL string `yaml:"url"` + Prefix string + Insecure bool +} + +type AppProvider struct { + ExternalAddr string `yaml:"external_addr"` + Driver string `yaml:"driver"` + // WopiDriver WopiDriver `yaml:"wopi_driver"` + AppsURL string `yaml:"apps_url"` + OpenURL string `yaml:"open_url"` + NewURL string `yaml:"new_url"` + Prefix string + Insecure bool +} + +type DataGateway struct { + Prefix string +} + +type OCS struct { + Prefix string `yaml:"prefix"` + SharePrefix string `yaml:"share_prefix"` + HomeNamespace string `yaml:"home_namespace"` + AdditionalInfoAttribute string `yaml:"additional_info_attribute"` + ResourceInfoCacheTTL int `yaml:"resource_info_cache_ttl"` + CacheWarmupDriver string `yaml:"cache_warmup_driver"` + CacheWarmupDrivers CacheWarmupDrivers +} + +type CacheWarmupDrivers struct { + CBOX CBOXDriver +} + +type CBOXDriver struct { + DBUsername string + DBPassword string + DBHost string + DBPort int + DBName string + Namespace string +} + +type AuthMachine struct { + APIKey string +} + +type Checksums struct { + SupportedTypes []string `yaml:"supported_types"` + PreferredUploadType string `yaml:"preferred_upload_type"` +} diff --git a/extensions/frontend/pkg/config/defaults/defaultconfig.go b/extensions/frontend/pkg/config/defaults/defaultconfig.go new file mode 100644 index 0000000000..556f3a1bfb --- /dev/null +++ b/extensions/frontend/pkg/config/defaults/defaultconfig.go @@ -0,0 +1,97 @@ +package defaults + +import ( + "github.com/owncloud/ocis/extensions/frontend/pkg/config" +) + +func FullDefaultConfig() *config.Config { + cfg := DefaultConfig() + + EnsureDefaults(cfg) + + return cfg +} + +func DefaultConfig() *config.Config { + return &config.Config{ + Debug: config.Debug{ + Addr: "127.0.0.1:9141", + Token: "", + Pprof: false, + Zpages: false, + }, + HTTP: config.HTTPConfig{ + Addr: "127.0.0.1:9140", + Protocol: "tcp", + Prefix: "", + }, + Service: config.Service{ + Name: "frontend", + }, + GatewayEndpoint: "127.0.0.1:9142", + JWTSecret: "Pive-Fumkiu4", + PublicURL: "https://localhost:9200", + EnableFavorites: false, + EnableProjectSpaces: true, + UploadMaxChunkSize: 1e+8, + UploadHTTPMethodOverride: "", + DefaultUploadProtocol: "tus", + TransferSecret: "replace-me-with-a-transfer-secret", + Checksums: config.Checksums{ + SupportedTypes: []string{"sha1", "md5", "adler32"}, + PreferredUploadType: "", + }, + AppProvider: config.AppProvider{ + Prefix: "", + Insecure: false, + }, + Archiver: config.Archiver{ + Insecure: false, + Prefix: "archiver", + }, + DataGateway: config.DataGateway{ + Prefix: "data", + }, + OCS: config.OCS{ + Prefix: "ocs", + SharePrefix: "/Shares", + HomeNamespace: "/users/{{.Id.OpaqueId}}", + CacheWarmupDriver: "", + AdditionalInfoAttribute: "{{.Mail}}", + ResourceInfoCacheTTL: 0, + }, + AuthMachine: config.AuthMachine{ + APIKey: "change-me-please", + }, + Middleware: config.Middleware{ + Auth: config.Auth{ + CredentialsByUserAgent: map[string]string{}, + }, + }, + } +} + +func EnsureDefaults(cfg *config.Config) { + // provide with defaults for shared logging, since we need a valid destination address for BindEnv. + if cfg.Logging == nil && cfg.Commons != nil && cfg.Commons.Log != nil { + cfg.Logging = &config.Logging{ + Level: cfg.Commons.Log.Level, + Pretty: cfg.Commons.Log.Pretty, + Color: cfg.Commons.Log.Color, + File: cfg.Commons.Log.File, + } + } else if cfg.Logging == nil { + cfg.Logging = &config.Logging{} + } + // provide with defaults for shared tracing, since we need a valid destination address for BindEnv. + if cfg.Tracing == nil && cfg.Commons != nil && cfg.Commons.Tracing != nil { + cfg.Tracing = &config.Tracing{ + Enabled: cfg.Commons.Tracing.Enabled, + Type: cfg.Commons.Tracing.Type, + Endpoint: cfg.Commons.Tracing.Endpoint, + Collector: cfg.Commons.Tracing.Collector, + } + } else if cfg.Tracing == nil { + cfg.Tracing = &config.Tracing{} + } +} diff --git a/extensions/storage/pkg/command/root.go b/extensions/storage/pkg/command/root.go index b4f5c30cdd..fc1472df0a 100644 --- a/extensions/storage/pkg/command/root.go +++ b/extensions/storage/pkg/command/root.go @@ -12,7 +12,7 @@ import ( // GetCommands provides all commands for this service func GetCommands(cfg *config.Config) cli.Commands { return []*cli.Command{ - Frontend(cfg), + // Frontend(cfg), Gateway(cfg), // Users(cfg), // Groups(cfg), diff --git a/ocis-pkg/config/config.go b/ocis-pkg/config/config.go index 20893f2ddc..a0b6042c3d 100644 --- a/ocis-pkg/config/config.go +++ b/ocis-pkg/config/config.go @@ -9,6 +9,7 @@ import ( authbasic "github.com/owncloud/ocis/extensions/auth-basic/pkg/config" authbearer "github.com/owncloud/ocis/extensions/auth-bearer/pkg/config" authmachine "github.com/owncloud/ocis/extensions/auth-machine/pkg/config" + frontend "github.com/owncloud/ocis/extensions/frontend/pkg/config" glauth "github.com/owncloud/ocis/extensions/glauth/pkg/config" graphExplorer "github.com/owncloud/ocis/extensions/graph-explorer/pkg/config" graph "github.com/owncloud/ocis/extensions/graph/pkg/config" @@ -85,6 +86,7 @@ type Config struct { Proxy *proxy.Config `yaml:"proxy"` Settings *settings.Config `yaml:"settings"` Storage *storage.Config `yaml:"storage"` + Frontend *frontend.Config `yaml:"frontend"` AuthBasic *authbasic.Config `yaml:"auth_basic"` AuthBearer *authbearer.Config `yaml:"auth_bearer"` AuthMachine *authmachine.Config `yaml:"auth_machine"` diff --git a/ocis-pkg/config/defaultconfig.go b/ocis-pkg/config/defaultconfig.go index 8213ec9a17..3435678787 100644 --- a/ocis-pkg/config/defaultconfig.go +++ b/ocis-pkg/config/defaultconfig.go @@ -7,6 +7,7 @@ import ( authbasic "github.com/owncloud/ocis/extensions/auth-basic/pkg/config/defaults" authbearer "github.com/owncloud/ocis/extensions/auth-bearer/pkg/config/defaults" authmachine "github.com/owncloud/ocis/extensions/auth-machine/pkg/config/defaults" + frontend "github.com/owncloud/ocis/extensions/frontend/pkg/config/defaults" glauth "github.com/owncloud/ocis/extensions/glauth/pkg/config/defaults" graphExplorer "github.com/owncloud/ocis/extensions/graph-explorer/pkg/config/defaults" graph "github.com/owncloud/ocis/extensions/graph/pkg/config/defaults" @@ -69,6 +70,7 @@ func DefaultConfig() *Config { StorageUsers: storageusers.FullDefaultConfig(), StorageShares: storageshares.FullDefaultConfig(), AppProvider: appprovider.FullDefaultConfig(), + Frontend: frontend.FullDefaultConfig(), OCDav: ocdav.FullDefaultConfig(), } } diff --git a/ocis/pkg/command/storagefrontend.go b/ocis/pkg/command/storagefrontend.go index 0bc98cbbdb..10ce1c2367 100644 --- a/ocis/pkg/command/storagefrontend.go +++ b/ocis/pkg/command/storagefrontend.go @@ -1,7 +1,7 @@ package command import ( - "github.com/owncloud/ocis/extensions/storage/pkg/command" + "github.com/owncloud/ocis/extensions/frontend/pkg/command" "github.com/owncloud/ocis/ocis-pkg/config" "github.com/owncloud/ocis/ocis/pkg/register" "github.com/urfave/cli/v2" @@ -14,11 +14,11 @@ func StorageFrontendCommand(cfg *config.Config) *cli.Command { Usage: "start storage frontend", Category: "extensions", //Flags: flagset.FrontendWithConfig(cfg.Storage), - Before: func(ctx *cli.Context) error { - return ParseStorageCommon(ctx, cfg) - }, + // Before: func(ctx *cli.Context) error { + // return ParseStorageCommon(ctx, cfg) + // }, Action: func(c *cli.Context) error { - origCmd := command.Frontend(cfg.Storage) + origCmd := command.Frontend(cfg.Frontend) return handleOriginalAction(c, origCmd) }, } diff --git a/ocis/pkg/runtime/service/service.go b/ocis/pkg/runtime/service/service.go index b37a8a144f..97871d62c2 100644 --- a/ocis/pkg/runtime/service/service.go +++ b/ocis/pkg/runtime/service/service.go @@ -24,6 +24,7 @@ import ( authbasic "github.com/owncloud/ocis/extensions/auth-basic/pkg/command" authbearer "github.com/owncloud/ocis/extensions/auth-bearer/pkg/command" authmachine "github.com/owncloud/ocis/extensions/auth-machine/pkg/command" + frontend "github.com/owncloud/ocis/extensions/frontend/pkg/command" glauth "github.com/owncloud/ocis/extensions/glauth/pkg/command" graphExplorer "github.com/owncloud/ocis/extensions/graph-explorer/pkg/command" graph "github.com/owncloud/ocis/extensions/graph/pkg/command" @@ -118,7 +119,7 @@ func NewService(options ...Option) (*Service, error) { s.ServicesRegistry["thumbnails"] = thumbnails.NewSutureService s.ServicesRegistry["web"] = web.NewSutureService s.ServicesRegistry["webdav"] = webdav.NewSutureService - s.ServicesRegistry["storage-frontend"] = storage.NewFrontend + s.ServicesRegistry["storage-frontend"] = frontend.NewFrontend s.ServicesRegistry["ocdav"] = ocdav.NewOCDav s.ServicesRegistry["storage-gateway"] = storage.NewGateway s.ServicesRegistry["storage-userprovider"] = user.NewUserProvider