diff --git a/cmd/ursrv/main.go b/cmd/ursrv/main.go index 1f530afcf..5daac5be5 100644 --- a/cmd/ursrv/main.go +++ b/cmd/ursrv/main.go @@ -65,10 +65,14 @@ type report struct { URVersion int NumCPU int FolderUses struct { - ReadOnly int - IgnorePerms int - IgnoreDelete int - AutoNormalize int + ReadOnly int + IgnorePerms int + IgnoreDelete int + AutoNormalize int + SimpleVersioning int + ExternalVersioning int + StaggeredVersioning int + TrashcanVersioning int } DeviceUses struct { Introducer int @@ -126,7 +130,10 @@ func (r *report) FieldPointers() []interface{} { &r.Announce.DefaultServersDNS, &r.Announce.DefaultServersIP, &r.Announce.OtherServers, &r.Relays.Enabled, &r.Relays.DefaultServers, &r.Relays.OtherServers, &r.UsesRateLimit, &r.UpgradeAllowedManual, - &r.UpgradeAllowedAuto} + &r.UpgradeAllowedAuto, + &r.FolderUses.SimpleVersioning, &r.FolderUses.ExternalVersioning, + &r.FolderUses.StaggeredVersioning, &r.FolderUses.TrashcanVersioning, + } } func (r *report) FieldNames() []string { @@ -173,6 +180,11 @@ func (r *report) FieldNames() []string { "RateLimitEnabled", "UpgradeAllowedManual", "UpgradeAllowedAuto", + // v0.12.19+ + "FolderSimpleVersioning", + "FolderExternalVersioning", + "FolderStaggeredVersioning", + "FolderTrashcanVersioning", } } @@ -241,7 +253,11 @@ func setupDB(db *sql.DB) error { ADD COLUMN RelayOtherServers INTEGER NOT NULL DEFAULT 0, ADD COLUMN RateLimitEnabled BOOLEAN NOT NULL DEFAULT FALSE, ADD COLUMN UpgradeAllowedManual BOOLEAN NOT NULL DEFAULT FALSE, - ADD COLUMN UpgradeAllowedAuto BOOLEAN NOT NULL DEFAULT FALSE + ADD COLUMN UpgradeAllowedAuto BOOLEAN NOT NULL DEFAULT FALSE, + ADD COLUMN FolderSimpleVersioning INTEGER NOT NULL DEFAULT 0, + ADD COLUMN FolderExternalVersioning INTEGER NOT NULL DEFAULT 0, + ADD COLUMN FolderStaggeredVersioning INTEGER NOT NULL DEFAULT 0, + ADD COLUMN FolderTrashcanVersioning INTEGER NOT NULL DEFAULT 0 `) if err != nil { return err @@ -482,6 +498,10 @@ func getReport(db *sql.DB) map[string]interface{} { "Folders, ignore deletes": 0, "Folders, ignore permissions": 0, "Folders, master mode": 0, + "Folders, simple versioning": 0, + "Folders, external versioning": 0, + "Folders, staggered versioning": 0, + "Folders, trashcan versioning": 0, "Devices, compress always": 0, "Devices, compress metadata": 0, "Devices, compress nothing": 0, @@ -578,6 +598,18 @@ func getReport(db *sql.DB) map[string]interface{} { if rep.FolderUses.ReadOnly > 0 { features["Folders, master mode"]++ } + if rep.FolderUses.SimpleVersioning > 0 { + features["Folders, simple versioning"]++ + } + if rep.FolderUses.ExternalVersioning > 0 { + features["Folders, external versioning"]++ + } + if rep.FolderUses.StaggeredVersioning > 0 { + features["Folders, staggered versioning"]++ + } + if rep.FolderUses.TrashcanVersioning > 0 { + features["Folders, trashcan versioning"]++ + } if rep.DeviceUses.CompressAlways > 0 { features["Devices, compress always"]++ } @@ -894,5 +926,8 @@ func (l sortableFeatureList) Swap(a, b int) { l[a], l[b] = l[b], l[a] } func (l sortableFeatureList) Less(a, b int) bool { - return l[a].Pct < l[b].Pct + if l[a].Pct != l[b].Pct { + return l[a].Pct < l[b].Pct + } + return l[a].Key > l[b].Key }