mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-13 00:36:28 +00:00
Add global announce server on IPv6
This commit is contained in:
parent
29dbfc647d
commit
1d77aeb69c
@ -26,6 +26,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/calmh/logger"
|
"github.com/calmh/logger"
|
||||||
"github.com/syncthing/protocol"
|
"github.com/syncthing/protocol"
|
||||||
@ -35,7 +36,7 @@ import (
|
|||||||
|
|
||||||
var l = logger.DefaultLogger
|
var l = logger.DefaultLogger
|
||||||
|
|
||||||
const CurrentVersion = 7
|
const CurrentVersion = 8
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
Version int `xml:"version,attr"`
|
Version int `xml:"version,attr"`
|
||||||
@ -162,7 +163,7 @@ type FolderDeviceConfiguration struct {
|
|||||||
|
|
||||||
type OptionsConfiguration struct {
|
type OptionsConfiguration struct {
|
||||||
ListenAddress []string `xml:"listenAddress" default:"0.0.0.0:22000"`
|
ListenAddress []string `xml:"listenAddress" default:"0.0.0.0:22000"`
|
||||||
GlobalAnnServers []string `xml:"globalAnnounceServer" default:"udp4://announce.syncthing.net:22026"`
|
GlobalAnnServers []string `xml:"globalAnnounceServer" default:"udp4://announce.syncthing.net:22026, udp6://announce-v6.syncthing.net:22026"`
|
||||||
GlobalAnnEnabled bool `xml:"globalAnnounceEnabled" default:"true"`
|
GlobalAnnEnabled bool `xml:"globalAnnounceEnabled" default:"true"`
|
||||||
LocalAnnEnabled bool `xml:"localAnnounceEnabled" default:"true"`
|
LocalAnnEnabled bool `xml:"localAnnounceEnabled" default:"true"`
|
||||||
LocalAnnPort int `xml:"localAnnouncePort" default:"21025"`
|
LocalAnnPort int `xml:"localAnnouncePort" default:"21025"`
|
||||||
@ -296,35 +297,28 @@ func (cfg *Configuration) prepare(myID protocol.DeviceID) {
|
|||||||
cfg.Options.Deprecated_URDeclined = false
|
cfg.Options.Deprecated_URDeclined = false
|
||||||
cfg.Options.Deprecated_UREnabled = false
|
cfg.Options.Deprecated_UREnabled = false
|
||||||
|
|
||||||
// Upgrade to v1 configuration if appropriate
|
// Upgrade configuration versions as appropriate
|
||||||
if cfg.Version == 1 {
|
if cfg.Version == 1 {
|
||||||
convertV1V2(cfg)
|
convertV1V2(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to v3 configuration if appropriate
|
|
||||||
if cfg.Version == 2 {
|
if cfg.Version == 2 {
|
||||||
convertV2V3(cfg)
|
convertV2V3(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to v4 configuration if appropriate
|
|
||||||
if cfg.Version == 3 {
|
if cfg.Version == 3 {
|
||||||
convertV3V4(cfg)
|
convertV3V4(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to v5 configuration if appropriate
|
|
||||||
if cfg.Version == 4 {
|
if cfg.Version == 4 {
|
||||||
convertV4V5(cfg)
|
convertV4V5(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to v6 configuration if appropriate
|
|
||||||
if cfg.Version == 5 {
|
if cfg.Version == 5 {
|
||||||
convertV5V6(cfg)
|
convertV5V6(cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to v7 configuration if appropriate
|
|
||||||
if cfg.Version == 6 {
|
if cfg.Version == 6 {
|
||||||
convertV6V7(cfg)
|
convertV6V7(cfg)
|
||||||
}
|
}
|
||||||
|
if cfg.Version == 7 {
|
||||||
|
convertV7V8(cfg)
|
||||||
|
}
|
||||||
|
|
||||||
// Hash old cleartext passwords
|
// Hash old cleartext passwords
|
||||||
if len(cfg.GUI.Password) > 0 && cfg.GUI.Password[0] != '$' {
|
if len(cfg.GUI.Password) > 0 && cfg.GUI.Password[0] != '$' {
|
||||||
@ -416,6 +410,15 @@ func ChangeRequiresRestart(from, to Configuration) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func convertV7V8(cfg *Configuration) {
|
||||||
|
// Add IPv6 announce server
|
||||||
|
if len(cfg.Options.GlobalAnnServers) == 1 && cfg.Options.GlobalAnnServers[0] == "udp4://announce.syncthing.net:22026" {
|
||||||
|
cfg.Options.GlobalAnnServers = append(cfg.Options.GlobalAnnServers, "udp6://announce-v6.syncthing.net:22026")
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg.Version = 8
|
||||||
|
}
|
||||||
|
|
||||||
func convertV6V7(cfg *Configuration) {
|
func convertV6V7(cfg *Configuration) {
|
||||||
// Migrate announce server addresses to the new URL based format
|
// Migrate announce server addresses to the new URL based format
|
||||||
for i := range cfg.Options.GlobalAnnServers {
|
for i := range cfg.Options.GlobalAnnServers {
|
||||||
@ -594,8 +597,16 @@ func fillNilSlices(data interface{}) error {
|
|||||||
switch f.Interface().(type) {
|
switch f.Interface().(type) {
|
||||||
case []string:
|
case []string:
|
||||||
if f.IsNil() {
|
if f.IsNil() {
|
||||||
rv := reflect.MakeSlice(reflect.TypeOf([]string{}), 1, 1)
|
// Treat the default as a comma separated slice
|
||||||
rv.Index(0).SetString(v)
|
vs := strings.Split(v, ",")
|
||||||
|
for i := range vs {
|
||||||
|
vs[i] = strings.TrimSpace(vs[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
rv := reflect.MakeSlice(reflect.TypeOf([]string{}), len(vs), len(vs))
|
||||||
|
for i, v := range vs {
|
||||||
|
rv.Index(i).SetString(v)
|
||||||
|
}
|
||||||
f.Set(rv)
|
f.Set(rv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ func init() {
|
|||||||
func TestDefaultValues(t *testing.T) {
|
func TestDefaultValues(t *testing.T) {
|
||||||
expected := OptionsConfiguration{
|
expected := OptionsConfiguration{
|
||||||
ListenAddress: []string{"0.0.0.0:22000"},
|
ListenAddress: []string{"0.0.0.0:22000"},
|
||||||
GlobalAnnServers: []string{"udp4://announce.syncthing.net:22026"},
|
GlobalAnnServers: []string{"udp4://announce.syncthing.net:22026", "udp6://announce-v6.syncthing.net:22026"},
|
||||||
GlobalAnnEnabled: true,
|
GlobalAnnEnabled: true,
|
||||||
LocalAnnEnabled: true,
|
LocalAnnEnabled: true,
|
||||||
LocalAnnPort: 21025,
|
LocalAnnPort: 21025,
|
||||||
|
12
internal/config/testdata/v8.xml
vendored
Normal file
12
internal/config/testdata/v8.xml
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<configuration version="8">
|
||||||
|
<folder id="test" path="testdata" ro="true" ignorePerms="false" rescanIntervalS="600">
|
||||||
|
<device id="AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR"></device>
|
||||||
|
<device id="P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2"></device>
|
||||||
|
</folder>
|
||||||
|
<device id="AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR" name="node one" compression="true">
|
||||||
|
<address>a</address>
|
||||||
|
</device>
|
||||||
|
<device id="P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2" name="node two" compression="true">
|
||||||
|
<address>b</address>
|
||||||
|
</device>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue
Block a user