tstor/src/config/model.go
2024-09-01 02:00:13 +03:00

103 lines
2.4 KiB
Go

package config
// Config is the main config object
type Settings struct {
WebUi WebUi `koanf:"webUi"`
Sources Sources `koanf:"sources"`
Mounts Mounts `koanf:"mounts"`
Log Log `koanf:"log"`
SourceDir string `koanf:"source_dir"`
OtelHttp string `koanf:"otel_http"`
}
type Sources struct {
TorrentClient TorrentClient `koanf:"torrent"`
QBittorrent QBittorrent `koanf:"qbittorrent"`
}
type WebUi struct {
Port int `koanf:"port"`
IP string `koanf:"ip"`
}
type Log struct {
Debug bool `koanf:"debug"`
MaxBackups int `koanf:"max_backups"`
MaxSize int `koanf:"max_size"`
MaxAge int `koanf:"max_age"`
Path string `koanf:"path"`
}
type QBittorrent struct {
DataFolder string `koanf:"data_folder,omitempty"`
MetadataFolder string `koanf:"metadata_folder,omitempty"`
}
type TorrentClient struct {
// ReadTimeout int `koanf:"read_timeout,omitempty"`
// AddTimeout int `koanf:"add_timeout,omitempty"`
DHTNodes []string `koanf:"dhtnodes,omitempty"`
DisableIPv6 bool `koanf:"disable_ipv6,omitempty"`
DataFolder string `koanf:"data_folder,omitempty"`
MetadataFolder string `koanf:"metadata_folder,omitempty"`
// GlobalCacheSize int64 `koanf:"global_cache_size,omitempty"`
Routes []Route `koanf:"routes"`
Servers []Server `koanf:"servers"`
}
type Route struct {
Name string `koanf:"name"`
Torrents []Torrent `koanf:"torrents"`
TorrentFolder string `koanf:"torrent_folder"`
}
type Server struct {
Name string `koanf:"name"`
Path string `koanf:"path"`
Trackers []string `koanf:"trackers"`
TrackerURL string `koanf:"tracker_url"`
}
type Torrent struct {
MagnetURI string `koanf:"magnet_uri,omitempty"`
TorrentPath string `koanf:"torrent_path,omitempty"`
}
type Mounts struct {
WebDAV WebDAV `koanf:"webdav"`
HttpFs HttpFs `koanf:"httpfs"`
Fuse Fuse `koanf:"fuse"`
NFS NFS `koanf:"nfs"`
}
type NFS struct {
Enabled bool `koanf:"enabled"`
Port int `koanf:"port"`
CachePath string `koanf:"cache_path"`
}
type HttpFs struct {
Enabled bool `koanf:"enabled"`
Port int `koanf:"port"`
}
type WebDAV struct {
Enabled bool `koanf:"enabled"`
Port int `koanf:"port"`
User string `koanf:"user"`
Pass string `koanf:"pass"`
}
type Fuse struct {
Enabled bool `koanf:"enabled"`
AllowOther bool `koanf:"allow_other,omitempty"`
Path string `koanf:"path"`
}