Documentation ¶
Overview ¶
Package config implements reading and writing of the syncthing configuration file.
Index ¶
- Constants
- Variables
- func ChangeRequiresRestart(from, to Configuration) bool
- type CommitResponse
- type Committer
- type Configuration
- type DeviceConfiguration
- type DeviceConfigurationList
- type FolderConfiguration
- type FolderDeviceConfiguration
- type FolderDeviceConfigurationList
- type GUIConfiguration
- type InternalParam
- type InternalVersioningConfiguration
- type OptionsConfiguration
- type PullOrder
- type VersioningConfiguration
- type Wrapper
- func (w *Wrapper) Devices() map[protocol.DeviceID]DeviceConfiguration
- func (w *Wrapper) Folders() map[string]FolderConfiguration
- func (w *Wrapper) GUI() GUIConfiguration
- func (w *Wrapper) IgnoredDevice(id protocol.DeviceID) bool
- func (w *Wrapper) Options() OptionsConfiguration
- func (w *Wrapper) Raw() Configuration
- func (w *Wrapper) Replace(cfg Configuration) CommitResponse
- func (w *Wrapper) Save() error
- func (w *Wrapper) SetDevice(dev DeviceConfiguration) CommitResponse
- func (w *Wrapper) SetFolder(fld FolderConfiguration) CommitResponse
- func (w *Wrapper) SetGUI(gui GUIConfiguration) CommitResponse
- func (w *Wrapper) SetOptions(opts OptionsConfiguration) CommitResponse
- func (w *Wrapper) Stop()
- func (w *Wrapper) Subscribe(c Committer)
Constants ¶
const ( OldestHandledVersion = 5 CurrentVersion = 10 MaxRescanIntervalS = 365 * 24 * 60 * 60 )
Variables ¶
var ResponseNoRestart = CommitResponse{ ValidationError: nil, RequiresRestart: false, }
Functions ¶
func ChangeRequiresRestart ¶
func ChangeRequiresRestart(from, to Configuration) bool
ChangeRequiresRestart returns true if updating the configuration requires a complete restart.
Types ¶
type CommitResponse ¶ added in v0.11.9
type Committer ¶ added in v0.11.9
type Committer interface { VerifyConfiguration(from, to Configuration) error CommitConfiguration(from, to Configuration) (handled bool) String() string }
The Committer interface is implemented by objects that need to know about or have a say in configuration changes.
When the configuration is about to be changed, VerifyConfiguration() is called for each subscribing object, with the old and new configuration. A nil error is returned if the new configuration is acceptable (i.e. does not contain any errors that would prevent it from being a valid config). Otherwise an error describing the problem is returned.
If any subscriber returns an error from VerifyConfiguration(), the configuration change is not committed and an error is returned to whoever tried to commit the broken config.
If all verification calls returns nil, CommitConfiguration() is called for each subscribing object. The callee returns true if the new configuration has been successfully applied, otherwise false. Any Commit() call returning false will result in a "restart needed" respone to the API/user. Note that the new configuration will still have been applied by those who were capable of doing so.
type Configuration ¶
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"` Options OptionsConfiguration `xml:"options" json:"options"` IgnoredDevices []protocol.DeviceID `xml:"ignoredDevice" json:"ignoredDevices"` XMLName xml.Name `xml:"configuration" json:"-"` OriginalVersion int `xml:"-" json:"-"` // The version we read from disk, before any conversion }
func New ¶
func New(myID protocol.DeviceID) Configuration
func (Configuration) Copy ¶ added in v0.11.0
func (cfg Configuration) Copy() Configuration
type DeviceConfiguration ¶ added in v0.10.0
type DeviceConfiguration struct { DeviceID protocol.DeviceID `xml:"id,attr" json:"deviceID"` Name string `xml:"name,attr,omitempty" json:"name"` Addresses []string `xml:"address,omitempty" json:"addresses"` Compression protocol.Compression `xml:"compression,attr" json:"compression"` CertName string `xml:"certName,attr,omitempty" json:"certName"` Introducer bool `xml:"introducer,attr" json:"introducer"` }
func (DeviceConfiguration) Copy ¶ added in v0.11.0
func (orig DeviceConfiguration) Copy() DeviceConfiguration
type DeviceConfigurationList ¶ added in v0.10.0
type DeviceConfigurationList []DeviceConfiguration
func (DeviceConfigurationList) Len ¶ added in v0.10.0
func (l DeviceConfigurationList) Len() int
func (DeviceConfigurationList) Less ¶ added in v0.10.0
func (l DeviceConfigurationList) Less(a, b int) bool
func (DeviceConfigurationList) Swap ¶ added in v0.10.0
func (l DeviceConfigurationList) Swap(a, b int)
type FolderConfiguration ¶ added in v0.10.0
type FolderConfiguration struct { ID string `xml:"id,attr" json:"id"` RawPath string `xml:"path,attr" json:"path"` Devices []FolderDeviceConfiguration `xml:"device" json:"devices"` ReadOnly bool `xml:"ro,attr" json:"readOnly"` RescanIntervalS int `xml:"rescanIntervalS,attr" json:"rescanIntervalS"` IgnorePerms bool `xml:"ignorePerms,attr" json:"ignorePerms"` AutoNormalize bool `xml:"autoNormalize,attr" json:"autoNormalize"` Versioning VersioningConfiguration `xml:"versioning" json:"versioning"` Copiers int `xml:"copiers" json:"copiers"` // This defines how many files are handled concurrently. Pullers int `xml:"pullers" json:"pullers"` // Defines how many blocks are fetched at the same time, possibly between separate copier routines. Hashers int `xml:"hashers" json:"hashers"` // Less than one sets the value to the number of cores. These are CPU bound due to hashing. Order PullOrder `xml:"order" json:"order"` Invalid string `xml:"-" json:"invalid"` // Set at runtime when there is an error, not saved // contains filtered or unexported fields }
func (FolderConfiguration) Copy ¶ added in v0.11.0
func (f FolderConfiguration) Copy() FolderConfiguration
func (*FolderConfiguration) CreateMarker ¶ added in v0.10.2
func (f *FolderConfiguration) CreateMarker() error
func (*FolderConfiguration) DeviceIDs ¶ added in v0.10.0
func (f *FolderConfiguration) DeviceIDs() []protocol.DeviceID
func (*FolderConfiguration) HasMarker ¶ added in v0.10.2
func (f *FolderConfiguration) HasMarker() bool
func (FolderConfiguration) Path ¶ added in v0.10.0
func (f FolderConfiguration) Path() string
type FolderDeviceConfiguration ¶ added in v0.10.0
type FolderDeviceConfigurationList ¶ added in v0.10.0
type FolderDeviceConfigurationList []FolderDeviceConfiguration
func (FolderDeviceConfigurationList) Len ¶ added in v0.10.0
func (l FolderDeviceConfigurationList) Len() int
func (FolderDeviceConfigurationList) Less ¶ added in v0.10.0
func (l FolderDeviceConfigurationList) Less(a, b int) bool
func (FolderDeviceConfigurationList) Swap ¶ added in v0.10.0
func (l FolderDeviceConfigurationList) Swap(a, b int)
type GUIConfiguration ¶
type GUIConfiguration struct { Enabled bool `xml:"enabled,attr" json:"enabled" default:"true"` Address string `xml:"address" json:"address" default:"127.0.0.1:8384"` User string `xml:"user,omitempty" json:"user"` Password string `xml:"password,omitempty" json:"password"` UseTLS bool `xml:"tls,attr" json:"useTLS"` APIKey string `xml:"apikey,omitempty" json:"apiKey"` }
type InternalParam ¶
type InternalVersioningConfiguration ¶
type InternalVersioningConfiguration struct { Type string `xml:"type,attr,omitempty"` Params []InternalParam `xml:"param"` }
type OptionsConfiguration ¶
type OptionsConfiguration struct { ListenAddress []string `xml:"listenAddress" json:"listenAddress" default:"0.0.0.0:22000"` GlobalAnnServers []string `` /* 169-byte string literal not displayed */ GlobalAnnEnabled bool `xml:"globalAnnounceEnabled" json:"globalAnnounceEnabled" default:"true"` LocalAnnEnabled bool `xml:"localAnnounceEnabled" json:"localAnnounceEnabled" default:"true"` LocalAnnPort int `xml:"localAnnouncePort" json:"localAnnouncePort" default:"21025"` LocalAnnMCAddr string `xml:"localAnnounceMCAddr" json:"localAnnounceMCAddr" default:"[ff32::5222]:21026"` MaxSendKbps int `xml:"maxSendKbps" json:"maxSendKbps"` MaxRecvKbps int `xml:"maxRecvKbps" json:"maxRecvKbps"` ReconnectIntervalS int `xml:"reconnectionIntervalS" json:"reconnectionIntervalS" default:"60"` StartBrowser bool `xml:"startBrowser" json:"startBrowser" default:"true"` UPnPEnabled bool `xml:"upnpEnabled" json:"upnpEnabled" default:"true"` UPnPLeaseM int `xml:"upnpLeaseMinutes" json:"upnpLeaseMinutes" default:"60"` UPnPRenewalM int `xml:"upnpRenewalMinutes" json:"upnpRenewalMinutes" default:"30"` UPnPTimeoutS int `xml:"upnpTimeoutSeconds" json:"upnpTimeoutSeconds" default:"10"` URAccepted int `xml:"urAccepted" json:"urAccepted"` // Accepted usage reporting version; 0 for off (undecided), -1 for off (permanently) URUniqueID string `xml:"urUniqueID" json:"urUniqueId"` // Unique ID for reporting purposes, regenerated when UR is turned on. RestartOnWakeup bool `xml:"restartOnWakeup" json:"restartOnWakeup" default:"true"` AutoUpgradeIntervalH int `xml:"autoUpgradeIntervalH" json:"autoUpgradeIntervalH" default:"12"` // 0 for off KeepTemporariesH int `xml:"keepTemporariesH" json:"keepTemporariesH" default:"24"` // 0 for off CacheIgnoredFiles bool `xml:"cacheIgnoredFiles" json:"cacheIgnoredFiles" default:"true"` ProgressUpdateIntervalS int `xml:"progressUpdateIntervalS" json:"progressUpdateIntervalS" default:"5"` SymlinksEnabled bool `xml:"symlinksEnabled" json:"symlinksEnabled" default:"true"` LimitBandwidthInLan bool `xml:"limitBandwidthInLan" json:"limitBandwidthInLan" default:"false"` DatabaseBlockCacheMiB int `xml:"databaseBlockCacheMiB" json:"databaseBlockCacheMiB" default:"0"` }
func (OptionsConfiguration) Copy ¶ added in v0.11.0
func (orig OptionsConfiguration) Copy() OptionsConfiguration
type PullOrder ¶ added in v0.11.1
type PullOrder int
func (PullOrder) MarshalText ¶ added in v0.11.1
func (*PullOrder) UnmarshalText ¶ added in v0.11.1
type VersioningConfiguration ¶
type VersioningConfiguration struct { Type string `xml:"type,attr" json:"type"` Params map[string]string `json:"params"` }
func (*VersioningConfiguration) MarshalXML ¶
func (c *VersioningConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error
func (*VersioningConfiguration) UnmarshalXML ¶
func (c *VersioningConfiguration) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
type Wrapper ¶ added in v0.10.12
type Wrapper struct {
// contains filtered or unexported fields
}
func Wrap ¶ added in v0.10.0
func Wrap(path string, cfg Configuration) *Wrapper
Wrap wraps an existing Configuration structure and ties it to a file on disk.
func (*Wrapper) Devices ¶ added in v0.10.12
func (w *Wrapper) Devices() map[protocol.DeviceID]DeviceConfiguration
Devices returns a map of devices. Device structures should not be changed, other than for the purpose of updating via SetDevice().
func (*Wrapper) Folders ¶ added in v0.10.12
func (w *Wrapper) Folders() map[string]FolderConfiguration
Folders returns a map of folders. Folder structures should not be changed, other than for the purpose of updating via SetFolder().
func (*Wrapper) GUI ¶ added in v0.10.12
func (w *Wrapper) GUI() GUIConfiguration
GUI returns the current GUI configuration object.
func (*Wrapper) IgnoredDevice ¶ added in v0.10.15
IgnoredDevice returns whether or not connection attempts from the given device should be silently ignored.
func (*Wrapper) Options ¶ added in v0.10.12
func (w *Wrapper) Options() OptionsConfiguration
Options returns the current options configuration object.
func (*Wrapper) Raw ¶ added in v0.10.12
func (w *Wrapper) Raw() Configuration
Raw returns the currently wrapped Configuration object.
func (*Wrapper) Replace ¶ added in v0.10.12
func (w *Wrapper) Replace(cfg Configuration) CommitResponse
Replace swaps the current configuration object for the given one.
func (*Wrapper) Save ¶ added in v0.10.12
Save writes the configuration to disk, and generates a ConfigSaved event.
func (*Wrapper) SetDevice ¶ added in v0.10.12
func (w *Wrapper) SetDevice(dev DeviceConfiguration) CommitResponse
SetDevice adds a new device to the configuration, or overwrites an existing device with the same ID.
func (*Wrapper) SetFolder ¶ added in v0.10.12
func (w *Wrapper) SetFolder(fld FolderConfiguration) CommitResponse
SetFolder adds a new folder to the configuration, or overwrites an existing folder with the same ID.
func (*Wrapper) SetGUI ¶ added in v0.10.12
func (w *Wrapper) SetGUI(gui GUIConfiguration) CommitResponse
SetGUI replaces the current GUI configuration object.
func (*Wrapper) SetOptions ¶ added in v0.10.12
func (w *Wrapper) SetOptions(opts OptionsConfiguration) CommitResponse
SetOptions replaces the current options configuration object.