Documentation
¶
Index ¶
- Variables
- func DecodeJSON(dest, src interface{}) error
- func Load(paths []string, conf *Config) error
- func SetGlobal(conf Config)
- func WriteConf(path string, conf *Config) error
- func WriteDefault(path string, conf *Config) error
- type AnalyticsConfigConfig
- type AuthOverrideConf
- type CertData
- type CertificatesConfig
- type CoProcessConfig
- type Config
- type ConsulConfig
- type DBAppConfOptionsConfig
- type DnsCacheConfig
- type EventMessage
- type HealthCheckConfig
- type HttpServerOptionsConfig
- type IPsHandleStrategy
- type LocalSessionCacheConf
- type MonitorConfig
- type NewRelicConfig
- type NormaliseURLPatterns
- type NormalisedURLConfig
- type PoliciesConfig
- type PortRange
- type PortWhiteList
- type Reporter
- type Sampler
- type SecurityConfig
- type ServiceDiscoveryConf
- type ServicePort
- type SlaveOptionsConfig
- type StorageOptionsConf
- type Tracer
- type TykError
- type TykEventHandler
- type UptimeTestsConfig
- type UptimeTestsConfigDetail
- type VaultConfig
- type WebHookHandlerConf
- type ZipkinConfig
Constants ¶
This section is empty.
Variables ¶
var ( Default = Config{ ListenPort: 8080, Secret: "352d20ee67be67f6340b4c0605b044b7", TemplatePath: "templates", MiddlewarePath: "middleware", AppPath: "apps/", Storage: StorageOptionsConf{ Type: "redis", Host: "localhost", MaxIdle: 100, Port: 6379, }, AnalyticsConfig: AnalyticsConfigConfig{ IgnoredIPs: make([]string, 0), }, DnsCache: DnsCacheConfig{ Enabled: false, TTL: dnsCacheDefaultTtl, CheckInterval: dnsCacheDefaultCheckInterval, MultipleIPsHandleStrategy: NoCacheStrategy, }, } )
Functions ¶
func DecodeJSON ¶
func DecodeJSON(dest, src interface{}) error
DecodeJSON marshals src to json and tries to unmarshal the result into dest.
func Load ¶
Load will load a configuration file, trying each of the paths given and using the first one that is a regular file and can be opened.
If none exists, a default config will be written to the first path in the list.
An error will be returned only if any of the paths existed but was not a valid config file.
func WriteDefault ¶
writeDefault will set conf to the default config and write it to disk in path, if the path is non-empty.
Types ¶
type AnalyticsConfigConfig ¶
type AnalyticsConfigConfig struct {
Type string `json:"type"`
IgnoredIPs []string `json:"ignored_ips"`
EnableDetailedRecording bool `json:"enable_detailed_recording"`
EnableGeoIP bool `json:"enable_geo_ip"`
GeoIPDBLocation string `json:"geo_ip_db_path"`
NormaliseUrls NormalisedURLConfig `json:"normalise_urls"`
PoolSize int `json:"pool_size"`
RecordsBufferSize uint64 `json:"records_buffer_size"`
StorageExpirationTime int `json:"storage_expiration_time"`
// contains filtered or unexported fields
}
type AuthOverrideConf ¶
type AuthOverrideConf struct {
ForceAuthProvider bool `json:"force_auth_provider"`
AuthProvider apidef.AuthProviderMeta `json:"auth_provider"`
ForceSessionProvider bool `json:"force_session_provider"`
SessionProvider apidef.SessionProviderMeta `json:"session_provider"`
}
type CertificatesConfig ¶
type CoProcessConfig ¶
type CoProcessConfig struct {
EnableCoProcess bool `json:"enable_coprocess"`
CoProcessGRPCServer string `json:"coprocess_grpc_server"`
GRPCRecvMaxSize int `json:"grpc_recv_max_size"`
GRPCSendMaxSize int `json:"grpc_send_max_size"`
PythonPathPrefix string `json:"python_path_prefix"`
PythonVersion string `json:"python_version"`
}
type Config ¶
type Config struct {
// OriginalPath is the path to the config file that was read. If
// none was found, it's the path to the default config file that
// was written.
OriginalPath string `json:"-"`
HostName string `json:"hostname"`
ListenAddress string `json:"listen_address"`
ListenPort int `json:"listen_port"`
ControlAPIHostname string `json:"control_api_hostname"`
ControlAPIPort int `json:"control_api_port"`
Secret string `json:"secret"`
NodeSecret string `json:"node_secret"`
PIDFileLocation string `json:"pid_file_location"`
AllowInsecureConfigs bool `json:"allow_insecure_configs"`
PublicKeyPath string `json:"public_key_path"`
AllowRemoteConfig bool `bson:"allow_remote_config" json:"allow_remote_config"`
Security SecurityConfig `json:"security"`
HttpServerOptions HttpServerOptionsConfig `json:"http_server_options"`
ReloadWaitTime int `bson:"reload_wait_time" json:"reload_wait_time"`
VersionHeader string `json:"version_header"`
SuppressRedisSignalReload bool `json:"suppress_redis_signal_reload"`
// Gateway Security Policies
HashKeys bool `json:"hash_keys"`
HashKeyFunction string `json:"hash_key_function"`
HashKeyFunctionFallback []string `json:"hash_key_function_fallback"`
EnableHashedKeysListing bool `json:"enable_hashed_keys_listing"`
MinTokenLength int `json:"min_token_length"`
EnableAPISegregation bool `json:"enable_api_segregation"`
TemplatePath string `json:"template_path"`
Policies PoliciesConfig `json:"policies"`
DisablePortWhiteList bool `json:"disable_ports_whitelist"`
// Defines the ports that will be available for the api services to bind to.
// This is a map of protocol to PortWhiteList. This allows per protocol
// configurations.
PortWhiteList map[string]PortWhiteList `json:"ports_whitelist"`
// CE Configurations
AppPath string `json:"app_path"`
// Dashboard Configurations
UseDBAppConfigs bool `json:"use_db_app_configs"`
DBAppConfOptions DBAppConfOptionsConfig `json:"db_app_conf_options"`
Storage StorageOptionsConf `json:"storage"`
DisableDashboardZeroConf bool `json:"disable_dashboard_zeroconf"`
// Slave Configurations
SlaveOptions SlaveOptionsConfig `json:"slave_options"`
ManagementNode bool `json:"management_node"`
AuthOverride AuthOverrideConf `json:"auth_override"`
// Rate Limiting Strategy
EnableNonTransactionalRateLimiter bool `json:"enable_non_transactional_rate_limiter"`
EnableSentinelRateLimiter bool `json:"enable_sentinel_rate_limiter"`
EnableRedisRollingLimiter bool `json:"enable_redis_rolling_limiter"`
DRLNotificationFrequency int `json:"drl_notification_frequency"`
DRLEnableSentinelRateLimiter bool `json:"drl_enable_sentinel_rate_limiter"`
DRLThreshold float64 `json:"drl_threshold"`
// Organization configurations
EnforceOrgDataAge bool `json:"enforce_org_data_age"`
EnforceOrgDataDetailLogging bool `json:"enforce_org_data_detail_logging"`
EnforceOrgQuotas bool `json:"enforce_org_quotas"`
ExperimentalProcessOrgOffThread bool `json:"experimental_process_org_off_thread"`
Monitor MonitorConfig `json:"monitor"`
// Client-Gateway Configuration
MaxIdleConns int `bson:"max_idle_connections" json:"max_idle_connections"`
MaxIdleConnsPerHost int `bson:"max_idle_connections_per_host" json:"max_idle_connections_per_host"`
MaxConnTime int64 `json:"max_conn_time"`
CloseIdleConnections bool `json:"close_idle_connections"`
CloseConnections bool `json:"close_connections"`
EnableCustomDomains bool `json:"enable_custom_domains"`
// If AllowMasterKeys is set to true, session objects (key definitions) that do not have explicit access rights set
// will be allowed by Tyk. This means that keys that are created have access to ALL APIs, which in many cases is
// unwanted behaviour unless you are sure about what you are doing.
AllowMasterKeys bool `json:"allow_master_keys"`
// Gateway-Service Configuration
ServiceDiscovery ServiceDiscoveryConf `json:"service_discovery"`
ProxySSLInsecureSkipVerify bool `json:"proxy_ssl_insecure_skip_verify"`
ProxyEnableHttp2 bool `json:"proxy_enable_http2"`
ProxySSLMinVersion uint16 `json:"proxy_ssl_min_version"`
ProxySSLCipherSuites []string `json:"proxy_ssl_ciphers"`
ProxyDefaultTimeout float64 `json:"proxy_default_timeout"`
ProxySSLDisableRenegotiation bool `json:"proxy_ssl_disable_renegotiation"`
ProxyCloseConnections bool `json:"proxy_close_connections"`
UptimeTests UptimeTestsConfig `json:"uptime_tests"`
HealthCheck HealthCheckConfig `json:"health_check"`
OauthRefreshExpire int64 `json:"oauth_refresh_token_expire"`
OauthTokenExpire int32 `json:"oauth_token_expire"`
OauthTokenExpiredRetainPeriod int32 `json:"oauth_token_expired_retain_period"`
OauthRedirectUriSeparator string `json:"oauth_redirect_uri_separator"`
OauthErrorStatusCode int `json:"oauth_error_status_code"`
EnableKeyLogging bool `json:"enable_key_logging"`
SSLForceCommonNameCheck bool `json:"ssl_force_common_name_check"`
// Proxy analytics configuration
EnableAnalytics bool `json:"enable_analytics"`
AnalyticsConfig AnalyticsConfigConfig `json:"analytics_config"`
// Cache
DnsCache DnsCacheConfig `json:"dns_cache"`
DisableRegexpCache bool `json:"disable_regexp_cache"`
RegexpCacheExpire int32 `json:"regexp_cache_expire"`
LocalSessionCache LocalSessionCacheConf `json:"local_session_cache"`
EnableSeperateCacheStore bool `json:"enable_separate_cache_store"`
CacheStorage StorageOptionsConf `json:"cache_storage"`
// Middleware/Plugin Configuration
EnableBundleDownloader bool `bson:"enable_bundle_downloader" json:"enable_bundle_downloader"`
BundleBaseURL string `bson:"bundle_base_url" json:"bundle_base_url"`
BundleInsecureSkipVerify bool `bson:"bundle_insecure_skip_verify" json:"bundle_insecure_skip_verify"`
EnableJSVM bool `json:"enable_jsvm"`
JSVMTimeout int `json:"jsvm_timeout"`
DisableVirtualPathBlobs bool `json:"disable_virtual_path_blobs"`
TykJSPath string `json:"tyk_js_path"`
MiddlewarePath string `json:"middleware_path"`
CoProcessOptions CoProcessConfig `json:"coprocess_options"`
IgnoreEndpointCase bool `json:"ignore_endpoint_case"`
// Monitoring, Logging & Profiling
LogLevel string `json:"log_level"`
HealthCheckEndpointName string `json:"health_check_endpoint_name"`
Tracer Tracer `json:"tracing"`
NewRelic NewRelicConfig `json:"newrelic"`
HTTPProfile bool `json:"enable_http_profiler"`
UseRedisLog bool `json:"use_redis_log"`
SentryCode string `json:"sentry_code"`
SentryLogLevel string `json:"sentry_log_level"`
UseSentry bool `json:"use_sentry"`
UseSyslog bool `json:"use_syslog"`
UseGraylog bool `json:"use_graylog"`
UseLogstash bool `json:"use_logstash"`
GraylogNetworkAddr string `json:"graylog_network_addr"`
LogstashNetworkAddr string `json:"logstash_network_addr"`
SyslogTransport string `json:"syslog_transport"`
LogstashTransport string `json:"logstash_transport"`
SyslogNetworkAddr string `json:"syslog_network_addr"`
StatsdConnectionString string `json:"statsd_connection_string"`
StatsdPrefix string `json:"statsd_prefix"`
// Event System
EventHandlers apidef.EventHandlerMetaConfig `json:"event_handlers"`
EventTriggers map[apidef.TykEvent][]TykEventHandler `json:"event_trigers_defunct"` // Deprecated: Config.GetEventTriggers instead.
EventTriggersDefunct map[apidef.TykEvent][]TykEventHandler `json:"event_triggers_defunct"` // Deprecated: Config.GetEventTriggers instead.
// TODO: These config options are not documented - What do they do?
SupressDefaultOrgStore bool `json:"suppress_default_org_store"`
LegacyEnableAllowanceCountdown bool `bson:"legacy_enable_allowance_countdown" json:"legacy_enable_allowance_countdown"`
GlobalSessionLifetime int64 `bson:"global_session_lifetime" json:"global_session_lifetime"`
ForceGlobalSessionLifetime bool `bson:"force_global_session_lifetime" json:"force_global_session_lifetime"`
HideGeneratorHeader bool `json:"hide_generator_header"`
KV struct {
Consul ConsulConfig `json:"consul"`
Vault VaultConfig `json:"vault"`
} `json:"kv"`
// Secrets are key-value pairs that can be accessed in the dashboard via "secrets://"
Secrets map[string]string `json:"secrets"`
// OverrideMessages is used to override returned API error codes and messages.
OverrideMessages map[string]TykError `bson:"override_messages" json:"override_messages"`
}
Config is the configuration object used by tyk to set up various parameters.
func (Config) GetEventTriggers ¶
func (c Config) GetEventTriggers() map[apidef.TykEvent][]TykEventHandler
GetEventTriggers returns event triggers. There was a typo in the json tag. To maintain backward compatibility, this solution is chosen.
func (*Config) LoadIgnoredIPs ¶
func (c *Config) LoadIgnoredIPs()
func (*Config) SetEventTriggers ¶
func (c *Config) SetEventTriggers(eventTriggers map[apidef.TykEvent][]TykEventHandler)
func (*Config) StoreAnalytics ¶
type ConsulConfig ¶
type ConsulConfig struct {
// Address is the address of the Consul server
Address string `json:"address"`
// Scheme is the URI scheme for the Consul server
Scheme string `json:"scheme"`
// Datacenter to use. If not provided, the default agent datacenter is used.
Datacenter string `json:"datacenter"`
// HttpAuth is the auth info to use for http access.
HttpAuth struct {
// Username to use for HTTP Basic Authentication
Username string `json:"username"`
// Password to use for HTTP Basic Authentication
Password string `json:"password"`
} `json:"http_auth"`
// WaitTime limits how long a Watch will block. If not provided,
// the agent default values will be used.
WaitTime time.Duration `json:"wait_time"`
// Token is used to provide a per-request ACL token
// which overrides the agent's default token.
Token string `json:"token"`
TLSConfig struct {
Address string `json:"address"`
CAFile string `json:"ca_file"`
CAPath string `json:"ca_path"`
CertFile string `json:"cert_file"`
KeyFile string `json:"key_file"`
InsecureSkipVerify bool `json:"insecure_skip_verify"`
} `json:"tls_config"`
}
ConsulConfig is used to configure the creation of a client This is a stripped down version of the Config struct in consul's API client
type DBAppConfOptionsConfig ¶
type DnsCacheConfig ¶
type DnsCacheConfig struct {
Enabled bool `json:"enabled"`
TTL int64 `json:"ttl"`
CheckInterval int64 `json:"-" ignored:"true"` //controls cache cleanup interval. By convention shouldn't be exposed to config or env_variable_setup
MultipleIPsHandleStrategy IPsHandleStrategy `json:"multiple_ips_handle_strategy"`
}
type EventMessage ¶
EventMessage is a standard form to send event data to handlers
type HealthCheckConfig ¶
type HttpServerOptionsConfig ¶
type HttpServerOptionsConfig struct {
OverrideDefaults bool `json:"override_defaults"`
ReadTimeout int `json:"read_timeout"`
WriteTimeout int `json:"write_timeout"`
UseSSL bool `json:"use_ssl"`
UseLE_SSL bool `json:"use_ssl_le"`
EnableHttp2 bool `json:"enable_http2"`
SSLInsecureSkipVerify bool `json:"ssl_insecure_skip_verify"`
EnableWebSockets bool `json:"enable_websockets"`
Certificates []CertData `json:"certificates"`
SSLCertificates []string `json:"ssl_certificates"`
ServerName string `json:"server_name"`
MinVersion uint16 `json:"min_version"`
FlushInterval int `json:"flush_interval"`
SkipURLCleaning bool `json:"skip_url_cleaning"`
SkipTargetPathEscaping bool `json:"skip_target_path_escaping"`
Ciphers []string `json:"ssl_ciphers"`
}
type IPsHandleStrategy ¶
type IPsHandleStrategy string
const ( PickFirstStrategy IPsHandleStrategy = "pick_first" RandomStrategy IPsHandleStrategy = "random" NoCacheStrategy IPsHandleStrategy = "no_cache" DefaultDashPolicySource = "service" DefaultDashPolicyRecordName = "tyk_policies" )
type LocalSessionCacheConf ¶
type MonitorConfig ¶
type MonitorConfig struct {
EnableTriggerMonitors bool `json:"enable_trigger_monitors"`
Config WebHookHandlerConf `json:"configuration"`
GlobalTriggerLimit float64 `json:"global_trigger_limit"`
MonitorUserKeys bool `json:"monitor_user_keys"`
MonitorOrgKeys bool `json:"monitor_org_keys"`
}
type NewRelicConfig ¶
type NormaliseURLPatterns ¶
type NormalisedURLConfig ¶
type NormalisedURLConfig struct {
Enabled bool `json:"enabled"`
NormaliseUUIDs bool `json:"normalise_uuids"`
NormaliseNumbers bool `json:"normalise_numbers"`
Custom []string `json:"custom_patterns"`
CompiledPatternSet NormaliseURLPatterns `json:"-"` // see analytics.go
}
type PoliciesConfig ¶
type PortWhiteList ¶
type PortWhiteList struct {
Ranges []PortRange `json:"ranges,omitempty"`
Ports []int `json:"ports,omitempty"`
}
PortWhiteList defines ports that will be allowed by the gateway.
func (PortWhiteList) Match ¶
func (p PortWhiteList) Match(port int) bool
Match returns true if port is acceptable from the PortWhiteList.
type Sampler ¶
type Sampler struct {
//Name is the name of the sampler to use. Options are
//
// "boundary"
// is appropriate for high-traffic instrumentation who
// provision random trace ids, and make the sampling decision only once.
// It defends against nodes in the cluster selecting exactly the same ids.
//
// "count"
// is appropriate for low-traffic instrumentation or
// those who do not provision random trace ids. It is not appropriate for
// collectors as the sampling decision isn't idempotent (consistent based
// on trace id).
//
// "mod"
// provides a generic type Sampler
Name string `json:"name"`
//Rate is used by both "boundary" and "count" samplers
Rate float64 `json:"rate"`
//Salt is used by "boundary" sampler
Salt int64 `json:"salt"`
// Mod is only used when sampler is mod
Mod uint64 `json:"mod"`
}
type SecurityConfig ¶
type SecurityConfig struct {
PrivateCertificateEncodingSecret string `json:"private_certificate_encoding_secret"`
ControlAPIUseMutualTLS bool `json:"control_api_use_mutual_tls"`
PinnedPublicKeys map[string]string `json:"pinned_public_keys"`
Certificates CertificatesConfig `json:"certificates"`
}
type ServiceDiscoveryConf ¶
type ServiceDiscoveryConf struct {
DefaultCacheTimeout int `json:"default_cache_timeout"`
}
type ServicePort ¶
ServicePort defines a protocol and port on which a service can bind to
type SlaveOptionsConfig ¶
type SlaveOptionsConfig struct {
UseRPC bool `json:"use_rpc"`
UseSSL bool `json:"use_ssl"`
SSLInsecureSkipVerify bool `json:"ssl_insecure_skip_verify"`
ConnectionString string `json:"connection_string"`
RPCKey string `json:"rpc_key"`
APIKey string `json:"api_key"`
EnableRPCCache bool `json:"enable_rpc_cache"`
BindToSlugsInsteadOfListenPaths bool `json:"bind_to_slugs"`
DisableKeySpaceSync bool `json:"disable_keyspace_sync"`
GroupID string `json:"group_id"`
CallTimeout int `json:"call_timeout"`
PingTimeout int `json:"ping_timeout"`
RPCPoolSize int `json:"rpc_pool_size"`
}
type StorageOptionsConf ¶
type StorageOptionsConf struct {
Type string `json:"type"`
Host string `json:"host"`
Port int `json:"port"`
Hosts map[string]string `json:"hosts"` // Deprecated: Addrs instead.
Addrs []string `json:"addrs"`
MasterName string `json:"master_name"`
Username string `json:"username"`
Password string `json:"password"`
Database int `json:"database"`
MaxIdle int `json:"optimisation_max_idle"`
MaxActive int `json:"optimisation_max_active"`
Timeout int `json:"timeout"`
EnableCluster bool `json:"enable_cluster"`
UseSSL bool `json:"use_ssl"`
SSLInsecureSkipVerify bool `json:"ssl_insecure_skip_verify"`
}
type Tracer ¶
type Tracer struct {
// The name of the tracer to initialize. For instance appdash, to use appdash
// tracer
Name string `json:"name"`
// If true then this tracer will be activated and all tracing data will be sent
// to this tracer.NoOp tracer is used otherwise which collects traces but
// discard them.
Enabled bool `json:"enabled"`
// Key value pairs used to initialize the tracer. These are tracer specific,
// each tracer requires different options to operate. Please see trace package
// for options required by supported tracer implementation.
Options map[string]interface{} `json:"options"`
}
type TykEventHandler ¶
type TykEventHandler interface {
Init(interface{}) error
HandleEvent(EventMessage)
}
TykEventHandler defines an event handler, e.g. LogMessageEventHandler will handle an event by logging it to stdout.
type UptimeTestsConfig ¶
type UptimeTestsConfig struct {
Disable bool `json:"disable"`
PollerGroup string `json:"poller_group"`
Config UptimeTestsConfigDetail `json:"config"`
}
type UptimeTestsConfigDetail ¶
type VaultConfig ¶
type VaultConfig struct {
// Address is the address of the Vault server. This should be a complete
// URL such as "http://vault.example.com".
Address string `json:"address"`
// AgentAddress is the address of the local Vault agent. This should be a
// complete URL such as "http://vault.example.com".
AgentAddress string `json:"agent_address"`
// MaxRetries controls the maximum number of times to retry when a vault
// serer occurs
MaxRetries int `json:"max_retries"`
Timeout time.Duration `json:"timeout"`
// Token is the vault root token
Token string `json:"token"`
// KVVersion is the version number of Vault. Usually defaults to 2
KVVersion int `json:"kv_version"`
}
VaultConfig is used to configure the creation of a client This is a stripped down version of the Config struct in vault's API client
type WebHookHandlerConf ¶
type WebHookHandlerConf struct {
Method string `bson:"method" json:"method"`
TargetPath string `bson:"target_path" json:"target_path"`
TemplatePath string `bson:"template_path" json:"template_path"`
HeaderList map[string]string `bson:"header_map" json:"header_map"`
EventTimeout int64 `bson:"event_timeout" json:"event_timeout"`
}
type ZipkinConfig ¶
ZipkinConfig configuration options used to initialize openzipkin opentracing client.