tstor/config/model.go
2022-10-08 19:36:55 +02:00

106 lines
2.3 KiB
Go

package config
// Root is the main yaml config object
type Root struct {
HTTPGlobal *HTTPGlobal `yaml:"http"`
WebDAV *WebDAVGlobal `yaml:"webdav"`
Torrent *TorrentGlobal `yaml:"torrent"`
Fuse *FuseGlobal `yaml:"fuse"`
Log *Log `yaml:"log"`
Routes []*Route `yaml:"routes"`
Servers []*Server `yaml:"servers"`
}
type Log struct {
Debug bool `yaml:"debug"`
MaxBackups int `yaml:"max_backups"`
MaxSize int `yaml:"max_size"`
MaxAge int `yaml:"max_age"`
Path string `yaml:"path"`
}
type TorrentGlobal struct {
ReadTimeout int `yaml:"read_timeout,omitempty"`
AddTimeout int `yaml:"add_timeout,omitempty"`
GlobalCacheSize int64 `yaml:"global_cache_size,omitempty"`
MetadataFolder string `yaml:"metadata_folder,omitempty"`
DisableIPv6 bool `yaml:"disable_ipv6,omitempty"`
}
type WebDAVGlobal struct {
Port int `yaml:"port"`
User string `yaml:"user"`
Pass string `yaml:"pass"`
}
type HTTPGlobal struct {
Port int `yaml:"port"`
IP string `yaml:"ip"`
HTTPFS bool `yaml:"httpfs"`
}
type FuseGlobal struct {
AllowOther bool `yaml:"allow_other,omitempty"`
Path string `yaml:"path"`
}
type Route struct {
Name string `yaml:"name"`
Torrents []*Torrent `yaml:"torrents"`
TorrentFolder string `yaml:"torrent_folder"`
}
type Server struct {
Name string `yaml:"name"`
Path string `yaml:"path"`
Trackers []string `yaml:"trackers"`
TrackerURL string `yaml:"tracker_url"`
}
type Torrent struct {
MagnetURI string `yaml:"magnet_uri,omitempty"`
TorrentPath string `yaml:"torrent_path,omitempty"`
}
func AddDefaults(r *Root) *Root {
if r.Torrent == nil {
r.Torrent = &TorrentGlobal{}
}
if r.Torrent.AddTimeout == 0 {
r.Torrent.AddTimeout = 60
}
if r.Torrent.ReadTimeout == 0 {
r.Torrent.ReadTimeout = 120
}
if r.Torrent.GlobalCacheSize == 0 {
r.Torrent.GlobalCacheSize = 2048 // 2GB
}
if r.Torrent.MetadataFolder == "" {
r.Torrent.MetadataFolder = metadataFolder
}
if r.Fuse != nil {
if r.Fuse.Path == "" {
r.Fuse.Path = mountFolder
}
}
if r.HTTPGlobal == nil {
r.HTTPGlobal = &HTTPGlobal{}
}
if r.HTTPGlobal.IP == "" {
r.HTTPGlobal.IP = "0.0.0.0"
}
if r.Log == nil {
r.Log = &Log{}
}
return r
}