working on pulling settings from file using viper, finished basic RSS feed and cron job
This commit is contained in:
@@ -1,32 +1,109 @@
|
||||
package engine //Settings.go contains all of the program settings
|
||||
package engine
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"golang.org/x/time/rate"
|
||||
|
||||
"github.com/anacrolix/dht"
|
||||
|
||||
"github.com/anacrolix/torrent"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
//FullCLientSettings struct is a struct that can be read into anacrolix/torrent to setup a torrent client
|
||||
type FullClientSettings struct {
|
||||
Version int
|
||||
torrent.Config
|
||||
Version int
|
||||
TorrentConfig torrent.Config
|
||||
TFileUploadFolder string
|
||||
}
|
||||
|
||||
//FullClientSettingsNew creates a new torrent client config TODO read from a TOML file
|
||||
func FullClientSettingsNew() FullClientSettings {
|
||||
//Config := fullClientSettings //generate a new struct
|
||||
|
||||
func defaultConfig() FullClientSettings {
|
||||
var Config FullClientSettings
|
||||
|
||||
Config.Version = 1.0
|
||||
Config.DataDir = "downloads" //the full OR relative path of the default download directory for torrents
|
||||
Config.TorrentConfig.DataDir = "downloads" //the full OR relative path of the default download directory for torrents
|
||||
Config.TFileUploadFolder = "uploadedTorrents"
|
||||
Config.Seed = true
|
||||
Config.TorrentConfig.Seed = true
|
||||
|
||||
Config.DHTConfig = dht.ServerConfig{
|
||||
Config.TorrentConfig.DHTConfig = dht.ServerConfig{
|
||||
StartingNodes: dht.GlobalBootstrapAddrs,
|
||||
}
|
||||
|
||||
return Config
|
||||
}
|
||||
|
||||
func dhtServerSettings(dhtConfig dht.ServerConfig) dht.ServerConfig {
|
||||
|
||||
viper.UnmarshalKey("DHTConfig", &dhtConfig)
|
||||
fmt.Println("dhtconfig", dhtConfig)
|
||||
|
||||
return dhtConfig
|
||||
}
|
||||
|
||||
func FullClientSettingsNew() FullClientSettings {
|
||||
viper.SetConfigName("config")
|
||||
viper.AddConfigPath("./")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
fmt.Println("Error reading in config, using defaults", err)
|
||||
FullClientSettings := defaultConfig()
|
||||
return FullClientSettings
|
||||
}
|
||||
|
||||
dataDir := viper.GetString("torrentClientConfig.DownloadDir")
|
||||
listenAddr := viper.GetString("torrentClientConfig.ListenAddr")
|
||||
disablePex := viper.GetBool("torrentClientConfig.DisablePEX")
|
||||
noDHT := viper.GetBool("torrentClientConfig.NoDHT")
|
||||
noUpload := viper.GetBool("torrentClientConfig.NoUpload")
|
||||
seed := viper.GetBool("torrentClientConfig.Seed")
|
||||
peerID := viper.GetString("torrentClientConfig.PeerID")
|
||||
disableUTP := viper.GetBool("torrentClientConfig.DisableUTP")
|
||||
disableTCP := viper.GetBool("torrentClientConfig.DisableTCP")
|
||||
disableIPv6 := viper.GetBool("torrentClientConfig.DisableIPv6")
|
||||
debug := viper.GetBool("torrentClientConfig.Debug")
|
||||
|
||||
dhtServerConfig := dht.ServerConfig{
|
||||
StartingNodes: dht.GlobalBootstrapAddrs,
|
||||
}
|
||||
if viper.IsSet("DHTConfig") {
|
||||
fmt.Println("Reading in custom DHT config")
|
||||
dhtServerConfig = dhtServerSettings(dhtServerConfig)
|
||||
}
|
||||
|
||||
uploadRateLimiter := new(rate.Limiter)
|
||||
viper.UnmarshalKey("UploadRateLimiter", &uploadRateLimiter)
|
||||
|
||||
downloadRateLimiter := new(rate.Limiter)
|
||||
viper.UnmarshalKey("DownloadRateLimiter", &downloadRateLimiter)
|
||||
|
||||
rreferNoEncryption := viper.GetBool("EncryptionPolicy.PreferNoEncryption")
|
||||
fmt.Println("Encryption", rreferNoEncryption)
|
||||
|
||||
encryptionPolicy := torrent.EncryptionPolicy{
|
||||
DisableEncryption: viper.GetBool("EncryptionPolicy.DisableEncryption"),
|
||||
ForceEncryption: viper.GetBool("EncryptionPolicy.ForceEncryption"),
|
||||
PreferNoEncryption: viper.GetBool("EncryptionPolicy.PreferNoEncryption"),
|
||||
}
|
||||
|
||||
tConfig := torrent.Config{
|
||||
DataDir: dataDir,
|
||||
ListenAddr: listenAddr,
|
||||
DisablePEX: disablePex,
|
||||
NoDHT: noDHT,
|
||||
DHTConfig: dhtServerConfig,
|
||||
NoUpload: noUpload,
|
||||
Seed: seed,
|
||||
//UploadRateLimiter: uploadRateLimiter,
|
||||
//DownloadRateLimiter: downloadRateLimiter,
|
||||
PeerID: peerID,
|
||||
DisableUTP: disableUTP,
|
||||
DisableTCP: disableTCP,
|
||||
DisableIPv6: disableIPv6,
|
||||
Debug: debug,
|
||||
EncryptionPolicy: encryptionPolicy,
|
||||
}
|
||||
|
||||
Config := FullClientSettings{TorrentConfig: tConfig, TFileUploadFolder: "uploadedTorrents"}
|
||||
|
||||
return Config
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user