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
-4
View File
@@ -74,10 +74,6 @@ func (c *mockedConfig) AddOrUpdatePendingDevice(device protocol.DeviceID, name,
func (c *mockedConfig) AddOrUpdatePendingFolder(id, label string, device protocol.DeviceID) {}
func (c *mockedConfig) MyName() string {
return ""
}
func (c *mockedConfig) ConfigPath() string {
return ""
}
-7
View File
@@ -6,13 +6,6 @@
package config
type AuthMode int
const (
AuthModeStatic AuthMode = iota // default is static
AuthModeLDAP
)
func (t AuthMode) String() string {
switch t {
case AuthModeStatic:
+69
View File
@@ -0,0 +1,69 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/authmode.proto
package config
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type AuthMode int32
const (
AuthModeStatic AuthMode = 0
AuthModeLDAP AuthMode = 1
)
var AuthMode_name = map[int32]string{
0: "AUTH_MODE_STATIC",
1: "AUTH_MODE_LDAP",
}
var AuthMode_value = map[string]int32{
"AUTH_MODE_STATIC": 0,
"AUTH_MODE_LDAP": 1,
}
func (AuthMode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_8e30b562e1bcea1e, []int{0}
}
func init() {
proto.RegisterEnum("config.AuthMode", AuthMode_name, AuthMode_value)
}
func init() { proto.RegisterFile("lib/config/authmode.proto", fileDescriptor_8e30b562e1bcea1e) }
var fileDescriptor_8e30b562e1bcea1e = []byte{
// 230 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0xcd, 0x4f, 0x49, 0xd5,
0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0x08, 0x4b, 0x29, 0x17, 0xa5, 0x16, 0xe4, 0x17,
0xeb, 0x83, 0x05, 0x93, 0x4a, 0xd3, 0xf4, 0xd3, 0xf3, 0xd3, 0xf3, 0xc1, 0x1c, 0x30, 0x0b, 0xa2,
0x58, 0x8a, 0x33, 0xb5, 0xa2, 0x04, 0xc2, 0xd4, 0x2a, 0xe0, 0xe2, 0x70, 0x2c, 0x2d, 0xc9, 0xf0,
0xcd, 0x4f, 0x49, 0x15, 0xd2, 0xe0, 0x12, 0x70, 0x0c, 0x0d, 0xf1, 0x88, 0xf7, 0xf5, 0x77, 0x71,
0x8d, 0x0f, 0x0e, 0x71, 0x0c, 0xf1, 0x74, 0x16, 0x60, 0x90, 0x12, 0xea, 0x9a, 0xab, 0xc0, 0x07,
0x53, 0x13, 0x5c, 0x92, 0x58, 0x92, 0x99, 0x2c, 0x64, 0xc2, 0xc5, 0x87, 0x50, 0xe9, 0xe3, 0xe2,
0x18, 0x20, 0xc0, 0x28, 0xa5, 0xd0, 0x35, 0x57, 0x81, 0x07, 0xa6, 0x0e, 0x24, 0x76, 0xa9, 0x4f,
0x15, 0x85, 0x2f, 0xc5, 0xb2, 0x62, 0x89, 0x1c, 0x83, 0x93, 0xfb, 0x89, 0x87, 0x72, 0x0c, 0x17,
0x1e, 0xca, 0x31, 0xbc, 0x78, 0x24, 0xc7, 0x30, 0xe1, 0xb1, 0x1c, 0xc3, 0x82, 0xc7, 0x72, 0x8c,
0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x99, 0x9e, 0x59, 0x92, 0x51, 0x9a,
0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x5f, 0x5c, 0x99, 0x97, 0x5c, 0x92, 0x91, 0x99, 0x97, 0x8e, 0xc4,
0x42, 0x84, 0x40, 0x12, 0x1b, 0xd8, 0x07, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x8c,
0xb9, 0xb3, 0x16, 0x01, 0x00, 0x00,
}
-8
View File
@@ -6,14 +6,6 @@
package config
type BlockPullOrder int
const (
BlockPullOrderStandard BlockPullOrder = iota // default is standard
BlockPullOrderRandom
BlockPullOrderInOrder
)
func (o BlockPullOrder) String() string {
switch o {
case BlockPullOrderStandard:
+70
View File
@@ -0,0 +1,70 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/blockpullorder.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type BlockPullOrder int32
const (
BlockPullOrderStandard BlockPullOrder = 0
BlockPullOrderRandom BlockPullOrder = 1
BlockPullOrderInOrder BlockPullOrder = 2
)
var BlockPullOrder_name = map[int32]string{
0: "BLOCK_PULL_ORDER_STANDARD",
1: "BLOCK_PULL_ORDER_RANDOM",
2: "BLOCK_PULL_ORDER_IN_ORDER",
}
var BlockPullOrder_value = map[string]int32{
"BLOCK_PULL_ORDER_STANDARD": 0,
"BLOCK_PULL_ORDER_RANDOM": 1,
"BLOCK_PULL_ORDER_IN_ORDER": 2,
}
func (BlockPullOrder) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_3c46a5289006da6c, []int{0}
}
func init() {
proto.RegisterEnum("config.BlockPullOrder", BlockPullOrder_name, BlockPullOrder_value)
}
func init() { proto.RegisterFile("lib/config/blockpullorder.proto", fileDescriptor_3c46a5289006da6c) }
var fileDescriptor_3c46a5289006da6c = []byte{
// 237 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcf, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x4f, 0xca, 0xc9, 0x4f, 0xce, 0x2e, 0x28, 0xcd, 0xc9,
0xc9, 0x2f, 0x4a, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0x48, 0x6a,
0xed, 0x61, 0xe4, 0xe2, 0x73, 0x02, 0x29, 0x08, 0x28, 0xcd, 0xc9, 0xf1, 0x07, 0x29, 0x10, 0xb2,
0xe4, 0x92, 0x74, 0xf2, 0xf1, 0x77, 0xf6, 0x8e, 0x0f, 0x08, 0xf5, 0xf1, 0x89, 0xf7, 0x0f, 0x72,
0x71, 0x0d, 0x8a, 0x0f, 0x0e, 0x71, 0xf4, 0x73, 0x71, 0x0c, 0x72, 0x11, 0x60, 0x90, 0x92, 0xea,
0x9a, 0xab, 0x20, 0x86, 0xaa, 0x25, 0xb8, 0x24, 0x31, 0x2f, 0x25, 0xb1, 0x28, 0x45, 0xc8, 0x94,
0x4b, 0x1c, 0x43, 0x6b, 0x90, 0xa3, 0x9f, 0x8b, 0xbf, 0xaf, 0x00, 0xa3, 0x94, 0x44, 0xd7, 0x5c,
0x05, 0x11, 0x54, 0x8d, 0x41, 0x89, 0x79, 0x29, 0xf9, 0xb9, 0x42, 0x16, 0x58, 0x6c, 0xf4, 0xf4,
0x83, 0x30, 0x04, 0x98, 0xa4, 0x24, 0xbb, 0xe6, 0x2a, 0x88, 0xa2, 0x6a, 0xf4, 0xcc, 0x03, 0x53,
0x4e, 0xee, 0x27, 0x1e, 0xca, 0x31, 0x5c, 0x78, 0x28, 0xc7, 0xf0, 0xe2, 0x91, 0x1c, 0xc3, 0x84,
0xc7, 0x72, 0x0c, 0x0b, 0x1e, 0xcb, 0x31, 0x5e, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43,
0x94, 0x66, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x71, 0x65, 0x5e,
0x72, 0x49, 0x46, 0x66, 0x5e, 0x3a, 0x12, 0x0b, 0x11, 0x48, 0x49, 0x6c, 0xe0, 0x60, 0x31, 0x06,
0x04, 0x00, 0x00, 0xff, 0xff, 0x46, 0xfd, 0xeb, 0xcf, 0x39, 0x01, 0x00, 0x00,
}
+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 {
+151
View File
@@ -0,0 +1,151 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/config.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type Configuration struct {
Version int `protobuf:"varint,1,opt,name=version,proto3,casttype=int" json:"version" xml:"version,attr"`
Folders []FolderConfiguration `protobuf:"bytes,2,rep,name=folders,proto3" json:"folders" xml:"folder"`
Devices []DeviceConfiguration `protobuf:"bytes,3,rep,name=devices,proto3" json:"devices" xml:"device"`
GUI GUIConfiguration `protobuf:"bytes,4,opt,name=gui,proto3" json:"gui" xml:"gui"`
LDAP LDAPConfiguration `protobuf:"bytes,5,opt,name=ldap,proto3" json:"ldap" xml:"ldap"`
Options OptionsConfiguration `protobuf:"bytes,6,opt,name=options,proto3" json:"options" xml:"options"`
IgnoredDevices []ObservedDevice `protobuf:"bytes,7,rep,name=ignored_devices,json=ignoredDevices,proto3" json:"remoteIgnoredDevices" xml:"remoteIgnoredDevice"`
PendingDevices []ObservedDevice `protobuf:"bytes,8,rep,name=pending_devices,json=pendingDevices,proto3" json:"pendingDevices" xml:"pendingDevice"`
}
func (m *Configuration) Reset() { *m = Configuration{} }
func (m *Configuration) String() string { return proto.CompactTextString(m) }
func (*Configuration) ProtoMessage() {}
func (*Configuration) Descriptor() ([]byte, []int) {
return fileDescriptor_baadf209193dc627, []int{0}
}
func (m *Configuration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Configuration.Unmarshal(m, b)
}
func (m *Configuration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Configuration.Marshal(b, m, deterministic)
}
func (m *Configuration) XXX_Merge(src proto.Message) {
xxx_messageInfo_Configuration.Merge(m, src)
}
func (m *Configuration) XXX_Size() int {
return xxx_messageInfo_Configuration.Size(m)
}
func (m *Configuration) XXX_DiscardUnknown() {
xxx_messageInfo_Configuration.DiscardUnknown(m)
}
var xxx_messageInfo_Configuration proto.InternalMessageInfo
func init() {
proto.RegisterType((*Configuration)(nil), "config.Configuration")
}
func init() { proto.RegisterFile("lib/config/config.proto", fileDescriptor_baadf209193dc627) }
var fileDescriptor_baadf209193dc627 = []byte{
// 544 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x8b, 0xd3, 0x40,
0x18, 0xc6, 0x53, 0xdb, 0x6d, 0xdd, 0xec, 0x3f, 0xc8, 0x8a, 0xa6, 0x2a, 0x99, 0x3a, 0x54, 0xa9,
0xa2, 0x5d, 0x58, 0x2f, 0xe2, 0xcd, 0x5a, 0x2c, 0x05, 0x41, 0x19, 0x58, 0x51, 0x2f, 0xd2, 0x36,
0xb3, 0xe9, 0x40, 0x3b, 0x53, 0x92, 0xb4, 0xac, 0xdf, 0x42, 0xfc, 0x04, 0x5e, 0xfd, 0x06, 0x7e,
0x84, 0xbd, 0xb5, 0x47, 0x4f, 0x03, 0xbb, 0xbd, 0x48, 0x8e, 0x39, 0x7a, 0x92, 0xf9, 0xd7, 0x4d,
0x24, 0x7a, 0x6a, 0xde, 0xf7, 0x79, 0x9e, 0xdf, 0xfb, 0xf2, 0x36, 0xb1, 0x6f, 0x4d, 0xc8, 0xf0,
0x68, 0xc4, 0xe8, 0x29, 0x09, 0xf4, 0x4f, 0x7b, 0x16, 0xb2, 0x98, 0x39, 0x55, 0x55, 0xdd, 0x6e,
0x66, 0x0c, 0xa7, 0x6c, 0xe2, 0xe3, 0x50, 0x15, 0xf3, 0x70, 0x10, 0x13, 0x46, 0x95, 0x3b, 0xe7,
0xf2, 0xf1, 0x82, 0x8c, 0x70, 0x91, 0xeb, 0x5e, 0xc6, 0x15, 0xcc, 0x49, 0x91, 0x05, 0x66, 0x2c,
0x13, 0x7f, 0x30, 0x2b, 0xf2, 0xdc, 0xcf, 0x78, 0xd8, 0x4c, 0x08, 0x51, 0x91, 0xad, 0x9e, 0xb5,
0x0d, 0x23, 0x1c, 0x2e, 0xb0, 0xaf, 0xa5, 0x6d, 0x7c, 0x16, 0xab, 0x47, 0xf8, 0xa3, 0x6a, 0xef,
0xbd, 0xcc, 0xa6, 0x1d, 0x64, 0xd7, 0x16, 0x38, 0x8c, 0x08, 0xa3, 0x6e, 0xa9, 0x51, 0x6a, 0x6d,
0x75, 0x9e, 0x25, 0x1c, 0x98, 0x56, 0xca, 0x81, 0x73, 0x36, 0x9d, 0x3c, 0x87, 0xba, 0x7e, 0x3c,
0x88, 0xe3, 0x10, 0xfe, 0xe6, 0xa0, 0x4c, 0x68, 0x9c, 0x2c, 0x9b, 0xbb, 0xd9, 0x3e, 0x32, 0x29,
0xe7, 0x9d, 0x5d, 0x53, 0xc7, 0x8b, 0xdc, 0x6b, 0x8d, 0x72, 0x6b, 0xe7, 0xf8, 0x4e, 0x5b, 0x5f,
0xfb, 0x95, 0x6c, 0xe7, 0x36, 0xe8, 0x80, 0x73, 0x0e, 0x2c, 0x31, 0x54, 0x67, 0x52, 0x0e, 0x76,
0xe5, 0x50, 0x55, 0x43, 0x64, 0x04, 0xc1, 0x55, 0xe7, 0x8e, 0xdc, 0x72, 0x9e, 0xdb, 0x95, 0xed,
0x7f, 0x70, 0x75, 0x66, 0xc3, 0x55, 0x35, 0x44, 0x46, 0x70, 0x90, 0x5d, 0x0e, 0xe6, 0xc4, 0xad,
0x34, 0x4a, 0xad, 0x9d, 0x63, 0xd7, 0x30, 0x7b, 0x27, 0xfd, 0x3c, 0xf0, 0x81, 0x00, 0x5e, 0x72,
0x50, 0xee, 0x9d, 0xf4, 0x13, 0x0e, 0x44, 0x26, 0xe5, 0x60, 0x5b, 0x32, 0x83, 0x39, 0x81, 0x5f,
0x57, 0x4d, 0x21, 0x21, 0x21, 0x38, 0x1f, 0xec, 0x8a, 0xf8, 0x47, 0xdd, 0x2d, 0x09, 0xad, 0x1b,
0xe8, 0xeb, 0xee, 0x8b, 0xb7, 0x79, 0xea, 0x23, 0x4d, 0xad, 0x08, 0x29, 0xe1, 0x40, 0xc6, 0x52,
0x0e, 0x6c, 0xc9, 0x15, 0x85, 0x00, 0x4b, 0x15, 0x49, 0xcd, 0x79, 0x6f, 0xd7, 0xf4, 0x8b, 0xe0,
0x56, 0x25, 0xfd, 0xae, 0xa1, 0xbf, 0x51, 0xed, 0xfc, 0x80, 0x86, 0xb9, 0x83, 0x0e, 0xa5, 0x1c,
0xec, 0x49, 0xb6, 0xae, 0x21, 0x32, 0x8a, 0xf3, 0xbd, 0x64, 0x1f, 0x90, 0x80, 0xb2, 0x10, 0xfb,
0x9f, 0xcc, 0xa5, 0x6b, 0xf2, 0xd2, 0x37, 0x37, 0x23, 0xf4, 0xbb, 0xa5, 0x2e, 0xde, 0x19, 0x6b,
0xf8, 0x8d, 0x10, 0x4f, 0x59, 0x8c, 0xfb, 0x2a, 0xdc, 0xdd, 0x5c, 0xbc, 0x2e, 0x27, 0x15, 0x88,
0x30, 0x59, 0x36, 0x0f, 0x0b, 0xfa, 0xe9, 0xb2, 0x59, 0xc8, 0x42, 0xfb, 0x24, 0x57, 0x3b, 0xd4,
0x3e, 0x98, 0x61, 0xea, 0x13, 0x1a, 0x6c, 0x56, 0xbd, 0xfe, 0xdf, 0x55, 0x9f, 0xe8, 0x55, 0xf7,
0x75, 0xec, 0x6a, 0xc9, 0x43, 0xb9, 0x64, 0xae, 0x0d, 0xd1, 0x5f, 0xb6, 0x4e, 0xef, 0xfc, 0xc2,
0xb3, 0x56, 0x17, 0x9e, 0xf5, 0xeb, 0xd2, 0xb3, 0xbe, 0xac, 0x3d, 0xeb, 0xdb, 0xda, 0x2b, 0xad,
0xd6, 0x9e, 0xf5, 0x73, 0xed, 0x59, 0x1f, 0x1f, 0x06, 0x24, 0x1e, 0xcf, 0x87, 0xed, 0x11, 0x9b,
0x1e, 0x45, 0x9f, 0xe9, 0x28, 0x1e, 0x13, 0x1a, 0x64, 0x9e, 0xae, 0xbe, 0xce, 0x61, 0x55, 0x7e,
0x8a, 0x4f, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xce, 0xc5, 0x80, 0x7a, 0x8d, 0x04, 0x00, 0x00,
}
func (m *Configuration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Version != 0 {
n += 1 + sovConfig(uint64(m.Version))
}
if len(m.Folders) > 0 {
for _, e := range m.Folders {
l = e.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
}
}
if len(m.Devices) > 0 {
for _, e := range m.Devices {
l = e.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
}
}
l = m.GUI.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
l = m.LDAP.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
l = m.Options.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
if len(m.IgnoredDevices) > 0 {
for _, e := range m.IgnoredDevices {
l = e.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
}
}
if len(m.PendingDevices) > 0 {
for _, e := range m.PendingDevices {
l = e.ProtoSize()
n += 1 + l + sovConfig(uint64(l))
}
}
return n
}
func sovConfig(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozConfig(x uint64) (n int) {
return sovConfig(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+12 -13
View File
@@ -21,6 +21,7 @@ import (
"testing"
"github.com/d4l3k/messagediff"
"github.com/syncthing/syncthing/lib/events"
"github.com/syncthing/syncthing/lib/fs"
"github.com/syncthing/syncthing/lib/protocol"
@@ -523,9 +524,6 @@ func TestNewSaveLoad(t *testing.T) {
intCfg := New(device1)
cfg := wrap(path, intCfg)
// To make the equality pass later
cfg.(*wrapper).cfg.XMLName.Local = "configuration"
if exists(path) {
t.Error(path, "exists")
}
@@ -614,14 +612,14 @@ func TestPullOrder(t *testing.T) {
name string
order PullOrder
}{
{"f1", OrderRandom}, // empty value, default
{"f2", OrderRandom}, // explicit
{"f3", OrderAlphabetic}, // explicit
{"f4", OrderRandom}, // unknown value, default
{"f5", OrderSmallestFirst}, // explicit
{"f6", OrderLargestFirst}, // explicit
{"f7", OrderOldestFirst}, // explicit
{"f8", OrderNewestFirst}, // explicit
{"f1", PullOrderRandom}, // empty value, default
{"f2", PullOrderRandom}, // explicit
{"f3", PullOrderAlphabetic}, // explicit
{"f4", PullOrderRandom}, // unknown value, default
{"f5", PullOrderSmallestFirst}, // explicit
{"f6", PullOrderLargestFirst}, // explicit
{"f7", PullOrderOldestFirst}, // explicit
{"f8", PullOrderNewestFirst}, // explicit
}
// Verify values are deserialized correctly
@@ -640,7 +638,7 @@ func TestPullOrder(t *testing.T) {
t.Logf("%s", buf.Bytes())
cfg, err = ReadXML(buf, device1)
cfg, _, err = ReadXML(buf, device1)
if err != nil {
t.Fatal(err)
}
@@ -1169,7 +1167,8 @@ func defaultConfigAsMap() map[string]interface{} {
}
func load(path string, myID protocol.DeviceID) (Wrapper, error) {
return Load(path, myID, events.NoopLogger)
cfg, _, err := Load(path, myID, events.NoopLogger)
return cfg, err
}
func wrap(path string, cfg Configuration) Wrapper {
-19
View File
@@ -13,25 +13,6 @@ import (
"github.com/syncthing/syncthing/lib/util"
)
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" default:"dynamic"`
Compression protocol.Compression `xml:"compression,attr" json:"compression"`
CertName string `xml:"certName,attr,omitempty" json:"certName"`
Introducer bool `xml:"introducer,attr" json:"introducer"`
SkipIntroductionRemovals bool `xml:"skipIntroductionRemovals,attr" json:"skipIntroductionRemovals"`
IntroducedBy protocol.DeviceID `xml:"introducedBy,attr" json:"introducedBy"`
Paused bool `xml:"paused" json:"paused"`
AllowedNetworks []string `xml:"allowedNetwork,omitempty" json:"allowedNetworks"`
AutoAcceptFolders bool `xml:"autoAcceptFolders" json:"autoAcceptFolders"`
MaxSendKbps int `xml:"maxSendKbps" json:"maxSendKbps"`
MaxRecvKbps int `xml:"maxRecvKbps" json:"maxRecvKbps"`
IgnoredFolders []ObservedFolder `xml:"ignoredFolder" json:"ignoredFolders"`
PendingFolders []ObservedFolder `xml:"pendingFolder" json:"pendingFolders"`
MaxRequestKiB int `xml:"maxRequestKiB" json:"maxRequestKiB"`
}
func NewDeviceConfiguration(id protocol.DeviceID, name string) DeviceConfiguration {
d := DeviceConfiguration{
DeviceID: id,
+213
View File
@@ -0,0 +1,213 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/deviceconfiguration.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
github_com_syncthing_syncthing_lib_protocol "github.com/syncthing/syncthing/lib/protocol"
protocol "github.com/syncthing/syncthing/lib/protocol"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type DeviceConfiguration struct {
DeviceID github_com_syncthing_syncthing_lib_protocol.DeviceID `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3,customtype=github.com/syncthing/syncthing/lib/protocol.DeviceID" json:"deviceID" xml:"id,attr"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name" xml:"name,attr,omitempty"`
Addresses []string `protobuf:"bytes,3,rep,name=addresses,proto3" json:"addresses" xml:"address,omitempty" default:"dynamic"`
Compression protocol.Compression `protobuf:"varint,4,opt,name=compression,proto3,enum=protocol.Compression" json:"compression" xml:"compression,attr"`
CertName string `protobuf:"bytes,5,opt,name=cert_name,json=certName,proto3" json:"certName" xml:"certName,attr,omitempty"`
Introducer bool `protobuf:"varint,6,opt,name=introducer,proto3" json:"introducer" xml:"introducer,attr"`
SkipIntroductionRemovals bool `protobuf:"varint,7,opt,name=skip_introduction_removals,json=skipIntroductionRemovals,proto3" json:"skipIntroductionRemovals" xml:"skipIntroductionRemovals,attr"`
IntroducedBy github_com_syncthing_syncthing_lib_protocol.DeviceID `protobuf:"bytes,8,opt,name=introduced_by,json=introducedBy,proto3,customtype=github.com/syncthing/syncthing/lib/protocol.DeviceID" json:"introducedBy" xml:"introducedBy,attr"`
Paused bool `protobuf:"varint,9,opt,name=paused,proto3" json:"paused" xml:"paused"`
AllowedNetworks []string `protobuf:"bytes,10,rep,name=allowed_networks,json=allowedNetworks,proto3" json:"allowedNetworks" xml:"allowedNetwork,omitempty"`
AutoAcceptFolders bool `protobuf:"varint,11,opt,name=auto_accept_folders,json=autoAcceptFolders,proto3" json:"autoAcceptFolders" xml:"autoAcceptFolders"`
MaxSendKbps int `protobuf:"varint,12,opt,name=max_send_kbps,json=maxSendKbps,proto3,casttype=int" json:"maxSendKbps" xml:"maxSendKbps"`
MaxRecvKbps int `protobuf:"varint,13,opt,name=max_recv_kbps,json=maxRecvKbps,proto3,casttype=int" json:"maxRecvKbps" xml:"maxRecvKbps"`
IgnoredFolders []ObservedFolder `protobuf:"bytes,14,rep,name=ignored_folders,json=ignoredFolders,proto3" json:"ignoredFolders" xml:"ignoredFolder"`
PendingFolders []ObservedFolder `protobuf:"bytes,15,rep,name=pending_folders,json=pendingFolders,proto3" json:"pendingFolders" xml:"pendingFolder"`
MaxRequestKiB int `protobuf:"varint,16,opt,name=max_request_kib,json=maxRequestKib,proto3,casttype=int" json:"maxRequestKiB" xml:"maxRequestKiB"`
}
func (m *DeviceConfiguration) Reset() { *m = DeviceConfiguration{} }
func (m *DeviceConfiguration) String() string { return proto.CompactTextString(m) }
func (*DeviceConfiguration) ProtoMessage() {}
func (*DeviceConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_744b782bd13071dd, []int{0}
}
func (m *DeviceConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeviceConfiguration.Unmarshal(m, b)
}
func (m *DeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeviceConfiguration.Marshal(b, m, deterministic)
}
func (m *DeviceConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeviceConfiguration.Merge(m, src)
}
func (m *DeviceConfiguration) XXX_Size() int {
return xxx_messageInfo_DeviceConfiguration.Size(m)
}
func (m *DeviceConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_DeviceConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_DeviceConfiguration proto.InternalMessageInfo
func init() {
proto.RegisterType((*DeviceConfiguration)(nil), "config.DeviceConfiguration")
}
func init() {
proto.RegisterFile("lib/config/deviceconfiguration.proto", fileDescriptor_744b782bd13071dd)
}
var fileDescriptor_744b782bd13071dd = []byte{
// 900 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x31, 0x6f, 0xdb, 0x46,
0x18, 0x15, 0xeb, 0xc4, 0xb6, 0xce, 0x96, 0x65, 0xd3, 0x88, 0xc3, 0x18, 0x88, 0x4e, 0x60, 0x35,
0x28, 0x68, 0x2a, 0x17, 0x6e, 0x27, 0xa3, 0x1d, 0xca, 0x04, 0x6d, 0x83, 0xa0, 0x49, 0x7b, 0xdd,
0xbc, 0xb0, 0x24, 0xef, 0xac, 0x1c, 0x2c, 0xf2, 0x58, 0xf2, 0xa4, 0x48, 0x40, 0x87, 0x8e, 0x1d,
0x3a, 0x14, 0x59, 0xbb, 0x14, 0x1d, 0x3a, 0xf4, 0x97, 0x04, 0xe8, 0x60, 0x8d, 0x45, 0x87, 0x03,
0x62, 0x2f, 0x05, 0x47, 0x8e, 0x99, 0x0a, 0xde, 0x51, 0x14, 0x49, 0x47, 0x45, 0x80, 0x6e, 0x77,
0xef, 0xbd, 0x7b, 0xef, 0xf8, 0x74, 0x1f, 0x04, 0x7a, 0x23, 0xea, 0x1e, 0x79, 0x2c, 0x38, 0xa3,
0xc3, 0x23, 0x4c, 0x26, 0xd4, 0x23, 0x6a, 0x33, 0x8e, 0x1c, 0x4e, 0x59, 0x30, 0x08, 0x23, 0xc6,
0x99, 0xbe, 0xae, 0xc0, 0xc3, 0x83, 0x4c, 0x2d, 0x21, 0x8f, 0x8d, 0x8e, 0x5c, 0x12, 0x2a, 0xfe,
0xf0, 0x4e, 0xc9, 0x85, 0xb9, 0x31, 0x89, 0x26, 0x04, 0xe7, 0x54, 0x93, 0x4c, 0xb9, 0x5a, 0x9a,
0x7f, 0xee, 0x80, 0xfd, 0x87, 0x32, 0xe3, 0x41, 0x39, 0x43, 0xff, 0x43, 0x03, 0x4d, 0x95, 0x6d,
0x53, 0x6c, 0x68, 0x5d, 0xad, 0xbf, 0x6d, 0xfd, 0xa4, 0xbd, 0x14, 0xb0, 0xf1, 0xb7, 0x80, 0x1f,
0x0d, 0x29, 0x7f, 0x36, 0x76, 0x07, 0x1e, 0xf3, 0x8f, 0xe2, 0x59, 0xe0, 0xf1, 0x67, 0x34, 0x18,
0x96, 0x56, 0xe5, 0x1b, 0x0d, 0x94, 0xfb, 0xa3, 0x87, 0x97, 0x02, 0x6e, 0x2e, 0xd6, 0x89, 0x80,
0x9b, 0x38, 0x5f, 0xa7, 0x02, 0xb6, 0xa6, 0xfe, 0xe8, 0xc4, 0xa4, 0xf8, 0xbe, 0xc3, 0x79, 0x64,
0x26, 0x17, 0xbd, 0x8d, 0x7c, 0x9d, 0x5e, 0xf4, 0x0a, 0xdd, 0x8f, 0xf3, 0x9e, 0xf6, 0x62, 0xde,
0x2b, 0x3c, 0xd0, 0x82, 0xc1, 0xfa, 0x57, 0xe0, 0x46, 0xe0, 0xf8, 0xc4, 0x78, 0xa7, 0xab, 0xf5,
0x9b, 0xd6, 0xc7, 0x89, 0x80, 0x72, 0x9f, 0x0a, 0x78, 0x47, 0x3a, 0x67, 0x1b, 0xe9, 0x77, 0x9f,
0xf9, 0x94, 0x13, 0x3f, 0xe4, 0xb3, 0x2c, 0x65, 0xff, 0x0d, 0x38, 0x92, 0x27, 0xf5, 0x29, 0x68,
0x3a, 0x18, 0x47, 0x24, 0x8e, 0x49, 0x6c, 0xac, 0x75, 0xd7, 0xfa, 0x4d, 0xeb, 0x34, 0x11, 0x70,
0x09, 0xa6, 0x02, 0xde, 0x93, 0xde, 0x39, 0x52, 0x72, 0xee, 0x62, 0x72, 0xe6, 0x8c, 0x47, 0xfc,
0xc4, 0xc4, 0xb3, 0xc0, 0xf1, 0xa9, 0x97, 0x65, 0xed, 0x5d, 0xd3, 0xbd, 0xbe, 0xe8, 0x6d, 0xe4,
0x02, 0xb4, 0xf4, 0xd5, 0x27, 0x60, 0xcb, 0x63, 0x7e, 0x98, 0xed, 0x28, 0x0b, 0x8c, 0x1b, 0x5d,
0xad, 0xbf, 0x73, 0x7c, 0x6b, 0x50, 0xd4, 0xf9, 0x60, 0x49, 0x5a, 0x9f, 0x24, 0x02, 0x96, 0xd5,
0xa9, 0x80, 0x07, 0xf2, 0x52, 0x25, 0xac, 0xe8, 0x74, 0xb7, 0x0e, 0xa2, 0xf2, 0x51, 0x9d, 0x80,
0xa6, 0x47, 0x22, 0x6e, 0xcb, 0x22, 0x6f, 0xca, 0x22, 0xbf, 0xc8, 0x7e, 0xa6, 0x0c, 0x7c, 0xa2,
0xca, 0xbc, 0xab, 0xbc, 0x73, 0xe0, 0x0d, 0x85, 0xde, 0x5e, 0xc1, 0xa1, 0xc2, 0x45, 0x3f, 0x05,
0x80, 0x06, 0x3c, 0x62, 0x78, 0xec, 0x91, 0xc8, 0x58, 0xef, 0x6a, 0xfd, 0x4d, 0xeb, 0x24, 0x11,
0xb0, 0x84, 0xa6, 0x02, 0xde, 0x52, 0x0f, 0xa2, 0x80, 0x8a, 0x8f, 0x68, 0xd7, 0x30, 0x54, 0x3a,
0xa7, 0xff, 0xa6, 0x81, 0xc3, 0xf8, 0x9c, 0x86, 0xf6, 0x02, 0xcb, 0x5e, 0xb2, 0x1d, 0x11, 0x9f,
0x4d, 0x9c, 0x51, 0x6c, 0x6c, 0xc8, 0x30, 0x9c, 0x08, 0x68, 0x64, 0xaa, 0x47, 0x25, 0x11, 0xca,
0x35, 0xa9, 0x80, 0xef, 0xca, 0xe8, 0x55, 0x82, 0xe2, 0x22, 0x77, 0xff, 0x53, 0x81, 0x56, 0x26,
0xe8, 0xbf, 0x6b, 0xa0, 0x55, 0xdc, 0x19, 0xdb, 0xee, 0xcc, 0xd8, 0x94, 0xc3, 0xf5, 0xc3, 0xff,
0x1a, 0xae, 0x44, 0xc0, 0xed, 0xa5, 0xab, 0x35, 0x4b, 0x05, 0xbc, 0x5d, 0xed, 0x10, 0x5b, 0xb3,
0xe2, 0xf2, 0x7b, 0xd7, 0xd0, 0x6c, 0xb8, 0x50, 0xc5, 0x41, 0x3f, 0x06, 0xeb, 0xa1, 0x33, 0x8e,
0x09, 0x36, 0x9a, 0xb2, 0xb8, 0xc3, 0x44, 0xc0, 0x1c, 0x49, 0x05, 0xdc, 0x96, 0xee, 0x6a, 0x6b,
0xa2, 0x1c, 0xd7, 0xbf, 0x07, 0xbb, 0xce, 0x68, 0xc4, 0x9e, 0x13, 0x6c, 0x07, 0x84, 0x3f, 0x67,
0xd1, 0x79, 0x6c, 0x00, 0x39, 0x3d, 0x5f, 0x27, 0x02, 0xb6, 0x73, 0xee, 0x49, 0x4e, 0xa5, 0x02,
0x76, 0xd4, 0x0c, 0x55, 0xf0, 0xea, 0x9b, 0x32, 0x56, 0x91, 0xa8, 0x6e, 0xa7, 0x7f, 0x0b, 0xf6,
0x9d, 0x31, 0x67, 0xb6, 0xe3, 0x79, 0x24, 0xe4, 0xf6, 0x19, 0x1b, 0x61, 0x12, 0xc5, 0xc6, 0x96,
0xbc, 0xfe, 0x07, 0x89, 0x80, 0x7b, 0x19, 0xfd, 0xa9, 0x64, 0x3f, 0x53, 0x64, 0xd1, 0xd3, 0x35,
0xc6, 0x44, 0xd7, 0xd5, 0xfa, 0x53, 0xd0, 0xf2, 0x9d, 0xa9, 0x1d, 0x93, 0x00, 0xdb, 0xe7, 0x6e,
0x18, 0x1b, 0xdb, 0x5d, 0xad, 0x7f, 0xd3, 0x7a, 0x2f, 0x9b, 0x43, 0xdf, 0x99, 0x7e, 0x43, 0x02,
0xfc, 0xd8, 0x0d, 0x33, 0xd7, 0x3d, 0xe9, 0x5a, 0xc2, 0xcc, 0xd7, 0x02, 0xae, 0xd1, 0x80, 0xa3,
0xb2, 0x70, 0x61, 0x18, 0x11, 0x6f, 0xa2, 0x0c, 0x5b, 0x15, 0x43, 0x44, 0xbc, 0x49, 0xdd, 0x70,
0x81, 0x55, 0x0c, 0x17, 0xa0, 0x1e, 0x80, 0x36, 0x1d, 0x06, 0x2c, 0x22, 0xb8, 0xf8, 0xfe, 0x9d,
0xee, 0x5a, 0x7f, 0xeb, 0xf8, 0x60, 0xa0, 0xfe, 0x0b, 0x06, 0x4f, 0xf3, 0xff, 0x02, 0xf5, 0x4d,
0xd6, 0xfb, 0xd9, 0xb3, 0x4b, 0x04, 0xdc, 0xc9, 0x8f, 0x2d, 0x8b, 0xd9, 0x57, 0x0f, 0xa8, 0x0c,
0x9b, 0xa8, 0x26, 0xcb, 0xf2, 0x42, 0x12, 0x60, 0x1a, 0x0c, 0x8b, 0xbc, 0xf6, 0xdb, 0xe5, 0xe5,
0xc7, 0xea, 0x79, 0x15, 0xd8, 0x44, 0x35, 0x99, 0xfe, 0x8b, 0x06, 0xda, 0xaa, 0xb1, 0xef, 0xc6,
0x24, 0xe6, 0xf6, 0x39, 0x75, 0x8d, 0x5d, 0xd9, 0x59, 0x7c, 0x29, 0x60, 0xeb, 0xcb, 0xac, 0x0a,
0xc9, 0x3c, 0xa6, 0x56, 0x22, 0x60, 0xcb, 0x2f, 0x03, 0x45, 0x48, 0x05, 0x5d, 0x14, 0x99, 0x5c,
0xf4, 0x6a, 0xf2, 0x3a, 0xf0, 0x62, 0xde, 0xab, 0x26, 0xa0, 0x0a, 0xef, 0x5a, 0x9f, 0xbf, 0x7c,
0xd5, 0x69, 0xcc, 0x5f, 0x75, 0x1a, 0xff, 0x5c, 0x76, 0x1a, 0x3f, 0x5f, 0x75, 0x1a, 0xbf, 0x5e,
0x75, 0xb4, 0xf9, 0x55, 0xa7, 0xf1, 0xd7, 0x55, 0xa7, 0x71, 0x7a, 0xef, 0x2d, 0x26, 0x5b, 0x95,
0xe6, 0xae, 0xcb, 0x09, 0xff, 0xf0, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x69, 0xcb, 0x9f,
0x0b, 0x08, 0x00, 0x00,
}
func (m *DeviceConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = m.DeviceID.ProtoSize()
n += 1 + l + sovDeviceconfiguration(uint64(l))
l = len(m.Name)
if l > 0 {
n += 1 + l + sovDeviceconfiguration(uint64(l))
}
if len(m.Addresses) > 0 {
for _, s := range m.Addresses {
l = len(s)
n += 1 + l + sovDeviceconfiguration(uint64(l))
}
}
if m.Compression != 0 {
n += 1 + sovDeviceconfiguration(uint64(m.Compression))
}
l = len(m.CertName)
if l > 0 {
n += 1 + l + sovDeviceconfiguration(uint64(l))
}
if m.Introducer {
n += 2
}
if m.SkipIntroductionRemovals {
n += 2
}
l = m.IntroducedBy.ProtoSize()
n += 1 + l + sovDeviceconfiguration(uint64(l))
if m.Paused {
n += 2
}
if len(m.AllowedNetworks) > 0 {
for _, s := range m.AllowedNetworks {
l = len(s)
n += 1 + l + sovDeviceconfiguration(uint64(l))
}
}
if m.AutoAcceptFolders {
n += 2
}
if m.MaxSendKbps != 0 {
n += 1 + sovDeviceconfiguration(uint64(m.MaxSendKbps))
}
if m.MaxRecvKbps != 0 {
n += 1 + sovDeviceconfiguration(uint64(m.MaxRecvKbps))
}
if len(m.IgnoredFolders) > 0 {
for _, e := range m.IgnoredFolders {
l = e.ProtoSize()
n += 1 + l + sovDeviceconfiguration(uint64(l))
}
}
if len(m.PendingFolders) > 0 {
for _, e := range m.PendingFolders {
l = e.ProtoSize()
n += 1 + l + sovDeviceconfiguration(uint64(l))
}
}
if m.MaxRequestKiB != 0 {
n += 2 + sovDeviceconfiguration(uint64(m.MaxRequestKiB))
}
return n
}
func sovDeviceconfiguration(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozDeviceconfiguration(x uint64) (n int) {
return sovDeviceconfiguration(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+13 -64
View File
@@ -28,54 +28,6 @@ var (
const DefaultMarkerName = ".stfolder"
type FolderConfiguration struct {
ID string `xml:"id,attr" json:"id"`
Label string `xml:"label,attr" json:"label" restart:"false"`
FilesystemType fs.FilesystemType `xml:"filesystemType" json:"filesystemType"`
Path string `xml:"path,attr" json:"path"`
Type FolderType `xml:"type,attr" json:"type"`
Devices []FolderDeviceConfiguration `xml:"device" json:"devices"`
RescanIntervalS int `xml:"rescanIntervalS,attr" json:"rescanIntervalS" default:"3600"`
FSWatcherEnabled bool `xml:"fsWatcherEnabled,attr" json:"fsWatcherEnabled" default:"true"`
FSWatcherDelayS int `xml:"fsWatcherDelayS,attr" json:"fsWatcherDelayS" default:"10"`
IgnorePerms bool `xml:"ignorePerms,attr" json:"ignorePerms"`
AutoNormalize bool `xml:"autoNormalize,attr" json:"autoNormalize" default:"true"`
MinDiskFree Size `xml:"minDiskFree" json:"minDiskFree" default:"1%"`
Versioning VersioningConfiguration `xml:"versioning" json:"versioning"`
Copiers int `xml:"copiers" json:"copiers"` // This defines how many files are handled concurrently.
PullerMaxPendingKiB int `xml:"pullerMaxPendingKiB" json:"pullerMaxPendingKiB"`
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"`
IgnoreDelete bool `xml:"ignoreDelete" json:"ignoreDelete"`
ScanProgressIntervalS int `xml:"scanProgressIntervalS" json:"scanProgressIntervalS"` // Set to a negative value to disable. Value of 0 will get replaced with value of 2 (default value)
PullerPauseS int `xml:"pullerPauseS" json:"pullerPauseS"`
MaxConflicts int `xml:"maxConflicts" json:"maxConflicts" default:"-1"`
DisableSparseFiles bool `xml:"disableSparseFiles" json:"disableSparseFiles"`
DisableTempIndexes bool `xml:"disableTempIndexes" json:"disableTempIndexes"`
Paused bool `xml:"paused" json:"paused"`
WeakHashThresholdPct int `xml:"weakHashThresholdPct" json:"weakHashThresholdPct"` // Use weak hash if more than X percent of the file has changed. Set to -1 to always use weak hash.
MarkerName string `xml:"markerName" json:"markerName"`
CopyOwnershipFromParent bool `xml:"copyOwnershipFromParent" json:"copyOwnershipFromParent"`
RawModTimeWindowS int `xml:"modTimeWindowS" json:"modTimeWindowS"`
MaxConcurrentWrites int `xml:"maxConcurrentWrites" json:"maxConcurrentWrites" default:"2"`
DisableFsync bool `xml:"disableFsync" json:"disableFsync"`
BlockPullOrder BlockPullOrder `xml:"blockPullOrder" json:"blockPullOrder"`
CopyRangeMethod fs.CopyRangeMethod `xml:"copyRangeMethod" json:"copyRangeMethod" default:"standard"`
CaseSensitiveFS bool `xml:"caseSensitiveFS" json:"caseSensitiveFS"`
JunctionsAsDirs bool `xml:"junctionsAsDirs" json:"junctionsAsDirs"`
cachedModTimeWindow time.Duration
DeprecatedReadOnly bool `xml:"ro,attr,omitempty" json:"-"`
DeprecatedMinDiskFreePct float64 `xml:"minDiskFreePct,omitempty" json:"-"`
DeprecatedPullers int `xml:"pullers,omitempty" json:"-"`
}
type FolderDeviceConfiguration struct {
DeviceID protocol.DeviceID `xml:"id,attr" json:"deviceID"`
IntroducedBy protocol.DeviceID `xml:"introducedBy,attr" json:"introducedBy"`
}
func NewFolderConfiguration(myID protocol.DeviceID, id, label string, fsType fs.FilesystemType, path string) FolderConfiguration {
f := FolderConfiguration{
ID: id,
@@ -114,7 +66,19 @@ func (f FolderConfiguration) Filesystem() fs.Filesystem {
}
func (f FolderConfiguration) ModTimeWindow() time.Duration {
return f.cachedModTimeWindow
dur := time.Duration(f.RawModTimeWindowS) * time.Second
if f.RawModTimeWindowS < 1 && runtime.GOOS == "android" {
if usage, err := disk.Usage(f.Filesystem().URI()); err != nil {
dur = 2 * time.Second
l.Debugf(`Detecting FS at "%v" on android: Setting mtime window to 2s: err == "%v"`, f.Path, err)
} else if usage.Fstype == "" || strings.Contains(strings.ToLower(usage.Fstype), "fat") {
dur = 2 * time.Second
l.Debugf(`Detecting FS at "%v" on android: Setting mtime window to 2s: usage.Fstype == "%v"`, f.Path, usage.Fstype)
} else {
l.Debugf(`Detecting FS at %v on android: Leaving mtime window at 0: usage.Fstype == "%v"`, f.Path, usage.Fstype)
}
}
return dur
}
func (f *FolderConfiguration) CreateMarker() error {
@@ -242,21 +206,6 @@ func (f *FolderConfiguration) prepare() {
if f.MarkerName == "" {
f.MarkerName = DefaultMarkerName
}
switch {
case f.RawModTimeWindowS > 0:
f.cachedModTimeWindow = time.Duration(f.RawModTimeWindowS) * time.Second
case runtime.GOOS == "android":
if usage, err := disk.Usage(f.Filesystem().URI()); err != nil {
f.cachedModTimeWindow = 2 * time.Second
l.Debugf(`Detecting FS at "%v" on android: Setting mtime window to 2s: err == "%v"`, f.Path, err)
} else if usage.Fstype == "" || strings.Contains(strings.ToLower(usage.Fstype), "fat") {
f.cachedModTimeWindow = 2 * time.Second
l.Debugf(`Detecting FS at "%v" on android: Setting mtime window to 2s: usage.Fstype == "%v"`, f.Path, usage.Fstype)
} else {
l.Debugf(`Detecting FS at %v on android: Leaving mtime window at 0: usage.Fstype == "%v"`, f.Path, usage.Fstype)
}
}
}
// RequiresRestartOnly returns a copy with only the attributes that require
+401
View File
@@ -0,0 +1,401 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/folderconfiguration.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
fs "github.com/syncthing/syncthing/lib/fs"
github_com_syncthing_syncthing_lib_protocol "github.com/syncthing/syncthing/lib/protocol"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type FolderDeviceConfiguration struct {
DeviceID github_com_syncthing_syncthing_lib_protocol.DeviceID `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3,customtype=github.com/syncthing/syncthing/lib/protocol.DeviceID" json:"deviceID" xml:"id,attr"`
IntroducedBy github_com_syncthing_syncthing_lib_protocol.DeviceID `protobuf:"bytes,2,opt,name=introduced_by,json=introducedBy,proto3,customtype=github.com/syncthing/syncthing/lib/protocol.DeviceID" json:"introducedBy" xml:"introducedBy,attr"`
}
func (m *FolderDeviceConfiguration) Reset() { *m = FolderDeviceConfiguration{} }
func (m *FolderDeviceConfiguration) String() string { return proto.CompactTextString(m) }
func (*FolderDeviceConfiguration) ProtoMessage() {}
func (*FolderDeviceConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_44a9785876ed3afa, []int{0}
}
func (m *FolderDeviceConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FolderDeviceConfiguration.Unmarshal(m, b)
}
func (m *FolderDeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FolderDeviceConfiguration.Marshal(b, m, deterministic)
}
func (m *FolderDeviceConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_FolderDeviceConfiguration.Merge(m, src)
}
func (m *FolderDeviceConfiguration) XXX_Size() int {
return xxx_messageInfo_FolderDeviceConfiguration.Size(m)
}
func (m *FolderDeviceConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_FolderDeviceConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_FolderDeviceConfiguration proto.InternalMessageInfo
type FolderConfiguration struct {
ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" xml:"id,attr"`
Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label" xml:"label,attr" restart:"false"`
FilesystemType fs.FilesystemType `protobuf:"varint,3,opt,name=filesystem_type,json=filesystemType,proto3,enum=fs.FilesystemType" json:"filesystemType" xml:"filesystemType"`
Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path" xml:"path,attr"`
Type FolderType `protobuf:"varint,5,opt,name=type,proto3,enum=config.FolderType" json:"type" xml:"type,attr"`
Devices []FolderDeviceConfiguration `protobuf:"bytes,6,rep,name=devices,proto3" json:"devices" xml:"device"`
RescanIntervalS int `protobuf:"varint,7,opt,name=rescan_interval_s,json=rescanIntervalS,proto3,casttype=int" json:"rescanIntervalS" xml:"rescanIntervalS,attr" default:"3600"`
FSWatcherEnabled bool `protobuf:"varint,8,opt,name=fs_watcher_enabled,json=fsWatcherEnabled,proto3" json:"fsWatcherEnabled" xml:"fsWatcherEnabled,attr" default:"true"`
FSWatcherDelayS int `protobuf:"varint,9,opt,name=fs_watcher_delay_s,json=fsWatcherDelayS,proto3,casttype=int" json:"fsWatcherDelayS" xml:"fsWatcherDelayS,attr" default:"10"`
IgnorePerms bool `protobuf:"varint,10,opt,name=ignore_perms,json=ignorePerms,proto3" json:"ignorePerms" xml:"ignorePerms,attr"`
AutoNormalize bool `protobuf:"varint,11,opt,name=auto_normalize,json=autoNormalize,proto3" json:"autoNormalize" xml:"autoNormalize,attr" default:"true"`
MinDiskFree Size `protobuf:"bytes,12,opt,name=min_disk_free,json=minDiskFree,proto3" json:"minDiskFree" xml:"minDiskFree"`
Versioning VersioningConfiguration `protobuf:"bytes,13,opt,name=versioning,proto3" json:"versioning" xml:"versioning"`
Copiers int `protobuf:"varint,14,opt,name=copiers,proto3,casttype=int" json:"copiers" xml:"copiers"`
PullerMaxPendingKiB int `protobuf:"varint,15,opt,name=puller_max_pending_kib,json=pullerMaxPendingKib,proto3,casttype=int" json:"pullerMaxPendingKiB" xml:"pullerMaxPendingKiB"`
Hashers int `protobuf:"varint,16,opt,name=hashers,proto3,casttype=int" json:"hashers" xml:"hashers"`
Order PullOrder `protobuf:"varint,17,opt,name=order,proto3,enum=config.PullOrder" json:"order" xml:"order"`
IgnoreDelete bool `protobuf:"varint,18,opt,name=ignore_delete,json=ignoreDelete,proto3" json:"ignoreDelete" xml:"ignoreDelete"`
ScanProgressIntervalS int `protobuf:"varint,19,opt,name=scan_progress_interval_s,json=scanProgressIntervalS,proto3,casttype=int" json:"scanProgressIntervalS" xml:"scanProgressIntervalS"`
PullerPauseS int `protobuf:"varint,20,opt,name=puller_pause_s,json=pullerPauseS,proto3,casttype=int" json:"pullerPauseS" xml:"pullerPauseS"`
MaxConflicts int `protobuf:"varint,21,opt,name=max_conflicts,json=maxConflicts,proto3,casttype=int" json:"maxConflicts" xml:"maxConflicts" default:"-1"`
DisableSparseFiles bool `protobuf:"varint,22,opt,name=disable_sparse_files,json=disableSparseFiles,proto3" json:"disableSparseFiles" xml:"disableSparseFiles"`
DisableTempIndexes bool `protobuf:"varint,23,opt,name=disable_temp_indexes,json=disableTempIndexes,proto3" json:"disableTempIndexes" xml:"disableTempIndexes"`
Paused bool `protobuf:"varint,24,opt,name=paused,proto3" json:"paused" xml:"paused"`
WeakHashThresholdPct int `protobuf:"varint,25,opt,name=weak_hash_threshold_pct,json=weakHashThresholdPct,proto3,casttype=int" json:"weakHashThresholdPct" xml:"weakHashThresholdPct"`
MarkerName string `protobuf:"bytes,26,opt,name=marker_name,json=markerName,proto3" json:"markerName" xml:"markerName"`
CopyOwnershipFromParent bool `protobuf:"varint,27,opt,name=copy_ownership_from_parent,json=copyOwnershipFromParent,proto3" json:"copyOwnershipFromParent" xml:"copyOwnershipFromParent"`
RawModTimeWindowS int `protobuf:"varint,28,opt,name=mod_time_window_s,json=modTimeWindowS,proto3,casttype=int" json:"modTimeWindowS" xml:"modTimeWindowS"`
MaxConcurrentWrites int `protobuf:"varint,29,opt,name=max_concurrent_writes,json=maxConcurrentWrites,proto3,casttype=int" json:"maxConcurrentWrites" xml:"maxConcurrentWrites" default:"2"`
DisableFsync bool `protobuf:"varint,30,opt,name=disable_fsync,json=disableFsync,proto3" json:"disableFsync" xml:"disableFsync"`
BlockPullOrder BlockPullOrder `protobuf:"varint,31,opt,name=block_pull_order,json=blockPullOrder,proto3,enum=config.BlockPullOrder" json:"blockPullOrder" xml:"blockPullOrder"`
CopyRangeMethod fs.CopyRangeMethod `protobuf:"varint,32,opt,name=copy_range_method,json=copyRangeMethod,proto3,enum=fs.CopyRangeMethod" json:"copyRangeMethod" xml:"copyRangeMethod" default:"standard"`
CaseSensitiveFS bool `protobuf:"varint,33,opt,name=case_sensitive_fs,json=caseSensitiveFs,proto3" json:"caseSensitiveFS" xml:"caseSensitiveFS"`
JunctionsAsDirs bool `protobuf:"varint,34,opt,name=follow_junctions,json=followJunctions,proto3" json:"junctionsAsDirs" xml:"junctionsAsDirs"`
// Legacy deprecated
DeprecatedReadOnly bool `protobuf:"varint,9000,opt,name=read_only,json=readOnly,proto3" json:"-" xml:"ro,attr,omitempty"` // Deprecated: Do not use.
DeprecatedMinDiskFreePct float64 `protobuf:"fixed64,9001,opt,name=min_disk_free_pct,json=minDiskFreePct,proto3" json:"-" xml:"minDiskFreePct,omitempty"` // Deprecated: Do not use.
DeprecatedPullers int `protobuf:"varint,9002,opt,name=pullers,proto3,casttype=int" json:"-" xml:"pullers,omitempty"` // Deprecated: Do not use.
}
func (m *FolderConfiguration) Reset() { *m = FolderConfiguration{} }
func (m *FolderConfiguration) String() string { return proto.CompactTextString(m) }
func (*FolderConfiguration) ProtoMessage() {}
func (*FolderConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_44a9785876ed3afa, []int{1}
}
func (m *FolderConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FolderConfiguration.Unmarshal(m, b)
}
func (m *FolderConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FolderConfiguration.Marshal(b, m, deterministic)
}
func (m *FolderConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_FolderConfiguration.Merge(m, src)
}
func (m *FolderConfiguration) XXX_Size() int {
return xxx_messageInfo_FolderConfiguration.Size(m)
}
func (m *FolderConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_FolderConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_FolderConfiguration proto.InternalMessageInfo
func init() {
proto.RegisterType((*FolderDeviceConfiguration)(nil), "config.FolderDeviceConfiguration")
proto.RegisterType((*FolderConfiguration)(nil), "config.FolderConfiguration")
}
func init() {
proto.RegisterFile("lib/config/folderconfiguration.proto", fileDescriptor_44a9785876ed3afa)
}
var fileDescriptor_44a9785876ed3afa = []byte{
// 1981 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x8f, 0x1c, 0x47,
0x15, 0xdf, 0x5e, 0x7f, 0xed, 0xd6, 0x7e, 0x97, 0xbd, 0x76, 0x79, 0x9d, 0x6c, 0x6d, 0x9a, 0x21,
0x6c, 0xa2, 0x78, 0x6d, 0x6f, 0x10, 0x07, 0x2b, 0x09, 0x64, 0xbc, 0x59, 0x30, 0xc6, 0xf1, 0xa8,
0xd7, 0x60, 0x61, 0x90, 0x9a, 0x9e, 0xee, 0x9a, 0x99, 0xca, 0xf6, 0x17, 0x55, 0x3d, 0xde, 0x1d,
0x9f, 0xcc, 0x05, 0x81, 0xc8, 0x01, 0x2d, 0x07, 0xae, 0x48, 0x20, 0x04, 0xf9, 0x07, 0x90, 0xf8,
0x0b, 0x72, 0x41, 0x3b, 0x47, 0xc4, 0xa1, 0xa4, 0xac, 0x2f, 0x68, 0x6e, 0xf4, 0xd1, 0x27, 0x54,
0x55, 0xdd, 0x3d, 0xdd, 0x3d, 0x13, 0x84, 0x94, 0xdb, 0xd4, 0xef, 0xf7, 0xab, 0xf7, 0x5e, 0xbf,
0x7e, 0xef, 0x55, 0xf5, 0x80, 0x86, 0x4f, 0xdb, 0xb7, 0xdc, 0x28, 0xec, 0xd0, 0xee, 0xad, 0x4e,
0xe4, 0x7b, 0x84, 0xe9, 0x45, 0x9f, 0x39, 0x09, 0x8d, 0xc2, 0x9d, 0x98, 0x45, 0x49, 0x04, 0x2f,
0x6a, 0x70, 0xe3, 0xc6, 0x84, 0x3a, 0x19, 0xc4, 0x44, 0x8b, 0x36, 0xd6, 0x4b, 0x24, 0xa7, 0xcf,
0x73, 0x78, 0xa3, 0x04, 0xc7, 0x7d, 0xdf, 0x8f, 0x98, 0x47, 0x58, 0xc6, 0x6d, 0x97, 0xb8, 0x67,
0x84, 0x71, 0x1a, 0x85, 0x34, 0xec, 0x4e, 0x89, 0x60, 0x03, 0x97, 0x94, 0x6d, 0x3f, 0x72, 0x0f,
0xeb, 0xa6, 0xa0, 0x14, 0x74, 0xf8, 0x2d, 0x19, 0x10, 0xcf, 0xb0, 0xd7, 0x32, 0xcc, 0x8d, 0xe2,
0x01, 0x73, 0xc2, 0x2e, 0x09, 0x48, 0xd2, 0x8b, 0xbc, 0x8c, 0x9d, 0x27, 0xc7, 0x89, 0xfe, 0x69,
0xfe, 0x67, 0x16, 0x5c, 0xdf, 0x57, 0xcf, 0xb3, 0x47, 0x9e, 0x51, 0x97, 0xdc, 0x2b, 0x47, 0x00,
0x3f, 0x33, 0xc0, 0xbc, 0xa7, 0x70, 0x9b, 0x7a, 0xc8, 0xd8, 0x32, 0xb6, 0x17, 0x9b, 0x9f, 0x1a,
0x9f, 0x0b, 0x3c, 0xf3, 0x2f, 0x81, 0xbf, 0xd9, 0xa5, 0x49, 0xaf, 0xdf, 0xde, 0x71, 0xa3, 0xe0,
0x16, 0x1f, 0x84, 0x6e, 0xd2, 0xa3, 0x61, 0xb7, 0xf4, 0x4b, 0x86, 0xa0, 0x9c, 0xb8, 0x91, 0xbf,
0xa3, 0xad, 0xdf, 0xdf, 0x3b, 0x13, 0x78, 0x2e, 0xff, 0x3d, 0x12, 0x78, 0xce, 0xcb, 0x7e, 0xa7,
0x02, 0x2f, 0x1d, 0x07, 0xfe, 0x5d, 0x93, 0x7a, 0xef, 0x38, 0x49, 0xc2, 0xcc, 0xd1, 0x69, 0xe3,
0x52, 0xf6, 0x3b, 0x3d, 0x6d, 0x14, 0xba, 0x5f, 0x0d, 0x1b, 0xc6, 0xc9, 0xb0, 0x51, 0xd8, 0xb0,
0x72, 0xc6, 0x83, 0x7f, 0x36, 0xc0, 0x12, 0x0d, 0x13, 0x16, 0x79, 0x7d, 0x97, 0x78, 0x76, 0x7b,
0x80, 0x66, 0x55, 0xc0, 0x2f, 0xbe, 0x52, 0xc0, 0x23, 0x81, 0x17, 0xc7, 0x56, 0x9b, 0x83, 0x54,
0xe0, 0x6b, 0x3a, 0xd0, 0x12, 0x58, 0x84, 0xbc, 0x36, 0x81, 0xca, 0x80, 0xad, 0x8a, 0x05, 0xf3,
0x25, 0x06, 0x97, 0x75, 0xce, 0xab, 0xd9, 0xfe, 0x00, 0xcc, 0x66, 0x59, 0x9e, 0x6f, 0xee, 0x9c,
0x09, 0x3c, 0xab, 0xbc, 0xcf, 0x52, 0xef, 0x7f, 0x25, 0xe7, 0x64, 0xd8, 0x98, 0xbd, 0xbf, 0x67,
0xcd, 0x52, 0x0f, 0xfe, 0x10, 0x5c, 0xf0, 0x9d, 0x36, 0xf1, 0xd5, 0x73, 0xcf, 0x37, 0xbf, 0x3d,
0x12, 0x58, 0x03, 0xa9, 0xc0, 0x5b, 0x6a, 0xbf, 0x5a, 0x69, 0x13, 0x5b, 0x8c, 0xf0, 0xc4, 0x61,
0xc9, 0x5d, 0xb3, 0xe3, 0xf8, 0x9c, 0x48, 0x93, 0x60, 0x4c, 0xbf, 0x18, 0x36, 0x66, 0x2c, 0xbd,
0x19, 0x76, 0xc1, 0x4a, 0x87, 0xfa, 0x84, 0x0f, 0x78, 0x42, 0x02, 0x5b, 0x56, 0x19, 0x3a, 0xb7,
0x65, 0x6c, 0x2f, 0xef, 0xc2, 0x9d, 0x0e, 0xdf, 0xd9, 0x2f, 0xa8, 0xc7, 0x83, 0x98, 0x34, 0xdf,
0x1e, 0x09, 0xbc, 0xdc, 0xa9, 0x60, 0xa9, 0xc0, 0x57, 0x94, 0xf7, 0x2a, 0x6c, 0x5a, 0x35, 0x1d,
0x7c, 0x0f, 0x9c, 0x8f, 0x9d, 0xa4, 0x87, 0xce, 0xab, 0xf0, 0xb7, 0x47, 0x02, 0xab, 0x75, 0x2a,
0xf0, 0x8a, 0xda, 0x2f, 0x17, 0xc5, 0xf3, 0xcf, 0x17, 0x2b, 0x4b, 0xa9, 0x60, 0x0b, 0x9c, 0x57,
0xb1, 0x5d, 0xc8, 0x62, 0xd3, 0x2d, 0xb3, 0xa3, 0x13, 0xad, 0x62, 0x53, 0x16, 0x13, 0x1d, 0x91,
0xb6, 0x28, 0x17, 0x63, 0x8b, 0xc5, 0xca, 0x52, 0x2a, 0xf8, 0x53, 0x70, 0x49, 0x17, 0x17, 0x47,
0x17, 0xb7, 0xce, 0x6d, 0x2f, 0xec, 0xbe, 0x51, 0x35, 0x3a, 0xa5, 0x63, 0x9a, 0x58, 0xd6, 0xda,
0x48, 0xe0, 0x7c, 0x67, 0x2a, 0xf0, 0xa2, 0x72, 0xa5, 0xd7, 0xa6, 0x95, 0x13, 0xf0, 0x77, 0x06,
0x58, 0x63, 0x84, 0xbb, 0x4e, 0x68, 0xd3, 0x30, 0x21, 0xec, 0x99, 0xe3, 0xdb, 0x1c, 0x5d, 0xda,
0x32, 0xb6, 0x2f, 0x34, 0xbb, 0x23, 0x81, 0x57, 0x34, 0x79, 0x3f, 0xe3, 0x0e, 0x52, 0x81, 0xdf,
0x52, 0x96, 0x6a, 0x78, 0xf6, 0x3a, 0x3d, 0xd2, 0x71, 0xfa, 0x7e, 0x72, 0xd7, 0x7c, 0xf7, 0x5b,
0xb7, 0x6f, 0x9b, 0xaf, 0x04, 0x3e, 0x47, 0xc3, 0x64, 0x74, 0xda, 0xb8, 0x32, 0x4d, 0xfe, 0xea,
0xb4, 0x71, 0x5e, 0xea, 0xac, 0xba, 0x13, 0xf8, 0x77, 0x03, 0xc0, 0x0e, 0xb7, 0x8f, 0x9c, 0xc4,
0xed, 0x11, 0x66, 0x93, 0xd0, 0x69, 0xfb, 0xc4, 0x43, 0x73, 0x5b, 0xc6, 0xf6, 0x5c, 0xf3, 0x37,
0xc6, 0x99, 0xc0, 0xab, 0xfb, 0x07, 0x4f, 0x34, 0xfb, 0x91, 0x26, 0x47, 0x02, 0xaf, 0x76, 0x78,
0x15, 0x4b, 0x05, 0x7e, 0x5b, 0xbf, 0xf3, 0x1a, 0x51, 0x8f, 0x36, 0x61, 0x7d, 0x55, 0x7b, 0xeb,
0x53, 0x85, 0x32, 0x4e, 0xa9, 0x38, 0x19, 0x36, 0x26, 0xdc, 0x5a, 0x13, 0x4e, 0xe1, 0xdf, 0xaa,
0xc1, 0x7b, 0xc4, 0x77, 0x06, 0x36, 0x47, 0xf3, 0x2a, 0xa7, 0xbf, 0x96, 0xc1, 0xaf, 0x14, 0x56,
0xf6, 0x24, 0x79, 0x20, 0xf3, 0x5c, 0x98, 0xd1, 0x50, 0x2a, 0xf0, 0x37, 0xaa, 0xa1, 0x6b, 0xbc,
0x1e, 0xf9, 0x9d, 0x4a, 0x96, 0xa7, 0x89, 0x5f, 0x9d, 0x36, 0x66, 0xef, 0xdc, 0x3e, 0x19, 0x36,
0xea, 0x5e, 0xad, 0xba, 0x4f, 0xf8, 0x33, 0xb0, 0x48, 0xbb, 0x61, 0xc4, 0x88, 0x1d, 0x13, 0x16,
0x70, 0x04, 0x54, 0xbe, 0xdf, 0x1f, 0x09, 0xbc, 0xa0, 0xf1, 0x96, 0x84, 0x53, 0x81, 0xaf, 0xea,
0x39, 0x30, 0xc6, 0x8a, 0xf2, 0x5d, 0xad, 0x83, 0x56, 0x79, 0x2b, 0xfc, 0x85, 0x01, 0x96, 0x9d,
0x7e, 0x12, 0xd9, 0x61, 0xc4, 0x02, 0xc7, 0xa7, 0xcf, 0x09, 0x5a, 0x50, 0x4e, 0x9e, 0x8e, 0x04,
0x5e, 0x92, 0xcc, 0xc7, 0x39, 0x51, 0x64, 0xa0, 0x82, 0x7e, 0xd9, 0x9b, 0x83, 0x93, 0xaa, 0xfc,
0xb5, 0x59, 0x55, 0xbb, 0xf0, 0x29, 0x58, 0x0a, 0x68, 0x68, 0x7b, 0x94, 0x1f, 0xda, 0x1d, 0x46,
0x08, 0x5a, 0xdc, 0x32, 0xb6, 0x17, 0x76, 0x17, 0xf3, 0xb6, 0x3a, 0xa0, 0xcf, 0x49, 0x73, 0x3b,
0xeb, 0xa0, 0x85, 0x80, 0x86, 0x7b, 0x94, 0x1f, 0xee, 0x33, 0x22, 0x23, 0x5a, 0x53, 0x11, 0x95,
0x30, 0xd3, 0x2a, 0x2b, 0x60, 0x17, 0x80, 0xf1, 0x39, 0x8a, 0x96, 0x94, 0x61, 0x9c, 0x1b, 0xfe,
0x51, 0xc1, 0x54, 0xbb, 0xf5, 0xcd, 0xcc, 0x57, 0x69, 0x6b, 0x2a, 0xf0, 0xaa, 0x72, 0x35, 0x86,
0x4c, 0xab, 0xc4, 0xc3, 0xf7, 0xc1, 0x25, 0x37, 0x8a, 0x29, 0x61, 0x1c, 0x2d, 0xab, 0xc2, 0xfa,
0x9a, 0x6c, 0xf7, 0x0c, 0x2a, 0x26, 0x75, 0xb6, 0xce, 0x4b, 0xc4, 0xca, 0x05, 0xf0, 0x1f, 0x06,
0xb8, 0x2a, 0x4f, 0x70, 0xc2, 0xec, 0xc0, 0x39, 0xb6, 0x63, 0x12, 0x7a, 0x34, 0xec, 0xda, 0x87,
0xb4, 0x8d, 0x56, 0x94, 0xb9, 0xdf, 0xcb, 0x3a, 0xbd, 0xdc, 0x52, 0x92, 0x87, 0xce, 0x71, 0x4b,
0x0b, 0x1e, 0xd0, 0xe6, 0x48, 0xe0, 0xcb, 0xf1, 0x24, 0x9c, 0x0a, 0x7c, 0x5d, 0x8f, 0xc7, 0x49,
0xae, 0x54, 0xa1, 0x53, 0xb7, 0x4e, 0x87, 0x4f, 0x86, 0x8d, 0x69, 0xfe, 0xad, 0x29, 0xda, 0xb6,
0x4c, 0x47, 0xcf, 0xe1, 0x3d, 0x99, 0x8e, 0xd5, 0x71, 0x3a, 0x32, 0xa8, 0x48, 0x47, 0xb6, 0x1e,
0xa7, 0x23, 0x03, 0xe0, 0x87, 0xe0, 0x82, 0xba, 0xcb, 0xa0, 0x35, 0x35, 0xb6, 0xd7, 0xf2, 0x37,
0x26, 0xfd, 0x3f, 0x92, 0x44, 0x13, 0xc9, 0x63, 0x4c, 0x69, 0x52, 0x81, 0x17, 0x94, 0x35, 0xb5,
0x32, 0x2d, 0x8d, 0xc2, 0x07, 0x60, 0x29, 0xeb, 0x1d, 0x8f, 0xf8, 0x24, 0x21, 0x08, 0xaa, 0xba,
0x7e, 0x53, 0x9d, 0xdc, 0x8a, 0xd8, 0x53, 0x78, 0x2a, 0x30, 0x2c, 0x75, 0x8f, 0x06, 0x4d, 0xab,
0xa2, 0x81, 0xc7, 0x00, 0xa9, 0x91, 0x1c, 0xb3, 0xa8, 0xcb, 0x08, 0xe7, 0xe5, 0xd9, 0x7c, 0x59,
0x3d, 0x9f, 0x3c, 0x56, 0xd7, 0xa5, 0xa6, 0x95, 0x49, 0xca, 0x13, 0xfa, 0x86, 0x72, 0x30, 0x95,
0x2d, 0x9e, 0x7d, 0xfa, 0x66, 0x78, 0x00, 0x96, 0xb3, 0xba, 0x88, 0x9d, 0x3e, 0x27, 0x36, 0x47,
0x57, 0x94, 0xbf, 0x9b, 0xf2, 0x39, 0x34, 0xd3, 0x92, 0xc4, 0x41, 0xf1, 0x1c, 0x65, 0xb0, 0xb0,
0x5e, 0x91, 0x42, 0x02, 0x96, 0x64, 0x95, 0xc9, 0xa4, 0xfa, 0xd4, 0x4d, 0x38, 0x5a, 0x57, 0x36,
0xbf, 0x23, 0x6d, 0x06, 0xce, 0xf1, 0xbd, 0x1c, 0x4f, 0x05, 0xc6, 0xba, 0xc1, 0x4a, 0x60, 0xa9,
0xd9, 0x6f, 0xde, 0xc9, 0x1d, 0xc8, 0xa1, 0x76, 0xf3, 0x8e, 0x55, 0xd9, 0x0d, 0x3d, 0x70, 0xc5,
0xa3, 0x5c, 0x0e, 0x61, 0x9b, 0xc7, 0x0e, 0xe3, 0xc4, 0x56, 0x47, 0x3b, 0xba, 0xaa, 0xde, 0xc4,
0xee, 0x48, 0x60, 0x98, 0xf1, 0x07, 0x8a, 0x56, 0x97, 0x86, 0x54, 0x60, 0xa4, 0x8f, 0xc6, 0x09,
0xca, 0xb4, 0xa6, 0xe8, 0xcb, 0x5e, 0x12, 0x12, 0xc4, 0x36, 0x0d, 0x3d, 0x72, 0x4c, 0x38, 0xba,
0x36, 0xe1, 0xe5, 0x31, 0x09, 0xe2, 0xfb, 0x9a, 0xad, 0x7b, 0x29, 0x51, 0x63, 0x2f, 0x25, 0x10,
0xee, 0x82, 0x8b, 0xea, 0x05, 0x78, 0x08, 0x29, 0xbb, 0x1b, 0x23, 0x81, 0x33, 0xa4, 0x38, 0xcc,
0xf5, 0xd2, 0xb4, 0x32, 0x1c, 0x26, 0xe0, 0xda, 0x11, 0x71, 0x0e, 0x6d, 0x59, 0xd5, 0x76, 0xd2,
0x63, 0x84, 0xf7, 0x22, 0xdf, 0xb3, 0x63, 0x37, 0x41, 0xd7, 0x55, 0xc2, 0xe5, 0x24, 0xbf, 0x22,
0x25, 0xdf, 0x73, 0x78, 0xef, 0x71, 0x2e, 0x68, 0xb9, 0x49, 0x2a, 0xf0, 0x86, 0x32, 0x39, 0x8d,
0x2c, 0x5e, 0xea, 0xd4, 0xad, 0xf0, 0x1e, 0x58, 0x08, 0x1c, 0x76, 0x48, 0x98, 0x1d, 0x3a, 0x01,
0x41, 0x1b, 0xea, 0xda, 0x64, 0xca, 0x71, 0xa6, 0xe1, 0x8f, 0x9d, 0x80, 0x14, 0xe3, 0x6c, 0x0c,
0x99, 0x56, 0x89, 0x87, 0x03, 0xb0, 0x21, 0x3f, 0x12, 0xec, 0xe8, 0x28, 0x24, 0x8c, 0xf7, 0x68,
0x6c, 0x77, 0x58, 0x14, 0xd8, 0xb1, 0xc3, 0x48, 0x98, 0xa0, 0x1b, 0x2a, 0x05, 0xef, 0x8d, 0x04,
0xbe, 0x26, 0x55, 0x8f, 0x72, 0xd1, 0x3e, 0x8b, 0x82, 0x96, 0x92, 0xa4, 0x02, 0xbf, 0x9e, 0x4f,
0xbc, 0x69, 0xbc, 0x69, 0x7d, 0xd9, 0x4e, 0xf8, 0x4b, 0x03, 0xac, 0x05, 0x91, 0x67, 0x27, 0x34,
0x20, 0xf6, 0x11, 0x0d, 0xbd, 0xe8, 0xc8, 0xe6, 0xe8, 0x35, 0x95, 0xb0, 0x9f, 0x9c, 0x09, 0xbc,
0x66, 0x39, 0x47, 0x0f, 0x23, 0xef, 0x31, 0x0d, 0xc8, 0x13, 0xc5, 0xca, 0xe3, 0x7a, 0x39, 0xa8,
0x20, 0xc5, 0xe5, 0xb2, 0x0a, 0xe7, 0x99, 0x3b, 0x19, 0x36, 0x26, 0xad, 0x58, 0x35, 0x1b, 0xf0,
0x85, 0x01, 0xd6, 0xb3, 0x36, 0x71, 0xfb, 0x4c, 0xc6, 0x66, 0x1f, 0x31, 0x9a, 0x10, 0x8e, 0x5e,
0x57, 0xc1, 0xfc, 0x40, 0x8e, 0x5e, 0x5d, 0xf0, 0x19, 0xff, 0x44, 0xd1, 0xa9, 0xc0, 0x5f, 0x2f,
0x75, 0x4d, 0x85, 0x2b, 0x35, 0xcf, 0x6e, 0xa9, 0x77, 0x8c, 0x5d, 0x6b, 0x9a, 0x25, 0x39, 0xc4,
0xf2, 0xda, 0xee, 0xc8, 0x2f, 0x12, 0xb4, 0x39, 0x1e, 0x62, 0x19, 0xb1, 0x2f, 0xf1, 0xa2, 0xf9,
0xcb, 0xa0, 0x69, 0x55, 0x34, 0xd0, 0x07, 0xab, 0xea, 0x4b, 0xd1, 0x96, 0xb3, 0xc0, 0xd6, 0xf3,
0x15, 0xab, 0xf9, 0x7a, 0x35, 0x9f, 0xaf, 0x4d, 0xc9, 0x8f, 0x87, 0xac, 0xba, 0xb6, 0xb7, 0x2b,
0x58, 0x91, 0xd9, 0x2a, 0x6c, 0x5a, 0x35, 0x1d, 0xfc, 0xd4, 0x00, 0x6b, 0xaa, 0x84, 0xd4, 0x87,
0xa6, 0xad, 0xbf, 0x34, 0xd1, 0x96, 0xf2, 0x77, 0x59, 0x7e, 0x22, 0xdc, 0x8b, 0xe2, 0x81, 0x25,
0xb9, 0x87, 0x8a, 0x6a, 0x3e, 0x90, 0xb7, 0x2e, 0xb7, 0x0a, 0xa6, 0x02, 0x6f, 0x17, 0x65, 0x54,
0xc2, 0x4b, 0x69, 0xe4, 0x89, 0x13, 0x7a, 0x0e, 0xf3, 0xcc, 0x57, 0xa7, 0x8d, 0xb9, 0x7c, 0x61,
0xd5, 0x0d, 0xc1, 0x3f, 0xc9, 0x70, 0x1c, 0x39, 0x40, 0x49, 0xc8, 0x69, 0x42, 0x9f, 0xc9, 0x8c,
0xa2, 0x37, 0x54, 0x3a, 0x8f, 0xe5, 0x15, 0xf0, 0x9e, 0xc3, 0xc9, 0x41, 0xce, 0xed, 0xab, 0x2b,
0xa0, 0x5b, 0x85, 0x52, 0x81, 0xd7, 0x75, 0x30, 0x55, 0x5c, 0x5e, 0x77, 0x26, 0xb4, 0x93, 0x90,
0xbc, 0xf1, 0xd5, 0x9c, 0x58, 0x35, 0x0d, 0x87, 0x7f, 0x34, 0xc0, 0x6a, 0x27, 0xf2, 0xfd, 0xe8,
0xc8, 0xfe, 0xa4, 0x1f, 0xba, 0xf2, 0x3a, 0xc2, 0x91, 0x39, 0x8e, 0xf2, 0xfb, 0x39, 0xf8, 0x21,
0xdf, 0xa3, 0x8c, 0xcb, 0x28, 0x3f, 0xa9, 0x42, 0x45, 0x94, 0x35, 0x5c, 0x45, 0x59, 0xd7, 0x4e,
0x42, 0x32, 0xca, 0x9a, 0x13, 0x6b, 0x45, 0x47, 0x54, 0xc0, 0xf0, 0x10, 0xcc, 0x33, 0xe2, 0x78,
0x76, 0x14, 0xfa, 0x03, 0xf4, 0x97, 0x7d, 0x15, 0xde, 0xc3, 0x33, 0x81, 0xe1, 0x1e, 0x89, 0x19,
0x71, 0x9d, 0x84, 0x78, 0x16, 0x71, 0xbc, 0x47, 0xa1, 0x3f, 0x18, 0x09, 0x6c, 0xdc, 0x2c, 0xbe,
0x8e, 0x59, 0xa4, 0x6e, 0x82, 0xef, 0x44, 0x01, 0x95, 0xb3, 0x3a, 0x19, 0xa8, 0xaf, 0xe3, 0x09,
0x14, 0x19, 0xd6, 0x1c, 0xcb, 0x0c, 0xc0, 0x9f, 0x83, 0xb5, 0xca, 0xf5, 0x50, 0xcd, 0xcf, 0xbf,
0x4a, 0xa7, 0x46, 0xf3, 0xa3, 0x33, 0x81, 0xd1, 0xd8, 0xe9, 0xc3, 0xf1, 0xcd, 0xaf, 0xe5, 0x26,
0xb9, 0xeb, 0xcd, 0xfa, 0x1d, 0xb1, 0xe5, 0x26, 0xa5, 0x08, 0x90, 0x61, 0x2d, 0x57, 0x49, 0xf8,
0x63, 0x70, 0x49, 0x9f, 0x97, 0x1c, 0x7d, 0xb6, 0xaf, 0x7a, 0xfd, 0x03, 0x39, 0x78, 0xc6, 0x8e,
0xf4, 0x3d, 0x88, 0x57, 0x1f, 0x2e, 0xdb, 0x52, 0x32, 0x9d, 0x35, 0x38, 0x32, 0xac, 0xdc, 0x5e,
0xf3, 0xbb, 0x9f, 0x7f, 0xb1, 0x39, 0x33, 0xfc, 0x62, 0x73, 0xe6, 0xdf, 0x67, 0x9b, 0x33, 0xbf,
0x7d, 0xb9, 0x39, 0xf3, 0x87, 0x97, 0x9b, 0xc6, 0xf0, 0xe5, 0xe6, 0xcc, 0x3f, 0x5f, 0x6e, 0xce,
0x3c, 0x7d, 0xeb, 0xff, 0xf8, 0x2f, 0x42, 0xb7, 0x6a, 0xfb, 0xa2, 0xfa, 0x4f, 0xe2, 0xdd, 0xff,
0x06, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xb3, 0xf1, 0x6d, 0xb1, 0x12, 0x00, 0x00,
}
func (m *FolderDeviceConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = m.DeviceID.ProtoSize()
n += 1 + l + sovFolderconfiguration(uint64(l))
l = m.IntroducedBy.ProtoSize()
n += 1 + l + sovFolderconfiguration(uint64(l))
return n
}
func (m *FolderConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.ID)
if l > 0 {
n += 1 + l + sovFolderconfiguration(uint64(l))
}
l = len(m.Label)
if l > 0 {
n += 1 + l + sovFolderconfiguration(uint64(l))
}
if m.FilesystemType != 0 {
n += 1 + sovFolderconfiguration(uint64(m.FilesystemType))
}
l = len(m.Path)
if l > 0 {
n += 1 + l + sovFolderconfiguration(uint64(l))
}
if m.Type != 0 {
n += 1 + sovFolderconfiguration(uint64(m.Type))
}
if len(m.Devices) > 0 {
for _, e := range m.Devices {
l = e.ProtoSize()
n += 1 + l + sovFolderconfiguration(uint64(l))
}
}
if m.RescanIntervalS != 0 {
n += 1 + sovFolderconfiguration(uint64(m.RescanIntervalS))
}
if m.FSWatcherEnabled {
n += 2
}
if m.FSWatcherDelayS != 0 {
n += 1 + sovFolderconfiguration(uint64(m.FSWatcherDelayS))
}
if m.IgnorePerms {
n += 2
}
if m.AutoNormalize {
n += 2
}
l = m.MinDiskFree.ProtoSize()
n += 1 + l + sovFolderconfiguration(uint64(l))
l = m.Versioning.ProtoSize()
n += 1 + l + sovFolderconfiguration(uint64(l))
if m.Copiers != 0 {
n += 1 + sovFolderconfiguration(uint64(m.Copiers))
}
if m.PullerMaxPendingKiB != 0 {
n += 1 + sovFolderconfiguration(uint64(m.PullerMaxPendingKiB))
}
if m.Hashers != 0 {
n += 2 + sovFolderconfiguration(uint64(m.Hashers))
}
if m.Order != 0 {
n += 2 + sovFolderconfiguration(uint64(m.Order))
}
if m.IgnoreDelete {
n += 3
}
if m.ScanProgressIntervalS != 0 {
n += 2 + sovFolderconfiguration(uint64(m.ScanProgressIntervalS))
}
if m.PullerPauseS != 0 {
n += 2 + sovFolderconfiguration(uint64(m.PullerPauseS))
}
if m.MaxConflicts != 0 {
n += 2 + sovFolderconfiguration(uint64(m.MaxConflicts))
}
if m.DisableSparseFiles {
n += 3
}
if m.DisableTempIndexes {
n += 3
}
if m.Paused {
n += 3
}
if m.WeakHashThresholdPct != 0 {
n += 2 + sovFolderconfiguration(uint64(m.WeakHashThresholdPct))
}
l = len(m.MarkerName)
if l > 0 {
n += 2 + l + sovFolderconfiguration(uint64(l))
}
if m.CopyOwnershipFromParent {
n += 3
}
if m.RawModTimeWindowS != 0 {
n += 2 + sovFolderconfiguration(uint64(m.RawModTimeWindowS))
}
if m.MaxConcurrentWrites != 0 {
n += 2 + sovFolderconfiguration(uint64(m.MaxConcurrentWrites))
}
if m.DisableFsync {
n += 3
}
if m.BlockPullOrder != 0 {
n += 2 + sovFolderconfiguration(uint64(m.BlockPullOrder))
}
if m.CopyRangeMethod != 0 {
n += 2 + sovFolderconfiguration(uint64(m.CopyRangeMethod))
}
if m.CaseSensitiveFS {
n += 3
}
if m.JunctionsAsDirs {
n += 3
}
if m.DeprecatedReadOnly {
n += 4
}
if m.DeprecatedMinDiskFreePct != 0 {
n += 11
}
if m.DeprecatedPullers != 0 {
n += 3 + sovFolderconfiguration(uint64(m.DeprecatedPullers))
}
return n
}
func sovFolderconfiguration(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozFolderconfiguration(x uint64) (n int) {
return sovFolderconfiguration(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
-8
View File
@@ -6,14 +6,6 @@
package config
type FolderType int
const (
FolderTypeSendReceive FolderType = iota // default is sendreceive
FolderTypeSendOnly
FolderTypeReceiveOnly
)
func (t FolderType) String() string {
switch t {
case FolderTypeSendReceive:
+69
View File
@@ -0,0 +1,69 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/foldertype.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type FolderType int32
const (
FolderTypeSendReceive FolderType = 0
FolderTypeSendOnly FolderType = 1
FolderTypeReceiveOnly FolderType = 2
)
var FolderType_name = map[int32]string{
0: "FOLDER_TYPE_SEND_RECEIVE",
1: "FOLDER_TYPE_SEND_ONLY",
2: "FOLDER_TYPE_RECEIVE_ONLY",
}
var FolderType_value = map[string]int32{
"FOLDER_TYPE_SEND_RECEIVE": 0,
"FOLDER_TYPE_SEND_ONLY": 1,
"FOLDER_TYPE_RECEIVE_ONLY": 2,
}
func (FolderType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_ea6ddb20c0633575, []int{0}
}
func init() {
proto.RegisterEnum("config.FolderType", FolderType_name, FolderType_value)
}
func init() { proto.RegisterFile("lib/config/foldertype.proto", fileDescriptor_ea6ddb20c0633575) }
var fileDescriptor_ea6ddb20c0633575 = []byte{
// 220 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xce, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x4f, 0xcb, 0xcf, 0x49, 0x49, 0x2d, 0x2a, 0xa9, 0x2c,
0x48, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0x48, 0x68, 0x6d, 0x64, 0xe4, 0xe2,
0x72, 0x03, 0x4b, 0x86, 0x54, 0x16, 0xa4, 0x0a, 0x99, 0x73, 0x49, 0xb8, 0xf9, 0xfb, 0xb8, 0xb8,
0x06, 0xc5, 0x87, 0x44, 0x06, 0xb8, 0xc6, 0x07, 0xbb, 0xfa, 0xb9, 0xc4, 0x07, 0xb9, 0x3a, 0xbb,
0x7a, 0x86, 0xb9, 0x0a, 0x30, 0x48, 0x49, 0x76, 0xcd, 0x55, 0x10, 0x45, 0xa8, 0x0e, 0x4e, 0xcd,
0x4b, 0x09, 0x4a, 0x4d, 0x4e, 0xcd, 0x2c, 0x4b, 0x15, 0x32, 0xe4, 0x12, 0xc5, 0xd0, 0xe8, 0xef,
0xe7, 0x13, 0x29, 0xc0, 0x28, 0x25, 0xd6, 0x35, 0x57, 0x41, 0x08, 0x55, 0x97, 0x7f, 0x5e, 0x4e,
0x25, 0xba, 0x5d, 0x50, 0x6b, 0x20, 0xba, 0x98, 0xd0, 0xed, 0x82, 0xda, 0x03, 0xd2, 0xe8, 0xe4,
0x7e, 0xe2, 0xa1, 0x1c, 0xc3, 0x85, 0x87, 0x72, 0x0c, 0x2f, 0x1e, 0xc9, 0x31, 0x4c, 0x78, 0x2c,
0xc7, 0xb0, 0xe0, 0xb1, 0x1c, 0xe3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x69,
0xa6, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x17, 0x57, 0xe6, 0x25, 0x97,
0x64, 0x64, 0xe6, 0xa5, 0x23, 0xb1, 0x10, 0xa1, 0x92, 0xc4, 0x06, 0x0e, 0x0b, 0x63, 0x40, 0x00,
0x00, 0x00, 0xff, 0xff, 0x7b, 0x44, 0x34, 0x9f, 0x2a, 0x01, 0x00, 0x00,
}
-16
View File
@@ -13,22 +13,6 @@ import (
"strings"
)
type GUIConfiguration struct {
Enabled bool `xml:"enabled,attr" json:"enabled" default:"true"`
RawAddress string `xml:"address" json:"address" default:"127.0.0.1:8384"`
RawUnixSocketPermissions string `xml:"unixSocketPermissions,omitempty" json:"unixSocketPermissions"`
User string `xml:"user,omitempty" json:"user"`
Password string `xml:"password,omitempty" json:"password"`
AuthMode AuthMode `xml:"authMode,omitempty" json:"authMode"`
RawUseTLS bool `xml:"tls,attr" json:"useTLS"`
APIKey string `xml:"apikey,omitempty" json:"apiKey"`
InsecureAdminAccess bool `xml:"insecureAdminAccess,omitempty" json:"insecureAdminAccess"`
Theme string `xml:"theme" json:"theme" default:"default"`
Debugging bool `xml:"debugging,attr" json:"debugging"`
InsecureSkipHostCheck bool `xml:"insecureSkipHostcheck,omitempty" json:"insecureSkipHostcheck"`
InsecureAllowFrameLoading bool `xml:"insecureAllowFrameLoading,omitempty" json:"insecureAllowFrameLoading"`
}
func (c GUIConfiguration) IsAuthEnabled() bool {
return c.AuthMode == AuthModeLDAP || (len(c.User) > 0 && len(c.Password) > 0)
}
+187
View File
@@ -0,0 +1,187 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/guiconfiguration.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type GUIConfiguration struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled" xml:"enabled,attr" default:"true"`
RawAddress string `protobuf:"bytes,2,opt,name=address,proto3" json:"address" xml:"address" default:"127.0.0.1:8384"`
RawUnixSocketPermissions string `protobuf:"bytes,3,opt,name=unix_socket_permissions,json=unixSocketPermissions,proto3" json:"unixSocketPermissions" xml:"unixSocketPermissions,omitempty"`
User string `protobuf:"bytes,4,opt,name=user,proto3" json:"user" xml:"user,omitempty"`
Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password" xml:"password,omitempty"`
AuthMode AuthMode `protobuf:"varint,6,opt,name=auth_mode,json=authMode,proto3,enum=config.AuthMode" json:"authMode" xml:"authMode,omitempty"`
RawUseTLS bool `protobuf:"varint,7,opt,name=use_tls,json=useTls,proto3" json:"useTLS" xml:"tls,attr"`
APIKey string `protobuf:"bytes,8,opt,name=api_key,json=apiKey,proto3" json:"apiKey" xml:"apikey,omitempty"`
InsecureAdminAccess bool `protobuf:"varint,9,opt,name=insecure_admin_access,json=insecureAdminAccess,proto3" json:"insecureAdminAccess" xml:"insecureAdminAccess,omitempty"`
Theme string `protobuf:"bytes,10,opt,name=theme,proto3" json:"theme" xml:"theme" default:"default"`
Debugging bool `protobuf:"varint,11,opt,name=debugging,proto3" json:"debugging" xml:"debugging,attr"`
InsecureSkipHostCheck bool `protobuf:"varint,12,opt,name=insecure_skip_host_check,json=insecureSkipHostCheck,proto3" json:"insecureSkipHostcheck" xml:"insecureSkipHostcheck,omitempty"`
InsecureAllowFrameLoading bool `protobuf:"varint,13,opt,name=insecure_allow_frame_loading,json=insecureAllowFrameLoading,proto3" json:"insecureAllowFrameLoading" xml:"insecureAllowFrameLoading,omitempty"`
}
func (m *GUIConfiguration) Reset() { *m = GUIConfiguration{} }
func (m *GUIConfiguration) String() string { return proto.CompactTextString(m) }
func (*GUIConfiguration) ProtoMessage() {}
func (*GUIConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_2a9586d611855d64, []int{0}
}
func (m *GUIConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GUIConfiguration.Unmarshal(m, b)
}
func (m *GUIConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GUIConfiguration.Marshal(b, m, deterministic)
}
func (m *GUIConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_GUIConfiguration.Merge(m, src)
}
func (m *GUIConfiguration) XXX_Size() int {
return xxx_messageInfo_GUIConfiguration.Size(m)
}
func (m *GUIConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_GUIConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_GUIConfiguration proto.InternalMessageInfo
func init() {
proto.RegisterType((*GUIConfiguration)(nil), "config.GUIConfiguration")
}
func init() { proto.RegisterFile("lib/config/guiconfiguration.proto", fileDescriptor_2a9586d611855d64) }
var fileDescriptor_2a9586d611855d64 = []byte{
// 834 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0x16, 0x5b, 0x47, 0xb2, 0xb6, 0xae, 0x60, 0xb0, 0x4d, 0xcb, 0x04, 0x8d, 0x56, 0x51, 0xd8,
0xc2, 0x01, 0x02, 0x39, 0x71, 0x5a, 0x24, 0xf0, 0xa1, 0x80, 0x1c, 0x20, 0x3f, 0xb0, 0x0b, 0x04,
0x74, 0x7d, 0xc9, 0x85, 0x58, 0x91, 0x6b, 0x69, 0x21, 0xfe, 0x95, 0xbb, 0x84, 0xa4, 0x43, 0xfb,
0x0c, 0x85, 0x7a, 0x2e, 0xd0, 0x67, 0xe8, 0xa5, 0xaf, 0xd0, 0x9b, 0x74, 0x2a, 0x72, 0x5a, 0x20,
0xd2, 0xa5, 0xe0, 0x91, 0xc7, 0x9c, 0x8a, 0x5d, 0xfe, 0x48, 0x94, 0x95, 0x26, 0xb7, 0x9d, 0x6f,
0xbe, 0x99, 0x6f, 0x66, 0x38, 0x03, 0x82, 0xdb, 0x0e, 0xe9, 0x1d, 0x5a, 0xbe, 0x77, 0x49, 0xfa,
0x87, 0xfd, 0x88, 0xa4, 0xaf, 0x28, 0x44, 0x8c, 0xf8, 0x5e, 0x27, 0x08, 0x7d, 0xe6, 0xab, 0xd5,
0x14, 0xbc, 0x79, 0x63, 0x8d, 0x8a, 0x22, 0x36, 0x70, 0x7d, 0x1b, 0xa7, 0x94, 0x9b, 0x75, 0x3c,
0x66, 0xe9, 0xb3, 0xfd, 0x7a, 0x0f, 0xec, 0x3f, 0xbb, 0x78, 0xf1, 0x64, 0x3d, 0x91, 0xda, 0x03,
0x35, 0xec, 0xa1, 0x9e, 0x83, 0x6d, 0x4d, 0x69, 0x29, 0x07, 0xbb, 0x27, 0xcf, 0x63, 0x0e, 0x73,
0x28, 0xe1, 0xf0, 0xf6, 0xd8, 0x75, 0x8e, 0xdb, 0x99, 0x7d, 0x0f, 0x31, 0x16, 0xb6, 0x5b, 0x36,
0xbe, 0x44, 0x91, 0xc3, 0x8e, 0xdb, 0x2c, 0x8c, 0x70, 0x3b, 0x9e, 0xe9, 0x7b, 0xeb, 0xfe, 0xb7,
0x33, 0x7d, 0x47, 0x38, 0x8c, 0x3c, 0x8b, 0xfa, 0x33, 0xa8, 0x21, 0xdb, 0x0e, 0x31, 0xa5, 0xda,
0x47, 0x2d, 0xe5, 0xa0, 0x7e, 0x62, 0x2d, 0x38, 0x04, 0x06, 0x1a, 0x75, 0x53, 0x54, 0x28, 0x66,
0x84, 0x84, 0xc3, 0x6f, 0xa4, 0x62, 0x66, 0xaf, 0x89, 0x3d, 0x38, 0x7a, 0xd4, 0xb9, 0xdf, 0xb9,
0xdf, 0x79, 0x70, 0xfc, 0xf8, 0xe1, 0xe3, 0x6f, 0xdb, 0x6f, 0x67, 0x7a, 0xa3, 0x0c, 0x4d, 0xe7,
0xfa, 0x5a, 0x52, 0x23, 0x4f, 0xa9, 0xfe, 0xa3, 0x80, 0x2f, 0x23, 0x8f, 0x8c, 0x4d, 0xea, 0x5b,
0x43, 0xcc, 0xcc, 0x00, 0x87, 0x2e, 0xa1, 0x94, 0xf8, 0x1e, 0xd5, 0x3e, 0x96, 0xf5, 0xfc, 0xae,
0x2c, 0x38, 0xd4, 0x0c, 0x34, 0xba, 0xf0, 0xc8, 0xf8, 0x5c, 0xb2, 0x5e, 0xae, 0x48, 0x31, 0x87,
0xd7, 0xa3, 0x6d, 0x8e, 0x84, 0xc3, 0xaf, 0x65, 0xb1, 0x5b, 0xbd, 0xf7, 0x7c, 0x97, 0x30, 0xec,
0x06, 0x6c, 0x22, 0x46, 0x04, 0xdf, 0xc3, 0x99, 0xce, 0xf5, 0x77, 0x16, 0x60, 0x6c, 0x97, 0x57,
0x9f, 0x82, 0x9d, 0x88, 0xe2, 0x50, 0xdb, 0x91, 0x4d, 0x1c, 0xc5, 0x1c, 0x4a, 0x3b, 0xe1, 0xf0,
0xf3, 0xb4, 0x2c, 0x8a, 0xc3, 0x72, 0x15, 0x8d, 0x32, 0x64, 0x48, 0xbe, 0xfa, 0x0a, 0xec, 0x06,
0x88, 0xd2, 0x91, 0x1f, 0xda, 0xda, 0x35, 0x99, 0xeb, 0xfb, 0x98, 0xc3, 0x02, 0x4b, 0x38, 0xd4,
0x64, 0xbe, 0x1c, 0x28, 0xe7, 0x54, 0xaf, 0xc2, 0x46, 0x11, 0xab, 0xba, 0xa0, 0x2e, 0x36, 0xd2,
0x14, 0x2b, 0xa9, 0x55, 0x5b, 0xca, 0x41, 0xe3, 0x68, 0xbf, 0x93, 0xae, 0x6a, 0xa7, 0x1b, 0xb1,
0xc1, 0x0f, 0xbe, 0x8d, 0x53, 0x39, 0x94, 0x59, 0x85, 0x5c, 0x0e, 0x6c, 0xc8, 0x5d, 0x85, 0x8d,
0x22, 0x56, 0xc5, 0xa0, 0x16, 0x51, 0x6c, 0x32, 0x87, 0x6a, 0x35, 0xb9, 0xce, 0x67, 0x0b, 0x0e,
0xeb, 0x62, 0xb0, 0x14, 0xff, 0x78, 0x76, 0x1e, 0x73, 0x58, 0x8d, 0xe4, 0x2b, 0xe1, 0xb0, 0x21,
0x55, 0x98, 0x43, 0xd3, 0xb5, 0x8e, 0x67, 0xfa, 0x6e, 0x6e, 0x24, 0x33, 0x3d, 0xe3, 0x4d, 0xe7,
0xfa, 0x2a, 0xdc, 0x90, 0xa0, 0x43, 0x85, 0x0c, 0x0a, 0x88, 0x39, 0xc4, 0x13, 0x6d, 0x57, 0x0e,
0x4c, 0xc8, 0x54, 0xbb, 0x2f, 0x5f, 0x9c, 0xe2, 0x89, 0xd0, 0x40, 0x01, 0x39, 0xc5, 0x93, 0x84,
0xc3, 0x2f, 0xd2, 0x4e, 0x02, 0x32, 0xc4, 0x93, 0x72, 0x1f, 0xfb, 0x9b, 0xe0, 0x74, 0xae, 0x67,
0x19, 0x8c, 0x2c, 0x5e, 0xfd, 0x4d, 0x01, 0xd7, 0x89, 0x47, 0xb1, 0x15, 0x85, 0xd8, 0x44, 0xb6,
0x4b, 0x3c, 0x13, 0x59, 0x96, 0xb8, 0xa3, 0xba, 0x6c, 0xce, 0x8c, 0x39, 0xfc, 0x2c, 0x27, 0x74,
0x85, 0xbf, 0x2b, 0xdd, 0x09, 0x87, 0x77, 0xa4, 0xf0, 0x16, 0x5f, 0xb9, 0x8a, 0x5b, 0xff, 0xcb,
0x30, 0xb6, 0x25, 0x57, 0x4f, 0xc1, 0x35, 0x36, 0xc0, 0x2e, 0xd6, 0x80, 0x6c, 0xfd, 0xbb, 0x98,
0xc3, 0x14, 0x48, 0x38, 0xbc, 0x95, 0xce, 0x54, 0x58, 0x6b, 0xa7, 0x9b, 0x3d, 0xc4, 0xcd, 0xd6,
0xb2, 0xb7, 0x91, 0x86, 0xa8, 0x17, 0xa0, 0x6e, 0xe3, 0x5e, 0xd4, 0xef, 0x13, 0xaf, 0xaf, 0x7d,
0x22, 0xbb, 0x7a, 0x14, 0x73, 0xb8, 0x02, 0x8b, 0x6d, 0x2e, 0x90, 0xe2, 0x73, 0x35, 0xca, 0x90,
0xb1, 0x0a, 0x52, 0xff, 0x52, 0x80, 0x56, 0x4c, 0x8e, 0x0e, 0x49, 0x60, 0x0e, 0x7c, 0xca, 0x4c,
0x6b, 0x80, 0xad, 0xa1, 0xb6, 0x27, 0x65, 0x7e, 0x11, 0x77, 0x9d, 0x73, 0xce, 0x87, 0x24, 0x78,
0xee, 0x53, 0x26, 0x09, 0xc5, 0x5d, 0x6f, 0xf5, 0x6e, 0xdc, 0xf5, 0x7b, 0x38, 0xc9, 0x4c, 0xdf,
0x2e, 0x62, 0x5c, 0x81, 0x9f, 0x08, 0x58, 0xfd, 0x53, 0x01, 0x5f, 0xad, 0xbe, 0xb9, 0xe3, 0xf8,
0x23, 0xf3, 0x32, 0x44, 0x2e, 0x36, 0x1d, 0x1f, 0xd9, 0x62, 0x48, 0x9f, 0xca, 0xea, 0x7f, 0x8a,
0x39, 0xbc, 0x51, 0x7c, 0x1d, 0x41, 0x7b, 0x2a, 0x58, 0x67, 0x29, 0x29, 0xe1, 0xf0, 0x6e, 0x79,
0x01, 0x36, 0x19, 0xe5, 0x2e, 0xee, 0x7c, 0x00, 0xcf, 0x78, 0xb7, 0xdc, 0xc9, 0xb3, 0xbf, 0xdf,
0x34, 0x2b, 0xf3, 0x37, 0xcd, 0xca, 0xbf, 0x8b, 0x66, 0xe5, 0xd7, 0x65, 0xb3, 0xf2, 0xc7, 0xb2,
0xa9, 0xcc, 0x97, 0xcd, 0xca, 0xeb, 0x65, 0xb3, 0xf2, 0xea, 0x6e, 0x9f, 0xb0, 0x41, 0xd4, 0xeb,
0x58, 0xbe, 0x7b, 0x48, 0x27, 0x9e, 0xc5, 0x06, 0xc4, 0xeb, 0xaf, 0xbd, 0x56, 0x7f, 0xaf, 0x5e,
0x55, 0xfe, 0xaa, 0x1e, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0xfa, 0x2b, 0x9a, 0x81, 0xfd, 0x06,
0x00, 0x00,
}
func (m *GUIConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Enabled {
n += 2
}
l = len(m.RawAddress)
if l > 0 {
n += 1 + l + sovGuiconfiguration(uint64(l))
}
l = len(m.RawUnixSocketPermissions)
if l > 0 {
n += 1 + l + sovGuiconfiguration(uint64(l))
}
l = len(m.User)
if l > 0 {
n += 1 + l + sovGuiconfiguration(uint64(l))
}
l = len(m.Password)
if l > 0 {
n += 1 + l + sovGuiconfiguration(uint64(l))
}
if m.AuthMode != 0 {
n += 1 + sovGuiconfiguration(uint64(m.AuthMode))
}
if m.RawUseTLS {
n += 2
}
l = len(m.APIKey)
if l > 0 {
n += 1 + l + sovGuiconfiguration(uint64(l))
}
if m.InsecureAdminAccess {
n += 2
}
l = len(m.Theme)
if l > 0 {
n += 1 + l + sovGuiconfiguration(uint64(l))
}
if m.Debugging {
n += 2
}
if m.InsecureSkipHostCheck {
n += 2
}
if m.InsecureAllowFrameLoading {
n += 2
}
return n
}
func sovGuiconfiguration(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozGuiconfiguration(x uint64) (n int) {
return sovGuiconfiguration(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
-9
View File
@@ -6,15 +6,6 @@
package config
type LDAPConfiguration struct {
Address string `xml:"address,omitempty" json:"address"`
BindDN string `xml:"bindDN,omitempty" json:"bindDN"`
Transport LDAPTransport `xml:"transport,omitempty" json:"transport"`
InsecureSkipVerify bool `xml:"insecureSkipVerify,omitempty" json:"insecureSkipVerify" default:"false"`
SearchBaseDN string `xml:"searchBaseDN,omitempty" json:"searchBaseDN"`
SearchFilter string `xml:"searchFilter,omitempty" json:"searchFilter"`
}
func (c LDAPConfiguration) Copy() LDAPConfiguration {
return c
}
+138
View File
@@ -0,0 +1,138 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/ldapconfiguration.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type LDAPConfiguration struct {
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address" xml:"address,omitempty"`
BindDN string `protobuf:"bytes,2,opt,name=bind_dn,json=bindDn,proto3" json:"bindDN" xml:"bindDN,omitempty"`
Transport LDAPTransport `protobuf:"varint,3,opt,name=transport,proto3,enum=config.LDAPTransport" json:"transport" xml:"transport,omitempty"`
InsecureSkipVerify bool `protobuf:"varint,4,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecureSkipVerify" xml:"insecureSkipVerify,omitempty" default:"false"`
SearchBaseDN string `protobuf:"bytes,5,opt,name=search_base_dn,json=searchBaseDn,proto3" json:"searchBaseDN" xml:"searchBaseDN,omitempty"`
SearchFilter string `protobuf:"bytes,6,opt,name=search_filter,json=searchFilter,proto3" json:"searchFilter" xml:"searchFilter,omitempty"`
}
func (m *LDAPConfiguration) Reset() { *m = LDAPConfiguration{} }
func (m *LDAPConfiguration) String() string { return proto.CompactTextString(m) }
func (*LDAPConfiguration) ProtoMessage() {}
func (*LDAPConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_9681ad7e41c73956, []int{0}
}
func (m *LDAPConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LDAPConfiguration.Unmarshal(m, b)
}
func (m *LDAPConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LDAPConfiguration.Marshal(b, m, deterministic)
}
func (m *LDAPConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_LDAPConfiguration.Merge(m, src)
}
func (m *LDAPConfiguration) XXX_Size() int {
return xxx_messageInfo_LDAPConfiguration.Size(m)
}
func (m *LDAPConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_LDAPConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_LDAPConfiguration proto.InternalMessageInfo
func init() {
proto.RegisterType((*LDAPConfiguration)(nil), "config.LDAPConfiguration")
}
func init() {
proto.RegisterFile("lib/config/ldapconfiguration.proto", fileDescriptor_9681ad7e41c73956)
}
var fileDescriptor_9681ad7e41c73956 = []byte{
// 498 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0x4d, 0x6f, 0xd3, 0x40,
0x10, 0xb5, 0x81, 0xba, 0xc4, 0x2a, 0x15, 0x35, 0x50, 0x42, 0x55, 0x79, 0x23, 0xcb, 0x87, 0x20,
0xa1, 0x44, 0x2a, 0xb7, 0x72, 0xaa, 0xa9, 0x40, 0x42, 0x08, 0x21, 0x17, 0x7a, 0xe0, 0x12, 0xf9,
0x63, 0x9d, 0xac, 0xea, 0xec, 0x5a, 0xbb, 0xeb, 0xaa, 0xe1, 0x57, 0x40, 0x7f, 0x41, 0x6f, 0xfc,
0x15, 0x6e, 0xc9, 0x91, 0xd3, 0x4a, 0x4d, 0x2e, 0xc8, 0x47, 0x1f, 0x39, 0xa1, 0xac, 0x9d, 0xc6,
0x4e, 0xa3, 0xde, 0x66, 0xde, 0x9b, 0x79, 0xf3, 0x76, 0x47, 0xa3, 0x5b, 0x31, 0xf2, 0xbb, 0x01,
0xc1, 0x11, 0xea, 0x77, 0xe3, 0xd0, 0x4b, 0x8a, 0x30, 0xa5, 0x1e, 0x47, 0x04, 0x77, 0x12, 0x4a,
0x38, 0x31, 0xb4, 0x02, 0xdc, 0x33, 0x57, 0x6a, 0x39, 0xf5, 0x30, 0x4b, 0x08, 0xe5, 0x45, 0xdd,
0x5e, 0x03, 0x5e, 0x94, 0xa1, 0xf5, 0x53, 0xd3, 0x77, 0x3e, 0x1e, 0x1f, 0x7d, 0x7e, 0x5b, 0x95,
0x33, 0xbe, 0xea, 0x9b, 0x5e, 0x18, 0x52, 0xc8, 0x58, 0x53, 0x6d, 0xa9, 0xed, 0x86, 0xf3, 0x26,
0x13, 0x60, 0x01, 0xe5, 0x02, 0x3c, 0xbf, 0x18, 0xc6, 0x87, 0x56, 0x99, 0xbf, 0x22, 0x43, 0xc4,
0xe1, 0x30, 0xe1, 0x23, 0x2b, 0x1b, 0xdb, 0x3b, 0xb7, 0x50, 0x77, 0xd1, 0x68, 0x10, 0x7d, 0xd3,
0x47, 0x38, 0xec, 0x85, 0xb8, 0x79, 0x4f, 0xca, 0x9e, 0x4e, 0x05, 0xd0, 0x1c, 0x84, 0xc3, 0xe3,
0x4f, 0x99, 0x00, 0x9a, 0x2f, 0xa3, 0x5c, 0x80, 0x5d, 0xa9, 0x5f, 0xa4, 0x75, 0xf9, 0xc7, 0xab,
0x60, 0x3e, 0xb6, 0xcb, 0xbe, 0xcb, 0x89, 0x5d, 0x6a, 0xb9, 0x05, 0x82, 0x8d, 0x73, 0xbd, 0x71,
0xf3, 0xf6, 0xe6, 0xfd, 0x96, 0xda, 0xde, 0x3e, 0x78, 0xd6, 0x29, 0x3e, 0xa6, 0x33, 0x7f, 0xf5,
0x97, 0x05, 0xe9, 0x1c, 0x65, 0x02, 0x2c, 0x6b, 0x73, 0x01, 0x5e, 0x48, 0x0b, 0x37, 0x48, 0xdd,
0xc5, 0x93, 0x35, 0xb8, 0xbb, 0x6c, 0x37, 0x7e, 0xa9, 0xfa, 0x53, 0x84, 0x19, 0x0c, 0x52, 0x0a,
0x7b, 0xec, 0x0c, 0x25, 0xbd, 0x73, 0x48, 0x51, 0x34, 0x6a, 0x3e, 0x68, 0xa9, 0xed, 0x87, 0x4e,
0x9a, 0x09, 0x60, 0x2c, 0xf8, 0x93, 0x33, 0x94, 0x9c, 0x4a, 0x36, 0x17, 0xe0, 0x40, 0x4e, 0xbd,
0x4d, 0x55, 0xc6, 0xb7, 0x42, 0x18, 0x79, 0x69, 0xcc, 0x0f, 0xad, 0xc8, 0x8b, 0x19, 0x9c, 0xdb,
0xd9, 0xbf, 0xab, 0xe1, 0xdf, 0xd8, 0xde, 0x90, 0x95, 0xee, 0x9a, 0x91, 0xc6, 0x95, 0xaa, 0x6f,
0x33, 0xe8, 0xd1, 0x60, 0xd0, 0xf3, 0x3d, 0x06, 0xe7, 0xab, 0xd9, 0x90, 0xab, 0xf9, 0x3e, 0x15,
0x60, 0xeb, 0x44, 0x32, 0x8e, 0xc7, 0xa0, 0x5c, 0xd0, 0x16, 0xab, 0xe4, 0xb9, 0x00, 0xfb, 0xd2,
0x6d, 0x15, 0xac, 0x7f, 0xd3, 0xee, 0x7a, 0x2a, 0x1f, 0xdb, 0x35, 0xa5, 0xcb, 0x89, 0x5d, 0x9b,
0xe4, 0x56, 0x59, 0x6c, 0x10, 0xfd, 0x51, 0xe9, 0x30, 0x42, 0x31, 0x87, 0xb4, 0xa9, 0x49, 0x83,
0x1f, 0x96, 0x86, 0xde, 0x49, 0x7c, 0xc5, 0x50, 0x01, 0xae, 0x35, 0xb4, 0x4a, 0xb9, 0x35, 0x1d,
0xe7, 0xfd, 0xef, 0x6b, 0x53, 0x99, 0x5c, 0x9b, 0xca, 0xdf, 0xa9, 0xa9, 0xfc, 0x98, 0x99, 0xca,
0xd5, 0xcc, 0x54, 0x27, 0x33, 0x53, 0xf9, 0x33, 0x33, 0x95, 0x6f, 0x2f, 0xfb, 0x88, 0x0f, 0x52,
0xbf, 0x13, 0x90, 0x61, 0x97, 0x8d, 0x70, 0xc0, 0x07, 0x08, 0xf7, 0x2b, 0xd1, 0xf2, 0xf6, 0x7c,
0x4d, 0xde, 0xd8, 0xeb, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xca, 0xa1, 0xc5, 0x0d, 0xbc, 0x03,
0x00, 0x00,
}
func (m *LDAPConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Address)
if l > 0 {
n += 1 + l + sovLdapconfiguration(uint64(l))
}
l = len(m.BindDN)
if l > 0 {
n += 1 + l + sovLdapconfiguration(uint64(l))
}
if m.Transport != 0 {
n += 1 + sovLdapconfiguration(uint64(m.Transport))
}
if m.InsecureSkipVerify {
n += 2
}
l = len(m.SearchBaseDN)
if l > 0 {
n += 1 + l + sovLdapconfiguration(uint64(l))
}
l = len(m.SearchFilter)
if l > 0 {
n += 1 + l + sovLdapconfiguration(uint64(l))
}
return n
}
func sovLdapconfiguration(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozLdapconfiguration(x uint64) (n int) {
return sovLdapconfiguration(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
-8
View File
@@ -6,14 +6,6 @@
package config
type LDAPTransport int
const (
LDAPTransportPlain LDAPTransport = iota // default is plain
LDAPTransportTLS
LDAPTransportStartTLS
)
func (t LDAPTransport) String() string {
switch t {
case LDAPTransportPlain:
+74
View File
@@ -0,0 +1,74 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/ldaptransport.proto
package config
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type LDAPTransport int32
const (
LDAPTransportPlain LDAPTransport = 0
LDAPTransportTLS LDAPTransport = 2
LDAPTransportStartTLS LDAPTransport = 3
)
var LDAPTransport_name = map[int32]string{
0: "LDAP_TRANSPORT_PLAIN",
2: "LDAP_TRANSPORT_TLS",
3: "LDAP_TRANSPORT_START_TLS",
}
var LDAPTransport_value = map[string]int32{
"LDAP_TRANSPORT_PLAIN": 0,
"LDAP_TRANSPORT_TLS": 2,
"LDAP_TRANSPORT_START_TLS": 3,
}
func (LDAPTransport) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_79795fc8505b82bf, []int{0}
}
func init() {
proto.RegisterEnum("config.LDAPTransport", LDAPTransport_name, LDAPTransport_value)
}
func init() { proto.RegisterFile("lib/config/ldaptransport.proto", fileDescriptor_79795fc8505b82bf) }
var fileDescriptor_79795fc8505b82bf = []byte{
// 269 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcb, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0xcf, 0x49, 0x49, 0x2c, 0x28, 0x29, 0x4a, 0xcc, 0x2b,
0x2e, 0xc8, 0x2f, 0x2a, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0xc8, 0x49, 0x29,
0x17, 0xa5, 0x16, 0xe4, 0x17, 0xeb, 0x83, 0x05, 0x93, 0x4a, 0xd3, 0xf4, 0xd3, 0xf3, 0xd3, 0xf3,
0xc1, 0x1c, 0x30, 0x0b, 0xa2, 0x58, 0x8a, 0x33, 0xb5, 0x02, 0xaa, 0x4f, 0xeb, 0x23, 0x23, 0x17,
0xaf, 0x8f, 0x8b, 0x63, 0x40, 0x08, 0xcc, 0x3c, 0x21, 0x37, 0x2e, 0x11, 0x90, 0x40, 0x7c, 0x48,
0x90, 0xa3, 0x5f, 0x70, 0x80, 0x7f, 0x50, 0x48, 0x7c, 0x80, 0x8f, 0xa3, 0xa7, 0x9f, 0x00, 0x83,
0x94, 0x4e, 0xd7, 0x5c, 0x05, 0x21, 0x14, 0xc5, 0x01, 0x39, 0x89, 0x99, 0x79, 0x97, 0xfa, 0x54,
0xb1, 0x88, 0x0a, 0x39, 0x70, 0x09, 0xa1, 0x99, 0x13, 0xe2, 0x13, 0x2c, 0xc0, 0x24, 0xa5, 0xd1,
0x35, 0x57, 0x41, 0x00, 0x45, 0x7d, 0x88, 0x4f, 0xf0, 0xa5, 0x3e, 0x55, 0x0c, 0x31, 0xa1, 0x00,
0x2e, 0x09, 0x34, 0x13, 0x82, 0x43, 0x1c, 0xa1, 0xe6, 0x30, 0x4b, 0x19, 0x75, 0xcd, 0x55, 0x10,
0x45, 0xd1, 0x13, 0x5c, 0x92, 0x08, 0x33, 0x0c, 0xbb, 0x84, 0x14, 0xcb, 0x8a, 0x25, 0x72, 0x0c,
0x4e, 0xee, 0x27, 0x1e, 0xca, 0x31, 0x5c, 0x78, 0x28, 0xc7, 0xf0, 0xe2, 0x91, 0x1c, 0xc3, 0x84,
0xc7, 0x72, 0x0c, 0x0b, 0x1e, 0xcb, 0x31, 0x5e, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43,
0x94, 0x66, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x71, 0x65, 0x5e,
0x72, 0x49, 0x46, 0x66, 0x5e, 0x3a, 0x12, 0x0b, 0x11, 0x11, 0x49, 0x6c, 0xe0, 0x30, 0x34, 0x06,
0x04, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x64, 0xce, 0xb9, 0x9d, 0x01, 0x00, 0x00,
}
-26
View File
@@ -1,26 +0,0 @@
// Copyright (C) 2018 The Syncthing Authors.
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at https://mozilla.org/MPL/2.0/.
package config
import (
"time"
"github.com/syncthing/syncthing/lib/protocol"
)
type ObservedFolder struct {
Time time.Time `xml:"time,attr" json:"time"`
ID string `xml:"id,attr" json:"id"`
Label string `xml:"label,attr" json:"label"`
}
type ObservedDevice struct {
Time time.Time `xml:"time,attr" json:"time"`
ID protocol.DeviceID `xml:"id,attr" json:"deviceID"`
Name string `xml:"name,attr" json:"name"`
Address string `xml:"address,attr" json:"address"`
}
+175
View File
@@ -0,0 +1,175 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/observed.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
_ "github.com/golang/protobuf/ptypes/timestamp"
github_com_syncthing_syncthing_lib_protocol "github.com/syncthing/syncthing/lib/protocol"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
time "time"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
var _ = time.Kitchen
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type ObservedFolder struct {
Time time.Time `protobuf:"bytes,1,opt,name=time,proto3,stdtime" json:"time" xml:"time,attr"`
ID string `protobuf:"bytes,2,opt,name=id,proto3" json:"id" xml:"id,attr"`
Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label" xml:"label,attr"`
}
func (m *ObservedFolder) Reset() { *m = ObservedFolder{} }
func (m *ObservedFolder) String() string { return proto.CompactTextString(m) }
func (*ObservedFolder) ProtoMessage() {}
func (*ObservedFolder) Descriptor() ([]byte, []int) {
return fileDescriptor_49f68ff7b178722f, []int{0}
}
func (m *ObservedFolder) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ObservedFolder.Unmarshal(m, b)
}
func (m *ObservedFolder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ObservedFolder.Marshal(b, m, deterministic)
}
func (m *ObservedFolder) XXX_Merge(src proto.Message) {
xxx_messageInfo_ObservedFolder.Merge(m, src)
}
func (m *ObservedFolder) XXX_Size() int {
return xxx_messageInfo_ObservedFolder.Size(m)
}
func (m *ObservedFolder) XXX_DiscardUnknown() {
xxx_messageInfo_ObservedFolder.DiscardUnknown(m)
}
var xxx_messageInfo_ObservedFolder proto.InternalMessageInfo
type ObservedDevice struct {
Time time.Time `protobuf:"bytes,1,opt,name=time,proto3,stdtime" json:"time" xml:"time,attr"`
ID github_com_syncthing_syncthing_lib_protocol.DeviceID `protobuf:"bytes,2,opt,name=id,proto3,customtype=github.com/syncthing/syncthing/lib/protocol.DeviceID" json:"deviceID" xml:"id,attr"`
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name" xml:"name,attr"`
Address string `protobuf:"bytes,4,opt,name=address,proto3" json:"address" xml:"address,attr"`
}
func (m *ObservedDevice) Reset() { *m = ObservedDevice{} }
func (m *ObservedDevice) String() string { return proto.CompactTextString(m) }
func (*ObservedDevice) ProtoMessage() {}
func (*ObservedDevice) Descriptor() ([]byte, []int) {
return fileDescriptor_49f68ff7b178722f, []int{1}
}
func (m *ObservedDevice) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ObservedDevice.Unmarshal(m, b)
}
func (m *ObservedDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ObservedDevice.Marshal(b, m, deterministic)
}
func (m *ObservedDevice) XXX_Merge(src proto.Message) {
xxx_messageInfo_ObservedDevice.Merge(m, src)
}
func (m *ObservedDevice) XXX_Size() int {
return xxx_messageInfo_ObservedDevice.Size(m)
}
func (m *ObservedDevice) XXX_DiscardUnknown() {
xxx_messageInfo_ObservedDevice.DiscardUnknown(m)
}
var xxx_messageInfo_ObservedDevice proto.InternalMessageInfo
func init() {
proto.RegisterType((*ObservedFolder)(nil), "config.ObservedFolder")
proto.RegisterType((*ObservedDevice)(nil), "config.ObservedDevice")
}
func init() { proto.RegisterFile("lib/config/observed.proto", fileDescriptor_49f68ff7b178722f) }
var fileDescriptor_49f68ff7b178722f = []byte{
// 438 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x93, 0x3f, 0x6f, 0xd4, 0x30,
0x00, 0xc5, 0xe3, 0xf4, 0x68, 0x39, 0x53, 0xfe, 0x28, 0xd3, 0x71, 0x43, 0x5c, 0x9d, 0x32, 0x1c,
0x02, 0x25, 0xfc, 0x9b, 0x10, 0x42, 0x22, 0x8a, 0x40, 0x27, 0x06, 0xa4, 0x88, 0x89, 0x89, 0x24,
0x76, 0x53, 0x4b, 0x49, 0x5c, 0x25, 0x6e, 0x55, 0x36, 0x46, 0xc6, 0x96, 0x4f, 0xc0, 0xc7, 0xe9,
0x76, 0x19, 0x11, 0x83, 0x51, 0x9b, 0x05, 0x65, 0x8c, 0xc4, 0x8e, 0x62, 0x27, 0xee, 0x4d, 0x88,
0xa9, 0x9b, 0xdf, 0xd3, 0xf3, 0x4f, 0x7e, 0x2f, 0x0a, 0xbc, 0x9f, 0xd1, 0xd8, 0x4b, 0x58, 0xb1,
0x4f, 0x53, 0x8f, 0xc5, 0x15, 0x29, 0x8f, 0x09, 0x76, 0x0f, 0x4b, 0xc6, 0x99, 0xb5, 0xad, 0xec,
0x39, 0x4a, 0x19, 0x4b, 0x33, 0xe2, 0x49, 0x37, 0x3e, 0xda, 0xf7, 0x38, 0xcd, 0x49, 0xc5, 0xa3,
0xfc, 0x50, 0x05, 0xe7, 0x53, 0x72, 0xc2, 0xd5, 0x71, 0xf1, 0x07, 0xc0, 0x3b, 0xef, 0x07, 0xcc,
0x1b, 0x96, 0x61, 0x52, 0x5a, 0x9f, 0xe0, 0xa4, 0xbf, 0x30, 0x03, 0x7b, 0x60, 0x79, 0xeb, 0xe9,
0xdc, 0x55, 0x34, 0x77, 0xa4, 0xb9, 0x1f, 0x46, 0x9a, 0xff, 0xf8, 0x5c, 0x20, 0xa3, 0x15, 0x48,
0xe6, 0x3b, 0x81, 0xee, 0x9e, 0xe4, 0xd9, 0x8b, 0x45, 0x2f, 0x1e, 0x45, 0x9c, 0x97, 0x8b, 0xd3,
0x5f, 0x08, 0xb4, 0x6b, 0x67, 0xaa, 0x9d, 0x50, 0x26, 0xad, 0x57, 0xd0, 0xa4, 0x78, 0x66, 0xee,
0x81, 0xe5, 0xd4, 0x77, 0x2f, 0x05, 0x32, 0x57, 0x41, 0x2b, 0x90, 0x49, 0x71, 0x27, 0xd0, 0x6d,
0xc9, 0xa0, 0x58, 0x11, 0xda, 0xb5, 0xb3, 0x33, 0x9c, 0xbf, 0xd5, 0x8e, 0xb9, 0x0a, 0x42, 0x93,
0x62, 0xeb, 0x35, 0xbc, 0x91, 0x45, 0x31, 0xc9, 0x66, 0x5b, 0x12, 0xf1, 0xb0, 0x15, 0x48, 0x19,
0x9d, 0x40, 0xf7, 0xe4, 0x7d, 0xa9, 0x34, 0x02, 0x5e, 0xc9, 0x50, 0x05, 0x17, 0x67, 0x5b, 0x57,
0xbd, 0x03, 0x72, 0x4c, 0x13, 0x72, 0x0d, 0xbd, 0xcf, 0x80, 0x2e, 0xbe, 0xeb, 0x7f, 0x01, 0x3d,
0xe5, 0xa7, 0x40, 0xcf, 0x53, 0xca, 0x0f, 0x8e, 0x62, 0x37, 0x61, 0xb9, 0x57, 0x7d, 0x2e, 0x12,
0x7e, 0x40, 0x8b, 0x74, 0xe3, 0xd4, 0x7f, 0x70, 0xf9, 0x88, 0x84, 0x65, 0xae, 0x7a, 0xeb, 0x2a,
0xd0, 0xab, 0xdd, 0xc4, 0x83, 0xf3, 0xaf, 0xed, 0xba, 0xb5, 0xa3, 0x73, 0x5f, 0x6b, 0x07, 0x6c,
0x6c, 0xf9, 0x12, 0x4e, 0x8a, 0x28, 0x27, 0xc3, 0x94, 0xcb, 0xbe, 0x55, 0xaf, 0x75, 0xab, 0x5e,
0x68, 0xde, 0x54, 0xab, 0x50, 0xa6, 0xac, 0x77, 0x70, 0x27, 0xc2, 0xb8, 0x24, 0x55, 0x35, 0x9b,
0x48, 0xc0, 0x93, 0x56, 0xa0, 0xd1, 0xea, 0x04, 0xb2, 0x24, 0x63, 0xd0, 0x1a, 0xb3, 0xbb, 0x69,
0x84, 0x63, 0xdc, 0x7f, 0x7b, 0x7e, 0x61, 0x1b, 0xf5, 0x85, 0x6d, 0xfc, 0xbe, 0xb4, 0x8d, 0xd3,
0xc6, 0x36, 0xbe, 0x37, 0x36, 0xa8, 0x1b, 0xdb, 0xf8, 0xd1, 0xd8, 0xc6, 0xc7, 0x07, 0xff, 0x31,
0x93, 0xfa, 0x01, 0xe2, 0x6d, 0x39, 0xd7, 0xb3, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xcb,
0x46, 0x92, 0x2c, 0x03, 0x00, 0x00,
}
func (m *ObservedFolder) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Time)
n += 1 + l + sovObserved(uint64(l))
l = len(m.ID)
if l > 0 {
n += 1 + l + sovObserved(uint64(l))
}
l = len(m.Label)
if l > 0 {
n += 1 + l + sovObserved(uint64(l))
}
return n
}
func (m *ObservedDevice) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Time)
n += 1 + l + sovObserved(uint64(l))
l = m.ID.ProtoSize()
n += 1 + l + sovObserved(uint64(l))
l = len(m.Name)
if l > 0 {
n += 1 + l + sovObserved(uint64(l))
}
l = len(m.Address)
if l > 0 {
n += 1 + l + sovObserved(uint64(l))
}
return n
}
func sovObserved(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozObserved(x uint64) (n int) {
return sovObserved(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
-57
View File
@@ -15,63 +15,6 @@ import (
"github.com/syncthing/syncthing/lib/util"
)
type OptionsConfiguration struct {
RawListenAddresses []string `xml:"listenAddress" json:"listenAddresses" default:"default"`
RawGlobalAnnServers []string `xml:"globalAnnounceServer" json:"globalAnnounceServers" default:"default"`
GlobalAnnEnabled bool `xml:"globalAnnounceEnabled" json:"globalAnnounceEnabled" default:"true"`
LocalAnnEnabled bool `xml:"localAnnounceEnabled" json:"localAnnounceEnabled" default:"true"`
LocalAnnPort int `xml:"localAnnouncePort" json:"localAnnouncePort" default:"21027"`
LocalAnnMCAddr string `xml:"localAnnounceMCAddr" json:"localAnnounceMCAddr" default:"[ff12::8384]:21027"`
MaxSendKbps int `xml:"maxSendKbps" json:"maxSendKbps"`
MaxRecvKbps int `xml:"maxRecvKbps" json:"maxRecvKbps"`
ReconnectIntervalS int `xml:"reconnectionIntervalS" json:"reconnectionIntervalS" default:"60"`
RelaysEnabled bool `xml:"relaysEnabled" json:"relaysEnabled" default:"true"`
RelayReconnectIntervalM int `xml:"relayReconnectIntervalM" json:"relayReconnectIntervalM" default:"10"`
StartBrowser bool `xml:"startBrowser" json:"startBrowser" default:"true"`
NATEnabled bool `xml:"natEnabled" json:"natEnabled" default:"true"`
NATLeaseM int `xml:"natLeaseMinutes" json:"natLeaseMinutes" default:"60"`
NATRenewalM int `xml:"natRenewalMinutes" json:"natRenewalMinutes" default:"30"`
NATTimeoutS int `xml:"natTimeoutSeconds" json:"natTimeoutSeconds" default:"10"`
URAccepted int `xml:"urAccepted" json:"urAccepted"` // Accepted usage reporting version; 0 for off (undecided), -1 for off (permanently)
URSeen int `xml:"urSeen" json:"urSeen"` // Report which the user has been prompted for.
URUniqueID string `xml:"urUniqueID" json:"urUniqueId"` // Unique ID for reporting purposes, regenerated when UR is turned on.
URURL string `xml:"urURL" json:"urURL" default:"https://data.syncthing.net/newdata"` // usage reporting URL
URPostInsecurely bool `xml:"urPostInsecurely" json:"urPostInsecurely" default:"false"` // For testing
URInitialDelayS int `xml:"urInitialDelayS" json:"urInitialDelayS" default:"1800"`
RestartOnWakeup bool `xml:"restartOnWakeup" json:"restartOnWakeup" default:"true"`
AutoUpgradeIntervalH int `xml:"autoUpgradeIntervalH" json:"autoUpgradeIntervalH" default:"12"` // 0 for off
UpgradeToPreReleases bool `xml:"upgradeToPreReleases" json:"upgradeToPreReleases"` // when auto upgrades are enabled
KeepTemporariesH int `xml:"keepTemporariesH" json:"keepTemporariesH" default:"24"` // 0 for off
CacheIgnoredFiles bool `xml:"cacheIgnoredFiles" json:"cacheIgnoredFiles" default:"false"`
ProgressUpdateIntervalS int `xml:"progressUpdateIntervalS" json:"progressUpdateIntervalS" default:"5"`
LimitBandwidthInLan bool `xml:"limitBandwidthInLan" json:"limitBandwidthInLan" default:"false"`
MinHomeDiskFree Size `xml:"minHomeDiskFree" json:"minHomeDiskFree" default:"1 %"`
ReleasesURL string `xml:"releasesURL" json:"releasesURL" default:"https://upgrades.syncthing.net/meta.json"`
AlwaysLocalNets []string `xml:"alwaysLocalNet" json:"alwaysLocalNets"`
OverwriteRemoteDevNames bool `xml:"overwriteRemoteDeviceNamesOnConnect" json:"overwriteRemoteDeviceNamesOnConnect" default:"false"`
TempIndexMinBlocks int `xml:"tempIndexMinBlocks" json:"tempIndexMinBlocks" default:"10"`
UnackedNotificationIDs []string `xml:"unackedNotificationID" json:"unackedNotificationIDs"`
TrafficClass int `xml:"trafficClass" json:"trafficClass"`
DefaultFolderPath string `xml:"defaultFolderPath" json:"defaultFolderPath" default:"~"`
SetLowPriority bool `xml:"setLowPriority" json:"setLowPriority" default:"true"`
RawMaxFolderConcurrency int `xml:"maxFolderConcurrency" json:"maxFolderConcurrency"`
CRURL string `xml:"crashReportingURL" json:"crURL" default:"https://crash.syncthing.net/newcrash"` // crash reporting URL
CREnabled bool `xml:"crashReportingEnabled" json:"crashReportingEnabled" default:"true"` // Read in the monitor, but it's read before every attempt to report stuff, so does not require a restart.
StunKeepaliveStartS int `xml:"stunKeepaliveStartS" json:"stunKeepaliveStartS" default:"180"` // 0 for off
StunKeepaliveMinS int `xml:"stunKeepaliveMinS" json:"stunKeepaliveMinS" default:"20"` // 0 for off
RawStunServers []string `xml:"stunServer" json:"stunServers" default:"default"`
DatabaseTuning Tuning `xml:"databaseTuning" json:"databaseTuning" restart:"true"` // Can't be adjusted once the database has been opened
RawMaxCIRequestKiB int `xml:"maxConcurrentIncomingRequestKiB" json:"maxConcurrentIncomingRequestKiB"`
DeprecatedUPnPEnabled bool `xml:"upnpEnabled,omitempty" json:"-"`
DeprecatedUPnPLeaseM int `xml:"upnpLeaseMinutes,omitempty" json:"-"`
DeprecatedUPnPRenewalM int `xml:"upnpRenewalMinutes,omitempty" json:"-"`
DeprecatedUPnPTimeoutS int `xml:"upnpTimeoutSeconds,omitempty" json:"-"`
DeprecatedRelayServers []string `xml:"relayServer,omitempty" json:"-"`
DeprecatedMinHomeDiskFreePct float64 `xml:"minHomeDiskFreePct,omitempty" json:"-"`
DeprecatedMaxConcurrentScans int `xml:"maxConcurrentScans,omitempty" json:"-"`
}
func (opts OptionsConfiguration) Copy() OptionsConfiguration {
optsCopy := opts
optsCopy.RawListenAddresses = make([]string, len(opts.RawListenAddresses))
+502
View File
@@ -0,0 +1,502 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/optionsconfiguration.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type OptionsConfiguration struct {
RawListenAddresses []string `protobuf:"bytes,1,rep,name=listen_addresses,json=listenAddresses,proto3" json:"listenAddresses" xml:"listenAddress" default:"default"`
RawGlobalAnnServers []string `protobuf:"bytes,2,rep,name=global_discovery_servers,json=globalDiscoveryServers,proto3" json:"globalAnnounceServers" xml:"globalAnnounceServer" default:"default"`
GlobalAnnEnabled bool `protobuf:"varint,3,opt,name=global_discovery_enabled,json=globalDiscoveryEnabled,proto3" json:"globalAnnounceEnabled" xml:"globalAnnounceEnabled" default:"true"`
LocalAnnEnabled bool `protobuf:"varint,4,opt,name=local_discovery_enabled,json=localDiscoveryEnabled,proto3" json:"localAnnounceEnabled" xml:"localAnnounceEnabled" default:"true"`
LocalAnnPort int `protobuf:"varint,5,opt,name=local_announce_port,json=localAnnouncePort,proto3,casttype=int" json:"localAnnouncePort" xml:"localAnnouncePort" default:"21027"`
LocalAnnMCAddr string `protobuf:"bytes,6,opt,name=local_announce_multicast_address,json=localAnnounceMulticastAddress,proto3" json:"localAnnounceMCAddr" xml:"localAnnounceMCAddr" default:"[ff12::8384]:21027"`
MaxSendKbps int `protobuf:"varint,7,opt,name=max_send_kbps,json=maxSendKbps,proto3,casttype=int" json:"maxSendKbps" xml:"maxSendKbps"`
MaxRecvKbps int `protobuf:"varint,8,opt,name=max_recv_kbps,json=maxRecvKbps,proto3,casttype=int" json:"maxRecvKbps" xml:"maxRecvKbps"`
ReconnectIntervalS int `protobuf:"varint,9,opt,name=reconnection_interval_s,json=reconnectionIntervalS,proto3,casttype=int" json:"reconnectionIntervalS" xml:"reconnectionIntervalS" default:"60"`
RelaysEnabled bool `protobuf:"varint,10,opt,name=relays_enabled,json=relaysEnabled,proto3" json:"relaysEnabled" xml:"relaysEnabled" default:"true"`
RelayReconnectIntervalM int `protobuf:"varint,11,opt,name=relays_reconnect_interval_m,json=relaysReconnectIntervalM,proto3,casttype=int" json:"relayReconnectIntervalM" xml:"relayReconnectIntervalM" default:"10"`
StartBrowser bool `protobuf:"varint,12,opt,name=start_browser,json=startBrowser,proto3" json:"startBrowser" xml:"startBrowser" default:"true"`
NATEnabled bool `protobuf:"varint,14,opt,name=nat_traversal_enabled,json=natTraversalEnabled,proto3" json:"natEnabled" xml:"natEnabled" default:"true"`
NATLeaseM int `protobuf:"varint,15,opt,name=nat_traversal_lease_m,json=natTraversalLeaseM,proto3,casttype=int" json:"natLeaseMinutes" xml:"natLeaseMinutes" default:"60"`
NATRenewalM int `protobuf:"varint,16,opt,name=nat_traversal_renewal_m,json=natTraversalRenewalM,proto3,casttype=int" json:"natRenewalMinutes" xml:"natRenewalMinutes" default:"30"`
NATTimeoutS int `protobuf:"varint,17,opt,name=nat_traversal_timeout_s,json=natTraversalTimeoutS,proto3,casttype=int" json:"natTimeoutSeconds" xml:"natTimeoutSeconds" default:"10"`
URAccepted int `protobuf:"varint,18,opt,name=usage_reporting_accepted,json=usageReportingAccepted,proto3,casttype=int" json:"urAccepted" xml:"urAccepted"`
URSeen int `protobuf:"varint,19,opt,name=usage_reporting_seen,json=usageReportingSeen,proto3,casttype=int" json:"urSeen" xml:"urSeen"`
URUniqueID string `protobuf:"bytes,20,opt,name=usage_reporting_unique_id,json=usageReportingUniqueId,proto3" json:"urUniqueId" xml:"urUniqueID"`
URURL string `protobuf:"bytes,21,opt,name=usage_reporting_url,json=usageReportingUrl,proto3" json:"urURL" xml:"urURL" default:"https://data.syncthing.net/newdata"`
URPostInsecurely bool `protobuf:"varint,22,opt,name=usage_reporting_post_insecurely,json=usageReportingPostInsecurely,proto3" json:"urPostInsecurely" xml:"urPostInsecurely" default:"false"`
URInitialDelayS int `protobuf:"varint,23,opt,name=usage_reporting_initial_delay_s,json=usageReportingInitialDelayS,proto3,casttype=int" json:"urInitialDelayS" xml:"urInitialDelayS" default:"1800"`
RestartOnWakeup bool `protobuf:"varint,24,opt,name=restart_on_wakeup,json=restartOnWakeup,proto3" json:"restartOnWakeup" xml:"restartOnWakeup" default:"true"`
AutoUpgradeIntervalH int `protobuf:"varint,25,opt,name=auto_upgrade_interval_h,json=autoUpgradeIntervalH,proto3,casttype=int" json:"autoUpgradeIntervalH" xml:"autoUpgradeIntervalH" default:"12"`
UpgradeToPreReleases bool `protobuf:"varint,26,opt,name=upgrade_to_pre_releases,json=upgradeToPreReleases,proto3" json:"upgradeToPreReleases" xml:"upgradeToPreReleases"`
KeepTemporariesH int `protobuf:"varint,27,opt,name=keep_temporaries_h,json=keepTemporariesH,proto3,casttype=int" json:"keepTemporariesH" xml:"keepTemporariesH" default:"24"`
CacheIgnoredFiles bool `protobuf:"varint,28,opt,name=cache_ignored_files,json=cacheIgnoredFiles,proto3" json:"cacheIgnoredFiles" xml:"cacheIgnoredFiles" default:"false"`
ProgressUpdateIntervalS int `protobuf:"varint,29,opt,name=progress_update_interval_s,json=progressUpdateIntervalS,proto3,casttype=int" json:"progressUpdateIntervalS" xml:"progressUpdateIntervalS" default:"5"`
LimitBandwidthInLan bool `protobuf:"varint,30,opt,name=limit_bandwidth_in_lan,json=limitBandwidthInLan,proto3" json:"limitBandwidthInLan" xml:"limitBandwidthInLan" default:"false"`
MinHomeDiskFree Size `protobuf:"bytes,31,opt,name=min_home_disk_free,json=minHomeDiskFree,proto3" json:"minHomeDiskFree" xml:"minHomeDiskFree" default:"1 %"`
ReleasesURL string `protobuf:"bytes,32,opt,name=releases_url,json=releasesUrl,proto3" json:"releasesURL" xml:"releasesURL" default:"https://upgrades.syncthing.net/meta.json"`
AlwaysLocalNets []string `protobuf:"bytes,33,rep,name=always_local_nets,json=alwaysLocalNets,proto3" json:"alwaysLocalNets" xml:"alwaysLocalNet"`
OverwriteRemoteDevNames bool `protobuf:"varint,34,opt,name=overwrite_remote_device_names_on_connect,json=overwriteRemoteDeviceNamesOnConnect,proto3" json:"overwriteRemoteDeviceNamesOnConnect" xml:"overwriteRemoteDeviceNamesOnConnect" default:"false"`
TempIndexMinBlocks int `protobuf:"varint,35,opt,name=temp_index_min_blocks,json=tempIndexMinBlocks,proto3,casttype=int" json:"tempIndexMinBlocks" xml:"tempIndexMinBlocks" default:"10"`
UnackedNotificationIDs []string `protobuf:"bytes,36,rep,name=unacked_notification_ids,json=unackedNotificationIds,proto3" json:"unackedNotificationIDs" xml:"unackedNotificationID"`
TrafficClass int `protobuf:"varint,37,opt,name=traffic_class,json=trafficClass,proto3,casttype=int" json:"trafficClass" xml:"trafficClass"`
DefaultFolderPath string `protobuf:"bytes,38,opt,name=default_folder_path,json=defaultFolderPath,proto3" json:"defaultFolderPath" xml:"defaultFolderPath" default:"~"`
SetLowPriority bool `protobuf:"varint,39,opt,name=set_low_priority,json=setLowPriority,proto3" json:"setLowPriority" xml:"setLowPriority" default:"true"`
RawMaxFolderConcurrency int `protobuf:"varint,40,opt,name=max_folder_concurrency,json=maxFolderConcurrency,proto3,casttype=int" json:"maxFolderConcurrency" xml:"maxFolderConcurrency"`
CRURL string `protobuf:"bytes,41,opt,name=crash_reporting_url,json=crashReportingUrl,proto3" json:"crURL" xml:"crashReportingURL" default:"https://crash.syncthing.net/newcrash"`
CREnabled bool `protobuf:"varint,42,opt,name=crash_reporting_enabled,json=crashReportingEnabled,proto3" json:"crashReportingEnabled" xml:"crashReportingEnabled" default:"true"`
StunKeepaliveStartS int `protobuf:"varint,43,opt,name=stun_keepalive_start_s,json=stunKeepaliveStartS,proto3,casttype=int" json:"stunKeepaliveStartS" xml:"stunKeepaliveStartS" default:"180"`
StunKeepaliveMinS int `protobuf:"varint,44,opt,name=stun_keepalive_min_s,json=stunKeepaliveMinS,proto3,casttype=int" json:"stunKeepaliveMinS" xml:"stunKeepaliveMinS" default:"20"`
RawStunServers []string `protobuf:"bytes,45,rep,name=stun_servers,json=stunServers,proto3" json:"stunServers" xml:"stunServer" default:"default"`
DatabaseTuning Tuning `protobuf:"varint,46,opt,name=database_tuning,json=databaseTuning,proto3,enum=config.Tuning" json:"databaseTuning" xml:"databaseTuning" restart:"true"`
RawMaxCIRequestKiB int `protobuf:"varint,47,opt,name=max_concurrent_incoming_request_kib,json=maxConcurrentIncomingRequestKib,proto3,casttype=int" json:"maxConcurrentIncomingRequestKiB" xml:"maxConcurrentIncomingRequestKiB"`
// Legacy deprecated
DeprecatedUPnPEnabled bool `protobuf:"varint,9000,opt,name=upnp_enabled,json=upnpEnabled,proto3" json:"-" xml:"upnpEnabled,omitempty"` // Deprecated: Do not use.
DeprecatedUPnPLeaseM int `protobuf:"varint,9001,opt,name=upnp_lease_m,json=upnpLeaseM,proto3,casttype=int" json:"-" xml:"upnpLeaseMinutes,omitempty"` // Deprecated: Do not use.
DeprecatedUPnPRenewalM int `protobuf:"varint,9002,opt,name=upnp_renewal_m,json=upnpRenewalM,proto3,casttype=int" json:"-" xml:"upnpRenewalMinutes,omitempty"` // Deprecated: Do not use.
DeprecatedUPnPTimeoutS int `protobuf:"varint,9003,opt,name=upnp_timeout_s,json=upnpTimeoutS,proto3,casttype=int" json:"-" xml:"upnpTimeoutSeconds,omitempty"` // Deprecated: Do not use.
DeprecatedRelayServers []string `protobuf:"bytes,9004,rep,name=relay_servers,json=relayServers,proto3" json:"-" xml:"relayServer,omitempty"` // Deprecated: Do not use.
DeprecatedMinHomeDiskFreePct float64 `protobuf:"fixed64,9005,opt,name=min_home_disk_free_pct,json=minHomeDiskFreePct,proto3" json:"-" xml:"minHomeDiskFreePct,omitempty"` // Deprecated: Do not use.
DeprecatedMaxConcurrentScans int `protobuf:"varint,9006,opt,name=max_concurrent_scans,json=maxConcurrentScans,proto3,casttype=int" json:"-" xml:"maxConcurrentScans,omitempty"` // Deprecated: Do not use.
}
func (m *OptionsConfiguration) Reset() { *m = OptionsConfiguration{} }
func (m *OptionsConfiguration) String() string { return proto.CompactTextString(m) }
func (*OptionsConfiguration) ProtoMessage() {}
func (*OptionsConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_d09882599506ca03, []int{0}
}
func (m *OptionsConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OptionsConfiguration.Unmarshal(m, b)
}
func (m *OptionsConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_OptionsConfiguration.Marshal(b, m, deterministic)
}
func (m *OptionsConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_OptionsConfiguration.Merge(m, src)
}
func (m *OptionsConfiguration) XXX_Size() int {
return xxx_messageInfo_OptionsConfiguration.Size(m)
}
func (m *OptionsConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_OptionsConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_OptionsConfiguration proto.InternalMessageInfo
func init() {
proto.RegisterType((*OptionsConfiguration)(nil), "config.OptionsConfiguration")
}
func init() {
proto.RegisterFile("lib/config/optionsconfiguration.proto", fileDescriptor_d09882599506ca03)
}
var fileDescriptor_d09882599506ca03 = []byte{
// 3006 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x5a, 0x5b, 0x6c, 0x24, 0x47,
0xd5, 0x76, 0xef, 0x66, 0x37, 0xd9, 0xb6, 0xd7, 0x5e, 0xb7, 0x6f, 0x9d, 0xdd, 0x8d, 0xdb, 0x99,
0x9d, 0x4d, 0x9c, 0x9b, 0x6f, 0x9b, 0xec, 0xbf, 0xff, 0x4a, 0xbf, 0x7e, 0x7c, 0x89, 0x13, 0x13,
0x7b, 0xd7, 0x2a, 0xdb, 0x0a, 0x0a, 0x42, 0xad, 0x9a, 0x9e, 0xb2, 0xdd, 0xb8, 0xa7, 0x7a, 0xb6,
0xab, 0xda, 0x97, 0x80, 0x42, 0x14, 0xc4, 0xe5, 0x0d, 0xb0, 0xb8, 0x48, 0x20, 0xa1, 0x20, 0x40,
0x22, 0x04, 0x10, 0x12, 0x12, 0x12, 0x48, 0x08, 0x84, 0x84, 0x14, 0xc1, 0x83, 0xfd, 0x88, 0x44,
0x68, 0x14, 0x2f, 0x0f, 0x68, 0x1e, 0x78, 0x98, 0x47, 0xf3, 0x82, 0x4e, 0xf5, 0xad, 0xfa, 0x32,
0xd9, 0x7d, 0x9b, 0x3a, 0xdf, 0xa9, 0x53, 0xdf, 0x39, 0x55, 0x75, 0xaa, 0x4e, 0xf5, 0xa8, 0xd7,
0x1d, 0xbb, 0x36, 0x69, 0xb9, 0x74, 0xd3, 0xde, 0x9a, 0x74, 0x9b, 0xdc, 0x76, 0x29, 0x0b, 0x5b,
0xbe, 0x87, 0xa1, 0x35, 0xd1, 0xf4, 0x5c, 0xee, 0x6a, 0xe7, 0x43, 0xe1, 0xe5, 0x11, 0x49, 0x9d,
0xfb, 0xd4, 0xa6, 0x5b, 0xa1, 0xc2, 0xe5, 0x21, 0x09, 0x60, 0xf6, 0x9b, 0x24, 0x12, 0x5f, 0x20,
0xfb, 0x3c, 0xfc, 0x59, 0xf9, 0xdd, 0xbc, 0x3a, 0x78, 0x37, 0x1c, 0x61, 0x5e, 0x1e, 0x41, 0xfb,
0xbe, 0xa2, 0x5e, 0x72, 0x6c, 0xc6, 0x09, 0x35, 0x71, 0xbd, 0xee, 0x11, 0xc6, 0x08, 0xd3, 0x95,
0xb1, 0xb3, 0xe3, 0x17, 0xe6, 0xd8, 0x49, 0x60, 0x68, 0x08, 0xef, 0x2d, 0x0b, 0x78, 0x36, 0x46,
0x5b, 0x81, 0xd1, 0xe7, 0x64, 0x45, 0xed, 0xc0, 0xb8, 0xbe, 0xdf, 0x70, 0x6e, 0x57, 0x32, 0xf2,
0xca, 0x58, 0x9d, 0x6c, 0x62, 0xdf, 0xe1, 0xb7, 0x2b, 0xd1, 0x8f, 0xca, 0xe9, 0x51, 0xf5, 0xd1,
0xe8, 0xf7, 0xe1, 0x71, 0xb5, 0xc4, 0x38, 0xca, 0x9b, 0xd6, 0xfe, 0xad, 0xa8, 0xfa, 0x96, 0xe3,
0xd6, 0xb0, 0x63, 0xd6, 0x6d, 0x66, 0xb9, 0xbb, 0xc4, 0x3b, 0x30, 0x19, 0xf1, 0x76, 0x89, 0xc7,
0xf4, 0x33, 0x82, 0xe8, 0xaf, 0x94, 0x93, 0xc0, 0x18, 0x40, 0x78, 0xef, 0x15, 0xa1, 0x37, 0x4b,
0xe9, 0x5a, 0x88, 0xb7, 0x02, 0x63, 0x68, 0x2b, 0x96, 0xb9, 0x3e, 0xb5, 0x48, 0x04, 0xb4, 0x03,
0xe3, 0x79, 0x41, 0xb8, 0x0c, 0x2d, 0xe1, 0xdd, 0x3a, 0xaa, 0x0e, 0x96, 0xa9, 0xb6, 0x8f, 0xaa,
0xe5, 0x03, 0x64, 0x1d, 0x2d, 0xe3, 0x86, 0x86, 0xc3, 0x8e, 0x0b, 0xb1, 0x53, 0x91, 0x5c, 0xfb,
0x67, 0x99, 0xc3, 0x84, 0xe2, 0x9a, 0x43, 0xea, 0xfa, 0xd9, 0x31, 0x65, 0xfc, 0xb1, 0xb9, 0xf7,
0xc0, 0xe1, 0x4b, 0x89, 0xc5, 0x97, 0x43, 0xb0, 0xe8, 0x6d, 0x04, 0xb4, 0x03, 0xe3, 0xd9, 0x12,
0x6f, 0x23, 0x54, 0x72, 0x97, 0x7b, 0x3e, 0x01, 0x5f, 0x3b, 0x98, 0xe9, 0x04, 0x9c, 0x1e, 0x55,
0x1f, 0x81, 0xae, 0x87, 0xc7, 0xd5, 0x02, 0xa9, 0x82, 0x9b, 0x91, 0x5c, 0xfb, 0x50, 0x51, 0x47,
0x1c, 0xd7, 0x2a, 0xf5, 0xf2, 0x11, 0xe1, 0xe5, 0x0f, 0xc1, 0xcb, 0xbe, 0x65, 0xd0, 0xc9, 0x38,
0x39, 0xe8, 0x44, 0xa2, 0x9c, 0x8f, 0xcf, 0x84, 0x4b, 0xb0, 0x04, 0x2c, 0x71, 0xb1, 0xdc, 0x48,
0x07, 0xb9, 0xe4, 0x60, 0x9e, 0x0f, 0x1a, 0x12, 0x1d, 0x0a, 0xee, 0xfd, 0x45, 0x51, 0x07, 0x42,
0xf7, 0x70, 0x64, 0xcb, 0x6c, 0xba, 0x1e, 0xd7, 0xcf, 0x8d, 0x29, 0xe3, 0xe7, 0xe6, 0xbe, 0x0b,
0xae, 0xf5, 0xc4, 0xa6, 0x56, 0x5d, 0x8f, 0xb7, 0x02, 0xa3, 0x3f, 0x33, 0x34, 0x08, 0xdb, 0x81,
0xf1, 0x74, 0xd1, 0x29, 0x40, 0x24, 0x8f, 0x66, 0xa6, 0xa7, 0x66, 0xfe, 0xa7, 0x72, 0x1a, 0x18,
0x67, 0x6d, 0xca, 0x5b, 0x47, 0xd5, 0x12, 0x33, 0x65, 0xc2, 0xd3, 0xa3, 0xea, 0x39, 0xd1, 0xf5,
0xf0, 0xb8, 0x9a, 0x61, 0x82, 0x8a, 0xba, 0xda, 0x17, 0xcf, 0xa8, 0x63, 0x39, 0x6f, 0x1a, 0xbe,
0xc3, 0x6d, 0x0b, 0x33, 0x1e, 0xe7, 0x0d, 0xfd, 0xfc, 0x98, 0x32, 0x7e, 0x61, 0xee, 0x37, 0xe0,
0x5a, 0x6f, 0x6c, 0x70, 0x65, 0x1e, 0x76, 0x72, 0x2b, 0x30, 0x06, 0x32, 0x46, 0x43, 0x71, 0x3b,
0x30, 0x6e, 0x16, 0xdd, 0x0b, 0x31, 0xc9, 0xc1, 0x4f, 0x6f, 0x6e, 0x4e, 0xcf, 0xdc, 0xbe, 0x7d,
0xeb, 0xc6, 0xad, 0x17, 0x3f, 0x73, 0x3b, 0xf4, 0xb6, 0x75, 0x54, 0x2d, 0x35, 0x58, 0x2e, 0x3e,
0x3d, 0xaa, 0x6a, 0x45, 0x23, 0x87, 0xc7, 0xd5, 0x1c, 0x4d, 0xf4, 0x44, 0xb6, 0x73, 0xec, 0x61,
0x94, 0x8c, 0xb4, 0xbb, 0xea, 0xc5, 0x06, 0xde, 0x37, 0x19, 0xa1, 0x75, 0x73, 0xa7, 0xd6, 0x64,
0xfa, 0xa3, 0x62, 0x32, 0x9f, 0x6b, 0x05, 0x46, 0x77, 0x03, 0xef, 0xaf, 0x11, 0x5a, 0x7f, 0xad,
0xd6, 0x84, 0xe4, 0xd2, 0x2f, 0xdc, 0x92, 0x64, 0xf1, 0xfc, 0x20, 0x59, 0x31, 0x36, 0xe8, 0x11,
0x6b, 0x37, 0x34, 0xf8, 0x58, 0xc6, 0x20, 0x22, 0xd6, 0x6e, 0xde, 0x60, 0x2c, 0xcb, 0x18, 0x8c,
0x85, 0xda, 0xaf, 0x15, 0x75, 0xc4, 0x23, 0x96, 0x4b, 0x29, 0xb1, 0x20, 0xbd, 0x9b, 0x36, 0xe5,
0xc4, 0xdb, 0xc5, 0x8e, 0xc9, 0xf4, 0x0b, 0xc2, 0xf6, 0x5b, 0x22, 0xa9, 0xc7, 0x2a, 0x4b, 0x11,
0xbc, 0x06, 0xb9, 0x43, 0xee, 0x98, 0x00, 0xed, 0xc0, 0x18, 0x17, 0x63, 0x97, 0xa2, 0xd2, 0x2c,
0xdd, 0x9c, 0x8a, 0x29, 0x9d, 0x1e, 0x55, 0xcf, 0xdc, 0x9c, 0x12, 0xf9, 0xbd, 0x30, 0x0e, 0x2a,
0x1f, 0x45, 0xdb, 0x54, 0x7b, 0x3d, 0xe2, 0xe0, 0x03, 0x96, 0xe4, 0x00, 0x55, 0xe4, 0x80, 0xff,
0x6f, 0x05, 0xc6, 0xc5, 0x10, 0x49, 0x37, 0x7a, 0x25, 0x22, 0x24, 0x49, 0xf3, 0x3b, 0x3c, 0xde,
0xb1, 0x28, 0xdb, 0x59, 0x7b, 0xe7, 0x8c, 0x7a, 0x25, 0x1a, 0x28, 0x21, 0x92, 0x06, 0xa9, 0xa1,
0x77, 0x8b, 0x20, 0xfd, 0x11, 0xd6, 0xf0, 0x08, 0x02, 0xbd, 0x82, 0x0b, 0x2b, 0xad, 0xc0, 0x18,
0xf1, 0xca, 0xa1, 0x24, 0xd1, 0x76, 0xc0, 0x25, 0x96, 0xd3, 0x53, 0xd2, 0x96, 0xed, 0x68, 0xaf,
0x33, 0x04, 0x41, 0x9e, 0x86, 0x20, 0x77, 0xa2, 0x89, 0xf4, 0xd0, 0xcf, 0x22, 0xa2, 0xd5, 0xd4,
0x8b, 0x8c, 0x63, 0x8f, 0x9b, 0x35, 0xcf, 0xdd, 0x63, 0xc4, 0xd3, 0x7b, 0x44, 0xac, 0xff, 0xaf,
0x15, 0x18, 0x3d, 0x02, 0x98, 0x0b, 0xe5, 0xed, 0xc0, 0x78, 0x52, 0xb8, 0x23, 0x0b, 0x3b, 0x46,
0x3a, 0xd3, 0x55, 0xfb, 0xb1, 0xa2, 0x0e, 0x51, 0xcc, 0x4d, 0xee, 0x61, 0x38, 0xd5, 0xb0, 0x93,
0x4c, 0x6c, 0xaf, 0x18, 0xec, 0xde, 0x49, 0x60, 0xa8, 0x77, 0x66, 0xd7, 0xd3, 0xb4, 0xae, 0x52,
0xcc, 0xd3, 0x39, 0x36, 0xc4, 0xc0, 0xa9, 0xa8, 0x24, 0x85, 0xcb, 0x1d, 0x32, 0x2d, 0x29, 0x5d,
0x4b, 0x43, 0xa0, 0x01, 0x8a, 0xf9, 0x7a, 0x4c, 0x27, 0x5e, 0x10, 0xbf, 0x2d, 0xf0, 0x74, 0x08,
0x66, 0xc4, 0x6c, 0xe8, 0x7d, 0x62, 0x29, 0x7c, 0x19, 0x96, 0xc2, 0x85, 0x3b, 0xb3, 0xeb, 0xcb,
0x20, 0x86, 0xc9, 0xef, 0xa3, 0x98, 0x87, 0x0d, 0x9b, 0xfa, 0x5c, 0x5c, 0x7e, 0x2a, 0x31, 0x59,
0x59, 0x5e, 0xba, 0x37, 0x5a, 0x47, 0xd5, 0x42, 0xff, 0xa2, 0x28, 0xd9, 0x41, 0xe9, 0xc0, 0x48,
0x93, 0xd9, 0x87, 0x32, 0xed, 0xcf, 0x8a, 0x3a, 0x92, 0x25, 0xef, 0x11, 0x4a, 0xf6, 0xc4, 0x4a,
0xbe, 0x24, 0xe8, 0x1f, 0x02, 0xfd, 0xee, 0x3b, 0xb3, 0xeb, 0x28, 0x04, 0xc0, 0x81, 0x7e, 0x8a,
0x79, 0xdc, 0x4c, 0x5c, 0xa8, 0xc6, 0x2e, 0x64, 0x11, 0xc9, 0x89, 0x1b, 0xb2, 0x13, 0x25, 0x36,
0xca, 0x84, 0xe0, 0xc8, 0x0d, 0x70, 0x44, 0xa6, 0x80, 0x06, 0x65, 0x57, 0x62, 0x69, 0x89, 0x33,
0xdc, 0x6e, 0x10, 0xd7, 0xe7, 0x26, 0xd3, 0xfb, 0xb3, 0xce, 0xac, 0x87, 0xc0, 0x5a, 0xe4, 0x4c,
0xdc, 0x84, 0x95, 0x5e, 0xcf, 0x38, 0x93, 0x45, 0x3a, 0x6d, 0xbf, 0x12, 0x1b, 0x65, 0xc2, 0x64,
0xcb, 0xc9, 0x14, 0xb2, 0xce, 0xc4, 0x52, 0xed, 0x7b, 0x8a, 0xaa, 0xfb, 0x0c, 0x6f, 0x11, 0xd3,
0x23, 0x70, 0xee, 0xdb, 0x74, 0xcb, 0xc4, 0x96, 0x45, 0x9a, 0x9c, 0xd4, 0x75, 0x4d, 0x78, 0x83,
0x61, 0x07, 0x6c, 0xa0, 0xd9, 0x48, 0x0a, 0x3b, 0xc0, 0xf7, 0xe2, 0x56, 0x3b, 0x30, 0x2e, 0x09,
0x27, 0x52, 0x91, 0x44, 0x58, 0x56, 0xcc, 0xb4, 0x60, 0xc5, 0xa7, 0x26, 0xd1, 0xb0, 0xa0, 0x80,
0x62, 0x06, 0xb1, 0x5c, 0xfb, 0x9c, 0x3a, 0x98, 0x27, 0xc7, 0x08, 0xa1, 0xfa, 0x80, 0x20, 0xb6,
0x74, 0x12, 0x18, 0xe7, 0x37, 0xd0, 0x1a, 0x21, 0xb4, 0x15, 0x18, 0xe7, 0x7d, 0x0f, 0x7e, 0xb5,
0x03, 0xa3, 0x27, 0x22, 0x04, 0x4d, 0x89, 0x4c, 0xac, 0x90, 0xfc, 0x3a, 0x3c, 0xae, 0x46, 0xdd,
0x91, 0x96, 0x25, 0x00, 0x32, 0xed, 0x5b, 0x8a, 0xfa, 0x78, 0x7e, 0x74, 0x9f, 0xda, 0xf7, 0x7c,
0x62, 0xda, 0x75, 0x7d, 0x50, 0x5c, 0x22, 0xde, 0x08, 0x63, 0xb3, 0x21, 0xc4, 0x4b, 0x0b, 0x61,
0x6c, 0xa2, 0x96, 0x1c, 0x9b, 0x58, 0xa1, 0x12, 0x06, 0x25, 0x6e, 0xb6, 0xe5, 0x56, 0x14, 0x94,
0x18, 0xcb, 0x07, 0x25, 0xd6, 0xd2, 0xfe, 0xa0, 0xa8, 0x03, 0x05, 0x5e, 0x9e, 0xa3, 0x0f, 0x09,
0x46, 0x5f, 0x83, 0xb5, 0x77, 0x6e, 0x03, 0x6d, 0xa0, 0xe5, 0x56, 0x60, 0x9c, 0xf3, 0xbd, 0x0d,
0xb4, 0xdc, 0x0e, 0x8c, 0x5b, 0x31, 0x11, 0xb4, 0x2c, 0xad, 0xae, 0x6d, 0xce, 0x9b, 0xec, 0xf6,
0xe4, 0x64, 0x1d, 0x73, 0x3c, 0xc1, 0x0e, 0xa8, 0xc5, 0xb7, 0xa1, 0x58, 0xa3, 0x84, 0x4f, 0x52,
0xb2, 0x07, 0x52, 0x20, 0x1c, 0x19, 0x89, 0x7f, 0x9c, 0x1e, 0x55, 0x1f, 0xa2, 0xe3, 0xe1, 0x71,
0x35, 0x64, 0x81, 0xfa, 0x73, 0x7e, 0x78, 0x8e, 0xf6, 0x0f, 0x45, 0x35, 0xf2, 0x2e, 0x34, 0x5d,
0x06, 0x27, 0x1c, 0x23, 0x96, 0xef, 0x11, 0xe7, 0x40, 0x1f, 0x16, 0xe9, 0xf7, 0x3b, 0xa2, 0x82,
0xd8, 0x40, 0xab, 0x2e, 0xe3, 0x4b, 0x09, 0xd8, 0x0a, 0x8c, 0x4b, 0xbe, 0x97, 0x95, 0xb5, 0x03,
0xe3, 0xa9, 0xc8, 0xc9, 0x2c, 0x20, 0xf9, 0xbb, 0x89, 0x1d, 0x26, 0x52, 0x72, 0xb1, 0x77, 0x89,
0x0c, 0x6e, 0x9e, 0xa2, 0x07, 0xd4, 0x0b, 0x79, 0x0a, 0xe8, 0x6a, 0xd6, 0xad, 0x2c, 0xaa, 0xfd,
0xbd, 0xc4, 0x43, 0x9b, 0xda, 0xdc, 0x86, 0x3a, 0x02, 0xce, 0x3b, 0x93, 0xe9, 0x23, 0x62, 0x15,
0x7f, 0x5b, 0x54, 0x0f, 0x1b, 0x68, 0x29, 0x44, 0x17, 0x00, 0x84, 0x84, 0xd1, 0xe7, 0x7b, 0x19,
0x51, 0x92, 0x2e, 0x72, 0x72, 0x39, 0x59, 0xdc, 0x9a, 0xca, 0x24, 0xf0, 0xbc, 0x85, 0xa2, 0x08,
0x4e, 0x20, 0xe8, 0x05, 0x05, 0x43, 0x8e, 0x02, 0xba, 0x92, 0x75, 0x30, 0x03, 0x6a, 0xae, 0xda,
0xef, 0x91, 0xf0, 0x70, 0x76, 0xa9, 0xb9, 0x87, 0x77, 0x88, 0xdf, 0xd4, 0x75, 0x31, 0x65, 0xf3,
0x40, 0x3e, 0x02, 0xef, 0xd2, 0xd7, 0x05, 0x94, 0x90, 0xcf, 0xc9, 0x3b, 0x1e, 0xd2, 0x79, 0x03,
0xda, 0x57, 0x14, 0x75, 0x04, 0xfb, 0xdc, 0x35, 0xfd, 0xe6, 0x96, 0x87, 0xeb, 0x24, 0xbd, 0x0c,
0x6d, 0xeb, 0x8f, 0x8b, 0x40, 0xae, 0x42, 0xc9, 0x05, 0x2a, 0x1b, 0xa1, 0x46, 0x7c, 0x8f, 0x78,
0x35, 0xa9, 0x4e, 0xca, 0x40, 0x39, 0x7c, 0x33, 0xf2, 0xcd, 0x70, 0x7a, 0x06, 0x95, 0x5a, 0xd3,
0x1a, 0xea, 0x48, 0xcc, 0x81, 0xbb, 0x66, 0xd3, 0x83, 0x29, 0x16, 0x67, 0x31, 0xd3, 0x2f, 0x8b,
0x00, 0xdc, 0x04, 0x22, 0x91, 0xca, 0xba, 0xbb, 0xea, 0x11, 0x14, 0xe1, 0xed, 0xc0, 0xb8, 0x1c,
0x4e, 0x61, 0x09, 0x58, 0x41, 0xa5, 0x7d, 0xb4, 0x5d, 0x55, 0xdb, 0x21, 0xa4, 0x69, 0x72, 0xd2,
0x68, 0xba, 0x1e, 0xf6, 0x6c, 0xc2, 0xcc, 0x6d, 0xfd, 0x8a, 0x70, 0xf9, 0x55, 0xd8, 0x08, 0x80,
0xae, 0xa7, 0x20, 0xb8, 0x7b, 0x4d, 0x8c, 0x92, 0x07, 0xe4, 0x5a, 0xec, 0x45, 0xd9, 0xd5, 0x99,
0x17, 0x51, 0xc1, 0x8a, 0x76, 0xa0, 0x0e, 0x58, 0xd8, 0xda, 0x26, 0xa6, 0xbd, 0x45, 0x5d, 0x8f,
0xd4, 0xcd, 0x4d, 0xdb, 0x21, 0x4c, 0xbf, 0x2a, 0x5c, 0x5c, 0x82, 0x13, 0x4d, 0xc0, 0x4b, 0x21,
0xba, 0x08, 0x60, 0x12, 0xe8, 0x02, 0x52, 0xd8, 0x83, 0xc9, 0xde, 0x42, 0x45, 0x33, 0xda, 0x37,
0x14, 0xf5, 0x72, 0xd3, 0x73, 0xb7, 0xa0, 0x98, 0x31, 0xfd, 0x66, 0x1d, 0x73, 0x22, 0x17, 0x08,
0x4f, 0x08, 0xdf, 0xd7, 0xe1, 0x7e, 0x1b, 0x6b, 0x6d, 0x08, 0x25, 0xb9, 0x18, 0x08, 0x8b, 0xec,
0x0e, 0xb8, 0x44, 0xe7, 0x25, 0x29, 0x10, 0xca, 0x4b, 0xa8, 0x93, 0x45, 0xed, 0x1d, 0x45, 0x1d,
0x76, 0xec, 0x86, 0xcd, 0xcd, 0x1a, 0xa6, 0xf5, 0x3d, 0xbb, 0xce, 0xb7, 0x4d, 0x9b, 0x9a, 0x0e,
0xa6, 0xfa, 0xa8, 0x08, 0xc9, 0x8a, 0x28, 0x1e, 0x41, 0x63, 0x2e, 0x56, 0x58, 0xa2, 0xcb, 0x98,
0xa6, 0x05, 0x7f, 0x11, 0xfb, 0x98, 0xb0, 0x94, 0x99, 0xd2, 0xde, 0x56, 0x54, 0xad, 0x61, 0x53,
0x73, 0xdb, 0x6d, 0x10, 0xb3, 0x6e, 0xb3, 0x1d, 0x73, 0xd3, 0x23, 0x44, 0x37, 0xc6, 0x94, 0xf1,
0xee, 0x99, 0x9e, 0x89, 0xf0, 0x65, 0x6d, 0x62, 0xcd, 0x7e, 0x93, 0xcc, 0xbd, 0xfc, 0x41, 0x60,
0x74, 0xc1, 0x4e, 0x6c, 0xd8, 0xf4, 0x55, 0xb7, 0x41, 0x16, 0x6c, 0xb6, 0xb3, 0xe8, 0x11, 0x92,
0xac, 0x8e, 0x9c, 0x5c, 0xde, 0x07, 0x63, 0xd7, 0x81, 0xc8, 0xd9, 0xe9, 0xb1, 0xeb, 0x28, 0xdf,
0x5d, 0xbb, 0xaf, 0xa8, 0x3d, 0xf1, 0x7a, 0x17, 0xc7, 0xce, 0x98, 0x38, 0x76, 0x7e, 0x2f, 0xae,
0x3c, 0xf1, 0xa2, 0x0d, 0x0f, 0x9f, 0x6e, 0x2f, 0x6d, 0xb6, 0x03, 0x63, 0x21, 0xae, 0x38, 0x62,
0x59, 0xc9, 0x41, 0x14, 0xed, 0x00, 0x96, 0x3b, 0x53, 0x1a, 0x84, 0xe3, 0x89, 0xcf, 0x32, 0x97,
0x42, 0xee, 0xce, 0x98, 0xcd, 0x36, 0x4f, 0x8f, 0xaa, 0xe3, 0x0f, 0x6b, 0x0a, 0xee, 0x47, 0x12,
0x5f, 0x94, 0xda, 0xf1, 0x1c, 0xed, 0x75, 0xb5, 0x1f, 0x3b, 0x7b, 0x50, 0x7d, 0x85, 0xaf, 0x09,
0x94, 0x70, 0xa6, 0x3f, 0x29, 0x1e, 0xf1, 0xa0, 0xe8, 0xed, 0x0b, 0x41, 0x51, 0x95, 0xdf, 0x21,
0x1c, 0x16, 0xfe, 0x60, 0x98, 0x61, 0x32, 0xf2, 0x0a, 0xca, 0x2b, 0x6a, 0xff, 0x51, 0xd4, 0x71,
0x77, 0x97, 0x78, 0x7b, 0x9e, 0xcd, 0x21, 0x71, 0x34, 0x5c, 0x4e, 0xcc, 0x3a, 0xd9, 0xb5, 0x2d,
0x62, 0x52, 0xdc, 0x20, 0x0c, 0xd2, 0x69, 0x54, 0x08, 0xe9, 0x95, 0xf4, 0x79, 0x69, 0xe4, 0x6e,
0xdc, 0x09, 0x89, 0x3e, 0x0b, 0x64, 0xf7, 0x0e, 0xa8, 0xb7, 0x02, 0xe3, 0x9a, 0x5b, 0x80, 0x6c,
0x8b, 0x08, 0xf4, 0x2e, 0x9d, 0x0f, 0x4d, 0xb5, 0x03, 0xe3, 0x7f, 0x05, 0xc1, 0x87, 0xd0, 0xed,
0xbc, 0x28, 0xa1, 0x8a, 0xeb, 0xc0, 0x03, 0x3d, 0x0c, 0x0b, 0xed, 0x0b, 0xea, 0x10, 0xa4, 0x31,
0xd3, 0xa6, 0x75, 0xb2, 0x6f, 0xc2, 0x4a, 0xae, 0x39, 0xae, 0xb5, 0xc3, 0xf4, 0x6b, 0x62, 0x4b,
0xc3, 0xa2, 0xd1, 0x40, 0x61, 0x09, 0xf0, 0x15, 0x9b, 0xce, 0x09, 0x34, 0x79, 0xb5, 0x2d, 0x42,
0xa5, 0x37, 0xe5, 0xf0, 0xfe, 0x8b, 0x4a, 0x2c, 0x69, 0x7f, 0x83, 0xeb, 0x2e, 0xc5, 0xd6, 0x0e,
0xa9, 0x9b, 0xd4, 0xe5, 0xf6, 0xa6, 0x6d, 0xe1, 0xf0, 0xfd, 0xa1, 0xce, 0xf4, 0xaa, 0x98, 0xdf,
0x77, 0x21, 0xdc, 0xc3, 0x1b, 0xa1, 0xd2, 0x1d, 0x49, 0x67, 0x69, 0x01, 0xa2, 0x3d, 0xec, 0x97,
0x22, 0xed, 0xc0, 0xb8, 0x12, 0xa6, 0xf6, 0x32, 0x58, 0xbc, 0x55, 0x96, 0x22, 0xed, 0xa3, 0x6a,
0x07, 0x8b, 0x87, 0xc7, 0xd5, 0x0e, 0x2c, 0x50, 0x69, 0x8f, 0x3a, 0xd3, 0x90, 0x7a, 0x91, 0x7b,
0x78, 0x73, 0xd3, 0xb6, 0x4c, 0xcb, 0xc1, 0x8c, 0xe9, 0xd7, 0x45, 0x58, 0x5f, 0x80, 0x7a, 0x39,
0x02, 0xe6, 0x41, 0xde, 0x0e, 0x0c, 0x2d, 0x0c, 0xa8, 0x24, 0x4c, 0x1e, 0x6a, 0x32, 0xaa, 0xda,
0x3d, 0x75, 0x20, 0x0a, 0xb1, 0xb9, 0xe9, 0x3a, 0x75, 0xe2, 0x99, 0x4d, 0xcc, 0xb7, 0xf5, 0xa7,
0xc4, 0xae, 0x9f, 0x85, 0x63, 0x20, 0x82, 0x17, 0x05, 0xba, 0x8a, 0xf9, 0x76, 0x92, 0x62, 0x0a,
0x88, 0x34, 0x5d, 0x6f, 0xc1, 0xb2, 0x52, 0xde, 0x42, 0xc5, 0xee, 0xda, 0x8e, 0x7a, 0x89, 0x11,
0x6e, 0x3a, 0xee, 0x9e, 0xd9, 0xf4, 0x6c, 0xd7, 0xb3, 0xf9, 0x81, 0xfe, 0xb4, 0xd8, 0x0a, 0x30,
0x5e, 0x2f, 0x23, 0x7c, 0xd9, 0xdd, 0x5b, 0x8d, 0x90, 0x64, 0xb0, 0xac, 0xb8, 0xe3, 0xc5, 0x22,
0xd7, 0x5d, 0x7b, 0x4f, 0x51, 0x87, 0x1b, 0x78, 0x3f, 0x76, 0xce, 0x72, 0xa9, 0xe5, 0x7b, 0x1e,
0xa1, 0xd6, 0x81, 0x3e, 0x2e, 0xa2, 0xc7, 0xc4, 0x13, 0x0b, 0xde, 0x5b, 0xc1, 0xfb, 0x21, 0xc7,
0xf9, 0x54, 0x05, 0x0e, 0xfa, 0x46, 0x89, 0x3c, 0x39, 0xe8, 0xcb, 0xc0, 0x38, 0xd0, 0xe2, 0x4d,
0xa4, 0xdc, 0x2e, 0x2a, 0xb5, 0xaa, 0x7d, 0xa8, 0xa8, 0x03, 0x96, 0x87, 0xd9, 0x76, 0xee, 0xe6,
0xff, 0x8c, 0x98, 0x8c, 0xf7, 0xc5, 0xcd, 0x7f, 0x3e, 0xbe, 0xf9, 0x5b, 0xd1, 0xcd, 0x7f, 0x31,
0x3c, 0x91, 0xa1, 0x5b, 0x7a, 0x07, 0x2f, 0x4d, 0xbe, 0x42, 0xa7, 0x78, 0x9b, 0x17, 0x62, 0x58,
0xc1, 0xfd, 0x05, 0x23, 0x50, 0x13, 0x58, 0x51, 0x4d, 0x50, 0x7d, 0x18, 0x33, 0x50, 0x15, 0xcc,
0x87, 0x55, 0x41, 0xce, 0x98, 0xe7, 0x68, 0x3f, 0x50, 0xd4, 0x91, 0xbc, 0x7b, 0xf1, 0x63, 0xcc,
0xb3, 0x62, 0xfe, 0xed, 0x93, 0xc0, 0xb8, 0x30, 0x8f, 0xa4, 0xef, 0x08, 0x59, 0x2b, 0xf9, 0xef,
0x08, 0xa5, 0x68, 0xa7, 0xa5, 0x71, 0x78, 0x5c, 0x4d, 0x6d, 0xa3, 0x72, 0xcb, 0xda, 0x97, 0x14,
0x75, 0x98, 0x71, 0x9f, 0x9a, 0x70, 0x5f, 0xc2, 0x8e, 0xbd, 0x4b, 0xcc, 0xf0, 0x16, 0xcc, 0xf4,
0xe7, 0x92, 0x5b, 0xe8, 0x00, 0x68, 0xbc, 0x16, 0x2b, 0xac, 0x01, 0xbe, 0x96, 0xdc, 0x8d, 0x4a,
0xb0, 0xec, 0x15, 0x5e, 0x4a, 0x63, 0x67, 0xa7, 0x6f, 0x4d, 0xa1, 0x32, 0x6b, 0x50, 0x19, 0xe7,
0x68, 0x40, 0x36, 0x65, 0xfa, 0xf3, 0x82, 0xc4, 0x27, 0x61, 0x5f, 0x66, 0xba, 0xad, 0xd8, 0x34,
0xad, 0x20, 0x0a, 0x88, 0x7c, 0x33, 0xcc, 0xa4, 0xd1, 0x99, 0x29, 0x54, 0xb4, 0x03, 0x77, 0xf1,
0x1e, 0x31, 0x7a, 0xfc, 0x79, 0xeb, 0x05, 0x91, 0x39, 0xeb, 0x27, 0x81, 0xd1, 0x8b, 0xf0, 0xde,
0x1a, 0xf7, 0xa5, 0x0f, 0x5b, 0xdd, 0x2c, 0x6d, 0x26, 0x4f, 0x50, 0xa9, 0xec, 0x81, 0x1f, 0xdf,
0x72, 0x16, 0x91, 0x6c, 0x4f, 0xdb, 0x55, 0xfb, 0xa0, 0xd8, 0xac, 0x61, 0x46, 0xcc, 0xf0, 0x4b,
0xa3, 0x3e, 0x31, 0xa6, 0x8c, 0xf7, 0xce, 0xf4, 0xc6, 0x97, 0xa1, 0x75, 0x21, 0x15, 0x6f, 0x86,
0xbd, 0xb1, 0x6a, 0x28, 0x4b, 0xd3, 0x54, 0x46, 0x5c, 0x19, 0x8b, 0x4a, 0x8f, 0x68, 0x79, 0xbc,
0x7d, 0x5c, 0x55, 0x50, 0xae, 0xab, 0xf6, 0xcd, 0x33, 0xea, 0x35, 0xc8, 0x1a, 0x49, 0xba, 0x80,
0xd2, 0xd5, 0x72, 0x1b, 0xb0, 0x64, 0x3d, 0x72, 0xcf, 0x27, 0x8c, 0x9b, 0x3b, 0x76, 0x4d, 0x9f,
0x14, 0xd3, 0xf1, 0x27, 0x25, 0xfa, 0x42, 0xb9, 0x82, 0xf7, 0xe7, 0x97, 0x50, 0x88, 0xbf, 0x66,
0xcf, 0xb5, 0x02, 0xc3, 0x68, 0xe0, 0xfd, 0x64, 0x8b, 0xf3, 0xa5, 0xc8, 0x46, 0xaa, 0x92, 0x9c,
0x7d, 0x0f, 0xd0, 0x93, 0xca, 0xbe, 0x07, 0x9a, 0x7c, 0xb0, 0x4a, 0xf4, 0xcd, 0x33, 0x47, 0x17,
0x3d, 0xa0, 0x5b, 0x4d, 0xfb, 0xbc, 0xda, 0xe3, 0x37, 0x69, 0x33, 0xd9, 0xb5, 0x3f, 0x59, 0x14,
0xdb, 0xf6, 0x53, 0x27, 0x81, 0x31, 0xb4, 0x40, 0x9a, 0x1e, 0xb1, 0x30, 0x27, 0xf5, 0x8d, 0x55,
0xba, 0x9a, 0x6e, 0x61, 0xe5, 0x85, 0xf4, 0xec, 0x6c, 0xd2, 0x66, 0x04, 0x3c, 0xef, 0x36, 0x6c,
0x38, 0xbf, 0xf9, 0x41, 0xe5, 0xf0, 0xb8, 0x5a, 0xde, 0x59, 0x57, 0x50, 0xb7, 0xd4, 0x45, 0xfb,
0x91, 0x12, 0x0d, 0x1f, 0xbf, 0x8c, 0xbe, 0xb7, 0x28, 0xc2, 0xff, 0x36, 0x84, 0x7f, 0x30, 0x6b,
0x22, 0x79, 0x25, 0x15, 0xc3, 0x8f, 0x25, 0xc3, 0xcb, 0xaf, 0x9b, 0x12, 0x87, 0x34, 0xba, 0x97,
0x3b, 0x6b, 0x1d, 0x1e, 0x57, 0x4b, 0x47, 0xd1, 0x15, 0xa4, 0xa6, 0xbd, 0xb4, 0x5f, 0x2a, 0x6a,
0xaf, 0xa0, 0x99, 0xbe, 0x81, 0xfe, 0x34, 0x24, 0xfa, 0x55, 0x71, 0xf5, 0xc8, 0x9a, 0x90, 0xde,
0x43, 0x05, 0xd5, 0x4a, 0x42, 0x35, 0xfb, 0x82, 0x59, 0x4a, 0xf6, 0xea, 0xc7, 0xe9, 0xc1, 0x05,
0xa3, 0x7c, 0x2c, 0x5d, 0x41, 0x3d, 0x72, 0xcf, 0x94, 0x72, 0xfa, 0xd2, 0xf9, 0x7e, 0x67, 0xca,
0xd2, 0xab, 0x67, 0x8e, 0x72, 0xf6, 0x9d, 0xb2, 0x33, 0xe5, 0x4e, 0x7a, 0x45, 0xca, 0xb1, 0x66,
0x4c, 0x39, 0x79, 0xd8, 0xdc, 0x54, 0xc3, 0x2f, 0x2a, 0x49, 0x8e, 0xfa, 0xd9, 0xa2, 0x48, 0x52,
0x9f, 0xc8, 0xf2, 0x15, 0x1f, 0x25, 0xd2, 0x64, 0x25, 0x2d, 0x46, 0x2f, 0x45, 0x24, 0xa2, 0x30,
0x8e, 0x84, 0x30, 0x51, 0x17, 0x16, 0x4b, 0x32, 0xb3, 0x69, 0x71, 0xfd, 0xe7, 0x10, 0x22, 0x65,
0x6e, 0xe5, 0x24, 0x30, 0xae, 0xa6, 0x23, 0xae, 0x64, 0x0b, 0xaa, 0x55, 0x8b, 0x67, 0xe3, 0xd4,
0x28, 0xe0, 0xd9, 0xe1, 0xb5, 0xa2, 0x02, 0x24, 0xe4, 0xc1, 0x5c, 0x3a, 0x62, 0x16, 0xa6, 0x4c,
0xff, 0x45, 0x38, 0x4b, 0xeb, 0x39, 0x0a, 0xf2, 0x36, 0x5e, 0x03, 0xc5, 0x1c, 0x85, 0x02, 0x5e,
0x9c, 0x2a, 0xc1, 0xa4, 0xa0, 0x37, 0xf7, 0xca, 0x07, 0x1f, 0x8d, 0x76, 0x1d, 0x7f, 0x34, 0xda,
0xf5, 0xaf, 0x93, 0xd1, 0xae, 0xaf, 0xdf, 0x1f, 0xed, 0x7a, 0xf7, 0xfe, 0xa8, 0x72, 0x7c, 0x7f,
0xb4, 0xeb, 0xaf, 0xf7, 0x47, 0xbb, 0xde, 0x78, 0x66, 0xcb, 0xe6, 0xdb, 0x7e, 0x6d, 0xc2, 0x72,
0x1b, 0x93, 0xc9, 0x05, 0x41, 0xfa, 0x95, 0xfe, 0x3d, 0xa4, 0x76, 0x5e, 0xfc, 0x1f, 0xe4, 0xc6,
0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xc7, 0xba, 0x90, 0x7b, 0x22, 0x00, 0x00,
}
func (m *OptionsConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.RawListenAddresses) > 0 {
for _, s := range m.RawListenAddresses {
l = len(s)
n += 1 + l + sovOptionsconfiguration(uint64(l))
}
}
if len(m.RawGlobalAnnServers) > 0 {
for _, s := range m.RawGlobalAnnServers {
l = len(s)
n += 1 + l + sovOptionsconfiguration(uint64(l))
}
}
if m.GlobalAnnEnabled {
n += 2
}
if m.LocalAnnEnabled {
n += 2
}
if m.LocalAnnPort != 0 {
n += 1 + sovOptionsconfiguration(uint64(m.LocalAnnPort))
}
l = len(m.LocalAnnMCAddr)
if l > 0 {
n += 1 + l + sovOptionsconfiguration(uint64(l))
}
if m.MaxSendKbps != 0 {
n += 1 + sovOptionsconfiguration(uint64(m.MaxSendKbps))
}
if m.MaxRecvKbps != 0 {
n += 1 + sovOptionsconfiguration(uint64(m.MaxRecvKbps))
}
if m.ReconnectIntervalS != 0 {
n += 1 + sovOptionsconfiguration(uint64(m.ReconnectIntervalS))
}
if m.RelaysEnabled {
n += 2
}
if m.RelayReconnectIntervalM != 0 {
n += 1 + sovOptionsconfiguration(uint64(m.RelayReconnectIntervalM))
}
if m.StartBrowser {
n += 2
}
if m.NATEnabled {
n += 2
}
if m.NATLeaseM != 0 {
n += 1 + sovOptionsconfiguration(uint64(m.NATLeaseM))
}
if m.NATRenewalM != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.NATRenewalM))
}
if m.NATTimeoutS != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.NATTimeoutS))
}
if m.URAccepted != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.URAccepted))
}
if m.URSeen != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.URSeen))
}
l = len(m.URUniqueID)
if l > 0 {
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
l = len(m.URURL)
if l > 0 {
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
if m.URPostInsecurely {
n += 3
}
if m.URInitialDelayS != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.URInitialDelayS))
}
if m.RestartOnWakeup {
n += 3
}
if m.AutoUpgradeIntervalH != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.AutoUpgradeIntervalH))
}
if m.UpgradeToPreReleases {
n += 3
}
if m.KeepTemporariesH != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.KeepTemporariesH))
}
if m.CacheIgnoredFiles {
n += 3
}
if m.ProgressUpdateIntervalS != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.ProgressUpdateIntervalS))
}
if m.LimitBandwidthInLan {
n += 3
}
l = m.MinHomeDiskFree.ProtoSize()
n += 2 + l + sovOptionsconfiguration(uint64(l))
l = len(m.ReleasesURL)
if l > 0 {
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
if len(m.AlwaysLocalNets) > 0 {
for _, s := range m.AlwaysLocalNets {
l = len(s)
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
}
if m.OverwriteRemoteDevNames {
n += 3
}
if m.TempIndexMinBlocks != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.TempIndexMinBlocks))
}
if len(m.UnackedNotificationIDs) > 0 {
for _, s := range m.UnackedNotificationIDs {
l = len(s)
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
}
if m.TrafficClass != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.TrafficClass))
}
l = len(m.DefaultFolderPath)
if l > 0 {
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
if m.SetLowPriority {
n += 3
}
if m.RawMaxFolderConcurrency != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.RawMaxFolderConcurrency))
}
l = len(m.CRURL)
if l > 0 {
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
if m.CREnabled {
n += 3
}
if m.StunKeepaliveStartS != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.StunKeepaliveStartS))
}
if m.StunKeepaliveMinS != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.StunKeepaliveMinS))
}
if len(m.RawStunServers) > 0 {
for _, s := range m.RawStunServers {
l = len(s)
n += 2 + l + sovOptionsconfiguration(uint64(l))
}
}
if m.DatabaseTuning != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.DatabaseTuning))
}
if m.RawMaxCIRequestKiB != 0 {
n += 2 + sovOptionsconfiguration(uint64(m.RawMaxCIRequestKiB))
}
if m.DeprecatedUPnPEnabled {
n += 4
}
if m.DeprecatedUPnPLeaseM != 0 {
n += 3 + sovOptionsconfiguration(uint64(m.DeprecatedUPnPLeaseM))
}
if m.DeprecatedUPnPRenewalM != 0 {
n += 3 + sovOptionsconfiguration(uint64(m.DeprecatedUPnPRenewalM))
}
if m.DeprecatedUPnPTimeoutS != 0 {
n += 3 + sovOptionsconfiguration(uint64(m.DeprecatedUPnPTimeoutS))
}
if len(m.DeprecatedRelayServers) > 0 {
for _, s := range m.DeprecatedRelayServers {
l = len(s)
n += 3 + l + sovOptionsconfiguration(uint64(l))
}
}
if m.DeprecatedMinHomeDiskFreePct != 0 {
n += 11
}
if m.DeprecatedMaxConcurrentScans != 0 {
n += 3 + sovOptionsconfiguration(uint64(m.DeprecatedMaxConcurrentScans))
}
return n
}
func sovOptionsconfiguration(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozOptionsconfiguration(x uint64) (n int) {
return sovOptionsconfiguration(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+13 -24
View File
@@ -6,30 +6,19 @@
package config
type PullOrder int
const (
OrderRandom PullOrder = iota // default is random
OrderAlphabetic
OrderSmallestFirst
OrderLargestFirst
OrderOldestFirst
OrderNewestFirst
)
func (o PullOrder) String() string {
switch o {
case OrderRandom:
case PullOrderRandom:
return "random"
case OrderAlphabetic:
case PullOrderAlphabetic:
return "alphabetic"
case OrderSmallestFirst:
case PullOrderSmallestFirst:
return "smallestFirst"
case OrderLargestFirst:
case PullOrderLargestFirst:
return "largestFirst"
case OrderOldestFirst:
case PullOrderOldestFirst:
return "oldestFirst"
case OrderNewestFirst:
case PullOrderNewestFirst:
return "newestFirst"
default:
return "unknown"
@@ -43,19 +32,19 @@ func (o PullOrder) MarshalText() ([]byte, error) {
func (o *PullOrder) UnmarshalText(bs []byte) error {
switch string(bs) {
case "random":
*o = OrderRandom
*o = PullOrderRandom
case "alphabetic":
*o = OrderAlphabetic
*o = PullOrderAlphabetic
case "smallestFirst":
*o = OrderSmallestFirst
*o = PullOrderSmallestFirst
case "largestFirst":
*o = OrderLargestFirst
*o = PullOrderLargestFirst
case "oldestFirst":
*o = OrderOldestFirst
*o = PullOrderOldestFirst
case "newestFirst":
*o = OrderNewestFirst
*o = PullOrderNewestFirst
default:
*o = OrderRandom
*o = PullOrderRandom
}
return nil
}
+87
View File
@@ -0,0 +1,87 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/pullorder.proto
package config
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type PullOrder int32
const (
PullOrderRandom PullOrder = 0
PullOrderAlphabetic PullOrder = 1
PullOrderSmallestFirst PullOrder = 2
PullOrderLargestFirst PullOrder = 3
PullOrderOldestFirst PullOrder = 4
PullOrderNewestFirst PullOrder = 5
)
var PullOrder_name = map[int32]string{
0: "PULL_ORDER_RANDOM",
1: "PULL_ORDER_ALPHABETIC",
2: "PULL_ORDER_SMALLEST_FIRST",
3: "PULL_ORDER_LARGEST_FIRST",
4: "PULL_ORDER_OLDEST_FIRST",
5: "PULL_ORDER_NEWEST_FIRST",
}
var PullOrder_value = map[string]int32{
"PULL_ORDER_RANDOM": 0,
"PULL_ORDER_ALPHABETIC": 1,
"PULL_ORDER_SMALLEST_FIRST": 2,
"PULL_ORDER_LARGEST_FIRST": 3,
"PULL_ORDER_OLDEST_FIRST": 4,
"PULL_ORDER_NEWEST_FIRST": 5,
}
func (PullOrder) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_2fa3f5222a7755bf, []int{0}
}
func init() {
proto.RegisterEnum("config.PullOrder", PullOrder_name, PullOrder_value)
}
func init() { proto.RegisterFile("lib/config/pullorder.proto", fileDescriptor_2fa3f5222a7755bf) }
var fileDescriptor_2fa3f5222a7755bf = []byte{
// 343 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xca, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2f, 0x28, 0xcd, 0xc9, 0xc9, 0x2f, 0x4a, 0x49, 0x2d,
0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0x88, 0x4b, 0x29, 0x17, 0xa5, 0x16, 0xe4,
0x17, 0xeb, 0x83, 0x05, 0x93, 0x4a, 0xd3, 0xf4, 0xd3, 0xf3, 0xd3, 0xf3, 0xc1, 0x1c, 0x30, 0x0b,
0xa2, 0x58, 0xeb, 0x32, 0x13, 0x17, 0x67, 0x40, 0x69, 0x4e, 0x8e, 0x3f, 0xc8, 0x00, 0x21, 0x2d,
0x2e, 0xc1, 0x80, 0x50, 0x1f, 0x9f, 0x78, 0xff, 0x20, 0x17, 0xd7, 0xa0, 0xf8, 0x20, 0x47, 0x3f,
0x17, 0x7f, 0x5f, 0x01, 0x06, 0x29, 0xe1, 0xae, 0xb9, 0x0a, 0xfc, 0x70, 0x55, 0x41, 0x89, 0x79,
0x29, 0xf9, 0xb9, 0x42, 0x46, 0x5c, 0xa2, 0x48, 0x6a, 0x1d, 0x7d, 0x02, 0x3c, 0x1c, 0x9d, 0x5c,
0x43, 0x3c, 0x9d, 0x05, 0x18, 0xa5, 0xc4, 0xbb, 0xe6, 0x2a, 0x08, 0xc3, 0xd5, 0x3b, 0xe6, 0x14,
0x64, 0x24, 0x26, 0xa5, 0x96, 0x64, 0x26, 0x0b, 0x59, 0x72, 0x49, 0x22, 0xe9, 0x09, 0xf6, 0x75,
0xf4, 0xf1, 0x71, 0x0d, 0x0e, 0x89, 0x77, 0xf3, 0x0c, 0x0a, 0x0e, 0x11, 0x60, 0x92, 0x92, 0xea,
0x9a, 0xab, 0x20, 0x06, 0xd7, 0x17, 0x9c, 0x9b, 0x98, 0x93, 0x93, 0x5a, 0x5c, 0xe2, 0x96, 0x59,
0x54, 0x5c, 0x22, 0x64, 0xce, 0x25, 0x81, 0xa4, 0xd5, 0xc7, 0x31, 0xc8, 0x1d, 0xa1, 0x93, 0x59,
0x4a, 0xb2, 0x6b, 0xae, 0x82, 0x28, 0x5c, 0xa7, 0x4f, 0x62, 0x51, 0x3a, 0x5c, 0xa3, 0x29, 0x97,
0x38, 0x92, 0x46, 0x7f, 0x1f, 0x17, 0x84, 0x3e, 0x16, 0x29, 0x89, 0xae, 0xb9, 0x0a, 0x22, 0x70,
0x7d, 0xfe, 0x39, 0x29, 0x38, 0xb4, 0xf9, 0xb9, 0x86, 0x23, 0xb4, 0xb1, 0xa2, 0x69, 0xf3, 0x4b,
0x2d, 0x87, 0x69, 0x93, 0x62, 0x59, 0xb1, 0x44, 0x8e, 0xc1, 0xc9, 0xfd, 0xc4, 0x43, 0x39, 0x86,
0x0b, 0x0f, 0xe5, 0x18, 0x5e, 0x3c, 0x92, 0x63, 0x98, 0xf0, 0x58, 0x8e, 0x61, 0xc1, 0x63, 0x39,
0xc6, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28,
0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x2f, 0xae, 0xcc, 0x4b, 0x2e, 0xc9, 0xc8, 0xcc, 0x4b, 0x47,
0x62, 0x21, 0xe2, 0x36, 0x89, 0x0d, 0x1c, 0x4b, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x34,
0x1f, 0xbc, 0x31, 0xf0, 0x01, 0x00, 0x00,
}
-5
View File
@@ -14,11 +14,6 @@ import (
"github.com/syncthing/syncthing/lib/fs"
)
type Size struct {
Value float64 `json:"value" xml:",chardata"`
Unit string `json:"unit" xml:"unit,attr"`
}
func ParseSize(s string) (Size, error) {
s = strings.TrimSpace(s)
if len(s) == 0 {
+101
View File
@@ -0,0 +1,101 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/size.proto
package config
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type Size struct {
Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value" xml:",chardata"`
Unit string `protobuf:"bytes,2,opt,name=unit,proto3" json:"unit" xml:"unit,attr"`
}
func (m *Size) Reset() { *m = Size{} }
func (*Size) ProtoMessage() {}
func (*Size) Descriptor() ([]byte, []int) {
return fileDescriptor_4d75cb8f619bd299, []int{0}
}
func (m *Size) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Size.Unmarshal(m, b)
}
func (m *Size) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Size.Marshal(b, m, deterministic)
}
func (m *Size) XXX_Merge(src proto.Message) {
xxx_messageInfo_Size.Merge(m, src)
}
func (m *Size) XXX_Size() int {
return xxx_messageInfo_Size.Size(m)
}
func (m *Size) XXX_DiscardUnknown() {
xxx_messageInfo_Size.DiscardUnknown(m)
}
var xxx_messageInfo_Size proto.InternalMessageInfo
func init() {
proto.RegisterType((*Size)(nil), "config.Size")
}
func init() { proto.RegisterFile("lib/config/size.proto", fileDescriptor_4d75cb8f619bd299) }
var fileDescriptor_4d75cb8f619bd299 = []byte{
// 246 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcd, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2f, 0xce, 0xac, 0x4a, 0xd5, 0x2b, 0x28, 0xca, 0x2f,
0xc9, 0x17, 0x62, 0x83, 0x08, 0x49, 0x29, 0x17, 0xa5, 0x16, 0xe4, 0x17, 0xeb, 0x83, 0x05, 0x93,
0x4a, 0xd3, 0xf4, 0xd3, 0xf3, 0xd3, 0xf3, 0xc1, 0x1c, 0x30, 0x0b, 0xa2, 0x58, 0x8a, 0x33, 0xb5,
0xa2, 0x04, 0xc2, 0x54, 0xea, 0x66, 0xe4, 0x62, 0x09, 0xce, 0xac, 0x4a, 0x15, 0xb2, 0xe7, 0x62,
0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60, 0x54, 0x60, 0xd4, 0x60, 0x74, 0xd2, 0x7c, 0x75, 0x4f,
0x1e, 0x22, 0xf0, 0xe9, 0x9e, 0x3c, 0x7f, 0x45, 0x6e, 0x8e, 0x95, 0x92, 0x4e, 0x72, 0x46, 0x62,
0x51, 0x4a, 0x62, 0x49, 0xa2, 0xd2, 0xab, 0xf3, 0x2a, 0x9c, 0x70, 0x5e, 0x10, 0x44, 0x99, 0x90,
0x0d, 0x17, 0x4b, 0x69, 0x5e, 0x66, 0x89, 0x04, 0x93, 0x02, 0xa3, 0x06, 0xa7, 0x93, 0xc6, 0xab,
0x7b, 0xf2, 0x60, 0x3e, 0x5c, 0x3b, 0x88, 0xa3, 0x93, 0x58, 0x52, 0x52, 0x04, 0xd6, 0x0e, 0xe7,
0x05, 0x81, 0x55, 0x59, 0xb1, 0xcc, 0x58, 0x20, 0xcf, 0xe0, 0xe4, 0x7e, 0xe2, 0xa1, 0x1c, 0xc3,
0x85, 0x87, 0x72, 0x0c, 0x2f, 0x1e, 0xc9, 0x31, 0x4c, 0x78, 0x2c, 0xc7, 0xb0, 0xe0, 0xb1, 0x1c,
0xe3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x69, 0xa6, 0x67, 0x96, 0x64, 0x94,
0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x17, 0x57, 0xe6, 0x25, 0x97, 0x64, 0x64, 0xe6, 0xa5, 0x23,
0xb1, 0x10, 0x21, 0x93, 0xc4, 0x06, 0xf6, 0x9d, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x67, 0x60,
0xd6, 0x9a, 0x2e, 0x01, 0x00, 0x00,
}
func (m *Size) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Value != 0 {
n += 9
}
l = len(m.Unit)
if l > 0 {
n += 1 + l + sovSize(uint64(l))
}
return n
}
func sovSize(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozSize(x uint64) (n int) {
return sovSize(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
-9
View File
@@ -6,15 +6,6 @@
package config
type Tuning int
const (
// N.b. these constants must match those in lib/db.Tuning!
TuningAuto Tuning = iota // default is auto
TuningSmall
TuningLarge
)
func (t Tuning) String() string {
switch t {
case TuningAuto:
+70
View File
@@ -0,0 +1,70 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/tuning.proto
package config
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type Tuning int32
const (
TuningAuto Tuning = 0
TuningSmall Tuning = 1
TuningLarge Tuning = 2
)
var Tuning_name = map[int32]string{
0: "TUNING_AUTO",
1: "TUNING_SMALL",
2: "TUNING_LARGE",
}
var Tuning_value = map[string]int32{
"TUNING_AUTO": 0,
"TUNING_SMALL": 1,
"TUNING_LARGE": 2,
}
func (Tuning) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_204cfa1615fdfefd, []int{0}
}
func init() {
proto.RegisterEnum("config.Tuning", Tuning_name, Tuning_value)
}
func init() { proto.RegisterFile("lib/config/tuning.proto", fileDescriptor_204cfa1615fdfefd) }
var fileDescriptor_204cfa1615fdfefd = []byte{
// 224 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcf, 0xc9, 0x4c, 0xd2,
0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2f, 0x29, 0xcd, 0xcb, 0xcc, 0x4b, 0xd7, 0x2b, 0x28,
0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0x08, 0x4a, 0x29, 0x17, 0xa5, 0x16, 0xe4, 0x17, 0xeb, 0x83,
0x05, 0x93, 0x4a, 0xd3, 0xf4, 0xd3, 0xf3, 0xd3, 0xf3, 0xc1, 0x1c, 0x30, 0x0b, 0xa2, 0x58, 0xab,
0x94, 0x8b, 0x2d, 0x04, 0xac, 0x59, 0x48, 0x9e, 0x8b, 0x3b, 0x24, 0xd4, 0xcf, 0xd3, 0xcf, 0x3d,
0xde, 0x31, 0x34, 0xc4, 0x5f, 0x80, 0x41, 0x8a, 0xaf, 0x6b, 0xae, 0x02, 0x17, 0x44, 0xd2, 0xb1,
0xb4, 0x24, 0x5f, 0x48, 0x91, 0x8b, 0x07, 0xaa, 0x20, 0xd8, 0xd7, 0xd1, 0xc7, 0x47, 0x80, 0x51,
0x8a, 0xbf, 0x6b, 0xae, 0x02, 0x37, 0x44, 0x45, 0x70, 0x6e, 0x62, 0x4e, 0x0e, 0x92, 0x12, 0x1f,
0xc7, 0x20, 0x77, 0x57, 0x01, 0x26, 0x64, 0x25, 0x3e, 0x89, 0x45, 0xe9, 0xa9, 0x52, 0x2c, 0x2b,
0x96, 0xc8, 0x31, 0x38, 0xb9, 0x9f, 0x78, 0x28, 0xc7, 0x70, 0xe1, 0xa1, 0x1c, 0xc3, 0x8b, 0x47,
0x72, 0x0c, 0x13, 0x1e, 0xcb, 0x31, 0x2c, 0x78, 0x2c, 0xc7, 0x78, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d,
0xc7, 0x72, 0x0c, 0x51, 0x9a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa,
0xc5, 0x95, 0x79, 0xc9, 0x25, 0x19, 0x99, 0x79, 0xe9, 0x48, 0x2c, 0x84, 0xcf, 0x93, 0xd8, 0xc0,
0xde, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xdf, 0xc4, 0xd9, 0x0e, 0x01, 0x00, 0x00,
}
-7
View File
@@ -14,13 +14,6 @@ import (
"github.com/syncthing/syncthing/lib/util"
)
// VersioningConfiguration is used in the code and for JSON serialization
type VersioningConfiguration struct {
Type string `json:"type"`
Params map[string]string `json:"params"`
CleanupIntervalS int `json:"cleanupIntervalS" default:"3600"`
}
// internalVersioningConfiguration is used in XML serialization
type internalVersioningConfiguration struct {
Type string `xml:"type,attr,omitempty"`
+122
View File
@@ -0,0 +1,122 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/config/versioningconfiguration.proto
package config
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
_ "github.com/syncthing/syncthing/proto/ext"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
// VersioningConfiguration is used in the code and for JSON serialization
type VersioningConfiguration struct {
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type" `
Params map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"params" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
CleanupIntervalS int `protobuf:"varint,3,opt,name=cleanup_interval_s,json=cleanupIntervalS,proto3,casttype=int" json:"cleanupIntervalS" default:"3600"`
}
func (m *VersioningConfiguration) Reset() { *m = VersioningConfiguration{} }
func (m *VersioningConfiguration) String() string { return proto.CompactTextString(m) }
func (*VersioningConfiguration) ProtoMessage() {}
func (*VersioningConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_95ba6bdb22ffea81, []int{0}
}
func (m *VersioningConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VersioningConfiguration.Unmarshal(m, b)
}
func (m *VersioningConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VersioningConfiguration.Marshal(b, m, deterministic)
}
func (m *VersioningConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_VersioningConfiguration.Merge(m, src)
}
func (m *VersioningConfiguration) XXX_Size() int {
return xxx_messageInfo_VersioningConfiguration.Size(m)
}
func (m *VersioningConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_VersioningConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_VersioningConfiguration proto.InternalMessageInfo
func init() {
proto.RegisterType((*VersioningConfiguration)(nil), "config.VersioningConfiguration")
proto.RegisterMapType((map[string]string)(nil), "config.VersioningConfiguration.ParametersEntry")
}
func init() {
proto.RegisterFile("lib/config/versioningconfiguration.proto", fileDescriptor_95ba6bdb22ffea81)
}
var fileDescriptor_95ba6bdb22ffea81 = []byte{
// 383 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0xcf, 0x8b, 0x9b, 0x40,
0x18, 0x1d, 0x63, 0x22, 0x64, 0xd2, 0x5f, 0x78, 0xa9, 0x04, 0xea, 0x48, 0xea, 0xc1, 0x5e, 0x34,
0x34, 0xb4, 0x94, 0x1c, 0x2d, 0xa5, 0xf4, 0x56, 0x52, 0x28, 0xb4, 0x97, 0x60, 0xec, 0xc4, 0x0c,
0x35, 0xa3, 0xe8, 0x18, 0xea, 0xb1, 0x87, 0x42, 0x8f, 0xed, 0xfe, 0x05, 0xfb, 0xe7, 0xe4, 0x96,
0x1c, 0xf7, 0x34, 0x90, 0x78, 0x59, 0x3c, 0xe6, 0x98, 0xd3, 0xe2, 0x28, 0xd9, 0xb0, 0xcb, 0xde,
0xde, 0x7b, 0xdf, 0x7b, 0xdf, 0x93, 0xcf, 0x81, 0x56, 0x48, 0x66, 0x8e, 0x1f, 0xd1, 0x39, 0x09,
0x9c, 0x15, 0x4e, 0x52, 0x12, 0x51, 0x42, 0x83, 0x5a, 0xc8, 0x12, 0x8f, 0x91, 0x88, 0xda, 0x71,
0x12, 0xb1, 0x48, 0x55, 0x6a, 0xb1, 0xdf, 0xc5, 0xbf, 0x58, 0x2d, 0x0d, 0xfe, 0xc8, 0xf0, 0xf9,
0xd7, 0x53, 0xe8, 0xfd, 0x79, 0x48, 0x35, 0x60, 0x9b, 0xe5, 0x31, 0xd6, 0x24, 0x43, 0xb2, 0xba,
0xee, 0xa3, 0x92, 0x23, 0xc1, 0x0f, 0x1c, 0x81, 0x89, 0x40, 0xea, 0x6f, 0x09, 0xc2, 0xd8, 0x4b,
0xbc, 0x25, 0x66, 0x38, 0x49, 0xb5, 0x96, 0x21, 0x5b, 0xbd, 0xd7, 0x8e, 0x5d, 0xd7, 0xd8, 0x0f,
0xec, 0xb5, 0x3f, 0x9f, 0x12, 0x1f, 0x28, 0x4b, 0x72, 0x77, 0xb8, 0xe6, 0x08, 0xec, 0x39, 0x52,
0xc4, 0x20, 0x2d, 0x39, 0x52, 0xc4, 0xd2, 0xb4, 0x6a, 0x3a, 0x6c, 0xcc, 0x86, 0x5d, 0x6c, 0xcd,
0xc6, 0x31, 0x39, 0x2b, 0x55, 0x7d, 0xa8, 0xfa, 0x21, 0xf6, 0x68, 0x16, 0x4f, 0x09, 0x65, 0x38,
0x59, 0x79, 0xe1, 0x34, 0xd5, 0x64, 0x43, 0xb2, 0x3a, 0xee, 0x9b, 0x92, 0xa3, 0x67, 0xcd, 0xf4,
0x53, 0x33, 0xfc, 0x72, 0xe0, 0xe8, 0xc9, 0x0f, 0x3c, 0xf7, 0xb2, 0x90, 0x8d, 0x07, 0xa3, 0xb7,
0xc3, 0xe1, 0xe0, 0xc8, 0x91, 0x4c, 0x28, 0x3b, 0x6e, 0xcc, 0x76, 0xc5, 0x27, 0xf7, 0x22, 0xfd,
0x6f, 0xf0, 0xe9, 0x9d, 0xaf, 0x56, 0x5f, 0x40, 0xf9, 0x27, 0xce, 0x9b, 0xe3, 0xf4, 0x4a, 0x8e,
0x2a, 0x2a, 0x6e, 0x53, 0x01, 0xf5, 0x25, 0xec, 0xac, 0xbc, 0x30, 0xc3, 0x5a, 0x4b, 0x18, 0x1e,
0x97, 0x1c, 0xd5, 0x82, 0xb0, 0xd4, 0x70, 0xdc, 0x7a, 0x27, 0x8d, 0xdb, 0x7f, 0xff, 0x9b, 0xc0,
0xfd, 0xb8, 0xde, 0xe9, 0x60, 0xbb, 0xd3, 0xc1, 0xf5, 0x5e, 0x07, 0xff, 0x0a, 0x1d, 0x5c, 0x16,
0xba, 0xb4, 0x2d, 0x74, 0x70, 0x55, 0xe8, 0xe0, 0xfb, 0xab, 0x80, 0xb0, 0x45, 0x36, 0xb3, 0xfd,
0x68, 0xe9, 0xa4, 0x39, 0xf5, 0xd9, 0x82, 0xd0, 0xe0, 0x0c, 0xdd, 0xbe, 0x80, 0x99, 0x22, 0xfe,
0xeb, 0xe8, 0x26, 0x00, 0x00, 0xff, 0xff, 0x08, 0x18, 0x19, 0x5e, 0x16, 0x02, 0x00, 0x00,
}
func (m *VersioningConfiguration) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Type)
if l > 0 {
n += 1 + l + sovVersioningconfiguration(uint64(l))
}
if len(m.Params) > 0 {
for k, v := range m.Params {
_ = k
_ = v
mapEntrySize := 1 + len(k) + sovVersioningconfiguration(uint64(len(k))) + 1 + len(v) + sovVersioningconfiguration(uint64(len(v)))
n += mapEntrySize + 1 + sovVersioningconfiguration(uint64(mapEntrySize))
}
}
if m.CleanupIntervalS != 0 {
n += 1 + sovVersioningconfiguration(uint64(m.CleanupIntervalS))
}
return n
}
func sovVersioningconfiguration(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozVersioningconfiguration(x uint64) (n int) {
return sovVersioningconfiguration(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
+5 -14
View File
@@ -54,7 +54,6 @@ func (noopWaiter) Wait() {}
// A Wrapper around a Configuration that manages loads, saves and published
// notifications of changes to registered Handlers
type Wrapper interface {
MyName() string
ConfigPath() string
RawCopy() Configuration
@@ -117,19 +116,19 @@ func Wrap(path string, cfg Configuration, evLogger events.Logger) Wrapper {
// Load loads an existing file on disk and returns a new configuration
// wrapper.
func Load(path string, myID protocol.DeviceID, evLogger events.Logger) (Wrapper, error) {
func Load(path string, myID protocol.DeviceID, evLogger events.Logger) (Wrapper, int, error) {
fd, err := os.Open(path)
if err != nil {
return nil, err
return nil, 0, err
}
defer fd.Close()
cfg, err := ReadXML(fd, myID)
cfg, originalVersion, err := ReadXML(fd, myID)
if err != nil {
return nil, err
return nil, 0, err
}
return Wrap(path, cfg, evLogger), nil
return Wrap(path, cfg, evLogger), originalVersion, nil
}
func (w *wrapper) ConfigPath() string {
@@ -447,14 +446,6 @@ func (w *wrapper) setRequiresRestart() {
atomic.StoreUint32(&w.requiresRestart, 1)
}
func (w *wrapper) MyName() string {
w.mut.Lock()
myID := w.cfg.MyID
w.mut.Unlock()
cfg, _ := w.Device(myID)
return cfg.Name
}
func (w *wrapper) AddOrUpdatePendingDevice(device protocol.DeviceID, name, address string) {
w.mut.Lock()
defer w.mut.Unlock()
+4 -2
View File
@@ -21,6 +21,7 @@ import (
// limiter manages a read and write rate limit, reacting to config changes
// as appropriate.
type limiter struct {
myID protocol.DeviceID
mu sync.Mutex
write *rate.Limiter
read *rate.Limiter
@@ -40,8 +41,9 @@ const (
maxSingleWriteSize = 8 << 10
)
func newLimiter(cfg config.Wrapper) *limiter {
func newLimiter(myId protocol.DeviceID, cfg config.Wrapper) *limiter {
l := &limiter{
myID: myId,
write: rate.NewLimiter(rate.Inf, limiterBurstSize),
read: rate.NewLimiter(rate.Inf, limiterBurstSize),
mu: sync.NewMutex(),
@@ -89,7 +91,7 @@ func (lim *limiter) processDevicesConfigurationLocked(from, to config.Configurat
// Mark devices which should not be removed, create new limiters if needed and assign new limiter rate
for _, dev := range to.Devices {
if dev.DeviceID == to.MyID {
if dev.DeviceID == lim.myID {
// This limiter was created for local device. Should skip this device
continue
}
+5 -5
View File
@@ -46,7 +46,7 @@ func initConfig() config.Wrapper {
func TestLimiterInit(t *testing.T) {
cfg := initConfig()
lim := newLimiter(cfg)
lim := newLimiter(device1, cfg)
device2ReadLimit := dev2Conf.MaxRecvKbps
device2WriteLimit := dev2Conf.MaxSendKbps
@@ -71,7 +71,7 @@ func TestLimiterInit(t *testing.T) {
func TestSetDeviceLimits(t *testing.T) {
cfg := initConfig()
lim := newLimiter(cfg)
lim := newLimiter(device1, cfg)
// should still be inf/inf because this is local device
dev1ReadLimit := rand.Int() % 100000
@@ -109,7 +109,7 @@ func TestSetDeviceLimits(t *testing.T) {
func TestRemoveDevice(t *testing.T) {
cfg := initConfig()
lim := newLimiter(cfg)
lim := newLimiter(device1, cfg)
waiter, _ := cfg.RemoveDevice(device3)
waiter.Wait()
@@ -129,7 +129,7 @@ func TestRemoveDevice(t *testing.T) {
func TestAddDevice(t *testing.T) {
cfg := initConfig()
lim := newLimiter(cfg)
lim := newLimiter(device1, cfg)
addedDevice, _ := protocol.DeviceIDFromString("XZJ4UNS-ENI7QGJ-J45DT6G-QSGML2K-6I4XVOG-NAZ7BF5-2VAOWNT-TFDOMQU")
addDevConf := config.NewDeviceConfiguration(addedDevice, "addedDevice")
@@ -160,7 +160,7 @@ func TestAddDevice(t *testing.T) {
func TestAddAndRemove(t *testing.T) {
cfg := initConfig()
lim := newLimiter(cfg)
lim := newLimiter(device1, cfg)
addedDevice, _ := protocol.DeviceIDFromString("XZJ4UNS-ENI7QGJ-J45DT6G-QSGML2K-6I4XVOG-NAZ7BF5-2VAOWNT-TFDOMQU")
addDevConf := config.NewDeviceConfiguration(addedDevice, "addedDevice")
+1 -1
View File
@@ -149,7 +149,7 @@ func NewService(cfg config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *t
conns: make(chan internalConn),
bepProtocolName: bepProtocolName,
tlsDefaultCommonName: tlsDefaultCommonName,
limiter: newLimiter(cfg),
limiter: newLimiter(myID, cfg),
natService: nat.NewService(myID, cfg),
evLogger: evLogger,
+2 -2
View File
@@ -4,8 +4,8 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at https://mozilla.org/MPL/2.0/.
//go:generate go run ../../script/protofmt.go structs.proto
//go:generate protoc -I ../../ -I . --gogofast_out=Mlib/protocol/bep.proto=github.com/syncthing/syncthing/lib/protocol:. structs.proto
//go:generate go run ../../proto/scripts/protofmt.go structs.proto
//go:generate protoc -I ../../ -I ../../proto -I . --gogofast_out=Mlib/protocol/bep.proto=github.com/syncthing/syncthing/lib/protocol:. structs.proto
package db
+1 -1
View File
@@ -4,7 +4,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at https://mozilla.org/MPL/2.0/.
//go:generate go run ../../script/protofmt.go local.proto
//go:generate go run ../../proto/scripts/protofmt.go local.proto
//go:generate protoc -I ../../ -I . --gogofast_out=. local.proto
package discover
@@ -6,17 +6,6 @@
package fs
type CopyRangeMethod int
const (
CopyRangeMethodStandard CopyRangeMethod = iota
CopyRangeMethodIoctl
CopyRangeMethodCopyFileRange
CopyRangeMethodSendFile
CopyRangeMethodDuplicateExtents
CopyRangeMethodAllWithFallback
)
func (o CopyRangeMethod) String() string {
switch o {
case CopyRangeMethodStandard:
+87
View File
@@ -0,0 +1,87 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/fs/copyrangemethod.proto
package fs
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type CopyRangeMethod int32
const (
CopyRangeMethodStandard CopyRangeMethod = 0
CopyRangeMethodIoctl CopyRangeMethod = 1
CopyRangeMethodCopyFileRange CopyRangeMethod = 2
CopyRangeMethodSendFile CopyRangeMethod = 3
CopyRangeMethodDuplicateExtents CopyRangeMethod = 4
CopyRangeMethodAllWithFallback CopyRangeMethod = 5
)
var CopyRangeMethod_name = map[int32]string{
0: "COPY_RANGE_METHOD_STANDARD",
1: "COPY_RANGE_METHOD_IOCTL",
2: "COPY_RANGE_METHOD_COPY_FILE_RANGE",
3: "COPY_RANGE_METHOD_SEND_FILE",
4: "COPY_RANGE_METHOD_DUPLICATE_EXTENTS",
5: "COPY_RANGE_METHOD_ALL_WITH_FALLBACK",
}
var CopyRangeMethod_value = map[string]int32{
"COPY_RANGE_METHOD_STANDARD": 0,
"COPY_RANGE_METHOD_IOCTL": 1,
"COPY_RANGE_METHOD_COPY_FILE_RANGE": 2,
"COPY_RANGE_METHOD_SEND_FILE": 3,
"COPY_RANGE_METHOD_DUPLICATE_EXTENTS": 4,
"COPY_RANGE_METHOD_ALL_WITH_FALLBACK": 5,
}
func (CopyRangeMethod) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_78e1061c3022e87e, []int{0}
}
func init() {
proto.RegisterEnum("fs.CopyRangeMethod", CopyRangeMethod_name, CopyRangeMethod_value)
}
func init() { proto.RegisterFile("lib/fs/copyrangemethod.proto", fileDescriptor_78e1061c3022e87e) }
var fileDescriptor_78e1061c3022e87e = []byte{
// 357 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0xbf, 0x4e, 0xc2, 0x40,
0x00, 0xc6, 0x0b, 0xa8, 0x43, 0x17, 0x9b, 0xc6, 0x04, 0x53, 0xc8, 0x59, 0x25, 0x2e, 0x0e, 0x30,
0x18, 0x27, 0x5d, 0x8e, 0xf6, 0x0a, 0x0d, 0x47, 0x21, 0x50, 0x83, 0xba, 0x34, 0xfd, 0x07, 0x6d,
0x3c, 0xda, 0x86, 0x1e, 0x89, 0xbc, 0x42, 0x27, 0x5f, 0xa0, 0x89, 0x9b, 0xaf, 0xe2, 0xc8, 0xe8,
0x8a, 0x5d, 0x7c, 0x0c, 0x43, 0x59, 0x4c, 0x61, 0xbb, 0xfb, 0xbe, 0xfc, 0x7e, 0xf9, 0x92, 0x3b,
0xb6, 0x4e, 0x7c, 0xab, 0x35, 0x8d, 0x5b, 0x76, 0x18, 0xad, 0x16, 0x66, 0x30, 0x73, 0xe7, 0x2e,
0xf5, 0x42, 0xa7, 0x19, 0x2d, 0x42, 0x1a, 0xf2, 0xe5, 0x69, 0x7c, 0xf3, 0x59, 0x61, 0x4f, 0xa5,
0x30, 0x5a, 0x8d, 0xb6, 0x6d, 0x3f, 0x6f, 0xf9, 0x7b, 0x56, 0x90, 0x06, 0xc3, 0x67, 0x63, 0x04,
0xb5, 0x0e, 0x32, 0xfa, 0x48, 0xef, 0x0e, 0x64, 0x63, 0xac, 0x43, 0x4d, 0x86, 0x23, 0x99, 0x63,
0x84, 0x5a, 0x92, 0x8a, 0xd5, 0x02, 0x34, 0xa6, 0x66, 0xe0, 0x98, 0x0b, 0x87, 0xbf, 0x63, 0xab,
0xfb, 0xb0, 0x3a, 0x90, 0x74, 0xcc, 0x95, 0x84, 0xf3, 0x24, 0x15, 0xcf, 0x0a, 0xa4, 0x1a, 0xda,
0x94, 0xf0, 0x1d, 0xf6, 0x72, 0x1f, 0xcb, 0x13, 0x45, 0xc5, 0x68, 0x17, 0x73, 0x65, 0x41, 0x4c,
0x52, 0xb1, 0x5e, 0x10, 0x6c, 0xaf, 0x8a, 0x4f, 0xdc, 0x3c, 0xe2, 0x1f, 0xd8, 0xda, 0x81, 0xf1,
0x48, 0x93, 0x73, 0x11, 0x57, 0x39, 0xbc, 0xde, 0x0d, 0x9c, 0xad, 0x82, 0xc7, 0x6c, 0x63, 0x9f,
0x96, 0x1f, 0x87, 0x58, 0x95, 0xa0, 0x8e, 0x0c, 0xf4, 0xa4, 0x23, 0x4d, 0x1f, 0x73, 0x47, 0x42,
0x23, 0x49, 0xc5, 0x8b, 0x82, 0x45, 0x5e, 0x46, 0xc4, 0xb7, 0x4d, 0xea, 0xa2, 0x37, 0xea, 0x06,
0x34, 0xe6, 0x7b, 0x87, 0x6c, 0x10, 0x63, 0x63, 0xa2, 0xea, 0x5d, 0x43, 0x81, 0x18, 0xb7, 0xa1,
0xd4, 0xe3, 0x8e, 0x85, 0xab, 0x24, 0x15, 0x41, 0xc1, 0x06, 0x09, 0x99, 0xf8, 0xd4, 0x53, 0x4c,
0x42, 0x2c, 0xd3, 0x7e, 0x6d, 0x4b, 0x5f, 0x1b, 0xc0, 0xac, 0x37, 0x80, 0xf9, 0xfd, 0x01, 0xcc,
0x7b, 0x06, 0x98, 0x8f, 0x0c, 0x94, 0xd6, 0x19, 0x60, 0xbe, 0x33, 0xc0, 0xbc, 0x5c, 0xcf, 0x7c,
0xea, 0x2d, 0xad, 0xa6, 0x1d, 0xce, 0x5b, 0xf1, 0x2a, 0xb0, 0xa9, 0xe7, 0x07, 0xb3, 0x7f, 0xa7,
0xdd, 0x47, 0xb0, 0x4e, 0xf2, 0x97, 0xbf, 0xfd, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x06, 0xa6, 0xad,
0xd0, 0x19, 0x02, 0x00, 0x00,
}
-7
View File
@@ -6,13 +6,6 @@
package fs
type FilesystemType int
const (
FilesystemTypeBasic FilesystemType = iota // default is basic
FilesystemTypeFake
)
func (t FilesystemType) String() string {
switch t {
case FilesystemTypeBasic:
+65
View File
@@ -0,0 +1,65 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: lib/fs/types.proto
package fs
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type FilesystemType int32
const (
FilesystemTypeBasic FilesystemType = 0
FilesystemTypeFake FilesystemType = 1
)
var FilesystemType_name = map[int32]string{
0: "FILESYSTEM_TYPE_BASIC",
1: "FILESYSTEM_TYPE_FAKE",
}
var FilesystemType_value = map[string]int32{
"FILESYSTEM_TYPE_BASIC": 0,
"FILESYSTEM_TYPE_FAKE": 1,
}
func (FilesystemType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b556f45c4309ad5d, []int{0}
}
func init() {
proto.RegisterEnum("fs.FilesystemType", FilesystemType_name, FilesystemType_value)
}
func init() { proto.RegisterFile("lib/fs/types.proto", fileDescriptor_b556f45c4309ad5d) }
var fileDescriptor_b556f45c4309ad5d = []byte{
// 194 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xca, 0xc9, 0x4c, 0xd2,
0x4f, 0x2b, 0xd6, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62,
0x4a, 0x2b, 0xd6, 0x2a, 0xe3, 0xe2, 0x73, 0xcb, 0xcc, 0x49, 0x2d, 0xae, 0x2c, 0x2e, 0x49, 0xcd,
0x0d, 0xa9, 0x2c, 0x48, 0x15, 0x32, 0xe2, 0x12, 0x75, 0xf3, 0xf4, 0x71, 0x0d, 0x8e, 0x0c, 0x0e,
0x71, 0xf5, 0x8d, 0x0f, 0x89, 0x0c, 0x70, 0x8d, 0x77, 0x72, 0x0c, 0xf6, 0x74, 0x16, 0x60, 0x90,
0x12, 0xef, 0x9a, 0xab, 0x20, 0x8c, 0xaa, 0xdc, 0x29, 0xb1, 0x38, 0x33, 0x59, 0xc8, 0x80, 0x4b,
0x04, 0x5d, 0x8f, 0x9b, 0xa3, 0xb7, 0xab, 0x00, 0xa3, 0x94, 0x58, 0xd7, 0x5c, 0x05, 0x21, 0x54,
0x2d, 0x6e, 0x89, 0xd9, 0xa9, 0x4e, 0xce, 0x27, 0x1e, 0xca, 0x31, 0x5c, 0x78, 0x28, 0xc7, 0xf0,
0xe2, 0x91, 0x1c, 0xc3, 0x84, 0xc7, 0x72, 0x0c, 0x0b, 0x1e, 0xcb, 0x31, 0x5e, 0x78, 0x2c, 0xc7,
0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x6a, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e,
0xae, 0x7e, 0x71, 0x65, 0x5e, 0x72, 0x49, 0x46, 0x66, 0x5e, 0x3a, 0x12, 0x0b, 0xe2, 0x99, 0x24,
0x36, 0xb0, 0x3f, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x86, 0xe8, 0x6b, 0xac, 0xdd, 0x00,
0x00, 0x00,
}
+13 -11
View File
@@ -44,11 +44,12 @@ type folder struct {
localFlags uint32
model *model
shortID protocol.ShortID
fset *db.FileSet
ignores *ignore.Matcher
ctx context.Context
model *model
shortID protocol.ShortID
fset *db.FileSet
ignores *ignore.Matcher
modTimeWindow time.Duration
ctx context.Context
scanInterval time.Duration
scanTimer *time.Timer
@@ -95,10 +96,11 @@ func newFolder(model *model, fset *db.FileSet, ignores *ignore.Matcher, cfg conf
FolderStatisticsReference: stats.NewFolderStatisticsReference(model.db, cfg.ID),
ioLimiter: ioLimiter,
model: model,
shortID: model.shortID,
fset: fset,
ignores: ignores,
model: model,
shortID: model.shortID,
fset: fset,
ignores: ignores,
modTimeWindow: cfg.ModTimeWindow(),
scanInterval: time.Duration(cfg.RescanIntervalS) * time.Second,
scanTimer: time.NewTimer(0), // The first scan should be done immediately.
@@ -457,7 +459,7 @@ func (f *folder) scanSubdirs(subDirs []string) error {
ShortID: f.shortID,
ProgressTickIntervalS: f.ScanProgressIntervalS,
LocalFlags: f.localFlags,
ModTimeWindow: f.ModTimeWindow(),
ModTimeWindow: f.modTimeWindow,
EventLogger: f.evLogger,
})
@@ -480,7 +482,7 @@ func (f *folder) scanSubdirs(subDirs []string) error {
batchAppend = func(fi protocol.FileInfo, snap *db.Snapshot) {
switch gf, ok := snap.GetGlobal(fi.Name); {
case !ok:
case gf.IsEquivalentOptional(fi, f.ModTimeWindow(), false, false, protocol.FlagLocalReceiveOnly):
case gf.IsEquivalentOptional(fi, f.modTimeWindow, false, false, protocol.FlagLocalReceiveOnly):
// What we have locally is equivalent to the global file.
fi.Version = fi.Version.Merge(gf.Version)
fallthrough
+1 -1
View File
@@ -77,7 +77,7 @@ func (f *sendOnlyFolder) pull() bool {
}
file := intf.(protocol.FileInfo)
if !file.IsEquivalentOptional(curFile, f.ModTimeWindow(), f.IgnorePerms, false, 0) {
if !file.IsEquivalentOptional(curFile, f.modTimeWindow, f.IgnorePerms, false, 0) {
return true
}
+10 -10
View File
@@ -420,17 +420,17 @@ func (f *sendReceiveFolder) processNeeded(snap *db.Snapshot, dbUpdateChan chan<-
// Now do the file queue. Reorder it according to configuration.
switch f.Order {
case config.OrderRandom:
case config.PullOrderRandom:
f.queue.Shuffle()
case config.OrderAlphabetic:
case config.PullOrderAlphabetic:
// The queue is already in alphabetic order.
case config.OrderSmallestFirst:
case config.PullOrderSmallestFirst:
f.queue.SortSmallestFirst()
case config.OrderLargestFirst:
case config.PullOrderLargestFirst:
f.queue.SortLargestFirst()
case config.OrderOldestFirst:
case config.PullOrderOldestFirst:
f.queue.SortOldestFirst()
case config.OrderNewestFirst:
case config.PullOrderNewestFirst:
f.queue.SortNewestFirst()
}
@@ -651,7 +651,7 @@ func (f *sendReceiveFolder) handleDir(file protocol.FileInfo, snap *db.Snapshot,
// don't handle modification times on directories, because that sucks...)
// It's OK to change mode bits on stuff within non-writable directories.
if !f.IgnorePerms && !file.NoPermissions {
if err := f.fs.Chmod(file.Name, mode|(fs.FileMode(info.Mode())&retainBits)); err != nil {
if err := f.fs.Chmod(file.Name, mode|(info.Mode()&retainBits)); err != nil {
f.newPullError(file.Name, err)
return
}
@@ -962,7 +962,7 @@ func (f *sendReceiveFolder) renameFile(cur, source, target protocol.FileInfo, sn
default:
var fi protocol.FileInfo
if fi, err = scanner.CreateFileInfo(stat, target.Name, f.fs); err == nil {
if !fi.IsEquivalentOptional(curTarget, f.ModTimeWindow(), f.IgnorePerms, true, protocol.LocalAllFlags) {
if !fi.IsEquivalentOptional(curTarget, f.modTimeWindow, f.IgnorePerms, true, protocol.LocalAllFlags) {
// Target changed
scanChan <- target.Name
err = errModified
@@ -1874,7 +1874,7 @@ func (f *sendReceiveFolder) deleteDirOnDisk(dir string, snap *db.Snapshot, scanC
hasToBeScanned = true
continue
}
if !cf.IsEquivalentOptional(diskFile, f.ModTimeWindow(), f.IgnorePerms, true, protocol.LocalAllFlags) {
if !cf.IsEquivalentOptional(diskFile, f.modTimeWindow, f.IgnorePerms, true, protocol.LocalAllFlags) {
// File on disk changed compared to what we have in db
// -> schedule scan.
scanChan <- fullDirFile
@@ -1946,7 +1946,7 @@ func (f *sendReceiveFolder) scanIfItemChanged(name string, stat fs.FileInfo, ite
return errors.Wrap(err, "comparing item on disk to db")
}
if !statItem.IsEquivalentOptional(item, f.ModTimeWindow(), f.IgnorePerms, true, protocol.LocalAllFlags) {
if !statItem.IsEquivalentOptional(item, f.modTimeWindow, f.IgnorePerms, true, protocol.LocalAllFlags) {
return errModified
}
+4 -1
View File
@@ -1781,7 +1781,10 @@ func (m *model) OnHello(remoteID protocol.DeviceID, addr net.Addr, hello protoco
func (m *model) GetHello(id protocol.DeviceID) protocol.HelloIntf {
name := ""
if _, ok := m.cfg.Device(id); ok {
name = m.cfg.MyName()
// Set our name (from the config of our device ID) only if we already know about the other side device ID.
if myCfg, ok := m.cfg.Device(m.id); ok {
name = myCfg.Name
}
}
return &protocol.Hello{
DeviceName: name,
+1 -1
View File
@@ -340,7 +340,7 @@ func TestDeviceRename(t *testing.T) {
t.Errorf("Device name got overwritten")
}
cfgw, err := config.Load("testdata/tmpconfig.xml", myID, events.NoopLogger)
cfgw, _, err := config.Load("testdata/tmpconfig.xml", myID, events.NoopLogger)
if err != nil {
t.Error(err)
return
+138 -138
View File
@@ -1,5 +1,5 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: bep.proto
// source: lib/protocol/bep.proto
package protocol
@@ -63,7 +63,7 @@ func (x MessageType) String() string {
}
func (MessageType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{0}
return fileDescriptor_311ef540e10d9705, []int{0}
}
type MessageCompression int32
@@ -88,7 +88,7 @@ func (x MessageCompression) String() string {
}
func (MessageCompression) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{1}
return fileDescriptor_311ef540e10d9705, []int{1}
}
type Compression int32
@@ -116,7 +116,7 @@ func (x Compression) String() string {
}
func (Compression) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{2}
return fileDescriptor_311ef540e10d9705, []int{2}
}
type FileInfoType int32
@@ -150,7 +150,7 @@ func (x FileInfoType) String() string {
}
func (FileInfoType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{3}
return fileDescriptor_311ef540e10d9705, []int{3}
}
type ErrorCode int32
@@ -181,7 +181,7 @@ func (x ErrorCode) String() string {
}
func (ErrorCode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{4}
return fileDescriptor_311ef540e10d9705, []int{4}
}
type FileDownloadProgressUpdateType int32
@@ -206,7 +206,7 @@ func (x FileDownloadProgressUpdateType) String() string {
}
func (FileDownloadProgressUpdateType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{5}
return fileDescriptor_311ef540e10d9705, []int{5}
}
type Hello struct {
@@ -219,7 +219,7 @@ func (m *Hello) Reset() { *m = Hello{} }
func (m *Hello) String() string { return proto.CompactTextString(m) }
func (*Hello) ProtoMessage() {}
func (*Hello) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{0}
return fileDescriptor_311ef540e10d9705, []int{0}
}
func (m *Hello) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -257,7 +257,7 @@ func (m *Header) Reset() { *m = Header{} }
func (m *Header) String() string { return proto.CompactTextString(m) }
func (*Header) ProtoMessage() {}
func (*Header) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{1}
return fileDescriptor_311ef540e10d9705, []int{1}
}
func (m *Header) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -294,7 +294,7 @@ func (m *ClusterConfig) Reset() { *m = ClusterConfig{} }
func (m *ClusterConfig) String() string { return proto.CompactTextString(m) }
func (*ClusterConfig) ProtoMessage() {}
func (*ClusterConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{2}
return fileDescriptor_311ef540e10d9705, []int{2}
}
func (m *ClusterConfig) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -338,7 +338,7 @@ func (m *Folder) Reset() { *m = Folder{} }
func (m *Folder) String() string { return proto.CompactTextString(m) }
func (*Folder) ProtoMessage() {}
func (*Folder) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{3}
return fileDescriptor_311ef540e10d9705, []int{3}
}
func (m *Folder) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -383,7 +383,7 @@ func (m *Device) Reset() { *m = Device{} }
func (m *Device) String() string { return proto.CompactTextString(m) }
func (*Device) ProtoMessage() {}
func (*Device) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{4}
return fileDescriptor_311ef540e10d9705, []int{4}
}
func (m *Device) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -421,7 +421,7 @@ func (m *Index) Reset() { *m = Index{} }
func (m *Index) String() string { return proto.CompactTextString(m) }
func (*Index) ProtoMessage() {}
func (*Index) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{5}
return fileDescriptor_311ef540e10d9705, []int{5}
}
func (m *Index) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -459,7 +459,7 @@ func (m *IndexUpdate) Reset() { *m = IndexUpdate{} }
func (m *IndexUpdate) String() string { return proto.CompactTextString(m) }
func (*IndexUpdate) ProtoMessage() {}
func (*IndexUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{6}
return fileDescriptor_311ef540e10d9705, []int{6}
}
func (m *IndexUpdate) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -518,7 +518,7 @@ type FileInfo struct {
func (m *FileInfo) Reset() { *m = FileInfo{} }
func (*FileInfo) ProtoMessage() {}
func (*FileInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{7}
return fileDescriptor_311ef540e10d9705, []int{7}
}
func (m *FileInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -557,7 +557,7 @@ type BlockInfo struct {
func (m *BlockInfo) Reset() { *m = BlockInfo{} }
func (*BlockInfo) ProtoMessage() {}
func (*BlockInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{8}
return fileDescriptor_311ef540e10d9705, []int{8}
}
func (m *BlockInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -594,7 +594,7 @@ func (m *Vector) Reset() { *m = Vector{} }
func (m *Vector) String() string { return proto.CompactTextString(m) }
func (*Vector) ProtoMessage() {}
func (*Vector) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{9}
return fileDescriptor_311ef540e10d9705, []int{9}
}
func (m *Vector) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -632,7 +632,7 @@ func (m *Counter) Reset() { *m = Counter{} }
func (m *Counter) String() string { return proto.CompactTextString(m) }
func (*Counter) ProtoMessage() {}
func (*Counter) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{10}
return fileDescriptor_311ef540e10d9705, []int{10}
}
func (m *Counter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -676,7 +676,7 @@ func (m *Request) Reset() { *m = Request{} }
func (m *Request) String() string { return proto.CompactTextString(m) }
func (*Request) ProtoMessage() {}
func (*Request) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{11}
return fileDescriptor_311ef540e10d9705, []int{11}
}
func (m *Request) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -715,7 +715,7 @@ func (m *Response) Reset() { *m = Response{} }
func (m *Response) String() string { return proto.CompactTextString(m) }
func (*Response) ProtoMessage() {}
func (*Response) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{12}
return fileDescriptor_311ef540e10d9705, []int{12}
}
func (m *Response) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -753,7 +753,7 @@ func (m *DownloadProgress) Reset() { *m = DownloadProgress{} }
func (m *DownloadProgress) String() string { return proto.CompactTextString(m) }
func (*DownloadProgress) ProtoMessage() {}
func (*DownloadProgress) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{13}
return fileDescriptor_311ef540e10d9705, []int{13}
}
func (m *DownloadProgress) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -794,7 +794,7 @@ func (m *FileDownloadProgressUpdate) Reset() { *m = FileDownloadProgress
func (m *FileDownloadProgressUpdate) String() string { return proto.CompactTextString(m) }
func (*FileDownloadProgressUpdate) ProtoMessage() {}
func (*FileDownloadProgressUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{14}
return fileDescriptor_311ef540e10d9705, []int{14}
}
func (m *FileDownloadProgressUpdate) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -830,7 +830,7 @@ func (m *Ping) Reset() { *m = Ping{} }
func (m *Ping) String() string { return proto.CompactTextString(m) }
func (*Ping) ProtoMessage() {}
func (*Ping) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{15}
return fileDescriptor_311ef540e10d9705, []int{15}
}
func (m *Ping) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -867,7 +867,7 @@ func (m *Close) Reset() { *m = Close{} }
func (m *Close) String() string { return proto.CompactTextString(m) }
func (*Close) ProtoMessage() {}
func (*Close) Descriptor() ([]byte, []int) {
return fileDescriptor_e3f59eb60afbbc6e, []int{16}
return fileDescriptor_311ef540e10d9705, []int{16}
}
func (m *Close) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -922,126 +922,126 @@ func init() {
proto.RegisterType((*Close)(nil), "protocol.Close")
}
func init() { proto.RegisterFile("bep.proto", fileDescriptor_e3f59eb60afbbc6e) }
func init() { proto.RegisterFile("lib/protocol/bep.proto", fileDescriptor_311ef540e10d9705) }
var fileDescriptor_e3f59eb60afbbc6e = []byte{
// 1842 bytes of a gzipped FileDescriptorProto
var fileDescriptor_311ef540e10d9705 = []byte{
// 1846 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x73, 0xdb, 0xc6,
0xf5, 0x27, 0x48, 0xf0, 0xd7, 0x23, 0xa5, 0x40, 0x6b, 0x5b, 0x5f, 0x7c, 0x61, 0x9b, 0x84, 0x69,
0x3b, 0x66, 0x34, 0xa9, 0xed, 0x26, 0x69, 0x3b, 0xed, 0xb4, 0x9d, 0xe1, 0x0f, 0x48, 0xe6, 0x54,
0x26, 0xd5, 0x25, 0xe5, 0xd4, 0x39, 0x14, 0x03, 0x11, 0x4b, 0x0a, 0x63, 0x10, 0xcb, 0x02, 0xa0,
0x26, 0xd5, 0x25, 0xe5, 0xd4, 0x39, 0x14, 0x03, 0x12, 0x4b, 0x09, 0x63, 0x10, 0xcb, 0x02, 0xa0,
0x64, 0xe6, 0x4f, 0xe0, 0xa9, 0xc7, 0x5e, 0x38, 0x93, 0x99, 0x9c, 0xfa, 0x9f, 0xf8, 0xe8, 0xf6,
0xd4, 0xe9, 0x41, 0xd3, 0xc8, 0x97, 0xf4, 0xd6, 0x4b, 0xaf, 0x9d, 0xce, 0xee, 0x02, 0x24, 0x28,
0xc5, 0x99, 0x1c, 0x7a, 0xc2, 0xee, 0x7b, 0x9f, 0x7d, 0xbb, 0xef, 0xb3, 0xef, 0x7d, 0x16, 0x50,
0x3c, 0x21, 0xd3, 0xc7, 0x53, 0x9f, 0x86, 0x14, 0x15, 0xf8, 0x67, 0x48, 0x5d, 0xed, 0xbe, 0x4f,
0xa6, 0x34, 0x78, 0xc2, 0xe7, 0x27, 0xb3, 0xd1, 0x93, 0x31, 0x1d, 0x53, 0x3e, 0xe1, 0x23, 0x01,
0xaf, 0x4d, 0x21, 0xfb, 0x8c, 0xb8, 0x2e, 0x45, 0x55, 0x28, 0xd9, 0xe4, 0xcc, 0x19, 0x12, 0xd3,
0xb3, 0x26, 0x44, 0x95, 0x74, 0xa9, 0x5e, 0xc4, 0x20, 0x4c, 0x5d, 0x6b, 0x42, 0x18, 0x60, 0xe8,
0x3a, 0xc4, 0x0b, 0x05, 0x20, 0x2d, 0x00, 0xc2, 0xc4, 0x01, 0x0f, 0x61, 0x3b, 0x02, 0x9c, 0x11,
0x3f, 0x70, 0xa8, 0xa7, 0x66, 0x38, 0x66, 0x4b, 0x58, 0x5f, 0x08, 0x63, 0x2d, 0x80, 0xdc, 0x33,
0x62, 0xd9, 0xc4, 0x47, 0x1f, 0x81, 0x1c, 0xce, 0xa7, 0x62, 0xaf, 0xed, 0x4f, 0x6e, 0x3d, 0x8e,
0x4f, 0xfe, 0xf8, 0x39, 0x09, 0x02, 0x6b, 0x4c, 0x06, 0xf3, 0x29, 0xc1, 0x1c, 0x82, 0x7e, 0x0d,
0xa5, 0x21, 0x9d, 0x4c, 0x7d, 0x12, 0xf0, 0xc0, 0x69, 0xbe, 0xe2, 0xce, 0xb5, 0x15, 0xad, 0x35,
0x06, 0x27, 0x17, 0xd4, 0x1a, 0xb0, 0xd5, 0x72, 0x67, 0x41, 0x48, 0xfc, 0x16, 0xf5, 0x46, 0xce,
0x18, 0x3d, 0x85, 0xfc, 0x88, 0xba, 0x36, 0xf1, 0x03, 0x55, 0xd2, 0x33, 0xf5, 0xd2, 0x27, 0xca,
0x3a, 0xd8, 0x3e, 0x77, 0x34, 0xe5, 0x37, 0x17, 0xd5, 0x14, 0x8e, 0x61, 0xb5, 0xaf, 0xd3, 0x90,
0x13, 0x1e, 0xb4, 0x0b, 0x69, 0xc7, 0x16, 0x14, 0x35, 0x73, 0x97, 0x17, 0xd5, 0x74, 0xa7, 0x8d,
0xd3, 0x8e, 0x8d, 0x6e, 0x42, 0xd6, 0xb5, 0x4e, 0x88, 0x1b, 0x91, 0x23, 0x26, 0xe8, 0x36, 0x14,
0x7d, 0x62, 0xd9, 0x26, 0xf5, 0xdc, 0x39, 0xa7, 0xa4, 0x80, 0x0b, 0xcc, 0xd0, 0xf3, 0xdc, 0x39,
0xfa, 0x11, 0x20, 0x67, 0xec, 0x51, 0x9f, 0x98, 0x53, 0xe2, 0x4f, 0x1c, 0x7e, 0xda, 0x40, 0x95,
0x39, 0x6a, 0x47, 0x78, 0x8e, 0xd6, 0x0e, 0x74, 0x1f, 0xb6, 0x22, 0xb8, 0x4d, 0x5c, 0x12, 0x12,
0x35, 0xcb, 0x91, 0x65, 0x61, 0x6c, 0x73, 0x1b, 0x7a, 0x0a, 0x37, 0x6d, 0x27, 0xb0, 0x4e, 0x5c,
0x62, 0x86, 0x64, 0x32, 0x35, 0x1d, 0xcf, 0x26, 0xaf, 0x49, 0xa0, 0xe6, 0x38, 0x16, 0x45, 0xbe,
0x01, 0x99, 0x4c, 0x3b, 0xc2, 0x83, 0x76, 0x21, 0x37, 0xb5, 0x66, 0x01, 0xb1, 0xd5, 0x3c, 0xc7,
0x44, 0x33, 0xc6, 0x92, 0xa8, 0x80, 0x40, 0x55, 0xae, 0xb2, 0xd4, 0xe6, 0x8e, 0x98, 0xa5, 0x08,
0x56, 0xfb, 0x57, 0x1a, 0x72, 0xc2, 0x83, 0x3e, 0x5c, 0xb1, 0x54, 0x6e, 0xee, 0x32, 0xd4, 0xdf,
0x2f, 0xaa, 0x05, 0xe1, 0xeb, 0xb4, 0x13, 0xac, 0x21, 0x90, 0x13, 0x15, 0xc5, 0xc7, 0xe8, 0x0e,
0x14, 0x2d, 0xdb, 0x66, 0xb7, 0x47, 0x02, 0x35, 0xa3, 0x67, 0xea, 0x45, 0xbc, 0x36, 0xa0, 0x9f,
0x6d, 0x56, 0x83, 0x7c, 0xb5, 0x7e, 0xde, 0x57, 0x06, 0xec, 0x2a, 0x86, 0xc4, 0x8f, 0x2a, 0x38,
0xcb, 0xf7, 0x2b, 0x30, 0x03, 0xaf, 0xdf, 0x7b, 0x50, 0x9e, 0x58, 0xaf, 0xcd, 0x80, 0xfc, 0x61,
0x46, 0xbc, 0x21, 0xe1, 0x74, 0x65, 0x70, 0x69, 0x62, 0xbd, 0xee, 0x47, 0x26, 0x54, 0x01, 0x70,
0xbc, 0xd0, 0xa7, 0xf6, 0x6c, 0x48, 0xfc, 0x88, 0xab, 0x84, 0x05, 0xfd, 0x04, 0x0a, 0x9c, 0x6c,
0xd3, 0xb1, 0xd5, 0x82, 0x2e, 0xd5, 0xe5, 0xa6, 0x16, 0x25, 0x9e, 0xe7, 0x54, 0xf3, 0xbc, 0xe3,
0x21, 0xce, 0x73, 0x6c, 0xc7, 0x46, 0xbf, 0x04, 0x2d, 0x78, 0xe5, 0xb0, 0x8b, 0x12, 0x91, 0x42,
0x87, 0x7a, 0xa6, 0x4f, 0x26, 0xf4, 0xcc, 0x72, 0x03, 0xb5, 0xc8, 0xb7, 0x51, 0x19, 0xa2, 0x93,
0x00, 0xe0, 0xc8, 0x5f, 0xeb, 0x41, 0x96, 0x47, 0x64, 0xb7, 0x28, 0x8a, 0x35, 0xea, 0xde, 0x68,
0x86, 0x1e, 0x43, 0x76, 0xe4, 0xb8, 0x24, 0x50, 0xd3, 0xfc, 0x0e, 0x51, 0xa2, 0xd2, 0x1d, 0x97,
0x74, 0xbc, 0x11, 0x8d, 0x6e, 0x51, 0xc0, 0x6a, 0xc7, 0x50, 0xe2, 0x01, 0x8f, 0xa7, 0xb6, 0x15,
0x92, 0xff, 0x59, 0xd8, 0xaf, 0xb3, 0x50, 0x88, 0x3d, 0xab, 0x4b, 0x97, 0x12, 0x97, 0x8e, 0x40,
0x0e, 0x9c, 0x2f, 0x09, 0xef, 0x91, 0x0c, 0xe6, 0x63, 0x74, 0x17, 0x60, 0x42, 0x6d, 0x67, 0xe4,
0x10, 0xdb, 0x0c, 0xf8, 0x95, 0x65, 0x70, 0x31, 0xb6, 0xf4, 0xd1, 0x53, 0x28, 0xad, 0xdc, 0x27,
0x73, 0xb5, 0xcc, 0x39, 0xff, 0x20, 0xe6, 0xbc, 0x7f, 0x4a, 0xfd, 0xb0, 0xd3, 0xc6, 0xab, 0x10,
0xcd, 0x39, 0x2b, 0xe9, 0x58, 0x9e, 0x18, 0xb1, 0x1b, 0x25, 0xfd, 0x82, 0x0c, 0x43, 0xba, 0x6a,
0xfc, 0x08, 0x86, 0x34, 0x28, 0xac, 0x6a, 0x02, 0xf8, 0x01, 0x56, 0x73, 0xf4, 0x63, 0xc8, 0x9d,
0xb8, 0x74, 0xf8, 0x2a, 0xee, 0x8f, 0x1b, 0xeb, 0x60, 0x4d, 0x66, 0x4f, 0xb0, 0x10, 0x01, 0x99,
0x4c, 0x06, 0xf3, 0x89, 0xeb, 0x78, 0xaf, 0xcc, 0xd0, 0xf2, 0xc7, 0x24, 0x54, 0x77, 0x84, 0x4c,
0x46, 0xd6, 0x01, 0x37, 0x32, 0xb9, 0x15, 0x0b, 0xcc, 0x53, 0x2b, 0x38, 0x55, 0x11, 0x6b, 0x23,
0x0c, 0xc2, 0xf4, 0xcc, 0x0a, 0x4e, 0xd1, 0x5e, 0xa4, 0x9e, 0x42, 0x0b, 0x77, 0xaf, 0xb3, 0x9f,
0x90, 0x4f, 0x1d, 0x4a, 0x57, 0xe5, 0x65, 0x0b, 0x27, 0x4d, 0x6c, 0xbb, 0x15, 0x91, 0x5e, 0xa0,
0x96, 0x74, 0xa9, 0x9e, 0x5d, 0xf3, 0xd6, 0x0d, 0xd0, 0x13, 0x10, 0x9b, 0x9b, 0xfc, 0x8a, 0xb6,
0x98, 0xbf, 0xa9, 0x5c, 0x5e, 0x54, 0xcb, 0xd8, 0x3a, 0xe7, 0xa9, 0xf6, 0x9d, 0x2f, 0x09, 0x2e,
0x9e, 0xc4, 0x43, 0xb6, 0xa7, 0x4b, 0x87, 0x96, 0x6b, 0x8e, 0x5c, 0x6b, 0x1c, 0xa8, 0xdf, 0xe6,
0xf9, 0xa6, 0xc0, 0x6d, 0xfb, 0xcc, 0x84, 0x6a, 0x50, 0x8e, 0x38, 0x16, 0x39, 0xfe, 0x33, 0xcf,
0x93, 0x2c, 0x45, 0x46, 0x9e, 0xa5, 0xca, 0x14, 0x88, 0xa9, 0x9a, 0x1d, 0xc9, 0x57, 0x3c, 0x45,
0x75, 0xc8, 0x3b, 0xde, 0x99, 0xe5, 0x3a, 0x91, 0x68, 0x35, 0xb7, 0x2f, 0x2f, 0xaa, 0x80, 0xad,
0xf3, 0x8e, 0xb0, 0xe2, 0xd8, 0xcd, 0x18, 0xf7, 0xe8, 0x86, 0xbe, 0x16, 0x78, 0xa8, 0x2d, 0x8f,
0x26, 0xb4, 0xf5, 0x17, 0xf2, 0x9f, 0xbe, 0xaa, 0xa6, 0x6a, 0x1e, 0x14, 0x57, 0x37, 0xc7, 0x2a,
0x92, 0x9f, 0x2c, 0xc3, 0x0f, 0xc6, 0xc7, 0xac, 0x1d, 0xe8, 0x68, 0x14, 0x90, 0x90, 0xd7, 0x6e,
0x06, 0x47, 0xb3, 0x55, 0xf5, 0xa6, 0x39, 0x75, 0xa2, 0x7a, 0x6f, 0x43, 0xf1, 0x9c, 0x58, 0xaf,
0x44, 0x7a, 0x82, 0xf5, 0x02, 0x33, 0xb0, 0xd4, 0xa2, 0xfd, 0x7e, 0x05, 0x39, 0x51, 0x76, 0xe8,
0x53, 0x28, 0x0c, 0xe9, 0xcc, 0x0b, 0xd7, 0x6f, 0xd2, 0x4e, 0x52, 0xd2, 0xb8, 0x27, 0xaa, 0xa5,
0x15, 0xb0, 0xb6, 0x0f, 0xf9, 0xc8, 0x85, 0x1e, 0xae, 0xf4, 0x56, 0x6e, 0xde, 0xba, 0xd2, 0x02,
0x9b, 0x8f, 0xd4, 0x99, 0xe5, 0xce, 0xc4, 0x41, 0x65, 0x2c, 0x26, 0xb5, 0xbf, 0x48, 0x90, 0xc7,
0xac, 0xaa, 0x83, 0x30, 0xf1, 0xbc, 0x65, 0x37, 0x9e, 0xb7, 0xb5, 0x10, 0xa4, 0x37, 0x84, 0x20,
0xee, 0xe5, 0x4c, 0xa2, 0x97, 0xd7, 0x2c, 0xc9, 0xdf, 0xc9, 0x52, 0x36, 0xc1, 0x52, 0xcc, 0x72,
0x2e, 0xc1, 0xf2, 0x43, 0xd8, 0x1e, 0xf9, 0x74, 0xc2, 0x1f, 0x30, 0xea, 0x5b, 0xfe, 0x3c, 0x52,
0xdb, 0x2d, 0x66, 0x1d, 0xc4, 0xc6, 0x4d, 0x82, 0x0b, 0x9b, 0x04, 0xd7, 0x4c, 0x28, 0x60, 0x12,
0x4c, 0xa9, 0x17, 0x90, 0xf7, 0xe6, 0x84, 0x40, 0xb6, 0xad, 0xd0, 0xe2, 0x19, 0x95, 0x31, 0x1f,
0xa3, 0x47, 0x20, 0x0f, 0xa9, 0x2d, 0xf2, 0xd9, 0x4e, 0xb6, 0xb4, 0xe1, 0xfb, 0xd4, 0x6f, 0x51,
0x9b, 0x60, 0x0e, 0xa8, 0x4d, 0x41, 0x69, 0xd3, 0x73, 0xcf, 0xa5, 0x96, 0x7d, 0xe4, 0xd3, 0x31,
0x7b, 0x65, 0xde, 0xab, 0x96, 0x6d, 0xc8, 0xcf, 0xb8, 0x9e, 0xc6, 0x7a, 0xf9, 0x60, 0xb3, 0x63,
0xaf, 0x06, 0x12, 0xe2, 0x1b, 0x6b, 0x51, 0xb4, 0xb4, 0xf6, 0x6f, 0x09, 0xb4, 0xf7, 0xa3, 0x51,
0x07, 0x4a, 0x02, 0x69, 0x26, 0x7e, 0xac, 0xea, 0x3f, 0x64, 0x23, 0x2e, 0x16, 0x30, 0x5b, 0x8d,
0xbf, 0xf3, 0x55, 0x4e, 0x68, 0x67, 0xe6, 0x87, 0x69, 0xe7, 0x23, 0xd8, 0x12, 0xaa, 0x11, 0xff,
0x83, 0xc8, 0x7a, 0xa6, 0x9e, 0x6d, 0xa6, 0x95, 0x14, 0x2e, 0x9f, 0x88, 0x36, 0x13, 0x7f, 0x20,
0x77, 0x37, 0xe4, 0x45, 0x54, 0xc7, 0x5a, 0x4c, 0x6a, 0x39, 0x90, 0x8f, 0x1c, 0x6f, 0x5c, 0xab,
0x42, 0xb6, 0xe5, 0x52, 0x7e, 0x9f, 0x39, 0x9f, 0x58, 0x01, 0xf5, 0x62, 0x9a, 0xc5, 0x6c, 0xef,
0xaf, 0x69, 0x28, 0x25, 0x7e, 0x1f, 0xd1, 0x53, 0xd8, 0x6e, 0x1d, 0x1e, 0xf7, 0x07, 0x06, 0x36,
0x5b, 0xbd, 0xee, 0x7e, 0xe7, 0x40, 0x49, 0x69, 0x77, 0x16, 0x4b, 0x5d, 0x9d, 0xac, 0x41, 0x9b,
0x7f, 0x86, 0x55, 0xc8, 0x76, 0xba, 0x6d, 0xe3, 0x77, 0x8a, 0xa4, 0xdd, 0x5c, 0x2c, 0x75, 0x25,
0x01, 0x14, 0xcf, 0xec, 0xc7, 0x50, 0xe6, 0x00, 0xf3, 0xf8, 0xa8, 0xdd, 0x18, 0x18, 0x4a, 0x5a,
0xd3, 0x16, 0x4b, 0x7d, 0xf7, 0x2a, 0x2e, 0xba, 0x92, 0xfb, 0x90, 0xc7, 0xc6, 0x6f, 0x8f, 0x8d,
0xfe, 0x40, 0xc9, 0x68, 0xbb, 0x8b, 0xa5, 0x8e, 0x12, 0xc0, 0xb8, 0xe3, 0x1e, 0x42, 0x01, 0x1b,
0xfd, 0xa3, 0x5e, 0xb7, 0x6f, 0x28, 0xb2, 0xf6, 0x7f, 0x8b, 0xa5, 0x7e, 0x63, 0x03, 0x15, 0x15,
0xf1, 0x4f, 0x61, 0xa7, 0xdd, 0xfb, 0xbc, 0x7b, 0xd8, 0x6b, 0xb4, 0xcd, 0x23, 0xdc, 0x3b, 0xc0,
0x46, 0xbf, 0xaf, 0x64, 0xb5, 0xea, 0x62, 0xa9, 0xdf, 0x4e, 0xe0, 0xaf, 0xd5, 0xe4, 0x5d, 0x90,
0x8f, 0x3a, 0xdd, 0x03, 0x25, 0xa7, 0xdd, 0x58, 0x2c, 0xf5, 0x0f, 0x12, 0x50, 0x46, 0x2a, 0xcb,
0xb8, 0x75, 0xd8, 0xeb, 0x1b, 0x4a, 0xfe, 0x5a, 0xc6, 0x9c, 0xec, 0xbd, 0xdf, 0x03, 0xba, 0xfe,
0x83, 0x8d, 0x1e, 0x80, 0xdc, 0xed, 0x75, 0x0d, 0x25, 0x25, 0xf2, 0xbf, 0x8e, 0xe8, 0x52, 0x8f,
0xa0, 0x1a, 0x64, 0x0e, 0xbf, 0xf8, 0x4c, 0x91, 0xb4, 0xff, 0x5f, 0x2c, 0xf5, 0x5b, 0xd7, 0x41,
0x87, 0x5f, 0x7c, 0xb6, 0x47, 0xa1, 0x94, 0x0c, 0x5c, 0x83, 0xc2, 0x73, 0x63, 0xd0, 0x68, 0x37,
0x06, 0x0d, 0x25, 0x25, 0x8e, 0x14, 0xbb, 0x9f, 0x93, 0xd0, 0xe2, 0x3d, 0x7a, 0x07, 0xb2, 0x5d,
0xe3, 0x85, 0x81, 0x15, 0x49, 0xdb, 0x59, 0x2c, 0xf5, 0xad, 0x18, 0xd0, 0x25, 0x67, 0xc4, 0x47,
0x15, 0xc8, 0x35, 0x0e, 0x3f, 0x6f, 0xbc, 0xec, 0x2b, 0x69, 0x0d, 0x2d, 0x96, 0xfa, 0x76, 0xec,
0x6e, 0xb8, 0xe7, 0xd6, 0x3c, 0xd8, 0xfb, 0x8f, 0x04, 0xe5, 0xe4, 0x33, 0x89, 0x2a, 0x20, 0xef,
0x77, 0x0e, 0x8d, 0x78, 0xbb, 0xa4, 0x8f, 0x8d, 0x51, 0x1d, 0x8a, 0xed, 0x0e, 0x36, 0x5a, 0x83,
0x1e, 0x7e, 0x19, 0xe7, 0x92, 0x04, 0xb5, 0x1d, 0x9f, 0xd7, 0xff, 0x1c, 0xfd, 0x1c, 0xca, 0xfd,
0x97, 0xcf, 0x0f, 0x3b, 0xdd, 0xdf, 0x98, 0x3c, 0x62, 0x5a, 0x7b, 0xb4, 0x58, 0xea, 0xf7, 0x36,
0xc0, 0x64, 0xea, 0x93, 0xa1, 0x15, 0x12, 0xbb, 0x2f, 0x9e, 0x7c, 0xe6, 0x2c, 0x48, 0xa8, 0x05,
0x3b, 0xf1, 0xd2, 0xf5, 0x66, 0x19, 0xed, 0xe3, 0xc5, 0x52, 0xff, 0xf0, 0x7b, 0xd7, 0xaf, 0x76,
0x2f, 0x48, 0xe8, 0x01, 0xe4, 0xa3, 0x20, 0x71, 0x25, 0x25, 0x97, 0x46, 0x0b, 0xf6, 0xfe, 0x2c,
0x41, 0x71, 0xa5, 0x66, 0x8c, 0xf0, 0x6e, 0xcf, 0x34, 0x30, 0xee, 0xe1, 0x98, 0x81, 0x95, 0xb3,
0x4b, 0xf9, 0x10, 0xdd, 0x83, 0xfc, 0x81, 0xd1, 0x35, 0x70, 0xa7, 0x15, 0x37, 0xc6, 0x0a, 0x72,
0x40, 0x3c, 0xe2, 0x3b, 0x43, 0xf4, 0x11, 0x94, 0xbb, 0x3d, 0xb3, 0x7f, 0xdc, 0x7a, 0x16, 0xa7,
0xce, 0xf7, 0x4f, 0x84, 0xea, 0xcf, 0x86, 0xa7, 0x9c, 0xcf, 0x3d, 0xd6, 0x43, 0x2f, 0x1a, 0x87,
0x9d, 0xb6, 0x80, 0x66, 0x34, 0x75, 0xb1, 0xd4, 0x6f, 0xae, 0xa0, 0xd1, 0x1b, 0xce, 0xb0, 0x7b,
0x36, 0x54, 0xbe, 0x5f, 0xb7, 0x90, 0x0e, 0xb9, 0xc6, 0xd1, 0x91, 0xd1, 0x6d, 0xc7, 0xa7, 0x5f,
0xfb, 0x1a, 0xd3, 0x29, 0xf1, 0x6c, 0x86, 0xd8, 0xef, 0xe1, 0x03, 0x63, 0x10, 0x1f, 0x7e, 0x8d,
0xd8, 0xa7, 0xec, 0x7f, 0xab, 0x59, 0x7f, 0xf3, 0x4d, 0x25, 0xf5, 0xf6, 0x9b, 0x4a, 0xea, 0xcd,
0x65, 0x45, 0x7a, 0x7b, 0x59, 0x91, 0xfe, 0x71, 0x59, 0x49, 0x7d, 0x7b, 0x59, 0x91, 0xfe, 0xf8,
0xae, 0x92, 0xfa, 0xea, 0x5d, 0x45, 0x7a, 0xfb, 0xae, 0x92, 0xfa, 0xdb, 0xbb, 0x4a, 0xea, 0x24,
0xc7, 0x35, 0xef, 0xd3, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x99, 0x31, 0x0e, 0x75, 0x0f,
0x00, 0x00,
0xc5, 0x99, 0x1c, 0x7a, 0xdb, 0x7d, 0xef, 0xb3, 0x6f, 0xf7, 0x7d, 0xf6, 0xbd, 0xcf, 0x2e, 0xec,
0xba, 0xce, 0xf0, 0xc9, 0xd4, 0xa7, 0x21, 0x1d, 0x51, 0xf7, 0xc9, 0x90, 0x4c, 0x1f, 0xf3, 0x09,
0x2a, 0xc4, 0x36, 0xed, 0xbe, 0x4f, 0xa6, 0x34, 0x10, 0x98, 0xe1, 0x6c, 0xfc, 0xe4, 0x84, 0x9e,
0x50, 0x3e, 0xe1, 0x23, 0x01, 0xaf, 0x4d, 0x21, 0xfb, 0x8c, 0xb8, 0x2e, 0x45, 0x55, 0x28, 0xd9,
0xe4, 0xcc, 0x19, 0x11, 0xd3, 0xb3, 0x26, 0x44, 0x95, 0x74, 0xa9, 0x5e, 0xc4, 0x20, 0x4c, 0x5d,
0x6b, 0x42, 0x18, 0x60, 0xe4, 0x3a, 0xc4, 0x0b, 0x05, 0x20, 0x2d, 0x00, 0xc2, 0xc4, 0x01, 0x0f,
0x61, 0x3b, 0x02, 0x9c, 0x11, 0x3f, 0x70, 0xa8, 0xa7, 0x66, 0x38, 0x66, 0x4b, 0x58, 0x5f, 0x08,
0x63, 0x2d, 0x80, 0xdc, 0x33, 0x62, 0xd9, 0xc4, 0x47, 0x1f, 0x81, 0x1c, 0xce, 0xa7, 0x62, 0xaf,
0xed, 0x4f, 0x6e, 0x3d, 0x8e, 0x4f, 0xfe, 0xf8, 0x39, 0x09, 0x02, 0xeb, 0x84, 0x0c, 0xe6, 0x53,
0x82, 0x39, 0x04, 0xfd, 0x1a, 0x4a, 0x23, 0x3a, 0x99, 0xfa, 0x24, 0xe0, 0x81, 0xd3, 0x7c, 0xc5,
0x9d, 0x6b, 0x2b, 0x5a, 0x6b, 0x0c, 0x4e, 0x2e, 0xa8, 0x35, 0x60, 0xab, 0xe5, 0xce, 0x82, 0x90,
0xf8, 0x2d, 0xea, 0x8d, 0x9d, 0x13, 0xf4, 0x14, 0xf2, 0x63, 0xea, 0xda, 0xc4, 0x0f, 0x54, 0x49,
0xcf, 0xd4, 0x4b, 0x9f, 0x28, 0xeb, 0x60, 0xfb, 0xdc, 0xd1, 0x94, 0xdf, 0x5c, 0x54, 0x53, 0x38,
0x86, 0xd5, 0xbe, 0x4e, 0x43, 0x4e, 0x78, 0xd0, 0x2e, 0xa4, 0x1d, 0x5b, 0x50, 0xd4, 0xcc, 0x5d,
0x5e, 0x54, 0xd3, 0x9d, 0x36, 0x4e, 0x3b, 0x36, 0xba, 0x09, 0x59, 0xd7, 0x1a, 0x12, 0x37, 0x22,
0x47, 0x4c, 0xd0, 0x6d, 0x28, 0xfa, 0xc4, 0xb2, 0x4d, 0xea, 0xb9, 0x73, 0x4e, 0x49, 0x01, 0x17,
0x98, 0xa1, 0xe7, 0xb9, 0x73, 0xf4, 0x23, 0x40, 0xce, 0x89, 0x47, 0x7d, 0x62, 0x4e, 0x89, 0x3f,
0x71, 0xf8, 0x69, 0x03, 0x55, 0xe6, 0xa8, 0x1d, 0xe1, 0x39, 0x5a, 0x3b, 0xd0, 0x7d, 0xd8, 0x8a,
0xe0, 0x36, 0x71, 0x49, 0x48, 0xd4, 0x2c, 0x47, 0x96, 0x85, 0xb1, 0xcd, 0x6d, 0xe8, 0x29, 0xdc,
0xb4, 0x9d, 0xc0, 0x1a, 0xba, 0xc4, 0x0c, 0xc9, 0x64, 0x6a, 0x3a, 0x9e, 0x4d, 0x5e, 0x93, 0x40,
0xcd, 0x71, 0x2c, 0x8a, 0x7c, 0x03, 0x32, 0x99, 0x76, 0x84, 0x07, 0xed, 0x42, 0x6e, 0x6a, 0xcd,
0x02, 0x62, 0xab, 0x79, 0x8e, 0x89, 0x66, 0x8c, 0x25, 0x51, 0x01, 0x81, 0xaa, 0x5c, 0x65, 0xa9,
0xcd, 0x1d, 0x31, 0x4b, 0x11, 0xac, 0xf6, 0xaf, 0x34, 0xe4, 0x84, 0x07, 0x7d, 0xb8, 0x62, 0xa9,
0xdc, 0xdc, 0x65, 0xa8, 0xbf, 0x5f, 0x54, 0x0b, 0xc2, 0xd7, 0x69, 0x27, 0x58, 0x43, 0x20, 0x27,
0x2a, 0x8a, 0x8f, 0xd1, 0x1d, 0x28, 0x5a, 0xb6, 0xcd, 0x6e, 0x8f, 0x04, 0x6a, 0x46, 0xcf, 0xd4,
0x8b, 0x78, 0x6d, 0x40, 0x3f, 0xdb, 0xac, 0x06, 0xf9, 0x6a, 0xfd, 0xbc, 0xaf, 0x0c, 0xd8, 0x55,
0x8c, 0x88, 0x1f, 0x55, 0x70, 0x96, 0xef, 0x57, 0x60, 0x06, 0x5e, 0xbf, 0xf7, 0xa0, 0x3c, 0xb1,
0x5e, 0x9b, 0x01, 0xf9, 0xc3, 0x8c, 0x78, 0x23, 0xc2, 0xe9, 0xca, 0xe0, 0xd2, 0xc4, 0x7a, 0xdd,
0x8f, 0x4c, 0xa8, 0x02, 0xe0, 0x78, 0xa1, 0x4f, 0xed, 0xd9, 0x88, 0xf8, 0x11, 0x57, 0x09, 0x0b,
0xfa, 0x09, 0x14, 0x38, 0xd9, 0xa6, 0x63, 0xab, 0x05, 0x5d, 0xaa, 0xcb, 0x4d, 0x2d, 0x4a, 0x3c,
0xcf, 0xa9, 0xe6, 0x79, 0xc7, 0x43, 0x9c, 0xe7, 0xd8, 0x8e, 0x8d, 0x7e, 0x09, 0x5a, 0xf0, 0xca,
0x61, 0x17, 0x25, 0x22, 0x85, 0x0e, 0xf5, 0x4c, 0x9f, 0x4c, 0xe8, 0x99, 0xe5, 0x06, 0x6a, 0x91,
0x6f, 0xa3, 0x32, 0x44, 0x27, 0x01, 0xc0, 0x91, 0xbf, 0xd6, 0x83, 0x2c, 0x8f, 0xc8, 0x6e, 0x51,
0x14, 0x6b, 0xd4, 0xbd, 0xd1, 0x0c, 0x3d, 0x86, 0xec, 0xd8, 0x71, 0x49, 0xa0, 0xa6, 0xf9, 0x1d,
0xa2, 0x44, 0xa5, 0x3b, 0x2e, 0xe9, 0x78, 0x63, 0x1a, 0xdd, 0xa2, 0x80, 0xd5, 0x8e, 0xa1, 0xc4,
0x03, 0x1e, 0x4f, 0x6d, 0x2b, 0x24, 0xff, 0xb3, 0xb0, 0x5f, 0x67, 0xa1, 0x10, 0x7b, 0x56, 0x97,
0x2e, 0x25, 0x2e, 0x1d, 0x81, 0x1c, 0x38, 0x5f, 0x12, 0xde, 0x23, 0x19, 0xcc, 0xc7, 0xe8, 0x2e,
0xc0, 0x84, 0xda, 0xce, 0xd8, 0x21, 0xb6, 0x19, 0xf0, 0x2b, 0xcb, 0xe0, 0x62, 0x6c, 0xe9, 0xa3,
0xa7, 0x50, 0x5a, 0xb9, 0x87, 0x73, 0xb5, 0xcc, 0x39, 0xff, 0x20, 0xe6, 0xbc, 0x7f, 0x4a, 0xfd,
0xb0, 0xd3, 0xc6, 0xab, 0x10, 0xcd, 0x39, 0x2b, 0xe9, 0x58, 0x9e, 0x18, 0xb1, 0x1b, 0x25, 0xfd,
0x82, 0x8c, 0x42, 0xba, 0x6a, 0xfc, 0x08, 0x86, 0x34, 0x28, 0xac, 0x6a, 0x02, 0xf8, 0x01, 0x56,
0x73, 0xf4, 0x63, 0xc8, 0x0d, 0x5d, 0x3a, 0x7a, 0x15, 0xf7, 0xc7, 0x8d, 0x75, 0xb0, 0x26, 0xb3,
0x27, 0x58, 0x88, 0x80, 0x4c, 0x26, 0x83, 0xf9, 0xc4, 0x75, 0xbc, 0x57, 0x66, 0x68, 0xf9, 0x27,
0x24, 0x54, 0x77, 0x84, 0x4c, 0x46, 0xd6, 0x01, 0x37, 0x32, 0xb9, 0x15, 0x0b, 0xcc, 0x53, 0x2b,
0x38, 0x55, 0x11, 0x6b, 0x23, 0x0c, 0xc2, 0xf4, 0xcc, 0x0a, 0x4e, 0xd1, 0x5e, 0xa4, 0x9e, 0x42,
0x0b, 0x77, 0xaf, 0xb3, 0x9f, 0x90, 0x4f, 0x1d, 0x4a, 0x57, 0xe5, 0x65, 0x0b, 0x27, 0x4d, 0x6c,
0xbb, 0x15, 0x91, 0x5e, 0xa0, 0x96, 0x74, 0xa9, 0x9e, 0x5d, 0xf3, 0xd6, 0x0d, 0xd0, 0x13, 0x10,
0x9b, 0x9b, 0xfc, 0x8a, 0xb6, 0x98, 0xbf, 0xa9, 0x5c, 0x5e, 0x54, 0xcb, 0xd8, 0x3a, 0xe7, 0xa9,
0xf6, 0x9d, 0x2f, 0x09, 0x2e, 0x0e, 0xe3, 0x21, 0xdb, 0xd3, 0xa5, 0x23, 0xcb, 0x35, 0xc7, 0xae,
0x75, 0x12, 0xa8, 0xdf, 0xe6, 0xf9, 0xa6, 0xc0, 0x6d, 0xfb, 0xcc, 0x84, 0x6a, 0x50, 0x8e, 0x38,
0x16, 0x39, 0xfe, 0x33, 0xcf, 0x93, 0x2c, 0x45, 0x46, 0x9e, 0xa5, 0xca, 0x14, 0x88, 0xa9, 0x9a,
0x1d, 0xc9, 0x57, 0x3c, 0x45, 0x75, 0xc8, 0x3b, 0xde, 0x99, 0xe5, 0x3a, 0x91, 0x68, 0x35, 0xb7,
0x2f, 0x2f, 0xaa, 0x80, 0xad, 0xf3, 0x8e, 0xb0, 0xe2, 0xd8, 0xcd, 0x18, 0xf7, 0xe8, 0x86, 0xbe,
0x16, 0x78, 0xa8, 0x2d, 0x8f, 0x26, 0xb4, 0xf5, 0x17, 0xf2, 0x9f, 0xbe, 0xaa, 0xa6, 0x6a, 0x1e,
0x14, 0x57, 0x37, 0xc7, 0x2a, 0x92, 0x9f, 0x2c, 0xc3, 0x0f, 0xc6, 0xc7, 0xac, 0x1d, 0xe8, 0x78,
0x1c, 0x90, 0x90, 0xd7, 0x6e, 0x06, 0x47, 0xb3, 0x55, 0xf5, 0xa6, 0x39, 0x75, 0xa2, 0x7a, 0x6f,
0x43, 0xf1, 0x9c, 0x58, 0xaf, 0x44, 0x7a, 0x82, 0xf5, 0x02, 0x33, 0xb0, 0xd4, 0xa2, 0xfd, 0x7e,
0x05, 0x39, 0x51, 0x76, 0xe8, 0x53, 0x28, 0x8c, 0xe8, 0xcc, 0x0b, 0xd7, 0x6f, 0xd2, 0x4e, 0x52,
0xd2, 0xb8, 0x27, 0xaa, 0xa5, 0x15, 0xb0, 0xb6, 0x0f, 0xf9, 0xc8, 0x85, 0x1e, 0xae, 0xf4, 0x56,
0x6e, 0xde, 0xba, 0xd2, 0x02, 0x9b, 0x8f, 0xd4, 0x99, 0xe5, 0xce, 0xc4, 0x41, 0x65, 0x2c, 0x26,
0xb5, 0xbf, 0x48, 0x90, 0xc7, 0xac, 0xaa, 0x83, 0x30, 0xf1, 0xbc, 0x65, 0x37, 0x9e, 0xb7, 0xb5,
0x10, 0xa4, 0x37, 0x84, 0x20, 0xee, 0xe5, 0x4c, 0xa2, 0x97, 0xd7, 0x2c, 0xc9, 0xdf, 0xc9, 0x52,
0x36, 0xc1, 0x52, 0xcc, 0x72, 0x2e, 0xc1, 0xf2, 0x43, 0xd8, 0x1e, 0xfb, 0x74, 0xc2, 0x1f, 0x30,
0xea, 0x5b, 0xfe, 0x3c, 0x52, 0xdb, 0x2d, 0x66, 0x1d, 0xc4, 0xc6, 0x4d, 0x82, 0x0b, 0x9b, 0x04,
0xd7, 0x4c, 0x28, 0x60, 0x12, 0x4c, 0xa9, 0x17, 0x90, 0xf7, 0xe6, 0x84, 0x40, 0xb6, 0xad, 0xd0,
0xe2, 0x19, 0x95, 0x31, 0x1f, 0xa3, 0x47, 0x20, 0x8f, 0xa8, 0x2d, 0xf2, 0xd9, 0x4e, 0xb6, 0xb4,
0xe1, 0xfb, 0xd4, 0x6f, 0x51, 0x9b, 0x60, 0x0e, 0xa8, 0x4d, 0x41, 0x69, 0xd3, 0x73, 0xcf, 0xa5,
0x96, 0x7d, 0xe4, 0xd3, 0x13, 0xf6, 0xca, 0xbc, 0x57, 0x2d, 0xdb, 0x90, 0x9f, 0x71, 0x3d, 0x8d,
0xf5, 0xf2, 0xc1, 0x66, 0xc7, 0x5e, 0x0d, 0x24, 0xc4, 0x37, 0xd6, 0xa2, 0x68, 0x69, 0xed, 0xdf,
0x12, 0x68, 0xef, 0x47, 0xa3, 0x0e, 0x94, 0x04, 0xd2, 0x4c, 0x7c, 0xac, 0xea, 0x3f, 0x64, 0x23,
0x2e, 0x16, 0x30, 0x5b, 0x8d, 0xbf, 0xf3, 0x55, 0x4e, 0x68, 0x67, 0xe6, 0x87, 0x69, 0xe7, 0x23,
0xd8, 0x12, 0xaa, 0x11, 0xff, 0x41, 0x64, 0x3d, 0x53, 0xcf, 0x36, 0xd3, 0x4a, 0x0a, 0x97, 0x87,
0xa2, 0xcd, 0xc4, 0x0f, 0xe4, 0xee, 0x86, 0xbc, 0x88, 0xea, 0x58, 0x8b, 0x49, 0x2d, 0x07, 0xf2,
0x91, 0xe3, 0x9d, 0xd4, 0xaa, 0x90, 0x6d, 0xb9, 0x94, 0xdf, 0x67, 0xce, 0x27, 0x56, 0x40, 0xbd,
0x98, 0x66, 0x31, 0xdb, 0xfb, 0x6b, 0x1a, 0x4a, 0x89, 0xef, 0x23, 0x7a, 0x0a, 0xdb, 0xad, 0xc3,
0xe3, 0xfe, 0xc0, 0xc0, 0x66, 0xab, 0xd7, 0xdd, 0xef, 0x1c, 0x28, 0x29, 0xed, 0xce, 0x62, 0xa9,
0xab, 0x93, 0x35, 0x68, 0xf3, 0x67, 0x58, 0x85, 0x6c, 0xa7, 0xdb, 0x36, 0x7e, 0xa7, 0x48, 0xda,
0xcd, 0xc5, 0x52, 0x57, 0x12, 0x40, 0xf1, 0xcc, 0x7e, 0x0c, 0x65, 0x0e, 0x30, 0x8f, 0x8f, 0xda,
0x8d, 0x81, 0xa1, 0xa4, 0x35, 0x6d, 0xb1, 0xd4, 0x77, 0xaf, 0xe2, 0xa2, 0x2b, 0xb9, 0x0f, 0x79,
0x6c, 0xfc, 0xf6, 0xd8, 0xe8, 0x0f, 0x94, 0x8c, 0xb6, 0xbb, 0x58, 0xea, 0x28, 0x01, 0x8c, 0x3b,
0xee, 0x21, 0x14, 0xb0, 0xd1, 0x3f, 0xea, 0x75, 0xfb, 0x86, 0x22, 0x6b, 0xff, 0xb7, 0x58, 0xea,
0x37, 0x36, 0x50, 0x51, 0x11, 0xff, 0x14, 0x76, 0xda, 0xbd, 0xcf, 0xbb, 0x87, 0xbd, 0x46, 0xdb,
0x3c, 0xc2, 0xbd, 0x03, 0x6c, 0xf4, 0xfb, 0x4a, 0x56, 0xab, 0x2e, 0x96, 0xfa, 0xed, 0x04, 0xfe,
0x5a, 0x4d, 0xde, 0x05, 0xf9, 0xa8, 0xd3, 0x3d, 0x50, 0x72, 0xda, 0x8d, 0xc5, 0x52, 0xff, 0x20,
0x01, 0x65, 0xa4, 0xb2, 0x8c, 0x5b, 0x87, 0xbd, 0xbe, 0xa1, 0xe4, 0xaf, 0x65, 0xcc, 0xc9, 0xde,
0xfb, 0x3d, 0xa0, 0xeb, 0x1f, 0x6c, 0xf4, 0x00, 0xe4, 0x6e, 0xaf, 0x6b, 0x28, 0x29, 0x91, 0xff,
0x75, 0x44, 0x97, 0x7a, 0x04, 0xd5, 0x20, 0x73, 0xf8, 0xc5, 0x67, 0x8a, 0xa4, 0xfd, 0xff, 0x62,
0xa9, 0xdf, 0xba, 0x0e, 0x3a, 0xfc, 0xe2, 0xb3, 0x3d, 0x0a, 0xa5, 0x64, 0xe0, 0x1a, 0x14, 0x9e,
0x1b, 0x83, 0x46, 0xbb, 0x31, 0x68, 0x28, 0x29, 0x71, 0xa4, 0xd8, 0xfd, 0x9c, 0x84, 0x16, 0xef,
0xd1, 0x3b, 0x90, 0xed, 0x1a, 0x2f, 0x0c, 0xac, 0x48, 0xda, 0xce, 0x62, 0xa9, 0x6f, 0xc5, 0x80,
0x2e, 0x39, 0x23, 0x3e, 0xaa, 0x40, 0xae, 0x71, 0xf8, 0x79, 0xe3, 0x65, 0x5f, 0x49, 0x6b, 0x68,
0xb1, 0xd4, 0xb7, 0x63, 0x77, 0xc3, 0x3d, 0xb7, 0xe6, 0xc1, 0xde, 0x7f, 0x24, 0x28, 0x27, 0x9f,
0x49, 0x54, 0x01, 0x79, 0xbf, 0x73, 0x68, 0xc4, 0xdb, 0x25, 0x7d, 0x6c, 0x8c, 0xea, 0x50, 0x6c,
0x77, 0xb0, 0xd1, 0x1a, 0xf4, 0xf0, 0xcb, 0x38, 0x97, 0x24, 0xa8, 0xed, 0xf8, 0xbc, 0xfe, 0xe7,
0xe8, 0xe7, 0x50, 0xee, 0xbf, 0x7c, 0x7e, 0xd8, 0xe9, 0xfe, 0xc6, 0xe4, 0x11, 0xd3, 0xda, 0xa3,
0xc5, 0x52, 0xbf, 0xb7, 0x01, 0x26, 0x53, 0x9f, 0x8c, 0xac, 0x90, 0xd8, 0x7d, 0xf1, 0xe4, 0x33,
0x67, 0x41, 0x42, 0x2d, 0xd8, 0x89, 0x97, 0xae, 0x37, 0xcb, 0x68, 0x1f, 0x2f, 0x96, 0xfa, 0x87,
0xdf, 0xbb, 0x7e, 0xb5, 0x7b, 0x41, 0x42, 0x0f, 0x20, 0x1f, 0x05, 0x89, 0x2b, 0x29, 0xb9, 0x34,
0x5a, 0xb0, 0xf7, 0x67, 0x09, 0x8a, 0x2b, 0x35, 0x63, 0x84, 0x77, 0x7b, 0xa6, 0x81, 0x71, 0x0f,
0xc7, 0x0c, 0xac, 0x9c, 0x5d, 0xca, 0x87, 0xe8, 0x1e, 0xe4, 0x0f, 0x8c, 0xae, 0x81, 0x3b, 0xad,
0xb8, 0x31, 0x56, 0x90, 0x03, 0xe2, 0x11, 0xdf, 0x19, 0xa1, 0x8f, 0xa0, 0xdc, 0xed, 0x99, 0xfd,
0xe3, 0xd6, 0xb3, 0x38, 0x75, 0xbe, 0x7f, 0x22, 0x54, 0x7f, 0x36, 0x3a, 0xe5, 0x7c, 0xee, 0xb1,
0x1e, 0x7a, 0xd1, 0x38, 0xec, 0xb4, 0x05, 0x34, 0xa3, 0xa9, 0x8b, 0xa5, 0x7e, 0x73, 0x05, 0x8d,
0xde, 0x70, 0x86, 0xdd, 0xb3, 0xa1, 0xf2, 0xfd, 0xba, 0x85, 0x74, 0xc8, 0x35, 0x8e, 0x8e, 0x8c,
0x6e, 0x3b, 0x3e, 0xfd, 0xda, 0xd7, 0x98, 0x4e, 0x89, 0x67, 0x33, 0xc4, 0x7e, 0x0f, 0x1f, 0x18,
0x83, 0xf8, 0xf0, 0x6b, 0xc4, 0x3e, 0x65, 0xff, 0xad, 0x66, 0xfd, 0xcd, 0x37, 0x95, 0xd4, 0xdb,
0x6f, 0x2a, 0xa9, 0x37, 0x97, 0x15, 0xe9, 0xed, 0x65, 0x45, 0xfa, 0xc7, 0x65, 0x25, 0xf5, 0xed,
0x65, 0x45, 0xfa, 0xe3, 0xbb, 0x4a, 0xea, 0xab, 0x77, 0x15, 0xe9, 0xed, 0xbb, 0x4a, 0xea, 0x6f,
0xef, 0x2a, 0xa9, 0x61, 0x8e, 0x6b, 0xde, 0xa7, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xc7, 0x7a,
0xfc, 0x00, 0x82, 0x0f, 0x00, 0x00,
}
func (m *Hello) Marshal() (dAtA []byte, err error) {
-214
View File
@@ -1,214 +0,0 @@
syntax = "proto3";
package protocol;
import "repos/protobuf/gogoproto/gogo.proto";
option (gogoproto.goproto_getters_all) = false;
option (gogoproto.sizer_all) = false;
option (gogoproto.protosizer_all) = true;
option (gogoproto.goproto_enum_stringer_all) = true;
option (gogoproto.goproto_enum_prefix_all) = false;
option (gogoproto.goproto_unkeyed_all) = false;
option (gogoproto.goproto_unrecognized_all) = false;
option (gogoproto.goproto_sizecache_all) = false;
// --- Pre-auth ---
message Hello {
string device_name = 1;
string client_name = 2;
string client_version = 3;
}
// --- Header ---
message Header {
MessageType type = 1;
MessageCompression compression = 2;
}
enum MessageType {
CLUSTER_CONFIG = 0 [(gogoproto.enumvalue_customname) = "messageTypeClusterConfig"];
INDEX = 1 [(gogoproto.enumvalue_customname) = "messageTypeIndex"];
INDEX_UPDATE = 2 [(gogoproto.enumvalue_customname) = "messageTypeIndexUpdate"];
REQUEST = 3 [(gogoproto.enumvalue_customname) = "messageTypeRequest"];
RESPONSE = 4 [(gogoproto.enumvalue_customname) = "messageTypeResponse"];
DOWNLOAD_PROGRESS = 5 [(gogoproto.enumvalue_customname) = "messageTypeDownloadProgress"];
PING = 6 [(gogoproto.enumvalue_customname) = "messageTypePing"];
CLOSE = 7 [(gogoproto.enumvalue_customname) = "messageTypeClose"];
}
enum MessageCompression {
NONE = 0 [(gogoproto.enumvalue_customname) = "MessageCompressionNone"];
LZ4 = 1 [(gogoproto.enumvalue_customname) = "MessageCompressionLZ4"];
}
// --- Actual messages ---
// Cluster Config
message ClusterConfig {
repeated Folder folders = 1 [(gogoproto.nullable) = false];
}
message Folder {
string id = 1 [(gogoproto.customname) = "ID"];
string label = 2;
bool read_only = 3;
bool ignore_permissions = 4;
bool ignore_delete = 5;
bool disable_temp_indexes = 6;
bool paused = 7;
repeated Device devices = 16 [(gogoproto.nullable) = false];
}
message Device {
bytes id = 1 [(gogoproto.customname) = "ID", (gogoproto.customtype) = "DeviceID", (gogoproto.nullable) = false];
string name = 2;
repeated string addresses = 3;
Compression compression = 4;
string cert_name = 5;
int64 max_sequence = 6;
bool introducer = 7;
uint64 index_id = 8 [(gogoproto.customname) = "IndexID", (gogoproto.customtype) = "IndexID", (gogoproto.nullable) = false];
bool skip_introduction_removals = 9;
}
enum Compression {
METADATA = 0 [(gogoproto.enumvalue_customname) = "CompressMetadata"];
NEVER = 1 [(gogoproto.enumvalue_customname) = "CompressNever"];
ALWAYS = 2 [(gogoproto.enumvalue_customname) = "CompressAlways"];
}
// Index and Index Update
message Index {
string folder = 1;
repeated FileInfo files = 2 [(gogoproto.nullable) = false];
}
message IndexUpdate {
string folder = 1;
repeated FileInfo files = 2 [(gogoproto.nullable) = false];
}
message FileInfo {
option (gogoproto.goproto_stringer) = false;
// The field ordering here optimizes for struct size / alignment --
// large types come before smaller ones.
string name = 1;
int64 size = 3;
int64 modified_s = 5;
uint64 modified_by = 12 [(gogoproto.customtype) = "ShortID", (gogoproto.nullable) = false];
Vector version = 9 [(gogoproto.nullable) = false];
int64 sequence = 10;
repeated BlockInfo blocks = 16 [(gogoproto.nullable) = false];
string symlink_target = 17;
bytes blocks_hash = 18;
FileInfoType type = 2;
uint32 permissions = 4;
int32 modified_ns = 11;
int32 block_size = 13 [(gogoproto.customname) = "RawBlockSize"];
// The local_flags fields stores flags that are relevant to the local
// host only. It is not part of the protocol, doesn't get sent or
// received (we make sure to zero it), nonetheless we need it on our
// struct and to be able to serialize it to/from the database.
uint32 local_flags = 1000;
// The version_hash is an implementation detail and not part of the wire
// format.
bytes version_hash = 1001;
bool deleted = 6;
bool invalid = 7 [(gogoproto.customname) = "RawInvalid"];
bool no_permissions = 8;
}
enum FileInfoType {
FILE = 0 [(gogoproto.enumvalue_customname) = "FileInfoTypeFile"];
DIRECTORY = 1 [(gogoproto.enumvalue_customname) = "FileInfoTypeDirectory"];
SYMLINK_FILE = 2 [(gogoproto.enumvalue_customname) = "FileInfoTypeDeprecatedSymlinkFile", deprecated = true];
SYMLINK_DIRECTORY = 3 [(gogoproto.enumvalue_customname) = "FileInfoTypeDeprecatedSymlinkDirectory", deprecated = true];
SYMLINK = 4 [(gogoproto.enumvalue_customname) = "FileInfoTypeSymlink"];
}
message BlockInfo {
option (gogoproto.goproto_stringer) = false;
bytes hash = 3;
int64 offset = 1;
int32 size = 2;
uint32 weak_hash = 4;
}
message Vector {
repeated Counter counters = 1 [(gogoproto.nullable) = false];
}
message Counter {
uint64 id = 1 [(gogoproto.customname) = "ID", (gogoproto.customtype) = "ShortID", (gogoproto.nullable) = false];
uint64 value = 2;
}
// Request
message Request {
int32 id = 1 [(gogoproto.customname) = "ID"];
string folder = 2;
string name = 3;
int64 offset = 4;
int32 size = 5;
bytes hash = 6;
bool from_temporary = 7;
uint32 weak_hash = 8;
}
// Response
message Response {
int32 id = 1 [(gogoproto.customname) = "ID"];
bytes data = 2;
ErrorCode code = 3;
}
enum ErrorCode {
NO_ERROR = 0 [(gogoproto.enumvalue_customname) = "ErrorCodeNoError"];
GENERIC = 1 [(gogoproto.enumvalue_customname) = "ErrorCodeGeneric"];
NO_SUCH_FILE = 2 [(gogoproto.enumvalue_customname) = "ErrorCodeNoSuchFile"];
INVALID_FILE = 3 [(gogoproto.enumvalue_customname) = "ErrorCodeInvalidFile"];
}
// DownloadProgress
message DownloadProgress {
string folder = 1;
repeated FileDownloadProgressUpdate updates = 2 [(gogoproto.nullable) = false];
}
message FileDownloadProgressUpdate {
FileDownloadProgressUpdateType update_type = 1;
string name = 2;
Vector version = 3 [(gogoproto.nullable) = false];
repeated int32 block_indexes = 4 [packed=false];
int32 block_size = 5;
}
enum FileDownloadProgressUpdateType {
APPEND = 0 [(gogoproto.enumvalue_customname) = "UpdateTypeAppend"];
FORGET = 1 [(gogoproto.enumvalue_customname) = "UpdateTypeForget"];
}
// Ping
message Ping {
}
// Close
message Close {
string reason = 1;
}
-3
View File
@@ -1,8 +1,5 @@
// Copyright (C) 2014 The Protocol Authors.
//go:generate go run ../../script/protofmt.go bep.proto
//go:generate protoc -I ../../ -I . --gogofast_out=. bep.proto
package protocol
import (
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (C) 2014 The Protocol Authors.
//go:generate go run ../../script/protofmt.go deviceid_test.proto
//go:generate go run ../../proto/scripts/protofmt.go deviceid_test.proto
//go:generate protoc -I ../../ -I . --gogofast_out=. deviceid_test.proto
package protocol
+1 -1
View File
@@ -499,7 +499,7 @@ func (p *Process) eventLoop() {
p.id = id
home := data["home"].(string)
w, err := config.Load(filepath.Join(home, "config.xml"), protocol.LocalDeviceID, events.NoopLogger)
w, _, err := config.Load(filepath.Join(home, "config.xml"), protocol.LocalDeviceID, events.NoopLogger)
if err != nil {
log.Println("eventLoop: Starting:", err)
continue
+8 -8
View File
@@ -63,7 +63,7 @@ func DefaultConfig(path string, myID protocol.DeviceID, evLogger events.Logger,
// necessary or returns an error, if the version isn't compatible.
func LoadConfigAtStartup(path string, cert tls.Certificate, evLogger events.Logger, allowNewerConfig, noDefaultFolder bool) (config.Wrapper, error) {
myID := protocol.NewDeviceID(cert.Certificate[0])
cfg, err := config.Load(path, myID, evLogger)
cfg, originalVersion, err := config.Load(path, myID, evLogger)
if fs.IsNotExist(err) {
cfg, err = DefaultConfig(path, myID, evLogger, noDefaultFolder)
if err != nil {
@@ -80,14 +80,14 @@ func LoadConfigAtStartup(path string, cert tls.Certificate, evLogger events.Logg
return nil, errors.Wrap(err, "failed to load config")
}
if cfg.RawCopy().OriginalVersion != config.CurrentVersion {
if cfg.RawCopy().OriginalVersion == config.CurrentVersion+1101 {
if originalVersion != config.CurrentVersion {
if originalVersion == config.CurrentVersion+1101 {
l.Infof("Now, THAT's what we call a config from the future! Don't worry. As long as you hit that wire with the connecting hook at precisely eighty-eight miles per hour the instant the lightning strikes the tower... everything will be fine.")
}
if cfg.RawCopy().OriginalVersion > config.CurrentVersion && !allowNewerConfig {
return nil, fmt.Errorf("config file version (%d) is newer than supported version (%d). If this is expected, use -allow-newer-config to override.", cfg.RawCopy().OriginalVersion, config.CurrentVersion)
if originalVersion > config.CurrentVersion && !allowNewerConfig {
return nil, fmt.Errorf("config file version (%d) is newer than supported version (%d). If this is expected, use -allow-newer-config to override.", originalVersion, config.CurrentVersion)
}
err = archiveAndSaveConfig(cfg)
err = archiveAndSaveConfig(cfg, originalVersion)
if err != nil {
return nil, errors.Wrap(err, "config archive")
}
@@ -96,9 +96,9 @@ func LoadConfigAtStartup(path string, cert tls.Certificate, evLogger events.Logg
return cfg, nil
}
func archiveAndSaveConfig(cfg config.Wrapper) error {
func archiveAndSaveConfig(cfg config.Wrapper, originalVersion int) error {
// Copy the existing config to an archive copy
archivePath := cfg.ConfigPath() + fmt.Sprintf(".v%d", cfg.RawCopy().OriginalVersion)
archivePath := cfg.ConfigPath() + fmt.Sprintf(".v%d", originalVersion)
l.Infoln("Archiving a copy of old config file format at:", archivePath)
if err := copyFile(cfg.ConfigPath(), archivePath); err != nil {
return err
+2 -2
View File
@@ -58,14 +58,14 @@ func SetDefaults(data interface{}) {
case string:
f.SetString(v)
case int:
case int, uint32, int32, int64, uint64:
i, err := strconv.ParseInt(v, 10, 64)
if err != nil {
panic(err)
}
f.SetInt(i)
case float64:
case float64, float32:
i, err := strconv.ParseFloat(v, 64)
if err != nil {
panic(err)