Config version 3: default to compression=true on nodes
This commit is contained in:
parent
43e7435c41
commit
9312e3c7de
@ -22,7 +22,7 @@ import (
|
|||||||
var l = logger.DefaultLogger
|
var l = logger.DefaultLogger
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
Version int `xml:"version,attr" default:"2"`
|
Version int `xml:"version,attr" default:"3"`
|
||||||
Repositories []RepositoryConfiguration `xml:"repository"`
|
Repositories []RepositoryConfiguration `xml:"repository"`
|
||||||
Nodes []NodeConfiguration `xml:"node"`
|
Nodes []NodeConfiguration `xml:"node"`
|
||||||
GUI GUIConfiguration `xml:"gui"`
|
GUI GUIConfiguration `xml:"gui"`
|
||||||
@ -296,6 +296,11 @@ func Load(rd io.Reader, myID protocol.NodeID) (Configuration, error) {
|
|||||||
convertV1V2(&cfg)
|
convertV1V2(&cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Upgrade to v3 configuration if appropriate
|
||||||
|
if cfg.Version == 2 {
|
||||||
|
convertV2V3(&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] != '$' {
|
||||||
hash, err := bcrypt.GenerateFromPassword([]byte(cfg.GUI.Password), 0)
|
hash, err := bcrypt.GenerateFromPassword([]byte(cfg.GUI.Password), 0)
|
||||||
@ -342,6 +347,16 @@ func Load(rd io.Reader, myID protocol.NodeID) (Configuration, error) {
|
|||||||
return cfg, err
|
return cfg, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func convertV2V3(cfg *Configuration) {
|
||||||
|
// In previous versions, compression was always on. When upgrading, enable
|
||||||
|
// compression on all existing new. New nodes will get compression on by
|
||||||
|
// default by the GUI.
|
||||||
|
for i := range cfg.Nodes {
|
||||||
|
cfg.Nodes[i].Compression = true
|
||||||
|
}
|
||||||
|
cfg.Version = 3
|
||||||
|
}
|
||||||
|
|
||||||
func convertV1V2(cfg *Configuration) {
|
func convertV1V2(cfg *Configuration) {
|
||||||
// Collect the list of nodes.
|
// Collect the list of nodes.
|
||||||
// Replace node configs inside repositories with only a reference to the nide ID.
|
// Replace node configs inside repositories with only a reference to the nide ID.
|
||||||
|
|||||||
@ -91,7 +91,21 @@ func TestNodeConfig(t *testing.T) {
|
|||||||
</configuration>
|
</configuration>
|
||||||
`)
|
`)
|
||||||
|
|
||||||
for i, data := range [][]byte{v1data, v2data} {
|
v3data := []byte(`
|
||||||
|
<configuration version="3">
|
||||||
|
<repository id="test" directory="~/Sync" ro="true" ignorePerms="false">
|
||||||
|
<node id="AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR" compression="false"></node>
|
||||||
|
<node id="P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2" compression="false"></node>
|
||||||
|
</repository>
|
||||||
|
<node id="AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR" name="node one" compression="true">
|
||||||
|
<address>a</address>
|
||||||
|
</node>
|
||||||
|
<node id="P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2" name="node two" compression="true">
|
||||||
|
<address>b</address>
|
||||||
|
</node>
|
||||||
|
</configuration>`)
|
||||||
|
|
||||||
|
for i, data := range [][]byte{v1data, v2data, v3data} {
|
||||||
cfg, err := Load(bytes.NewReader(data), node1)
|
cfg, err := Load(bytes.NewReader(data), node1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@ -107,20 +121,22 @@ func TestNodeConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
expectedNodes := []NodeConfiguration{
|
expectedNodes := []NodeConfiguration{
|
||||||
{
|
{
|
||||||
NodeID: node1,
|
NodeID: node1,
|
||||||
Name: "node one",
|
Name: "node one",
|
||||||
Addresses: []string{"a"},
|
Addresses: []string{"a"},
|
||||||
|
Compression: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
NodeID: node4,
|
NodeID: node4,
|
||||||
Name: "node two",
|
Name: "node two",
|
||||||
Addresses: []string{"b"},
|
Addresses: []string{"b"},
|
||||||
|
Compression: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
expectedNodeIDs := []protocol.NodeID{node1, node4}
|
expectedNodeIDs := []protocol.NodeID{node1, node4}
|
||||||
|
|
||||||
if cfg.Version != 2 {
|
if cfg.Version != 3 {
|
||||||
t.Errorf("%d: Incorrect version %d != 2", i, cfg.Version)
|
t.Errorf("%d: Incorrect version %d != 3", i, cfg.Version)
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(cfg.Repositories, expectedRepos) {
|
if !reflect.DeepEqual(cfg.Repositories, expectedRepos) {
|
||||||
t.Errorf("%d: Incorrect Repositories\n A: %#v\n E: %#v", i, cfg.Repositories, expectedRepos)
|
t.Errorf("%d: Incorrect Repositories\n A: %#v\n E: %#v", i, cfg.Repositories, expectedRepos)
|
||||||
@ -222,16 +238,19 @@ func TestNodeAddressesDynamic(t *testing.T) {
|
|||||||
name, _ := os.Hostname()
|
name, _ := os.Hostname()
|
||||||
expected := []NodeConfiguration{
|
expected := []NodeConfiguration{
|
||||||
{
|
{
|
||||||
NodeID: node1,
|
NodeID: node1,
|
||||||
Addresses: []string{"dynamic"},
|
Addresses: []string{"dynamic"},
|
||||||
|
Compression: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
NodeID: node2,
|
NodeID: node2,
|
||||||
Addresses: []string{"dynamic"},
|
Addresses: []string{"dynamic"},
|
||||||
|
Compression: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
NodeID: node3,
|
NodeID: node3,
|
||||||
Addresses: []string{"dynamic"},
|
Addresses: []string{"dynamic"},
|
||||||
|
Compression: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
NodeID: node4,
|
NodeID: node4,
|
||||||
@ -252,7 +271,7 @@ func TestNodeAddressesDynamic(t *testing.T) {
|
|||||||
|
|
||||||
func TestNodeAddressesStatic(t *testing.T) {
|
func TestNodeAddressesStatic(t *testing.T) {
|
||||||
data := []byte(`
|
data := []byte(`
|
||||||
<configuration version="2">
|
<configuration version="3">
|
||||||
<node id="AIR6LPZ7K4PTTUXQSMUUCPQ5YWOEDFIIQJUG7772YQXXR5YD6AWQ">
|
<node id="AIR6LPZ7K4PTTUXQSMUUCPQ5YWOEDFIIQJUG7772YQXXR5YD6AWQ">
|
||||||
<address>192.0.2.1</address>
|
<address>192.0.2.1</address>
|
||||||
<address>192.0.2.2</address>
|
<address>192.0.2.2</address>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user