Pull request: 3933 client sort

Merge in DNS/adguard-home from 3933-client-sort to master

* commit '6a6f926bd04fb05232dab628f5fc877d9307f175':
  all: imp hooks, opt
  home: imp docs, opt
  home: imp client handling
  all: doc changes, imp names
  Prevent spurious diffs in config file by sorting Client objects before writing
This commit is contained in:
Ainar Garipov
2021-12-13 15:42:58 +03:00
5 changed files with 125 additions and 48 deletions

View File

@@ -84,8 +84,10 @@ type configuration struct {
DHCP dhcpd.ServerConfig `yaml:"dhcp"`
// Note: this array is filled only before file read/write and then it's cleared
Clients []clientObject `yaml:"clients"`
// Clients contains the YAML representations of the persistent clients.
// This field is only used for reading and writing persistent client data.
// Keep this field sorted to ensure consistent ordering.
Clients []*clientObject `yaml:"clients"`
logSettings `yaml:",inline"`
@@ -316,8 +318,6 @@ func (c *configuration) write() error {
c.Lock()
defer c.Unlock()
Context.clients.WriteDiskConfig(&config.Clients)
if Context.auth != nil {
config.Users = Context.auth.GetUsers()
}
@@ -365,10 +365,11 @@ func (c *configuration) write() error {
config.DHCP = c
}
config.Clients = Context.clients.forConfig()
configFile := config.getConfigFilename()
log.Debug("Writing YAML file: %s", configFile)
yamlText, err := yaml.Marshal(&config)
config.Clients = nil
if err != nil {
log.Error("Couldn't generate YAML file: %s", err)