Bläddra i källkod

add an option "rsync_override"

z4yx 5 år sedan
förälder
incheckning
02468e21c0
3 ändrade filer med 20 tillägg och 14 borttagningar
  1. 1 0
      worker/config.go
  2. 15 14
      worker/provider.go
  3. 4 0
      worker/rsync_provider.go

+ 1 - 0
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"`

+ 15 - 14
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 {

+ 4 - 0
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")