-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.go
110 lines (100 loc) · 4.79 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package main
import (
"errors"
"github.com/allanpk716/rssdownloader.common/model"
"github.com/spf13/viper"
)
func InitConfigure() (*viper.Viper, error) {
v := viper.New()
v.SetConfigName("config") // 设置文件名称(无后缀)
v.SetConfigType("yaml") // 设置后缀名 {"1.6以后的版本可以不设置该后缀"}
v.AddConfigPath(".") // 设置文件所在路径
err := v.ReadInConfig()
if err != nil {
return nil, errors.New("error reading config:" + err.Error())
}
return v, nil
}
func ViperConfig2Cache(config *viper.Viper, configs *model.Configs,
rssProxyInfos *model.RSSProxyInfos, biliBiliInfos *model.BiliBiliInfos,
dockerDownloaderInfos map[string]model.DockerDownloaderInfo) {
// ------------------------------------------------------------
// 基础配置信息
configs.ListenPort = config.GetInt("ListenPort")
configs.DownloadHttpProxy = config.GetString("DownloadHttpProxy")
configs.RSSHubAddress = config.GetString("RSSHubAddress")
configs.RSSProxyAddress = config.GetString("RSSProxyAddress")
configs.EveryTime = config.GetString("EveryTime")
configs.ReadRSSTimeOut = config.GetInt("ReadRSSTimeOut")
// ------------------------------------------------------------
// 读取需要走 RSSProxy 的信息
rssProxyInfos.DefaultDownloaderName = config.GetString("RSSProxyInfos.DefaultDownloaderName")
rssProxyInfos.DefaultDownloadRoot = config.GetString("RSSProxyInfos.DefaultDownloadRoot")
rssProxyInfos.DefaultUseProxy = config.GetBool("RSSProxyInfos.DefaultUseProxy")
rsshubInfos := config.GetStringMapString("RSSProxyInfos.RSSInfos")
// 巫师财经 : 具体的内容
for k := range rsshubInfos {
rssInfo := model.RSSInfo{
FolderName: k,
RSSInfosName: config.GetString("RSSProxyInfos.RSSInfos." + k + ".RSSInfosName"),
}
// 优先使用单独设置的是否使用代理
keyRSSUseProxy := "RSSProxyInfos.RSSInfos.\" + k + \".UseProxy"
if config.InConfig(keyRSSUseProxy) == true {
rssInfo.UseProxy = config.GetBool(keyRSSUseProxy)
} else {
rssInfo.UseProxy = rssProxyInfos.DefaultUseProxy
}
// 优先使用单独设置的下载路径
keyRSSDownloadRoot := "RSSProxyInfos.RSSInfos.\" + k + \".UseProxy"
if config.InConfig(keyRSSDownloadRoot) == true {
rssInfo.DownloadRoot = config.GetString(keyRSSDownloadRoot)
} else {
rssInfo.DownloadRoot = rssProxyInfos.DefaultDownloadRoot
}
rssProxyInfos.RSSInfos = append(rssProxyInfos.RSSInfos, rssInfo)
}
// ------------------------------------------------------------
// 读取 BiliBiliInfos 的 User 信息
biliBiliInfos.DefaultDownloaderName = config.GetString("BiliBiliInfos.DefaultDownloaderName")
biliBiliInfos.DefaultDownloadRoot = config.GetString("BiliBiliInfos.DefaultDownloadRoot")
biliBiliInfos.DefaultUseProxy = config.GetBool("BiliBiliInfos.DefaultUseProxy")
bilabialUserInfos := config.GetStringMapString("BiliBiliInfos.BiliBiliUserInfos")
// 李永乐 : 具体的内容
for k := range bilabialUserInfos {
biliUserInfo := model.BiliBiliUserInfo{
FolderName: k,
UserID: config.GetString("BiliBiliInfos.BiliBiliUserInfos." + k + ".UserID"),
}
// 优先使用单独设置的是否使用代理
keyRSSUseProxy := "BiliBiliInfos.BiliBiliUserInfos." + k + ".UseProxy"
if config.InConfig(keyRSSUseProxy) == true {
biliUserInfo.UseProxy = config.GetBool(keyRSSUseProxy)
} else {
biliUserInfo.UseProxy = biliBiliInfos.DefaultUseProxy
}
// 优先使用单独设置的下载路径
keyRSSDownloadRoot := "BiliBiliInfos.BiliBiliUserInfos." + k + ".DownloadRoot"
if config.InConfig(keyRSSDownloadRoot) == true {
biliUserInfo.DownloadRoot = config.GetString(keyRSSDownloadRoot)
} else {
biliUserInfo.DownloadRoot = biliBiliInfos.DefaultDownloadRoot
}
biliBiliInfos.BiliBiliUserInfos = append(biliBiliInfos.BiliBiliUserInfos, biliUserInfo)
}
// ------------------------------------------------------------
// 读取 DownloaderInfo 的信息
tmpdockerDownloaderInfos := config.GetStringMapString("DockerDownloaderInfos")
for k := range tmpdockerDownloaderInfos {
var downloaderInfo model.DockerDownloaderInfo
downloaderInfo.DockSSHAddress = config.GetString("DockerDownloaderInfos."+ k +".DockSSHAddress")
downloaderInfo.DockerUserName = config.GetString("DockerDownloaderInfos."+ k +".DockerUserName")
downloaderInfo.DockerPassword = config.GetString("DockerDownloaderInfos."+ k +".DockerPassword")
downloaderInfo.Name = k
downloaderInfo.UpdateCommands = config.GetStringSlice("DockerDownloaderInfos."+ k +".UpdateCommands")
downloaderInfo.DownloadCommands = config.GetStringSlice("DockerDownloaderInfos."+ k +".DownloadCommands")
downloaderInfo.OutSideAPPOrFolderLocation = config.GetStringSlice("DockerDownloaderInfos."+ k +".OutSideAPPOrFolderLocation")
dockerDownloaderInfos[k] = downloaderInfo
}
// ------------------------------------------------------------
}