diff --git a/worker/config.go b/worker/config.go index 97da0ff..f178ec5 100644 --- a/worker/config.go +++ b/worker/config.go @@ -123,6 +123,7 @@ type mirrorConfig struct { Command string `toml:"command"` UseIPv6 bool `toml:"use_ipv6"` + UseIPv4 bool `toml:"use_ipv4"` ExcludeFile string `toml:"exclude_file"` Username string `toml:"username"` Password string `toml:"password"` diff --git a/worker/provider.go b/worker/provider.go index 9662dcd..fe787b4 100644 --- a/worker/provider.go +++ b/worker/provider.go @@ -130,6 +130,7 @@ func newMirrorProvider(mirror mirrorConfig, cfg *Config) mirrorProvider { logDir: logDir, logFile: filepath.Join(logDir, "latest.log"), useIPv6: mirror.UseIPv6, + useIPv4: mirror.UseIPv4, interval: time.Duration(mirror.Interval) * time.Minute, } p, err := newRsyncProvider(rc) diff --git a/worker/rsync_provider.go b/worker/rsync_provider.go index aafd761..d34a396 100644 --- a/worker/rsync_provider.go +++ b/worker/rsync_provider.go @@ -11,7 +11,7 @@ type rsyncConfig struct { rsyncCmd string upstreamURL, username, password, excludeFile string workingDir, logDir, logFile string - useIPv6 bool + useIPv6, useIPv4 bool interval time.Duration } @@ -49,6 +49,8 @@ func newRsyncProvider(c rsyncConfig) (*rsyncProvider, error) { if c.useIPv6 { options = append(options, "-6") + } else if c.useIPv4 { + options = append(options, "-4") } if c.excludeFile != "" {