镜像自地址
https://github.com/tuna/tunasync.git
已同步 2025-12-08 15:36:47 +00:00
feature(worker): mirrorConfig -> mirrorProvider
这个提交包含在:
@@ -1,9 +1,82 @@
|
||||
package worker
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"html/template"
|
||||
"path/filepath"
|
||||
"time"
|
||||
)
|
||||
|
||||
// toplevel module for workers
|
||||
|
||||
func initProviders(c *Config) []mirrorProvider {
|
||||
|
||||
formatLogDir := func(logDir string, m mirrorConfig) string {
|
||||
tmpl, err := template.New("logDirTmpl-" + m.Name).Parse(logDir)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var formatedLogDir bytes.Buffer
|
||||
tmpl.Execute(&formatedLogDir, m)
|
||||
return formatedLogDir.String()
|
||||
}
|
||||
|
||||
providers := []mirrorProvider{}
|
||||
|
||||
for _, mirror := range c.Mirrors {
|
||||
logDir := mirror.LogDir
|
||||
mirrorDir := mirror.MirrorDir
|
||||
if logDir == "" {
|
||||
logDir = c.Global.LogDir
|
||||
}
|
||||
if mirrorDir == "" {
|
||||
mirrorDir = c.Global.MirrorDir
|
||||
}
|
||||
logDir = formatLogDir(logDir, mirror)
|
||||
switch mirror.Provider {
|
||||
case ProvCommand:
|
||||
pc := cmdConfig{
|
||||
name: mirror.Name,
|
||||
upstreamURL: mirror.Upstream,
|
||||
command: mirror.Command,
|
||||
workingDir: filepath.Join(mirrorDir, mirror.Name),
|
||||
logDir: logDir,
|
||||
logFile: filepath.Join(logDir, "latest.log"),
|
||||
interval: time.Duration(mirror.Interval) * time.Minute,
|
||||
env: mirror.Env,
|
||||
}
|
||||
p, err := newCmdProvider(pc)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
providers = append(providers, p)
|
||||
case ProvRsync:
|
||||
rc := rsyncConfig{
|
||||
name: mirror.Name,
|
||||
upstreamURL: mirror.Upstream,
|
||||
password: mirror.Password,
|
||||
excludeFile: mirror.ExcludeFile,
|
||||
workingDir: filepath.Join(mirrorDir, mirror.Name),
|
||||
logDir: logDir,
|
||||
logFile: filepath.Join(logDir, "latest.log"),
|
||||
useIPv6: mirror.UseIPv6,
|
||||
interval: time.Duration(mirror.Interval) * time.Minute,
|
||||
}
|
||||
p, err := newRsyncProvider(rc)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
providers = append(providers, p)
|
||||
default:
|
||||
panic(errors.New("Invalid mirror provider"))
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return providers
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
for {
|
||||
|
||||
在新工单中引用
屏蔽一个用户