From 02468e21c0c5eaffeb32e6e82554aafb140f8c44 Mon Sep 17 00:00:00 2001 From: z4yx Date: Fri, 13 Mar 2020 15:12:52 +0800 Subject: [PATCH] add an option "rsync_override" --- worker/config.go | 1 + worker/provider.go | 29 +++++++++++++++-------------- worker/rsync_provider.go | 4 ++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/worker/config.go b/worker/config.go index bd65d21..d5d02d9 100644 --- a/worker/config.go +++ b/worker/config.go @@ -137,6 +137,7 @@ type mirrorConfig struct { Username string `toml:"username"` Password string `toml:"password"` RsyncOptions []string `toml:"rsync_options"` + RsyncOverride []string `toml:"rsync_override"` Stage1Profile string `toml:"stage1_profile"` MemoryLimit string `toml:"memory_limit"` diff --git a/worker/provider.go b/worker/provider.go index ccda722..9024d82 100644 --- a/worker/provider.go +++ b/worker/provider.go @@ -127,20 +127,21 @@ func newMirrorProvider(mirror mirrorConfig, cfg *Config) mirrorProvider { provider = p case provRsync: rc := rsyncConfig{ - name: mirror.Name, - upstreamURL: mirror.Upstream, - rsyncCmd: mirror.Command, - username: mirror.Username, - password: mirror.Password, - excludeFile: mirror.ExcludeFile, - extraOptions: mirror.RsyncOptions, - workingDir: mirrorDir, - logDir: logDir, - logFile: filepath.Join(logDir, "latest.log"), - useIPv6: mirror.UseIPv6, - useIPv4: mirror.UseIPv4, - interval: time.Duration(mirror.Interval) * time.Minute, - retry: mirror.Retry, + name: mirror.Name, + upstreamURL: mirror.Upstream, + rsyncCmd: mirror.Command, + username: mirror.Username, + password: mirror.Password, + excludeFile: mirror.ExcludeFile, + extraOptions: mirror.RsyncOptions, + overriddenOptions: mirror.RsyncOverride, + workingDir: mirrorDir, + logDir: logDir, + logFile: filepath.Join(logDir, "latest.log"), + useIPv6: mirror.UseIPv6, + useIPv4: mirror.UseIPv4, + interval: time.Duration(mirror.Interval) * time.Minute, + retry: mirror.Retry, } p, err := newRsyncProvider(rc) if err != nil { diff --git a/worker/rsync_provider.go b/worker/rsync_provider.go index 8905eee..18407ef 100644 --- a/worker/rsync_provider.go +++ b/worker/rsync_provider.go @@ -14,6 +14,7 @@ type rsyncConfig struct { rsyncCmd string upstreamURL, username, password, excludeFile string extraOptions []string + overriddenOptions []string workingDir, logDir, logFile string useIPv6, useIPv4 bool interval time.Duration @@ -56,6 +57,9 @@ func newRsyncProvider(c rsyncConfig) (*rsyncProvider, error) { "--delete", "--delete-after", "--delay-updates", "--safe-links", "--timeout=120", "--contimeout=120", } + if overriddenOptions != nil { + options = overriddenOptions + } if c.useIPv6 { options = append(options, "-6")