2020-04-11 08:45:06 +02:00
|
|
|
package serv
|
|
|
|
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/dosco/super-graph/core"
|
2020-04-16 06:26:32 +02:00
|
|
|
"github.com/dosco/super-graph/internal/serv/internal/auth"
|
2020-04-11 08:45:06 +02:00
|
|
|
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
LogLevelNone int = iota
|
|
|
|
LogLevelInfo
|
|
|
|
LogLevelWarn
|
|
|
|
LogLevelError
|
|
|
|
LogLevelDebug
|
|
|
|
)
|
|
|
|
|
|
|
|
type Core = core.Config
|
|
|
|
|
|
|
|
// Config struct holds the Super Graph config values
|
|
|
|
type Config struct {
|
|
|
|
Core `mapstructure:",squash"`
|
|
|
|
Serv `mapstructure:",squash"`
|
|
|
|
|
2020-05-23 17:43:57 +02:00
|
|
|
closeFn func()
|
|
|
|
hostPort string
|
|
|
|
cpath string
|
|
|
|
vi *viper.Viper
|
2020-04-11 08:45:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Serv struct contains config values used by the Super Graph service
|
|
|
|
type Serv struct {
|
|
|
|
AppName string `mapstructure:"app_name"`
|
|
|
|
Production bool
|
|
|
|
LogLevel string `mapstructure:"log_level"`
|
|
|
|
HostPort string `mapstructure:"host_port"`
|
|
|
|
Host string
|
|
|
|
Port string
|
|
|
|
HTTPGZip bool `mapstructure:"http_compress"`
|
|
|
|
WebUI bool `mapstructure:"web_ui"`
|
|
|
|
EnableTracing bool `mapstructure:"enable_tracing"`
|
|
|
|
WatchAndReload bool `mapstructure:"reload_on_config_change"`
|
|
|
|
AuthFailBlock bool `mapstructure:"auth_fail_block"`
|
|
|
|
SeedFile string `mapstructure:"seed_file"`
|
|
|
|
MigrationsPath string `mapstructure:"migrations_path"`
|
|
|
|
AllowedOrigins []string `mapstructure:"cors_allowed_origins"`
|
|
|
|
DebugCORS bool `mapstructure:"cors_debug"`
|
2020-04-24 07:23:35 +02:00
|
|
|
APIPath string `mapstructure:"api_path"`
|
2020-04-25 02:45:03 +02:00
|
|
|
CacheControl string `mapstructure:"cache_control"`
|
2020-04-11 08:45:06 +02:00
|
|
|
|
2020-05-22 22:49:54 +02:00
|
|
|
// Telemetry struct contains OpenCensus metrics and tracing related config
|
|
|
|
Telemetry struct {
|
2020-05-23 17:43:57 +02:00
|
|
|
Debug bool
|
|
|
|
Metrics struct {
|
|
|
|
Exporter string
|
|
|
|
Endpoint string
|
|
|
|
Namespace string
|
|
|
|
Key string
|
|
|
|
}
|
|
|
|
|
|
|
|
Tracing struct {
|
|
|
|
Exporter string
|
|
|
|
Endpoint string
|
|
|
|
Sample string
|
|
|
|
}
|
2020-05-22 22:49:54 +02:00
|
|
|
}
|
|
|
|
|
2020-04-11 08:45:06 +02:00
|
|
|
Auth auth.Auth
|
|
|
|
Auths []auth.Auth
|
|
|
|
|
2020-05-22 22:49:54 +02:00
|
|
|
// DB struct contains db config
|
2020-04-11 08:45:06 +02:00
|
|
|
DB struct {
|
|
|
|
Type string
|
|
|
|
Host string
|
|
|
|
Port uint16
|
|
|
|
DBName string
|
|
|
|
User string
|
|
|
|
Password string
|
|
|
|
Schema string
|
|
|
|
PoolSize int32 `mapstructure:"pool_size"`
|
|
|
|
MaxRetries int `mapstructure:"max_retries"`
|
|
|
|
PingTimeout time.Duration `mapstructure:"ping_timeout"`
|
2020-04-16 06:26:32 +02:00
|
|
|
EnableTLS bool `mapstructure:"enable_tls"`
|
|
|
|
ServerName string `mapstructure:"server_name"`
|
|
|
|
ServerCert string `mapstructure:"server_cert"`
|
|
|
|
ClientCert string `mapstructure:"client_cert"`
|
|
|
|
ClientKey string `mapstructure:"client_key"`
|
2020-04-11 08:45:06 +02:00
|
|
|
} `mapstructure:"database"`
|
|
|
|
|
|
|
|
Actions []Action
|
|
|
|
}
|
|
|
|
|
|
|
|
// Auth struct contains authentication related config values used by the Super Graph service
|
|
|
|
type Auth struct {
|
|
|
|
Name string
|
|
|
|
Type string
|
|
|
|
Cookie string
|
|
|
|
CredsInHeader bool `mapstructure:"creds_in_header"`
|
|
|
|
|
|
|
|
Rails struct {
|
|
|
|
Version string
|
|
|
|
SecretKeyBase string `mapstructure:"secret_key_base"`
|
|
|
|
URL string
|
|
|
|
Password string
|
|
|
|
MaxIdle int `mapstructure:"max_idle"`
|
|
|
|
MaxActive int `mapstructure:"max_active"`
|
|
|
|
Salt string
|
|
|
|
SignSalt string `mapstructure:"sign_salt"`
|
|
|
|
AuthSalt string `mapstructure:"auth_salt"`
|
|
|
|
}
|
|
|
|
|
|
|
|
JWT struct {
|
|
|
|
Provider string
|
|
|
|
Secret string
|
|
|
|
PubKeyFile string `mapstructure:"public_key_file"`
|
|
|
|
PubKeyType string `mapstructure:"public_key_type"`
|
|
|
|
}
|
|
|
|
|
|
|
|
Header struct {
|
|
|
|
Name string
|
|
|
|
Value string
|
|
|
|
Exists bool
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Action struct contains config values for a Super Graph service action
|
|
|
|
type Action struct {
|
|
|
|
Name string
|
|
|
|
SQL string
|
|
|
|
AuthName string `mapstructure:"auth_name"`
|
|
|
|
}
|