mirror of
https://github.com/octoleo/syncthing.git
synced 2025-01-22 22:58:25 +00:00
Refactor config into separate package
This commit is contained in:
parent
cba554d0fa
commit
f8e34c083e
@ -14,6 +14,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"code.google.com/p/go.crypto/bcrypt"
|
"code.google.com/p/go.crypto/bcrypt"
|
||||||
|
"github.com/calmh/syncthing/config"
|
||||||
"github.com/calmh/syncthing/logger"
|
"github.com/calmh/syncthing/logger"
|
||||||
"github.com/codegangsta/martini"
|
"github.com/codegangsta/martini"
|
||||||
)
|
)
|
||||||
@ -39,7 +40,7 @@ func init() {
|
|||||||
l.AddHandler(logger.LevelWarn, showGuiError)
|
l.AddHandler(logger.LevelWarn, showGuiError)
|
||||||
}
|
}
|
||||||
|
|
||||||
func startGUI(cfg GUIConfiguration, m *Model) error {
|
func startGUI(cfg config.GUIConfiguration, m *Model) error {
|
||||||
listener, err := net.Listen("tcp", cfg.Address)
|
listener, err := net.Listen("tcp", cfg.Address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/calmh/syncthing/config"
|
||||||
"github.com/calmh/syncthing/discover"
|
"github.com/calmh/syncthing/discover"
|
||||||
"github.com/calmh/syncthing/logger"
|
"github.com/calmh/syncthing/logger"
|
||||||
"github.com/calmh/syncthing/protocol"
|
"github.com/calmh/syncthing/protocol"
|
||||||
@ -53,7 +54,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
cfg Configuration
|
cfg config.Configuration
|
||||||
myID string
|
myID string
|
||||||
confDir string
|
confDir string
|
||||||
rateBucket *ratelimit.Bucket
|
rateBucket *ratelimit.Bucket
|
||||||
@ -170,7 +171,7 @@ func main() {
|
|||||||
cf, err := os.Open(cfgFile)
|
cf, err := os.Open(cfgFile)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// Read config.xml
|
// Read config.xml
|
||||||
cfg, err = readConfigXML(cf, myID)
|
cfg, err = config.Load(cf, myID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.Fatalln(err)
|
l.Fatalln(err)
|
||||||
}
|
}
|
||||||
@ -181,15 +182,15 @@ func main() {
|
|||||||
defaultRepo := filepath.Join(getHomeDir(), "Sync")
|
defaultRepo := filepath.Join(getHomeDir(), "Sync")
|
||||||
ensureDir(defaultRepo, 0755)
|
ensureDir(defaultRepo, 0755)
|
||||||
|
|
||||||
cfg, err = readConfigXML(nil, myID)
|
cfg, err = config.Load(nil, myID)
|
||||||
cfg.Repositories = []RepositoryConfiguration{
|
cfg.Repositories = []config.RepositoryConfiguration{
|
||||||
{
|
{
|
||||||
ID: "default",
|
ID: "default",
|
||||||
Directory: defaultRepo,
|
Directory: defaultRepo,
|
||||||
Nodes: []NodeConfiguration{{NodeID: myID}},
|
Nodes: []config.NodeConfiguration{{NodeID: myID}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
cfg.Nodes = []NodeConfiguration{
|
cfg.Nodes = []config.NodeConfiguration{
|
||||||
{
|
{
|
||||||
NodeID: myID,
|
NodeID: myID,
|
||||||
Addresses: []string{"dynamic"},
|
Addresses: []string{"dynamic"},
|
||||||
@ -452,7 +453,7 @@ func saveConfigLoop(cfgFile string) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
err = writeConfigXML(fd, cfg)
|
err = config.Save(fd, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.Warnln(err)
|
l.Warnln(err)
|
||||||
fd.Close()
|
fd.Close()
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
|
|
||||||
"github.com/calmh/syncthing/buffers"
|
"github.com/calmh/syncthing/buffers"
|
||||||
"github.com/calmh/syncthing/cid"
|
"github.com/calmh/syncthing/cid"
|
||||||
|
"github.com/calmh/syncthing/config"
|
||||||
"github.com/calmh/syncthing/files"
|
"github.com/calmh/syncthing/files"
|
||||||
"github.com/calmh/syncthing/lamport"
|
"github.com/calmh/syncthing/lamport"
|
||||||
"github.com/calmh/syncthing/protocol"
|
"github.com/calmh/syncthing/protocol"
|
||||||
@ -526,7 +527,7 @@ func (m *Model) broadcastIndexLoop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Model) AddRepo(id, dir string, nodes []NodeConfiguration) {
|
func (m *Model) AddRepo(id, dir string, nodes []config.NodeConfiguration) {
|
||||||
if m.started {
|
if m.started {
|
||||||
panic("cannot add repo to started model")
|
panic("cannot add repo to started model")
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/calmh/syncthing/buffers"
|
"github.com/calmh/syncthing/buffers"
|
||||||
"github.com/calmh/syncthing/cid"
|
"github.com/calmh/syncthing/cid"
|
||||||
|
"github.com/calmh/syncthing/config"
|
||||||
"github.com/calmh/syncthing/protocol"
|
"github.com/calmh/syncthing/protocol"
|
||||||
"github.com/calmh/syncthing/scanner"
|
"github.com/calmh/syncthing/scanner"
|
||||||
)
|
)
|
||||||
@ -175,7 +176,7 @@ func (p *puller) run() {
|
|||||||
}
|
}
|
||||||
err := p.model.ScanRepo(p.repo)
|
err := p.model.ScanRepo(p.repo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
invalidateRepo(p.repo, err)
|
invalidateRepo(cfg, p.repo, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +197,7 @@ func (p *puller) runRO() {
|
|||||||
}
|
}
|
||||||
err := p.model.ScanRepo(p.repo)
|
err := p.model.ScanRepo(p.repo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
invalidateRepo(p.repo, err)
|
invalidateRepo(cfg, p.repo, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -562,3 +563,13 @@ func (p *puller) closeFile(f scanner.File) {
|
|||||||
l.Debugf("pull: error: %q / %q: %v", p.repo, f.Name, err)
|
l.Debugf("pull: error: %q / %q: %v", p.repo, f.Name, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func invalidateRepo(cfg config.Configuration, repoID string, err error) {
|
||||||
|
for i := range cfg.Repositories {
|
||||||
|
repo := &cfg.Repositories[i]
|
||||||
|
if repo.ID == repoID {
|
||||||
|
repo.Invalid = err.Error()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
@ -10,8 +10,11 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"code.google.com/p/go.crypto/bcrypt"
|
"code.google.com/p/go.crypto/bcrypt"
|
||||||
|
"github.com/calmh/syncthing/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var l = logger.DefaultLogger
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
Version int `xml:"version,attr" default:"2"`
|
Version int `xml:"version,attr" default:"2"`
|
||||||
Repositories []RepositoryConfiguration `xml:"repository"`
|
Repositories []RepositoryConfiguration `xml:"repository"`
|
||||||
@ -131,7 +134,7 @@ func fillNilSlices(data interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeConfigXML(wr io.Writer, cfg Configuration) error {
|
func Save(wr io.Writer, cfg Configuration) error {
|
||||||
e := xml.NewEncoder(wr)
|
e := xml.NewEncoder(wr)
|
||||||
e.Indent("", " ")
|
e.Indent("", " ")
|
||||||
err := e.Encode(cfg)
|
err := e.Encode(cfg)
|
||||||
@ -156,7 +159,7 @@ func uniqueStrings(ss []string) []string {
|
|||||||
return us
|
return us
|
||||||
}
|
}
|
||||||
|
|
||||||
func readConfigXML(rd io.Reader, myID string) (Configuration, error) {
|
func Load(rd io.Reader, myID string) (Configuration, error) {
|
||||||
var cfg Configuration
|
var cfg Configuration
|
||||||
|
|
||||||
setDefaults(&cfg)
|
setDefaults(&cfg)
|
||||||
@ -304,13 +307,3 @@ func ensureNodePresent(nodes []NodeConfiguration, myID string) []NodeConfigurati
|
|||||||
|
|
||||||
return nodes
|
return nodes
|
||||||
}
|
}
|
||||||
|
|
||||||
func invalidateRepo(repoID string, err error) {
|
|
||||||
for i := range cfg.Repositories {
|
|
||||||
repo := &cfg.Repositories[i]
|
|
||||||
if repo.ID == repoID {
|
|
||||||
repo.Invalid = err.Error()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -23,7 +23,7 @@ func TestDefaultValues(t *testing.T) {
|
|||||||
UPnPEnabled: true,
|
UPnPEnabled: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, err := readConfigXML(bytes.NewReader(nil), "nodeID")
|
cfg, err := Load(bytes.NewReader(nil), "nodeID")
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -66,7 +66,7 @@ func TestNodeConfig(t *testing.T) {
|
|||||||
`)
|
`)
|
||||||
|
|
||||||
for i, data := range [][]byte{v1data, v2data} {
|
for i, data := range [][]byte{v1data, v2data} {
|
||||||
cfg, err := readConfigXML(bytes.NewReader(data), "node1")
|
cfg, err := Load(bytes.NewReader(data), "node1")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ func TestNoListenAddress(t *testing.T) {
|
|||||||
</configuration>
|
</configuration>
|
||||||
`)
|
`)
|
||||||
|
|
||||||
cfg, err := readConfigXML(bytes.NewReader(data), "nodeID")
|
cfg, err := Load(bytes.NewReader(data), "nodeID")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -170,7 +170,7 @@ func TestOverriddenValues(t *testing.T) {
|
|||||||
UPnPEnabled: false,
|
UPnPEnabled: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, err := readConfigXML(bytes.NewReader(data), "nodeID")
|
cfg, err := Load(bytes.NewReader(data), "nodeID")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -215,7 +215,7 @@ func TestNodeAddresses(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, err := readConfigXML(bytes.NewReader(data), "n4")
|
cfg, err := Load(bytes.NewReader(data), "n4")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user