all: Use protobuf to generate config structs (fixes #6734) (#6900)

This commit is contained in:
Audrius Butkevicius
2020-08-25 08:11:14 +02:00
committed by GitHub
parent 5b953033c7
commit d507d932b8
84 changed files with 3807 additions and 542 deletions
+14 -26
View File
@@ -101,7 +101,6 @@ var (
func New(myID protocol.DeviceID) Configuration {
var cfg Configuration
cfg.Version = CurrentVersion
cfg.OriginalVersion = CurrentVersion
cfg.Options.UnackedNotificationIDs = []string{"authenticationUserAndPassword"}
@@ -144,22 +143,28 @@ func NewWithFreePorts(myID protocol.DeviceID) (Configuration, error) {
return cfg, nil
}
func ReadXML(r io.Reader, myID protocol.DeviceID) (Configuration, error) {
var cfg Configuration
type xmlConfiguration struct {
Configuration
XMLName xml.Name `xml:"configuration"`
}
func ReadXML(r io.Reader, myID protocol.DeviceID) (Configuration, int, error) {
var cfg xmlConfiguration
util.SetDefaults(&cfg)
util.SetDefaults(&cfg.Options)
util.SetDefaults(&cfg.GUI)
if err := xml.NewDecoder(r).Decode(&cfg); err != nil {
return Configuration{}, err
return Configuration{}, 0, err
}
cfg.OriginalVersion = cfg.Version
originalVersion := cfg.Version
if err := cfg.prepare(myID); err != nil {
return Configuration{}, err
return Configuration{}, originalVersion, err
}
return cfg, nil
return cfg.Configuration, originalVersion, nil
}
func ReadJSON(r io.Reader, myID protocol.DeviceID) (Configuration, error) {
@@ -177,7 +182,6 @@ func ReadJSON(r io.Reader, myID protocol.DeviceID) (Configuration, error) {
if err := json.Unmarshal(bs, &cfg); err != nil {
return Configuration{}, err
}
cfg.OriginalVersion = cfg.Version
if err := cfg.prepare(myID); err != nil {
return Configuration{}, err
@@ -185,21 +189,6 @@ func ReadJSON(r io.Reader, myID protocol.DeviceID) (Configuration, error) {
return cfg, nil
}
type Configuration struct {
Version int `xml:"version,attr" json:"version"`
Folders []FolderConfiguration `xml:"folder" json:"folders"`
Devices []DeviceConfiguration `xml:"device" json:"devices"`
GUI GUIConfiguration `xml:"gui" json:"gui"`
LDAP LDAPConfiguration `xml:"ldap" json:"ldap"`
Options OptionsConfiguration `xml:"options" json:"options"`
IgnoredDevices []ObservedDevice `xml:"remoteIgnoredDevice" json:"remoteIgnoredDevices"`
PendingDevices []ObservedDevice `xml:"pendingDevice" json:"pendingDevices"`
XMLName xml.Name `xml:"configuration" json:"-"`
MyID protocol.DeviceID `xml:"-" json:"-"` // Provided by the instantiator.
OriginalVersion int `xml:"-" json:"-"` // The version we read from disk, before any conversion
}
func (cfg Configuration) Copy() Configuration {
newCfg := cfg
@@ -231,7 +220,8 @@ func (cfg Configuration) Copy() Configuration {
func (cfg *Configuration) WriteXML(w io.Writer) error {
e := xml.NewEncoder(w)
e.Indent("", " ")
err := e.Encode(cfg)
xmlCfg := xmlConfiguration{Configuration: *cfg}
err := e.Encode(xmlCfg)
if err != nil {
return err
}
@@ -242,8 +232,6 @@ func (cfg *Configuration) WriteXML(w io.Writer) error {
func (cfg *Configuration) prepare(myID protocol.DeviceID) error {
var myName string
cfg.MyID = myID
// Ensure this device is present in the config
for _, device := range cfg.Devices {
if device.DeviceID == myID {