Merge pull request #3287 from owncloud/config-example-yaml-v2
Generate config file documentation
This commit is contained in:
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/accounts/pkg/command"
|
"github.com/owncloud/ocis/accounts/pkg/command"
|
||||||
"github.com/owncloud/ocis/accounts/pkg/config"
|
"github.com/owncloud/ocis/accounts/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
accountsdefaults "github.com/owncloud/ocis/accounts/pkg/config/defaults"
|
||||||
|
idpdefaults "github.com/owncloud/ocis/idp/pkg/config/defaults"
|
||||||
|
"gopkg.in/yaml.v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
fn1 := accountsdefaults.FullDefaultConfig
|
||||||
|
fn2 := idpdefaults.FullDefaultConfig
|
||||||
|
|
||||||
|
b, err := yaml.Marshal(fn1())
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println(string(b))
|
||||||
|
|
||||||
|
b, err = yaml.Marshal(fn2())
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println(string(b))
|
||||||
|
}
|
||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -28,7 +28,7 @@ type Config struct {
|
|||||||
HashDifficulty int `ocisConfig:"hash_difficulty" env:"ACCOUNTS_HASH_DIFFICULTY" desc:"The hash difficulty makes sure that validating a password takes at least a certain amount of time."`
|
HashDifficulty int `ocisConfig:"hash_difficulty" env:"ACCOUNTS_HASH_DIFFICULTY" desc:"The hash difficulty makes sure that validating a password takes at least a certain amount of time."`
|
||||||
DemoUsersAndGroups bool `ocisConfig:"demo_users_and_groups" env:"ACCOUNTS_DEMO_USERS_AND_GROUPS" desc:"If this flag is set the service will setup the demo users and groups."`
|
DemoUsersAndGroups bool `ocisConfig:"demo_users_and_groups" env:"ACCOUNTS_DEMO_USERS_AND_GROUPS" desc:"If this flag is set the service will setup the demo users and groups."`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Asset defines the available asset configuration.
|
// Asset defines the available asset configuration.
|
||||||
|
|||||||
@@ -1,68 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
|
||||||
)
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Debug: Debug{
|
|
||||||
Addr: "127.0.0.1:9182",
|
|
||||||
Token: "",
|
|
||||||
Pprof: false,
|
|
||||||
Zpages: false,
|
|
||||||
},
|
|
||||||
HTTP: HTTP{
|
|
||||||
Addr: "127.0.0.1:9181",
|
|
||||||
Namespace: "com.owncloud.web",
|
|
||||||
Root: "/",
|
|
||||||
CacheTTL: 604800, // 7 days
|
|
||||||
CORS: CORS{
|
|
||||||
AllowedOrigins: []string{"*"},
|
|
||||||
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
|
|
||||||
AllowedHeaders: []string{"Authorization", "Origin", "Content-Type", "Accept", "X-Requested-With"},
|
|
||||||
AllowCredentials: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
GRPC: GRPC{
|
|
||||||
Addr: "127.0.0.1:9180",
|
|
||||||
Namespace: "com.owncloud.api",
|
|
||||||
},
|
|
||||||
Service: Service{
|
|
||||||
Name: "accounts",
|
|
||||||
},
|
|
||||||
Asset: Asset{},
|
|
||||||
TokenManager: TokenManager{
|
|
||||||
JWTSecret: "Pive-Fumkiu4",
|
|
||||||
},
|
|
||||||
HashDifficulty: 11,
|
|
||||||
DemoUsersAndGroups: true,
|
|
||||||
Repo: Repo{
|
|
||||||
Backend: "CS3",
|
|
||||||
Disk: Disk{
|
|
||||||
Path: path.Join(defaults.BaseDataPath(), "accounts"),
|
|
||||||
},
|
|
||||||
CS3: CS3{
|
|
||||||
ProviderAddr: "localhost:9215",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Index: Index{
|
|
||||||
UID: UIDBound{
|
|
||||||
Lower: 0,
|
|
||||||
Upper: 1000,
|
|
||||||
},
|
|
||||||
GID: GIDBound{
|
|
||||||
Lower: 0,
|
|
||||||
Upper: 1000,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ServiceUser: ServiceUser{
|
|
||||||
UUID: "95cb8724-03b2-11eb-a0a6-c33ef8ef53ad",
|
|
||||||
Username: "",
|
|
||||||
UID: 0,
|
|
||||||
GID: 0,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/accounts/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Debug: config.Debug{
|
||||||
|
Addr: "127.0.0.1:9182",
|
||||||
|
Token: "",
|
||||||
|
Pprof: false,
|
||||||
|
Zpages: false,
|
||||||
|
},
|
||||||
|
HTTP: config.HTTP{
|
||||||
|
Addr: "127.0.0.1:9181",
|
||||||
|
Namespace: "com.owncloud.web",
|
||||||
|
Root: "/",
|
||||||
|
CacheTTL: 604800, // 7 days
|
||||||
|
CORS: config.CORS{
|
||||||
|
AllowedOrigins: []string{"*"},
|
||||||
|
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
|
||||||
|
AllowedHeaders: []string{"Authorization", "Origin", "Content-Type", "Accept", "X-Requested-With"},
|
||||||
|
AllowCredentials: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
GRPC: config.GRPC{
|
||||||
|
Addr: "127.0.0.1:9180",
|
||||||
|
Namespace: "com.owncloud.api",
|
||||||
|
},
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "accounts",
|
||||||
|
},
|
||||||
|
Asset: config.Asset{},
|
||||||
|
TokenManager: config.TokenManager{
|
||||||
|
JWTSecret: "Pive-Fumkiu4",
|
||||||
|
},
|
||||||
|
HashDifficulty: 11,
|
||||||
|
DemoUsersAndGroups: true,
|
||||||
|
Repo: config.Repo{
|
||||||
|
Backend: "CS3",
|
||||||
|
Disk: config.Disk{
|
||||||
|
Path: path.Join(defaults.BaseDataPath(), "accounts"),
|
||||||
|
},
|
||||||
|
CS3: config.CS3{
|
||||||
|
ProviderAddr: "localhost:9215",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Index: config.Index{
|
||||||
|
UID: config.UIDBound{
|
||||||
|
Lower: 0,
|
||||||
|
Upper: 1000,
|
||||||
|
},
|
||||||
|
GID: config.GIDBound{
|
||||||
|
Lower: 0,
|
||||||
|
Upper: 1000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ServiceUser: config.ServiceUser{
|
||||||
|
UUID: "95cb8724-03b2-11eb-a0a6-c33ef8ef53ad",
|
||||||
|
Username: "",
|
||||||
|
UID: 0,
|
||||||
|
GID: 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.HTTP.Root != "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
||||||
|
}
|
||||||
|
cfg.Repo.Backend = strings.ToLower(cfg.Repo.Backend)
|
||||||
|
}
|
||||||
@@ -3,5 +3,5 @@ package config
|
|||||||
// GRPC defines the available grpc configuration.
|
// GRPC defines the available grpc configuration.
|
||||||
type GRPC struct {
|
type GRPC struct {
|
||||||
Addr string `ocisConfig:"addr" env:"ACCOUNTS_GRPC_ADDR" desc:"The address of the grpc service."`
|
Addr string `ocisConfig:"addr" env:"ACCOUNTS_GRPC_ADDR" desc:"The address of the grpc service."`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package config
|
|||||||
// HTTP defines the available http configuration.
|
// HTTP defines the available http configuration.
|
||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"ACCOUNTS_HTTP_ADDR" desc:"The address of the http service."`
|
Addr string `ocisConfig:"addr" env:"ACCOUNTS_HTTP_ADDR" desc:"The address of the http service."`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
Root string `ocisConfig:"root" env:"ACCOUNTS_HTTP_ROOT" desc:"The root path of the http service."`
|
Root string `ocisConfig:"root" env:"ACCOUNTS_HTTP_ROOT" desc:"The root path of the http service."`
|
||||||
CacheTTL int `ocisConfig:"cache_ttl" env:"ACCOUNTS_CACHE_TTL" desc:"The cache time for the static assets."`
|
CacheTTL int `ocisConfig:"cache_ttl" env:"ACCOUNTS_CACHE_TTL" desc:"The cache time for the static assets."`
|
||||||
CORS CORS
|
CORS CORS `ocisConfig:"cors"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CORS defines the available cors configuration.
|
// CORS defines the available cors configuration.
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/accounts/pkg/config"
|
"github.com/owncloud/ocis/accounts/pkg/config"
|
||||||
|
defaults "github.com/owncloud/ocis/accounts/pkg/config/defaults"
|
||||||
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -17,28 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -48,11 +27,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
defaults.Sanitize(cfg)
|
||||||
if cfg.HTTP.Root != "/" {
|
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
cfg.Repo.Backend = strings.ToLower(cfg.Repo.Backend)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
accountssvc "github.com/owncloud/ocis/protogen/gen/ocis/services/accounts/v0"
|
accountssvc "github.com/owncloud/ocis/protogen/gen/ocis/services/accounts/v0"
|
||||||
|
|
||||||
"github.com/golang/protobuf/ptypes/empty"
|
"github.com/golang/protobuf/ptypes/empty"
|
||||||
"github.com/owncloud/ocis/accounts/pkg/config"
|
config "github.com/owncloud/ocis/accounts/pkg/config/defaults"
|
||||||
olog "github.com/owncloud/ocis/ocis-pkg/log"
|
olog "github.com/owncloud/ocis/ocis-pkg/log"
|
||||||
"github.com/owncloud/ocis/ocis-pkg/middleware"
|
"github.com/owncloud/ocis/ocis-pkg/middleware"
|
||||||
"github.com/owncloud/ocis/ocis-pkg/roles"
|
"github.com/owncloud/ocis/ocis-pkg/roles"
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
Debug Debug `ocisConfig:"debug"`
|
Debug Debug `ocisConfig:"debug"`
|
||||||
@@ -18,7 +18,7 @@ type Config struct {
|
|||||||
Events Events `ocisConfig:"events"`
|
Events Events `ocisConfig:"events"`
|
||||||
Auditlog Auditlog `ocisConfig:"auditlog"`
|
Auditlog Auditlog `ocisConfig:"auditlog"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Events combines the configuration options for the event bus.
|
// Events combines the configuration options for the event bus.
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
*_configvars.md
|
*_configvars.md
|
||||||
|
*-example.yaml
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/accounts-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/accounts_configvars.md" >}}
|
{{< include file="extensions/_includes/accounts_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/glauth-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/glauth_configvars.md" >}}
|
{{< include file="extensions/_includes/glauth_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/graph-explorer-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/graph-explorer_configvars.md" >}}
|
{{< include file="extensions/_includes/graph-explorer_configvars.md" >}}
|
||||||
@@ -7,6 +7,8 @@ geekdocEditPath: edit/master/docs/extensions/graph
|
|||||||
geekdocFilePath: configuration.md
|
geekdocFilePath: configuration.md
|
||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/graph-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/graph_configvars.md" >}}
|
{{< include file="extensions/_includes/graph_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/idm-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/idm_configvars.md" >}}
|
{{< include file="extensions/_includes/idm_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/idp-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/idp_configvars.md" >}}
|
{{< include file="extensions/_includes/idp_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/nats-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/nats_configvars.md" >}}
|
{{< include file="extensions/_includes/nats_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/notifications-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/notifications_configvars.md" >}}
|
{{< include file="extensions/_includes/notifications_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/ocs-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/ocs_configvars.md" >}}
|
{{< include file="extensions/_includes/ocs_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/proxy-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/proxy_configvars.md" >}}
|
{{< include file="extensions/_includes/proxy_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/settings-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/settings_configvars.md" >}}
|
{{< include file="extensions/_includes/settings_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/store-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/store_configvars.md" >}}
|
{{< include file="extensions/_includes/store_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/thumbnails-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/thumbnails_configvars.md" >}}
|
{{< include file="extensions/_includes/thumbnails_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/web-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/web_configvars.md" >}}
|
{{< include file="extensions/_includes/web_configvars.md" >}}
|
||||||
@@ -8,5 +8,8 @@ geekdocFilePath: configuration.md
|
|||||||
geekdocCollapseSection: true
|
geekdocCollapseSection: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Example YAML Config
|
||||||
|
|
||||||
|
{{< include file="extensions/_includes/webdav-config-example.yaml" language="yaml" >}}
|
||||||
|
|
||||||
{{< include file="extensions/_includes/webdav_configvars.md" >}}
|
{{< include file="extensions/_includes/webdav_configvars.md" >}}
|
||||||
@@ -6,14 +6,20 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var targets = map[string]string{
|
||||||
|
"example-config-generator.go.tmpl": "output/exampleconfig/example-config-generator.go",
|
||||||
|
"extractor.go.tmpl": "output/env/runner.go",
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("Getting relevant packages")
|
fmt.Println("Getting relevant packages")
|
||||||
paths, err := filepath.Glob("../../*/pkg/config/defaultconfig.go")
|
paths, err := filepath.Glob("../../*/pkg/config/defaults/defaultconfig.go")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -24,27 +30,36 @@ func main() {
|
|||||||
for i := range paths {
|
for i := range paths {
|
||||||
paths[i] = replacer.Replace(paths[i])
|
paths[i] = replacer.Replace(paths[i])
|
||||||
}
|
}
|
||||||
content, err := ioutil.ReadFile("extractor.go.tmpl")
|
|
||||||
|
for template, output := range targets {
|
||||||
|
GenerateIntermediateCode(template, output, paths)
|
||||||
|
RunIntermediateCode(output)
|
||||||
|
}
|
||||||
|
fmt.Println("Cleaning up")
|
||||||
|
os.RemoveAll("output")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateIntermediateCode(templatePath string, intermediateCodePath string, paths []string) {
|
||||||
|
content, err := ioutil.ReadFile(templatePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
fmt.Println("Generating intermediate go code")
|
fmt.Println("Generating intermediate go code for " + intermediateCodePath + " using template " + templatePath)
|
||||||
tpl := template.Must(template.New("").Parse(string(content)))
|
tpl := template.Must(template.New("").Parse(string(content)))
|
||||||
os.Mkdir("output", 0700)
|
os.MkdirAll(path.Dir(intermediateCodePath), 0700)
|
||||||
runner, err := os.Create("output/runner.go")
|
runner, err := os.Create(intermediateCodePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
tpl.Execute(runner, paths)
|
tpl.Execute(runner, paths)
|
||||||
fmt.Println("Running intermediate go code")
|
}
|
||||||
os.Chdir("output")
|
|
||||||
|
func RunIntermediateCode(intermediateCodePath string) {
|
||||||
|
fmt.Println("Running intermediate go code for " + intermediateCodePath)
|
||||||
os.Setenv("OCIS_BASE_DATA_PATH", "~/.ocis")
|
os.Setenv("OCIS_BASE_DATA_PATH", "~/.ocis")
|
||||||
out, err := exec.Command("go", "run", "runner.go").Output()
|
out, err := exec.Command("go", "run", intermediateCodePath).Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
fmt.Println(string(out))
|
fmt.Println(string(out))
|
||||||
fmt.Println("Cleaning up")
|
|
||||||
os.Chdir("../")
|
|
||||||
os.RemoveAll("output")
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"gopkg.in/yaml.v2"
|
||||||
|
{{- range $key, $value := .}}
|
||||||
|
pkg{{$key}} "{{$value}}"
|
||||||
|
{{- end}}
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
replacer := strings.NewReplacer(
|
||||||
|
"github.com/owncloud/ocis/", "",
|
||||||
|
"/pkg/config/defaults", "",
|
||||||
|
)
|
||||||
|
cfg := map[string]string{
|
||||||
|
{{- range $key, $value := .}}
|
||||||
|
replacer.Replace("{{$value}}"): func() string {
|
||||||
|
fmt.Println("Generating example YAML config for {{ $value -}}")
|
||||||
|
c := pkg{{$key}}.DefaultConfig()
|
||||||
|
pkg{{$key}}.EnsureDefaults(c)
|
||||||
|
pkg{{$key}}.Sanitize(c)
|
||||||
|
yml, err := yaml.Marshal(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Marshalling yaml for pkg0 failed: %s\n", err)
|
||||||
|
}
|
||||||
|
return "# Autogenerated\n" + string(yml)
|
||||||
|
}(),
|
||||||
|
{{- end}}
|
||||||
|
}
|
||||||
|
for pkg, yml := range cfg {
|
||||||
|
targetFolders := []string{
|
||||||
|
// TODO: comment in when it is clear how to commit this to the structure of the master|main branch
|
||||||
|
// filepath.Join("../../", pkg, "/config"),
|
||||||
|
"../../docs/extensions/_includes/",
|
||||||
|
}
|
||||||
|
for _, targetFolder := range targetFolders {
|
||||||
|
os.MkdirAll(targetFolder, 0700)
|
||||||
|
targetYamlFile, err := os.Create(filepath.Join(targetFolder, replacer.Replace(pkg) + "-config-example.yaml"))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to create target file for : %s", err)
|
||||||
|
}
|
||||||
|
defer targetYamlFile.Close()
|
||||||
|
targetYamlFile.WriteString(yml)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -23,13 +23,13 @@ type ConfigField struct {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("Generating documentation for environment variables:")
|
fmt.Println("Generating documentation for environment variables:")
|
||||||
content, err := ioutil.ReadFile("../../../docs/templates/CONFIGURATION.tmpl")
|
content, err := ioutil.ReadFile("../../docs/templates/CONFIGURATION.tmpl")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
replacer := strings.NewReplacer(
|
replacer := strings.NewReplacer(
|
||||||
"github.com/owncloud/ocis/", "",
|
"github.com/owncloud/ocis/", "",
|
||||||
"/pkg/config", "",
|
"/pkg/config/defaults", "",
|
||||||
)
|
)
|
||||||
var fields []ConfigField
|
var fields []ConfigField
|
||||||
var targetFile *os.File
|
var targetFile *os.File
|
||||||
@@ -41,7 +41,7 @@ m := map[string]interface{}{
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
}
|
}
|
||||||
|
|
||||||
targetFolder := "../../../docs/extensions/_includes/"
|
targetFolder := "../../docs/extensions/_includes/"
|
||||||
for pkg, conf := range m {
|
for pkg, conf := range m {
|
||||||
fields = GetAnnotatedVariables(conf)
|
fields = GetAnnotatedVariables(conf)
|
||||||
if len(fields) > 0 {
|
if len(fields) > 0 {
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/glauth/pkg/command"
|
"github.com/owncloud/ocis/glauth/pkg/command"
|
||||||
"github.com/owncloud/ocis/glauth/pkg/config"
|
"github.com/owncloud/ocis/glauth/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -24,7 +24,7 @@ type Config struct {
|
|||||||
|
|
||||||
RoleBundleUUID string `ocisConfig:"role_bundle_uuid" env:"GLAUTH_ROLE_BUNDLE_ID"`
|
RoleBundleUUID string `ocisConfig:"role_bundle_uuid" env:"GLAUTH_ROLE_BUNDLE_ID"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backend defined the available backend configuration.
|
// Backend defined the available backend configuration.
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
|
||||||
)
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Debug: Debug{
|
|
||||||
Addr: "127.0.0.1:9129",
|
|
||||||
},
|
|
||||||
Service: Service{
|
|
||||||
Name: "glauth",
|
|
||||||
},
|
|
||||||
Ldap: Ldap{
|
|
||||||
Enabled: true,
|
|
||||||
Addr: "127.0.0.1:9125",
|
|
||||||
Namespace: "com.owncloud.ldap",
|
|
||||||
},
|
|
||||||
Ldaps: Ldaps{
|
|
||||||
Enabled: true,
|
|
||||||
Addr: "127.0.0.1:9126",
|
|
||||||
Namespace: "com.owncloud.ldaps",
|
|
||||||
Cert: path.Join(defaults.BaseDataPath(), "ldap", "ldap.crt"),
|
|
||||||
Key: path.Join(defaults.BaseDataPath(), "ldap", "ldap.key"),
|
|
||||||
},
|
|
||||||
Backend: Backend{
|
|
||||||
Datastore: "accounts",
|
|
||||||
BaseDN: "dc=ocis,dc=test",
|
|
||||||
Insecure: false,
|
|
||||||
NameFormat: "cn",
|
|
||||||
GroupFormat: "ou",
|
|
||||||
Servers: nil,
|
|
||||||
SSHKeyAttr: "sshPublicKey",
|
|
||||||
UseGraphAPI: true,
|
|
||||||
},
|
|
||||||
Fallback: FallbackBackend{
|
|
||||||
Datastore: "",
|
|
||||||
BaseDN: "dc=ocis,dc=test",
|
|
||||||
Insecure: false,
|
|
||||||
NameFormat: "cn",
|
|
||||||
GroupFormat: "ou",
|
|
||||||
Servers: nil,
|
|
||||||
SSHKeyAttr: "sshPublicKey",
|
|
||||||
UseGraphAPI: true,
|
|
||||||
},
|
|
||||||
RoleBundleUUID: "71881883-1768-46bd-a24d-a356a2afdf7f", // BundleUUIDRoleAdmin
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/glauth/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Debug: config.Debug{
|
||||||
|
Addr: "127.0.0.1:9129",
|
||||||
|
},
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "glauth",
|
||||||
|
},
|
||||||
|
Ldap: config.Ldap{
|
||||||
|
Enabled: true,
|
||||||
|
Addr: "127.0.0.1:9125",
|
||||||
|
Namespace: "com.owncloud.ldap",
|
||||||
|
},
|
||||||
|
Ldaps: config.Ldaps{
|
||||||
|
Enabled: true,
|
||||||
|
Addr: "127.0.0.1:9126",
|
||||||
|
Namespace: "com.owncloud.ldaps",
|
||||||
|
Cert: path.Join(defaults.BaseDataPath(), "ldap", "ldap.crt"),
|
||||||
|
Key: path.Join(defaults.BaseDataPath(), "ldap", "ldap.key"),
|
||||||
|
},
|
||||||
|
Backend: config.Backend{
|
||||||
|
Datastore: "accounts",
|
||||||
|
BaseDN: "dc=ocis,dc=test",
|
||||||
|
Insecure: false,
|
||||||
|
NameFormat: "cn",
|
||||||
|
GroupFormat: "ou",
|
||||||
|
Servers: nil,
|
||||||
|
SSHKeyAttr: "sshPublicKey",
|
||||||
|
UseGraphAPI: true,
|
||||||
|
},
|
||||||
|
Fallback: config.FallbackBackend{
|
||||||
|
Datastore: "",
|
||||||
|
BaseDN: "dc=ocis,dc=test",
|
||||||
|
Insecure: false,
|
||||||
|
NameFormat: "cn",
|
||||||
|
GroupFormat: "ou",
|
||||||
|
Servers: nil,
|
||||||
|
SSHKeyAttr: "sshPublicKey",
|
||||||
|
UseGraphAPI: true,
|
||||||
|
},
|
||||||
|
RoleBundleUUID: "71881883-1768-46bd-a24d-a356a2afdf7f", // BundleUUIDRoleAdmin
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// nothing to santizie here atm
|
||||||
|
}
|
||||||
@@ -4,5 +4,5 @@ package config
|
|||||||
type Ldap struct {
|
type Ldap struct {
|
||||||
Enabled bool `ocisConfig:"enabled" env:"GLAUTH_LDAP_ENABLED"`
|
Enabled bool `ocisConfig:"enabled" env:"GLAUTH_LDAP_ENABLED"`
|
||||||
Addr string `ocisConfig:"addr" env:"GLAUTH_LDAP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"GLAUTH_LDAP_ADDR"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ package config
|
|||||||
type Ldaps struct {
|
type Ldaps struct {
|
||||||
Enabled bool `ocisConfig:"enabled" env:"GLAUTH_LDAPS_ENABLED"`
|
Enabled bool `ocisConfig:"enabled" env:"GLAUTH_LDAPS_ENABLED"`
|
||||||
Addr string `ocisConfig:"addr" env:"GLAUTH_LDAPS_ADDR"`
|
Addr string `ocisConfig:"addr" env:"GLAUTH_LDAPS_ADDR"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
Cert string `ocisConfig:"cert" env:"GLAUTH_LDAPS_CERT"`
|
Cert string `ocisConfig:"cert" env:"GLAUTH_LDAPS_CERT"`
|
||||||
Key string `ocisConfig:"key" env:"GLAUTH_LDAPS_KEY"`
|
Key string `ocisConfig:"key" env:"GLAUTH_LDAPS_KEY"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/glauth/pkg/config"
|
"github.com/owncloud/ocis/glauth/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/glauth/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -16,29 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
// no environment variable set for this config is an expected "error"
|
// no environment variable set for this config is an expected "error"
|
||||||
@@ -48,6 +27,6 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
// sanitize config
|
||||||
|
defaults.Sanitize(cfg)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/graph-explorer/pkg/command"
|
"github.com/owncloud/ocis/graph-explorer/pkg/command"
|
||||||
"github.com/owncloud/ocis/graph-explorer/pkg/config"
|
"github.com/owncloud/ocis/graph-explorer/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -20,7 +20,7 @@ type Config struct {
|
|||||||
|
|
||||||
GraphExplorer GraphExplorer `ocisConfig:"graph_explorer"`
|
GraphExplorer GraphExplorer `ocisConfig:"graph_explorer"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GraphExplorer defines the available graph-explorer configuration.
|
// GraphExplorer defines the available graph-explorer configuration.
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Debug: Debug{
|
|
||||||
Addr: "127.0.0.1:9136",
|
|
||||||
Token: "",
|
|
||||||
Pprof: false,
|
|
||||||
Zpages: false,
|
|
||||||
},
|
|
||||||
HTTP: HTTP{
|
|
||||||
Addr: "127.0.0.1:9135",
|
|
||||||
Root: "/graph-explorer",
|
|
||||||
Namespace: "com.owncloud.web",
|
|
||||||
},
|
|
||||||
Service: Service{
|
|
||||||
Name: "graph-explorer",
|
|
||||||
},
|
|
||||||
GraphExplorer: GraphExplorer{
|
|
||||||
ClientID: "ocis-explorer.js",
|
|
||||||
Issuer: "https://localhost:9200",
|
|
||||||
GraphURLBase: "https://localhost:9200",
|
|
||||||
GraphURLPath: "/graph",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/graph-explorer/pkg/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Debug: config.Debug{
|
||||||
|
Addr: "127.0.0.1:9136",
|
||||||
|
Token: "",
|
||||||
|
Pprof: false,
|
||||||
|
Zpages: false,
|
||||||
|
},
|
||||||
|
HTTP: config.HTTP{
|
||||||
|
Addr: "127.0.0.1:9135",
|
||||||
|
Root: "/graph-explorer",
|
||||||
|
Namespace: "com.owncloud.web",
|
||||||
|
},
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "graph-explorer",
|
||||||
|
},
|
||||||
|
GraphExplorer: config.GraphExplorer{
|
||||||
|
ClientID: "ocis-explorer.js",
|
||||||
|
Issuer: "https://localhost:9200",
|
||||||
|
GraphURLBase: "https://localhost:9200",
|
||||||
|
GraphURLPath: "/graph",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.HTTP.Root == "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/graph-explorer")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ package config
|
|||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"GRAPH_EXPLORER_HTTP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"GRAPH_EXPLORER_HTTP_ADDR"`
|
||||||
Root string `ocisConfig:"root" env:"GRAPH_EXPLORER_HTTP_ROOT"`
|
Root string `ocisConfig:"root" env:"GRAPH_EXPLORER_HTTP_ROOT"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CORS defines the available cors configuration.
|
// CORS defines the available cors configuration.
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/graph-explorer/pkg/config"
|
"github.com/owncloud/ocis/graph-explorer/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/graph-explorer/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -17,28 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -49,9 +28,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
// sanitize config
|
||||||
if cfg.HTTP.Root != "/" {
|
defaults.Sanitize(cfg)
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/graph/pkg/command"
|
"github.com/owncloud/ocis/graph/pkg/command"
|
||||||
"github.com/owncloud/ocis/graph/pkg/config"
|
"github.com/owncloud/ocis/graph/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -24,7 +24,7 @@ type Config struct {
|
|||||||
Spaces Spaces `ocisConfig:"spaces"`
|
Spaces Spaces `ocisConfig:"spaces"`
|
||||||
Identity Identity `ocisConfig:"identity"`
|
Identity Identity `ocisConfig:"identity"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Spaces struct {
|
type Spaces struct {
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Debug: Debug{
|
|
||||||
Addr: "127.0.0.1:9124",
|
|
||||||
Token: "",
|
|
||||||
},
|
|
||||||
HTTP: HTTP{
|
|
||||||
Addr: "127.0.0.1:9120",
|
|
||||||
Namespace: "com.owncloud.graph",
|
|
||||||
Root: "/graph",
|
|
||||||
},
|
|
||||||
Service: Service{
|
|
||||||
Name: "graph",
|
|
||||||
},
|
|
||||||
Reva: Reva{
|
|
||||||
Address: "127.0.0.1:9142",
|
|
||||||
},
|
|
||||||
TokenManager: TokenManager{
|
|
||||||
JWTSecret: "Pive-Fumkiu4",
|
|
||||||
},
|
|
||||||
Spaces: Spaces{
|
|
||||||
WebDavBase: "https://localhost:9200",
|
|
||||||
WebDavPath: "/dav/spaces/",
|
|
||||||
DefaultQuota: "1000000000",
|
|
||||||
Insecure: false,
|
|
||||||
},
|
|
||||||
Identity: Identity{
|
|
||||||
Backend: "cs3",
|
|
||||||
LDAP: LDAP{
|
|
||||||
URI: "ldap://localhost:9125",
|
|
||||||
Insecure: false,
|
|
||||||
BindDN: "",
|
|
||||||
BindPassword: "",
|
|
||||||
UseServerUUID: false,
|
|
||||||
WriteEnabled: false,
|
|
||||||
UserBaseDN: "ou=users,dc=ocis,dc=test",
|
|
||||||
UserSearchScope: "sub",
|
|
||||||
UserFilter: "(objectClass=inetOrgPerson)",
|
|
||||||
UserEmailAttribute: "mail",
|
|
||||||
UserDisplayNameAttribute: "displayName",
|
|
||||||
UserNameAttribute: "uid",
|
|
||||||
// FIXME: switch this to some more widely available attribute by default
|
|
||||||
// ideally this needs to be constant for the lifetime of a users
|
|
||||||
UserIDAttribute: "owncloudUUID",
|
|
||||||
GroupBaseDN: "ou=groups,dc=ocis,dc=test",
|
|
||||||
GroupSearchScope: "sub",
|
|
||||||
GroupFilter: "(objectclass=groupOfNames)",
|
|
||||||
GroupNameAttribute: "cn",
|
|
||||||
GroupIDAttribute: "owncloudUUID",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/graph/pkg/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Debug: config.Debug{
|
||||||
|
Addr: "127.0.0.1:9124",
|
||||||
|
Token: "",
|
||||||
|
},
|
||||||
|
HTTP: config.HTTP{
|
||||||
|
Addr: "127.0.0.1:9120",
|
||||||
|
Namespace: "com.owncloud.graph",
|
||||||
|
Root: "/graph",
|
||||||
|
},
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "graph",
|
||||||
|
},
|
||||||
|
Reva: config.Reva{
|
||||||
|
Address: "127.0.0.1:9142",
|
||||||
|
},
|
||||||
|
TokenManager: config.TokenManager{
|
||||||
|
JWTSecret: "Pive-Fumkiu4",
|
||||||
|
},
|
||||||
|
Spaces: config.Spaces{
|
||||||
|
WebDavBase: "https://localhost:9200",
|
||||||
|
WebDavPath: "/dav/spaces/",
|
||||||
|
DefaultQuota: "1000000000",
|
||||||
|
Insecure: false,
|
||||||
|
},
|
||||||
|
Identity: config.Identity{
|
||||||
|
Backend: "cs3",
|
||||||
|
LDAP: config.LDAP{
|
||||||
|
URI: "ldap://localhost:9125",
|
||||||
|
Insecure: false,
|
||||||
|
BindDN: "",
|
||||||
|
BindPassword: "",
|
||||||
|
UseServerUUID: false,
|
||||||
|
WriteEnabled: false,
|
||||||
|
UserBaseDN: "ou=users,dc=ocis,dc=test",
|
||||||
|
UserSearchScope: "sub",
|
||||||
|
UserFilter: "(objectClass=inetOrgPerson)",
|
||||||
|
UserEmailAttribute: "mail",
|
||||||
|
UserDisplayNameAttribute: "displayName",
|
||||||
|
UserNameAttribute: "uid",
|
||||||
|
// FIXME: switch this to some more widely available attribute by default
|
||||||
|
// ideally this needs to be constant for the lifetime of a users
|
||||||
|
UserIDAttribute: "owncloudUUID",
|
||||||
|
GroupBaseDN: "ou=groups,dc=ocis,dc=test",
|
||||||
|
GroupSearchScope: "sub",
|
||||||
|
GroupFilter: "(objectclass=groupOfNames)",
|
||||||
|
GroupNameAttribute: "cn",
|
||||||
|
GroupIDAttribute: "owncloudUUID",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.HTTP.Root != "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,6 @@ package config
|
|||||||
// HTTP defines the available http configuration.
|
// HTTP defines the available http configuration.
|
||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"GRAPH_HTTP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"GRAPH_HTTP_ADDR"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
Root string `ocisConfig:"root" env:"GRAPH_HTTP_ROOT"`
|
Root string `ocisConfig:"root" env:"GRAPH_HTTP_ROOT"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/graph/pkg/config"
|
"github.com/owncloud/ocis/graph/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/graph/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -17,28 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -48,10 +27,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
defaults.Sanitize(cfg)
|
||||||
if cfg.HTTP.Root != "/" {
|
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
libregraph "github.com/owncloud/libre-graph-api-go"
|
libregraph "github.com/owncloud/libre-graph-api-go"
|
||||||
"github.com/owncloud/ocis/graph/mocks"
|
"github.com/owncloud/ocis/graph/mocks"
|
||||||
"github.com/owncloud/ocis/graph/pkg/config"
|
"github.com/owncloud/ocis/graph/pkg/config/defaults"
|
||||||
service "github.com/owncloud/ocis/graph/pkg/service/v0"
|
service "github.com/owncloud/ocis/graph/pkg/service/v0"
|
||||||
"github.com/owncloud/ocis/graph/pkg/service/v0/errorcode"
|
"github.com/owncloud/ocis/graph/pkg/service/v0/errorcode"
|
||||||
"github.com/stretchr/testify/mock"
|
"github.com/stretchr/testify/mock"
|
||||||
@@ -34,7 +34,7 @@ var _ = Describe("Graph", func() {
|
|||||||
gatewayClient = &mocks.GatewayClient{}
|
gatewayClient = &mocks.GatewayClient{}
|
||||||
httpClient = &mocks.HTTPClient{}
|
httpClient = &mocks.HTTPClient{}
|
||||||
svc = service.NewService(
|
svc = service.NewService(
|
||||||
service.Config(config.DefaultConfig()),
|
service.Config(defaults.DefaultConfig()),
|
||||||
service.WithGatewayClient(gatewayClient),
|
service.WithGatewayClient(gatewayClient),
|
||||||
service.WithHTTPClient(httpClient),
|
service.WithHTTPClient(httpClient),
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-2
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/idm/pkg/command"
|
"github.com/owncloud/ocis/idm/pkg/command"
|
||||||
"github.com/owncloud/ocis/idm/pkg/config"
|
"github.com/owncloud/ocis/idm/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -21,7 +21,7 @@ type Config struct {
|
|||||||
|
|
||||||
ServiceUserPasswords ServiceUserPasswords `ocisConfig:"service_user_passwords"`
|
ServiceUserPasswords ServiceUserPasswords `ocisConfig:"service_user_passwords"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/idm/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "idm",
|
||||||
|
},
|
||||||
|
IDM: config.Settings{
|
||||||
|
LDAPSAddr: "127.0.0.1:9235",
|
||||||
|
Cert: path.Join(defaults.BaseDataPath(), "idm", "ldap.crt"),
|
||||||
|
Key: path.Join(defaults.BaseDataPath(), "idm", "ldap.key"),
|
||||||
|
DatabasePath: path.Join(defaults.BaseDataPath(), "idm", "ocis.boltdb"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// nothing to sanitize here
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/idm/pkg/config"
|
"github.com/owncloud/ocis/idm/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/idm/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -16,29 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
// no environment variable set for this config is an expected "error"
|
// no environment variable set for this config is an expected "error"
|
||||||
@@ -47,5 +26,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defaults.Sanitize(cfg)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/idp/pkg/command"
|
"github.com/owncloud/ocis/idp/pkg/command"
|
||||||
"github.com/owncloud/ocis/idp/pkg/config"
|
"github.com/owncloud/ocis/idp/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -22,7 +22,7 @@ type Config struct {
|
|||||||
IDP Settings `ocisConfig:"idp"`
|
IDP Settings `ocisConfig:"idp"`
|
||||||
Ldap Ldap `ocisConfig:"ldap"`
|
Ldap Ldap `ocisConfig:"ldap"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ldap defines the available LDAP configuration.
|
// Ldap defines the available LDAP configuration.
|
||||||
|
|||||||
@@ -1,17 +1,28 @@
|
|||||||
package config
|
package defaults
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"path"
|
"path"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/idp/pkg/config"
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
func FullDefaultConfig() *config.Config {
|
||||||
return &Config{
|
cfg := DefaultConfig()
|
||||||
Debug: Debug{
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Debug: config.Debug{
|
||||||
Addr: "127.0.0.1:9134",
|
Addr: "127.0.0.1:9134",
|
||||||
},
|
},
|
||||||
HTTP: HTTP{
|
HTTP: config.HTTP{
|
||||||
Addr: "127.0.0.1:9130",
|
Addr: "127.0.0.1:9130",
|
||||||
Root: "/",
|
Root: "/",
|
||||||
Namespace: "com.owncloud.web",
|
Namespace: "com.owncloud.web",
|
||||||
@@ -19,11 +30,11 @@ func DefaultConfig() *Config {
|
|||||||
TLSKey: path.Join(defaults.BaseDataPath(), "idp", "server.key"),
|
TLSKey: path.Join(defaults.BaseDataPath(), "idp", "server.key"),
|
||||||
TLS: false,
|
TLS: false,
|
||||||
},
|
},
|
||||||
Service: Service{
|
Service: config.Service{
|
||||||
Name: "idp",
|
Name: "idp",
|
||||||
},
|
},
|
||||||
Asset: Asset{},
|
Asset: config.Asset{},
|
||||||
IDP: Settings{
|
IDP: config.Settings{
|
||||||
Iss: "https://localhost:9200",
|
Iss: "https://localhost:9200",
|
||||||
IdentityManager: "ldap",
|
IdentityManager: "ldap",
|
||||||
URIBasePath: "",
|
URIBasePath: "",
|
||||||
@@ -56,7 +67,7 @@ func DefaultConfig() *Config {
|
|||||||
RefreshTokenDurationSeconds: 60 * 60 * 24 * 365 * 3, // 1 year
|
RefreshTokenDurationSeconds: 60 * 60 * 24 * 365 * 3, // 1 year
|
||||||
DyamicClientSecretDurationSeconds: 0,
|
DyamicClientSecretDurationSeconds: 0,
|
||||||
},
|
},
|
||||||
Ldap: Ldap{
|
Ldap: config.Ldap{
|
||||||
URI: "ldap://localhost:9125",
|
URI: "ldap://localhost:9125",
|
||||||
BindDN: "cn=idp,ou=sysusers,dc=ocis,dc=test",
|
BindDN: "cn=idp,ou=sysusers,dc=ocis,dc=test",
|
||||||
BindPassword: "idp",
|
BindPassword: "idp",
|
||||||
@@ -71,3 +82,35 @@ func DefaultConfig() *Config {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.HTTP.Root != "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ package config
|
|||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"IDP_HTTP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"IDP_HTTP_ADDR"`
|
||||||
Root string `ocisConfig:"root" env:"IDP_HTTP_ROOT"`
|
Root string `ocisConfig:"root" env:"IDP_HTTP_ROOT"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
TLSCert string `ocisConfig:"tls_cert" env:"IDP_TRANSPORT_TLS_CERT"`
|
TLSCert string `ocisConfig:"tls_cert" env:"IDP_TRANSPORT_TLS_CERT"`
|
||||||
TLSKey string `ocisConfig:"tls_key" env:"IDP_TRANSPORT_TLS_KEY"`
|
TLSKey string `ocisConfig:"tls_key" env:"IDP_TRANSPORT_TLS_KEY"`
|
||||||
TLS bool `ocisConfig:"tls" env:"IDP_TLS"`
|
TLS bool `ocisConfig:"tls" env:"IDP_TLS"`
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package config
|
|||||||
|
|
||||||
// Log defines the available log configuration.
|
// Log defines the available log configuration.
|
||||||
type Log struct {
|
type Log struct {
|
||||||
Level string `mapstructure:"level" env:"OCIS_LOG_LEVEL;IDP_LOG_LEVEL"`
|
Level string `ocisConfig:"level" env:"OCIS_LOG_LEVEL;IDP_LOG_LEVEL"`
|
||||||
Pretty bool `mapstructure:"pretty" env:"OCIS_LOG_PRETTY;IDP_LOG_PRETTY"`
|
Pretty bool `ocisConfig:"pretty" env:"OCIS_LOG_PRETTY;IDP_LOG_PRETTY"`
|
||||||
Color bool `mapstructure:"color" env:"OCIS_LOG_COLOR;IDP_LOG_COLOR"`
|
Color bool `ocisConfig:"color" env:"OCIS_LOG_COLOR;IDP_LOG_COLOR"`
|
||||||
File string `mapstructure:"file" env:"OCIS_LOG_FILE;IDP_LOG_FILE"`
|
File string `ocisConfig:"file" env:"OCIS_LOG_FILE;IDP_LOG_FILE"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/idp/pkg/config"
|
"github.com/owncloud/ocis/idp/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/idp/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -17,28 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -48,10 +27,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
defaults.Sanitize(cfg)
|
||||||
if cfg.HTTP.Root != "/" {
|
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/nats/pkg/command"
|
"github.com/owncloud/ocis/nats/pkg/command"
|
||||||
"github.com/owncloud/ocis/nats/pkg/config"
|
"github.com/owncloud/ocis/nats/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,16 +8,16 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
Debug Debug `ocisConfig:"debug"`
|
Debug Debug `ocisConfig:"debug"`
|
||||||
|
|
||||||
Nats Nats `ociConfig:"nats"`
|
Nats Nats `ociConfig:"nats"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nats is the nats config
|
// Nats is the nats config
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
// NOTE: Most of this configuration is not needed to keep it as simple as possible
|
|
||||||
// TODO: Clean up unneeded configuration
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Service: Service{
|
|
||||||
Name: "nats",
|
|
||||||
},
|
|
||||||
Nats: Nats{
|
|
||||||
Host: "127.0.0.1",
|
|
||||||
Port: 9233,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import "github.com/owncloud/ocis/nats/pkg/config"
|
||||||
|
|
||||||
|
// NOTE: Most of this configuration is not needed to keep it as simple as possible
|
||||||
|
// TODO: Clean up unneeded configuration
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "nats",
|
||||||
|
},
|
||||||
|
Nats: config.Nats{
|
||||||
|
Host: "127.0.0.1",
|
||||||
|
Port: 9233,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// nothing to sanitize here atm
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/nats/pkg/config"
|
"github.com/owncloud/ocis/nats/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/nats/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -16,17 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -36,5 +27,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defaults.Sanitize(cfg)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/notifications/pkg/command"
|
"github.com/owncloud/ocis/notifications/pkg/command"
|
||||||
"github.com/owncloud/ocis/notifications/pkg/config"
|
"github.com/owncloud/ocis/notifications/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,16 +8,16 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
Debug Debug `ocisConfig:"debug"`
|
Debug Debug `ocisConfig:"debug"`
|
||||||
|
|
||||||
Notifications Notifications `ocisConfig:"notifications"`
|
Notifications Notifications `ocisConfig:"notifications"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notifications definces the config options for the notifications service.
|
// Notifications definces the config options for the notifications service.
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
// NOTE: Most of this configuration is not needed to keep it as simple as possible
|
|
||||||
// TODO: Clean up unneeded configuration
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Service: Service{
|
|
||||||
Name: "notifications",
|
|
||||||
},
|
|
||||||
Notifications: Notifications{
|
|
||||||
SMTP: SMTP{
|
|
||||||
Host: "127.0.0.1",
|
|
||||||
Port: "1025",
|
|
||||||
Sender: "god@example.com",
|
|
||||||
Password: "godisdead",
|
|
||||||
},
|
|
||||||
Events: Events{
|
|
||||||
Endpoint: "127.0.0.1:9233",
|
|
||||||
Cluster: "test-cluster",
|
|
||||||
ConsumerGroup: "notifications",
|
|
||||||
},
|
|
||||||
RevaGateway: "127.0.0.1:9142",
|
|
||||||
MachineAuthSecret: "change-me-please",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import "github.com/owncloud/ocis/notifications/pkg/config"
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: Most of this configuration is not needed to keep it as simple as possible
|
||||||
|
// TODO: Clean up unneeded configuration
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "notifications",
|
||||||
|
},
|
||||||
|
Notifications: config.Notifications{
|
||||||
|
SMTP: config.SMTP{
|
||||||
|
Host: "127.0.0.1",
|
||||||
|
Port: "1025",
|
||||||
|
Sender: "god@example.com",
|
||||||
|
Password: "godisdead",
|
||||||
|
},
|
||||||
|
Events: config.Events{
|
||||||
|
Endpoint: "127.0.0.1:9233",
|
||||||
|
Cluster: "test-cluster",
|
||||||
|
ConsumerGroup: "notifications",
|
||||||
|
},
|
||||||
|
RevaGateway: "127.0.0.1:9142",
|
||||||
|
MachineAuthSecret: "change-me-please",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// nothing to sanitize here atm
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/notifications/pkg/config"
|
"github.com/owncloud/ocis/notifications/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/notifications/pkg/config/defaults"
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
@@ -16,17 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -36,5 +27,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defaults.Sanitize(cfg)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
accounts "github.com/owncloud/ocis/accounts/pkg/config"
|
accounts "github.com/owncloud/ocis/accounts/pkg/config/defaults"
|
||||||
audit "github.com/owncloud/ocis/audit/pkg/config"
|
audit "github.com/owncloud/ocis/audit/pkg/config"
|
||||||
glauth "github.com/owncloud/ocis/glauth/pkg/config"
|
glauth "github.com/owncloud/ocis/glauth/pkg/config/defaults"
|
||||||
graphExplorer "github.com/owncloud/ocis/graph-explorer/pkg/config"
|
graphExplorer "github.com/owncloud/ocis/graph-explorer/pkg/config/defaults"
|
||||||
graph "github.com/owncloud/ocis/graph/pkg/config"
|
graph "github.com/owncloud/ocis/graph/pkg/config/defaults"
|
||||||
idm "github.com/owncloud/ocis/idm/pkg/config"
|
idm "github.com/owncloud/ocis/idm/pkg/config/defaults"
|
||||||
idp "github.com/owncloud/ocis/idp/pkg/config"
|
idp "github.com/owncloud/ocis/idp/pkg/config/defaults"
|
||||||
nats "github.com/owncloud/ocis/nats/pkg/config"
|
nats "github.com/owncloud/ocis/nats/pkg/config/defaults"
|
||||||
notifications "github.com/owncloud/ocis/notifications/pkg/config"
|
notifications "github.com/owncloud/ocis/notifications/pkg/config/defaults"
|
||||||
ocs "github.com/owncloud/ocis/ocs/pkg/config"
|
ocs "github.com/owncloud/ocis/ocs/pkg/config/defaults"
|
||||||
proxy "github.com/owncloud/ocis/proxy/pkg/config"
|
proxy "github.com/owncloud/ocis/proxy/pkg/config/defaults"
|
||||||
settings "github.com/owncloud/ocis/settings/pkg/config"
|
settings "github.com/owncloud/ocis/settings/pkg/config/defaults"
|
||||||
storage "github.com/owncloud/ocis/storage/pkg/config"
|
storage "github.com/owncloud/ocis/storage/pkg/config/defaults"
|
||||||
store "github.com/owncloud/ocis/store/pkg/config"
|
store "github.com/owncloud/ocis/store/pkg/config/defaults"
|
||||||
thumbnails "github.com/owncloud/ocis/thumbnails/pkg/config"
|
thumbnails "github.com/owncloud/ocis/thumbnails/pkg/config/defaults"
|
||||||
web "github.com/owncloud/ocis/web/pkg/config"
|
web "github.com/owncloud/ocis/web/pkg/config/defaults"
|
||||||
webdav "github.com/owncloud/ocis/webdav/pkg/config"
|
webdav "github.com/owncloud/ocis/webdav/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
func DefaultConfig() *Config {
|
||||||
|
|||||||
+2
-2
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocs/pkg/command"
|
"github.com/owncloud/ocis/ocs/pkg/command"
|
||||||
"github.com/owncloud/ocis/ocs/pkg/config"
|
"github.com/owncloud/ocis/ocs/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -27,7 +27,7 @@ type Config struct {
|
|||||||
StorageUsersDriver string `ocisConfig:"storage_users_driver" env:"STORAGE_USERS_DRIVER;OCS_STORAGE_USERS_DRIVER"`
|
StorageUsersDriver string `ocisConfig:"storage_users_driver" env:"STORAGE_USERS_DRIVER;OCS_STORAGE_USERS_DRIVER"`
|
||||||
MachineAuthAPIKey string `ocisConfig:"machine_auth_api_key" env:"OCIS_MACHINE_AUTH_API_KEY;OCS_MACHINE_AUTH_API_KEY"`
|
MachineAuthAPIKey string `ocisConfig:"machine_auth_api_key" env:"OCIS_MACHINE_AUTH_API_KEY;OCS_MACHINE_AUTH_API_KEY"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// IdentityManagement keeps track of the OIDC address. This is because Reva requisite of uniqueness for users
|
// IdentityManagement keeps track of the OIDC address. This is because Reva requisite of uniqueness for users
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Debug: Debug{
|
|
||||||
Addr: "127.0.0.1:9114",
|
|
||||||
Token: "",
|
|
||||||
Pprof: false,
|
|
||||||
Zpages: false,
|
|
||||||
},
|
|
||||||
HTTP: HTTP{
|
|
||||||
Addr: "127.0.0.1:9110",
|
|
||||||
Root: "/ocs",
|
|
||||||
Namespace: "com.owncloud.web",
|
|
||||||
CORS: CORS{
|
|
||||||
AllowedOrigins: []string{"*"},
|
|
||||||
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
|
|
||||||
AllowedHeaders: []string{"Authorization", "Origin", "Content-Type", "Accept", "X-Requested-With"},
|
|
||||||
AllowCredentials: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Service: Service{
|
|
||||||
Name: "ocs",
|
|
||||||
},
|
|
||||||
|
|
||||||
TokenManager: TokenManager{
|
|
||||||
JWTSecret: "Pive-Fumkiu4",
|
|
||||||
},
|
|
||||||
AccountBackend: "accounts",
|
|
||||||
Reva: Reva{Address: "127.0.0.1:9142"},
|
|
||||||
StorageUsersDriver: "ocis",
|
|
||||||
MachineAuthAPIKey: "change-me-please",
|
|
||||||
IdentityManagement: IdentityManagement{
|
|
||||||
Address: "https://localhost:9200",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/ocs/pkg/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Debug: config.Debug{
|
||||||
|
Addr: "127.0.0.1:9114",
|
||||||
|
Token: "",
|
||||||
|
Pprof: false,
|
||||||
|
Zpages: false,
|
||||||
|
},
|
||||||
|
HTTP: config.HTTP{
|
||||||
|
Addr: "127.0.0.1:9110",
|
||||||
|
Root: "/ocs",
|
||||||
|
Namespace: "com.owncloud.web",
|
||||||
|
CORS: config.CORS{
|
||||||
|
AllowedOrigins: []string{"*"},
|
||||||
|
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
|
||||||
|
AllowedHeaders: []string{"Authorization", "Origin", "Content-Type", "Accept", "X-Requested-With"},
|
||||||
|
AllowCredentials: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "ocs",
|
||||||
|
},
|
||||||
|
|
||||||
|
TokenManager: config.TokenManager{
|
||||||
|
JWTSecret: "Pive-Fumkiu4",
|
||||||
|
},
|
||||||
|
AccountBackend: "accounts",
|
||||||
|
Reva: config.Reva{
|
||||||
|
Address: "127.0.0.1:9142",
|
||||||
|
},
|
||||||
|
StorageUsersDriver: "ocis",
|
||||||
|
MachineAuthAPIKey: "change-me-please",
|
||||||
|
IdentityManagement: config.IdentityManagement{
|
||||||
|
Address: "https://localhost:9200",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.HTTP.Root != "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,8 +4,8 @@ package config
|
|||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"OCS_HTTP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"OCS_HTTP_ADDR"`
|
||||||
Root string `ocisConfig:"root" env:"OCS_HTTP_ROOT"`
|
Root string `ocisConfig:"root" env:"OCS_HTTP_ROOT"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
CORS CORS `ocisConfig:"cors"`
|
CORS CORS `ocisConfig:"cors"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CORS defines the available cors configuration.
|
// CORS defines the available cors configuration.
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
"github.com/owncloud/ocis/ocs/pkg/config"
|
"github.com/owncloud/ocis/ocs/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/ocs/pkg/config/defaults"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
)
|
)
|
||||||
@@ -17,28 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
@@ -48,10 +27,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
defaults.Sanitize(cfg)
|
||||||
if cfg.HTTP.Root != "/" {
|
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/proxy/pkg/command"
|
"github.com/owncloud/ocis/proxy/pkg/command"
|
||||||
"github.com/owncloud/ocis/proxy/pkg/config"
|
"github.com/owncloud/ocis/proxy/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -34,7 +34,7 @@ type Config struct {
|
|||||||
InsecureBackends bool `ocisConfig:"insecure_backends" env:"PROXY_INSECURE_BACKENDS"`
|
InsecureBackends bool `ocisConfig:"insecure_backends" env:"PROXY_INSECURE_BACKENDS"`
|
||||||
AuthMiddleware AuthMiddleware `ocisConfig:"auth_middleware"`
|
AuthMiddleware AuthMiddleware `ocisConfig:"auth_middleware"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Policy enables us to use multiple directors.
|
// Policy enables us to use multiple directors.
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
package config
|
package defaults
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"path"
|
"path"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
||||||
|
"github.com/owncloud/ocis/proxy/pkg/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
func DefaultConfig() *config.Config {
|
||||||
return &Config{
|
return &config.Config{
|
||||||
Debug: Debug{
|
Debug: config.Debug{
|
||||||
Addr: "127.0.0.1:9205",
|
Addr: "127.0.0.1:9205",
|
||||||
Token: "",
|
Token: "",
|
||||||
},
|
},
|
||||||
HTTP: HTTP{
|
HTTP: config.HTTP{
|
||||||
Addr: "0.0.0.0:9200",
|
Addr: "0.0.0.0:9200",
|
||||||
Root: "/",
|
Root: "/",
|
||||||
Namespace: "com.owncloud.web",
|
Namespace: "com.owncloud.web",
|
||||||
@@ -20,26 +22,26 @@ func DefaultConfig() *Config {
|
|||||||
TLSKey: path.Join(defaults.BaseDataPath(), "proxy", "server.key"),
|
TLSKey: path.Join(defaults.BaseDataPath(), "proxy", "server.key"),
|
||||||
TLS: true,
|
TLS: true,
|
||||||
},
|
},
|
||||||
Service: Service{
|
Service: config.Service{
|
||||||
Name: "proxy",
|
Name: "proxy",
|
||||||
},
|
},
|
||||||
OIDC: OIDC{
|
OIDC: config.OIDC{
|
||||||
Issuer: "https://localhost:9200",
|
Issuer: "https://localhost:9200",
|
||||||
Insecure: true,
|
Insecure: true,
|
||||||
//Insecure: true,
|
//Insecure: true,
|
||||||
UserinfoCache: UserinfoCache{
|
UserinfoCache: config.UserinfoCache{
|
||||||
Size: 1024,
|
Size: 1024,
|
||||||
TTL: 10,
|
TTL: 10,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
TokenManager: TokenManager{
|
TokenManager: config.TokenManager{
|
||||||
JWTSecret: "Pive-Fumkiu4",
|
JWTSecret: "Pive-Fumkiu4",
|
||||||
},
|
},
|
||||||
PolicySelector: nil,
|
PolicySelector: nil,
|
||||||
Reva: Reva{
|
Reva: config.Reva{
|
||||||
Address: "127.0.0.1:9142",
|
Address: "127.0.0.1:9142",
|
||||||
},
|
},
|
||||||
PreSignedURL: PreSignedURL{
|
PreSignedURL: config.PreSignedURL{
|
||||||
AllowedHTTPMethods: []string{"GET"},
|
AllowedHTTPMethods: []string{"GET"},
|
||||||
Enabled: true,
|
Enabled: true,
|
||||||
},
|
},
|
||||||
@@ -55,11 +57,11 @@ func DefaultConfig() *Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultPolicies() []Policy {
|
func DefaultPolicies() []config.Policy {
|
||||||
return []Policy{
|
return []config.Policy{
|
||||||
{
|
{
|
||||||
Name: "ocis",
|
Name: "ocis",
|
||||||
Routes: []Route{
|
Routes: []config.Route{
|
||||||
{
|
{
|
||||||
Endpoint: "/",
|
Endpoint: "/",
|
||||||
Backend: "http://localhost:9100",
|
Backend: "http://localhost:9100",
|
||||||
@@ -81,7 +83,7 @@ func DefaultPolicies() []Policy {
|
|||||||
Backend: "http://localhost:9140",
|
Backend: "http://localhost:9140",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: RegexRoute,
|
Type: config.RegexRoute,
|
||||||
Endpoint: "/ocs/v[12].php/cloud/(users?|groups)", // we have `user`, `users` and `groups` in ocis-ocs
|
Endpoint: "/ocs/v[12].php/cloud/(users?|groups)", // we have `user`, `users` and `groups` in ocis-ocs
|
||||||
Backend: "http://localhost:9110",
|
Backend: "http://localhost:9110",
|
||||||
},
|
},
|
||||||
@@ -90,7 +92,7 @@ func DefaultPolicies() []Policy {
|
|||||||
Backend: "http://localhost:9140",
|
Backend: "http://localhost:9140",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: QueryRoute,
|
Type: config.QueryRoute,
|
||||||
Endpoint: "/remote.php/?preview=1",
|
Endpoint: "/remote.php/?preview=1",
|
||||||
Backend: "http://localhost:9115",
|
Backend: "http://localhost:9115",
|
||||||
},
|
},
|
||||||
@@ -152,7 +154,7 @@ func DefaultPolicies() []Policy {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "oc10",
|
Name: "oc10",
|
||||||
Routes: []Route{
|
Routes: []config.Route{
|
||||||
{
|
{
|
||||||
Endpoint: "/",
|
Endpoint: "/",
|
||||||
Backend: "http://localhost:9100",
|
Backend: "http://localhost:9100",
|
||||||
@@ -212,3 +214,40 @@ func DefaultPolicies() []Policy {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.Policies == nil {
|
||||||
|
cfg.Policies = DefaultPolicies()
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.HTTP.Root != "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ package config
|
|||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"PROXY_HTTP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"PROXY_HTTP_ADDR"`
|
||||||
Root string `ocisConfig:"root" env:"PROXY_HTTP_ROOT"`
|
Root string `ocisConfig:"root" env:"PROXY_HTTP_ROOT"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
TLSCert string `ocisConfig:"tls_cert" env:"PROXY_TRANSPORT_TLS_CERT"`
|
TLSCert string `ocisConfig:"tls_cert" env:"PROXY_TRANSPORT_TLS_CERT"`
|
||||||
TLSKey string `ocisConfig:"tls_key" env:"PROXY_TRANSPORT_TLS_KEY"`
|
TLSKey string `ocisConfig:"tls_key" env:"PROXY_TRANSPORT_TLS_KEY"`
|
||||||
TLS bool `ocisConfig:"tls" env:"PROXY_TLS"`
|
TLS bool `ocisConfig:"tls" env:"PROXY_TLS"`
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
"github.com/owncloud/ocis/proxy/pkg/config"
|
"github.com/owncloud/ocis/proxy/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/proxy/pkg/config/defaults"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
)
|
)
|
||||||
@@ -17,29 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
// no environment variable set for this config is an expected "error"
|
// no environment variable set for this config is an expected "error"
|
||||||
@@ -48,15 +26,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
defaults.Sanitize(cfg)
|
||||||
|
|
||||||
if cfg.Policies == nil {
|
|
||||||
cfg.Policies = config.DefaultPolicies()
|
|
||||||
}
|
|
||||||
|
|
||||||
if cfg.HTTP.Root != "/" {
|
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package config
|
|||||||
|
|
||||||
// Service defines the available service configuration.
|
// Service defines the available service configuration.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
Name string
|
Name string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/proxy/pkg/config"
|
"github.com/owncloud/ocis/proxy/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
type matchertest struct {
|
type matchertest struct {
|
||||||
@@ -13,8 +13,8 @@ type matchertest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPrefixRouteMatcher(t *testing.T) {
|
func TestPrefixRouteMatcher(t *testing.T) {
|
||||||
cfg := config.DefaultConfig()
|
cfg := defaults.DefaultConfig()
|
||||||
cfg.Policies = config.DefaultPolicies()
|
cfg.Policies = defaults.DefaultPolicies()
|
||||||
p := NewMultiHostReverseProxy(Config(cfg))
|
p := NewMultiHostReverseProxy(Config(cfg))
|
||||||
|
|
||||||
table := []matchertest{
|
table := []matchertest{
|
||||||
@@ -33,8 +33,8 @@ func TestPrefixRouteMatcher(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestQueryRouteMatcher(t *testing.T) {
|
func TestQueryRouteMatcher(t *testing.T) {
|
||||||
cfg := config.DefaultConfig()
|
cfg := defaults.DefaultConfig()
|
||||||
cfg.Policies = config.DefaultPolicies()
|
cfg.Policies = defaults.DefaultPolicies()
|
||||||
p := NewMultiHostReverseProxy(Config(cfg))
|
p := NewMultiHostReverseProxy(Config(cfg))
|
||||||
|
|
||||||
table := []matchertest{
|
table := []matchertest{
|
||||||
@@ -61,8 +61,8 @@ func TestQueryRouteMatcher(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRegexRouteMatcher(t *testing.T) {
|
func TestRegexRouteMatcher(t *testing.T) {
|
||||||
cfg := config.DefaultConfig()
|
cfg := defaults.DefaultConfig()
|
||||||
cfg.Policies = config.DefaultPolicies()
|
cfg.Policies = defaults.DefaultPolicies()
|
||||||
p := NewMultiHostReverseProxy(Config(cfg))
|
p := NewMultiHostReverseProxy(Config(cfg))
|
||||||
|
|
||||||
table := []matchertest{
|
table := []matchertest{
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/settings/pkg/command"
|
"github.com/owncloud/ocis/settings/pkg/command"
|
||||||
"github.com/owncloud/ocis/settings/pkg/config"
|
"github.com/owncloud/ocis/settings/pkg/config/defaults"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := command.Execute(config.DefaultConfig()); err != nil {
|
if err := command.Execute(defaults.DefaultConfig()); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
// Config combines all available configuration parts.
|
// Config combines all available configuration parts.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
*shared.Commons
|
*shared.Commons `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Service Service
|
Service Service `ocisConfig:"-" yaml:"-"`
|
||||||
|
|
||||||
Tracing *Tracing `ocisConfig:"tracing"`
|
Tracing *Tracing `ocisConfig:"tracing"`
|
||||||
Log *Log `ocisConfig:"log"`
|
Log *Log `ocisConfig:"log"`
|
||||||
@@ -23,7 +23,7 @@ type Config struct {
|
|||||||
Asset Asset `ocisConfig:"asset"`
|
Asset Asset `ocisConfig:"asset"`
|
||||||
TokenManager TokenManager `ocisConfig:"token_manager"`
|
TokenManager TokenManager `ocisConfig:"token_manager"`
|
||||||
|
|
||||||
Context context.Context
|
Context context.Context `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Asset defines the available asset configuration.
|
// Asset defines the available asset configuration.
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path"
|
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
|
||||||
)
|
|
||||||
|
|
||||||
func DefaultConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Service: Service{
|
|
||||||
Name: "settings",
|
|
||||||
},
|
|
||||||
Debug: Debug{
|
|
||||||
Addr: "127.0.0.1:9194",
|
|
||||||
Token: "",
|
|
||||||
Pprof: false,
|
|
||||||
Zpages: false,
|
|
||||||
},
|
|
||||||
HTTP: HTTP{
|
|
||||||
Addr: "127.0.0.1:9190",
|
|
||||||
Namespace: "com.owncloud.web",
|
|
||||||
Root: "/",
|
|
||||||
CacheTTL: 604800, // 7 days
|
|
||||||
CORS: CORS{
|
|
||||||
AllowedOrigins: []string{"*"},
|
|
||||||
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
|
|
||||||
AllowedHeaders: []string{"Authorization", "Origin", "Content-Type", "Accept", "X-Requested-With"},
|
|
||||||
AllowCredentials: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
GRPC: GRPC{
|
|
||||||
Addr: "127.0.0.1:9191",
|
|
||||||
Namespace: "com.owncloud.api",
|
|
||||||
},
|
|
||||||
DataPath: path.Join(defaults.BaseDataPath(), "settings"),
|
|
||||||
Asset: Asset{
|
|
||||||
Path: "",
|
|
||||||
},
|
|
||||||
TokenManager: TokenManager{
|
|
||||||
JWTSecret: "Pive-Fumkiu4",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
package defaults
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/owncloud/ocis/ocis-pkg/config/defaults"
|
||||||
|
"github.com/owncloud/ocis/settings/pkg/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func FullDefaultConfig() *config.Config {
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
EnsureDefaults(cfg)
|
||||||
|
Sanitize(cfg)
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultConfig() *config.Config {
|
||||||
|
return &config.Config{
|
||||||
|
Service: config.Service{
|
||||||
|
Name: "settings",
|
||||||
|
},
|
||||||
|
Debug: config.Debug{
|
||||||
|
Addr: "127.0.0.1:9194",
|
||||||
|
Token: "",
|
||||||
|
Pprof: false,
|
||||||
|
Zpages: false,
|
||||||
|
},
|
||||||
|
HTTP: config.HTTP{
|
||||||
|
Addr: "127.0.0.1:9190",
|
||||||
|
Namespace: "com.owncloud.web",
|
||||||
|
Root: "/",
|
||||||
|
CacheTTL: 604800, // 7 days
|
||||||
|
CORS: config.CORS{
|
||||||
|
AllowedOrigins: []string{"*"},
|
||||||
|
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
|
||||||
|
AllowedHeaders: []string{"Authorization", "Origin", "Content-Type", "Accept", "X-Requested-With"},
|
||||||
|
AllowCredentials: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
GRPC: config.GRPC{
|
||||||
|
Addr: "127.0.0.1:9191",
|
||||||
|
Namespace: "com.owncloud.api",
|
||||||
|
},
|
||||||
|
DataPath: path.Join(defaults.BaseDataPath(), "settings"),
|
||||||
|
Asset: config.Asset{
|
||||||
|
Path: "",
|
||||||
|
},
|
||||||
|
TokenManager: config.TokenManager{
|
||||||
|
JWTSecret: "Pive-Fumkiu4",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnsureDefaults(cfg *config.Config) {
|
||||||
|
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
||||||
|
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
||||||
|
cfg.Log = &config.Log{
|
||||||
|
Level: cfg.Commons.Log.Level,
|
||||||
|
Pretty: cfg.Commons.Log.Pretty,
|
||||||
|
Color: cfg.Commons.Log.Color,
|
||||||
|
File: cfg.Commons.Log.File,
|
||||||
|
}
|
||||||
|
} else if cfg.Log == nil {
|
||||||
|
cfg.Log = &config.Log{}
|
||||||
|
}
|
||||||
|
// 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{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sanitize(cfg *config.Config) {
|
||||||
|
// sanitize config
|
||||||
|
if cfg.HTTP.Root != "/" {
|
||||||
|
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,5 +3,5 @@ package config
|
|||||||
// GRPC defines the available grpc configuration.
|
// GRPC defines the available grpc configuration.
|
||||||
type GRPC struct {
|
type GRPC struct {
|
||||||
Addr string `ocisConfig:"addr" env:"SETTINGS_GRPC_ADDR"`
|
Addr string `ocisConfig:"addr" env:"SETTINGS_GRPC_ADDR"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package config
|
|||||||
// HTTP defines the available http configuration.
|
// HTTP defines the available http configuration.
|
||||||
type HTTP struct {
|
type HTTP struct {
|
||||||
Addr string `ocisConfig:"addr" env:"SETTINGS_HTTP_ADDR"`
|
Addr string `ocisConfig:"addr" env:"SETTINGS_HTTP_ADDR"`
|
||||||
Namespace string
|
Namespace string `ocisConfig:"-" yaml:"-"`
|
||||||
Root string `ocisConfig:"root" env:"SETTINGS_HTTP_ROOT"`
|
Root string `ocisConfig:"root" env:"SETTINGS_HTTP_ROOT"`
|
||||||
CacheTTL int `ocisConfig:"cache_ttl" env:"SETTINGS_CACHE_TTL"`
|
CacheTTL int `ocisConfig:"cache_ttl" env:"SETTINGS_CACHE_TTL"`
|
||||||
CORS CORS `ocisConfig:"cors"`
|
CORS CORS `ocisConfig:"cors"`
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package parser
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
ociscfg "github.com/owncloud/ocis/ocis-pkg/config"
|
||||||
"github.com/owncloud/ocis/settings/pkg/config"
|
"github.com/owncloud/ocis/settings/pkg/config"
|
||||||
|
"github.com/owncloud/ocis/settings/pkg/config/defaults"
|
||||||
|
|
||||||
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
"github.com/owncloud/ocis/ocis-pkg/config/envdecode"
|
||||||
)
|
)
|
||||||
@@ -17,29 +17,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide with defaults for shared logging, since we need a valid destination address for BindEnv.
|
defaults.EnsureDefaults(cfg)
|
||||||
if cfg.Log == nil && cfg.Commons != nil && cfg.Commons.Log != nil {
|
|
||||||
cfg.Log = &config.Log{
|
|
||||||
Level: cfg.Commons.Log.Level,
|
|
||||||
Pretty: cfg.Commons.Log.Pretty,
|
|
||||||
Color: cfg.Commons.Log.Color,
|
|
||||||
File: cfg.Commons.Log.File,
|
|
||||||
}
|
|
||||||
} else if cfg.Log == nil {
|
|
||||||
cfg.Log = &config.Log{}
|
|
||||||
}
|
|
||||||
// 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{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load all env variables relevant to the config in the current context.
|
// load all env variables relevant to the config in the current context.
|
||||||
if err := envdecode.Decode(cfg); err != nil {
|
if err := envdecode.Decode(cfg); err != nil {
|
||||||
// no environment variable set for this config is an expected "error"
|
// no environment variable set for this config is an expected "error"
|
||||||
@@ -48,10 +26,7 @@ func ParseConfig(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sanitize config
|
defaults.Sanitize(cfg)
|
||||||
if cfg.HTTP.Root != "/" {
|
|
||||||
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user