config

package
v0.0.0-...-1b52060 Latest Latest
Warning

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

Go to latest
Published: May 8, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func StringToDurationHook

func StringToDurationHook() mapstructure.DecodeHookFunc

Types

type CacheConfig

type CacheConfig struct {
	MaxSize   int    `config:"max-size" description:"Maximum cache size in bytes" default:"10485760"`
	RedisAddr string `config:"redis-addr" description:"Redis server address"`
	RedisPass string `config:"redis-pass" description:"Redis server password"`
}

type ConfigLoader

type ConfigLoader struct {
	// contains filtered or unexported fields
}

func NewConfigLoader

func NewConfigLoader() *ConfigLoader

func (*ConfigLoader) Load

func (cl *ConfigLoader) Load(cmd *cobra.Command, cfg any) error

func (*ConfigLoader) RegisterPlags

func (cl *ConfigLoader) RegisterPlags(flags *pflag.FlagSet, prefix string, v any, skipFlags bool) error

func (*ConfigLoader) Validate

func (cl *ConfigLoader) Validate() error

type CronJobConfig

type CronJobConfig struct {
	Enable               bool          `config:"enable" description:"Enable scheduled background jobs" default:"true"`
	CleanFilesInterval   time.Duration `config:"clean-files-interval" description:"Interval for cleaning expired files" default:"1h"`
	CleanUploadsInterval time.Duration `config:"clean-uploads-interval" description:"Interval for cleaning incomplete uploads" default:"12h"`
	FolderSizeInterval   time.Duration `config:"folder-size-interval" description:"Interval for updating folder sizes" default:"2h"`
}

type DBConfig

type DBConfig struct {
	DataSource  string `config:"data-source" description:"Database connection string" required:"true"`
	PrepareStmt bool   `config:"prepare-stmt" description:"Use prepared statements" default:"true"`
	LogLevel    string `config:"log-level" description:"Database logging level" default:"error"`
	Pool        DBPool `config:"pool"`
}

type DBPool

type DBPool struct {
	Enable             bool          `config:"enable" description:"Enable connection pooling" default:"true"`
	MaxOpenConnections int           `config:"max-open-connections" description:"Maximum number of open connections" default:"25"`
	MaxIdleConnections int           `config:"max-idle-connections" description:"Maximum number of idle connections" default:"25"`
	MaxLifetime        time.Duration `config:"max-lifetime" description:"Maximum connection lifetime" default:"10m"`
}

type JWTConfig

type JWTConfig struct {
	Secret       string        `config:"secret" description:"JWT signing secret key" required:"true"`
	SessionTime  time.Duration `config:"session-time" description:"JWT token validity duration" default:"30d"`
	AllowedUsers []string      `config:"allowed-users" description:"List of allowed usernames"`
}

type LoggingConfig

type LoggingConfig struct {
	Level string `config:"level" description:"Logging level (debug, info, warn, error)" default:"info"`
	File  string `config:"file" description:"Log file path, if empty logs to stdout"`
}

type ServerCmdConfig

type ServerCmdConfig struct {
	Server   ServerConfig  `config:"server"`
	Log      LoggingConfig `config:"log"`
	JWT      JWTConfig     `config:"jwt"`
	DB       DBConfig      `config:"db"`
	TG       TGConfig      `config:"tg"`
	CronJobs CronJobConfig `config:"cronjobs"`
	Cache    CacheConfig   `config:"cache"`
}

type ServerConfig

type ServerConfig struct {
	Port             int           `config:"port" description:"HTTP port for the server to listen on" default:"8080"`
	GracefulShutdown time.Duration `config:"graceful-shutdown" description:"Grace period for server shutdown" default:"10s"`
	EnablePprof      bool          `config:"enable-pprof" description:"Enable pprof debugging endpoints"`
	ReadTimeout      time.Duration `config:"read-timeout" description:"Maximum duration for reading entire request" default:"1h"`
	WriteTimeout     time.Duration `config:"write-timeout" description:"Maximum duration for writing response" default:"1h"`
}

type TGConfig

type TGConfig struct {
	RateLimit         bool          `config:"rate-limit" description:"Enable rate limiting for API calls" default:"true"`
	RateBurst         int           `config:"rate-burst" description:"Maximum burst size for rate limiting" default:"5"`
	Rate              int           `config:"rate" description:"Rate limit in requests per minute" default:"100"`
	Ntp               bool          `config:"ntp" description:"Use NTP for time synchronization"`
	StorageFile       string        `config:"storage-file" description:"Path to SQLite storage file"`
	DisableStreamBots bool          `config:"disable-stream-bots" description:"Disable streaming bots"`
	Proxy             string        `config:"proxy" description:"HTTP/SOCKS5 proxy URL"`
	ReconnectTimeout  time.Duration `config:"reconnect-timeout" description:"Client reconnection timeout" default:"5m"`
	PoolSize          int           `config:"pool-size" description:"Session pool size" default:"8"`
	EnableLogging     bool          `config:"enable-logging" description:"Enable Telegram client logging"`
	AppId             int           `config:"app-id" description:"Telegram app ID" default:"2496"`
	AppHash           string        `config:"app-hash" description:"Telegram app hash" default:"8da85b0d5bfe62527e5b244c209159c3"`
	DeviceModel       string        `` /* 137-byte string literal not displayed */
	SystemVersion     string        `config:"system-version" description:"System version" default:"Win32"`
	AppVersion        string        `config:"app-version" description:"App version" default:"6.1.4 K"`
	LangCode          string        `config:"lang-code" description:"Language code" default:"en"`
	SystemLangCode    string        `config:"system-lang-code" description:"System language code" default:"en-US"`
	LangPack          string        `config:"lang-pack" description:"Language pack" default:"webk"`
	Uploads           TGUpload      `config:"uploads"`
	Stream            TGStream      `config:"stream"`
}

type TGStream

type TGStream struct {
	MultiThreads int           `config:"multi-threads" description:"Number of download threads"`
	Buffers      int           `config:"buffers" description:"Number of stream buffers" default:"8"`
	ChunkTimeout time.Duration `config:"chunk-timeout" description:"Chunk download timeout" default:"20s"`
}

type TGUpload

type TGUpload struct {
	EncryptionKey string        `config:"encryption-key" description:"Encryption key for uploads" required:"true"`
	Threads       int           `config:"threads" description:"Number of upload threads" default:"8"`
	MaxRetries    int           `config:"max-retries" description:"Maximum upload retry attempts" default:"10"`
	Retention     time.Duration `config:"retention" description:"Upload retention period" default:"7d"`
}

Jump to

Keyboard shortcuts

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