config

package
v1.0.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2023 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ConfigFile = ""

Functions

func LoadConfig

func LoadConfig(filename string) error

Types

type Account

type Account struct {
	// A unique Id is necessary so that we cannot use a jwt on another server instance
	Id           AccountUUID `yaml:"id" example:"4ce589e2-b483-467b-8b59-758b339801d0"`
	Name         string      `yaml:"name"`
	SecretAPIKey string      `yaml:"secretAPIKey"`
}

type AccountUUID

type AccountUUID = uuid.UUID

type AuthConfig

type AuthConfig struct {
	Enable  bool   `yaml:"enable"`
	Method  string `yaml:"method" example:"FILE"`
	Methods struct {
		File struct {
			Filename string `yaml:"filename"`
		}
		HTTP struct {
			Url                string `yaml:"url"`
			ProxyUrl           string `yaml:"proxy"`
			AuthToken          string `yaml:"authToken"`
			Timeout            int    `yaml:"timeout"`
			CacheDurationInSec int    `yaml:"cacheDurationInSec"`
		}
	}
}

type Config

type Config struct {
	Storage struct {
		Type         string     `yaml:"type" example:"JSONFile"`
		LoggerConfig zap.Config `yaml:"logger"`
		LogVerbosity int        `yaml:"logVerbosity"`
		JSONFile     struct {
			DataDirectory string `yaml:"dataDirectory"`
		} `yaml:"jsonfile"`
		InMemory struct {
			MaxRecordsByStream uint64 `yaml:"maxRecordsByStream"`
			MaxSize            string `yaml:"maxSize"`
		} `yaml:"inmemory"`
	}
	DataDirectory string     `yaml:"dataDirectory"`
	LoggerConfig  zap.Config `yaml:"logger"`
	Account       Account    `yaml:"account"`
	Streams       struct {
		BulkFlushFrequency        int  `yaml:"bulkFlushFrequency"`
		BulkMaxSize               int  `yaml:"bulkMaxSize"`
		ChannelBufferSize         int  `yaml:"channelBufferSize"`
		MaxIteratorsPerStream     int  `yaml:"maxAllowedIteratorsPerStream"`
		MaxMessagePerGetOperation uint `yaml:"maxMessagePerGetOperation"`
		LogVerbosity              int  `yaml:"logVerbosity"`
		MaxAllowedStreams         uint `json:"maxAllowedStreams" example:"25"`
	}
	Auth AuthConfig `yaml:"auth"`
	RBAC struct {
		Enable   bool   `yaml:"enable"`
		Filename string `yaml:"filename"`
	}
	AuditLog struct {
		Enable                 bool `yaml:"enable"`
		EnableLogAccessGranted bool `yaml:"enableLogAccessGranted"`
	}
	WebServer struct {
		HTTP struct {
			Enable  bool   `yaml:"enable"`
			Address string `yaml:"address"`
		}
		HTTPS struct {
			Enable   bool   `yaml:"enable"`
			Address  string `yaml:"address"`
			CertFile string `yaml:"certFile"`
			KeyFile  string `yaml:"keyFile"`
		}
		Logs struct {
			Enable bool `yaml:"enable"`
		}
		Cors struct {
			Enable       bool   `yaml:"enable"`
			AllowOrigins string `yaml:"allowOrigins"`
			AllowHeaders string `yaml:"allowHeaders"`
		}
		RateLimiter struct {
			Enable      bool `yaml:"enable"`
			RouteStream struct {
				MaxRequests       int `yaml:"maxRequests"`
				DurationInSeconds int `yaml:"durationInSeconds"`
			} `yaml:"routeStream"`
			RouteJob struct {
				MaxRequests       int `yaml:"maxRequests"`
				DurationInSeconds int `yaml:"durationInSeconds"`
			} `yaml:"routeJob"`
			RouteAccount struct {
				MaxRequests       int `yaml:"maxRequests"`
				DurationInSeconds int `yaml:"durationInSeconds"`
			} `yaml:"routeAccount"`
		} `yaml:"rateLimiter"`
		JWT struct {
			Enable                  bool      `yaml:"enable"`
			SecretKey               string    `yaml:"secretKey"`
			TokenExpireInMinutes    int       `yaml:"tokenExpireInMinutes"`
			ISS                     string    `yaml:"iss"`
			Sub                     string    `yaml:"sub"`
			Aud                     string    `yaml:"aud"`
			RevokeEmittedBeforeDate time.Time `yaml:"revokeEmittedBeforeDate"`
		} `yaml:"jwt"`
		Monitor struct {
			Enable bool `yaml:"enable"`
		}
		Swagger struct {
			Enable   bool   `yaml:"enable"`
			Https    bool   `yaml:"https"`
			Address  string `yaml:"address"`
			CertFile string `yaml:"certFile"`
			KeyFile  string `yaml:"keyFile"`
		}
	} `yaml:"webserver"`
}
var Configuration Config

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL