From 7ad711f554bddbda9274e45a25b229d0e3f96334 Mon Sep 17 00:00:00 2001 From: Audrius Butkevicius Date: Sun, 30 Nov 2014 22:10:32 +0000 Subject: [PATCH] Add option to disable symlinks (fixes #1017) --- cmd/syncthing/main.go | 5 +++++ internal/config/config.go | 1 + internal/config/config_test.go | 2 ++ internal/config/testdata/overridenvalues.xml | 1 + internal/model/model.go | 2 +- 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 28919b496..d84cafef4 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -45,6 +45,7 @@ import ( "github.com/syncthing/syncthing/internal/model" "github.com/syncthing/syncthing/internal/osutil" "github.com/syncthing/syncthing/internal/protocol" + "github.com/syncthing/syncthing/internal/symlinks" "github.com/syncthing/syncthing/internal/upgrade" "github.com/syncthing/syncthing/internal/upnp" "github.com/syndtr/goleveldb/leveldb" @@ -458,6 +459,10 @@ func syncthingMain() { opts := cfg.Options() + if opts.DisableSymlinks { + symlinks.Supported = false + } + if opts.MaxSendKbps > 0 { writeRateLimit = ratelimit.NewBucketWithRate(float64(1000*opts.MaxSendKbps), int64(5*1000*opts.MaxSendKbps)) } diff --git a/internal/config/config.go b/internal/config/config.go index 7355be8c0..d6890a3e6 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -179,6 +179,7 @@ type OptionsConfiguration struct { KeepTemporariesH int `xml:"keepTemporariesH" default:"24"` // 0 for off CacheIgnoredFiles bool `xml:"cacheIgnoredFiles" default:"true"` ProgressUpdateIntervalS int `xml:"progressUpdateIntervalS" default:"5"` + DisableSymlinks bool `xml:"disableSymlinks" default:"false"` Deprecated_RescanIntervalS int `xml:"rescanIntervalS,omitempty" json:"-"` Deprecated_UREnabled bool `xml:"urEnabled,omitempty" json:"-"` diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 982b8bfd4..5ae59ac87 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -53,6 +53,7 @@ func TestDefaultValues(t *testing.T) { KeepTemporariesH: 24, CacheIgnoredFiles: true, ProgressUpdateIntervalS: 5, + DisableSymlinks: false, } cfg := New(device1) @@ -155,6 +156,7 @@ func TestOverriddenValues(t *testing.T) { KeepTemporariesH: 48, CacheIgnoredFiles: false, ProgressUpdateIntervalS: 10, + DisableSymlinks: true, } cfg, err := Load("testdata/overridenvalues.xml", device1) diff --git a/internal/config/testdata/overridenvalues.xml b/internal/config/testdata/overridenvalues.xml index eca1d74c8..28efc872e 100755 --- a/internal/config/testdata/overridenvalues.xml +++ b/internal/config/testdata/overridenvalues.xml @@ -20,5 +20,6 @@ 48 false 10 + true diff --git a/internal/model/model.go b/internal/model/model.go index 5bbd7dded..c47602c73 100644 --- a/internal/model/model.go +++ b/internal/model/model.go @@ -1360,7 +1360,7 @@ func (m *Model) leveldbPanicWorkaround() { func symlinkInvalid(isLink bool) bool { if !symlinks.Supported && isLink { SymlinkWarning.Do(func() { - l.Warnln("Symlinks are unsupported as they require Administrator priviledges. This might cause your folder to appear out of sync.") + l.Warnln("Symlinks are disabled, unsupported or require Administrator priviledges. This might cause your folder to appear out of sync.") }) return true }