mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-19 03:25:16 +00:00
172 lines
5.1 KiB
Go
172 lines
5.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/AudriusButkevicius/cli"
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
cliCommands = append(cliCommands, cli.Command{
|
||
|
Name: "options",
|
||
|
HideHelp: true,
|
||
|
Usage: "Options command group",
|
||
|
Subcommands: []cli.Command{
|
||
|
{
|
||
|
Name: "dump",
|
||
|
Usage: "Show all Syncthing option settings",
|
||
|
Requires: &cli.Requires{},
|
||
|
Action: optionsDump,
|
||
|
},
|
||
|
{
|
||
|
Name: "get",
|
||
|
Usage: "Get a Syncthing option setting",
|
||
|
Requires: &cli.Requires{"setting"},
|
||
|
Action: optionsGet,
|
||
|
},
|
||
|
{
|
||
|
Name: "set",
|
||
|
Usage: "Set a Syncthing option setting",
|
||
|
Requires: &cli.Requires{"setting", "value..."},
|
||
|
Action: optionsSet,
|
||
|
},
|
||
|
},
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func optionsDump(c *cli.Context) {
|
||
|
cfg := getConfig(c).Options
|
||
|
writer := newTableWriter()
|
||
|
|
||
|
fmt.Fprintln(writer, "Sync protocol listen addresses:\t", strings.Join(cfg.ListenAddress, " "), "\t(address)")
|
||
|
fmt.Fprintln(writer, "Global discovery enabled:\t", cfg.GlobalAnnEnabled, "\t(globalannenabled)")
|
||
|
fmt.Fprintln(writer, "Global discovery servers:\t", strings.Join(cfg.GlobalAnnServers, " "), "\t(globalannserver)")
|
||
|
|
||
|
fmt.Fprintln(writer, "Local discovery enabled:\t", cfg.LocalAnnEnabled, "\t(localannenabled)")
|
||
|
fmt.Fprintln(writer, "Local discovery port:\t", cfg.LocalAnnPort, "\t(localannport)")
|
||
|
|
||
|
fmt.Fprintln(writer, "Outgoing rate limit in KiB/s:\t", cfg.MaxSendKbps, "\t(maxsend)")
|
||
|
fmt.Fprintln(writer, "Incoming rate limit in KiB/s:\t", cfg.MaxRecvKbps, "\t(maxrecv)")
|
||
|
fmt.Fprintln(writer, "Reconnect interval in seconds:\t", cfg.ReconnectIntervalS, "\t(reconnect)")
|
||
|
fmt.Fprintln(writer, "Start browser:\t", cfg.StartBrowser, "\t(browser)")
|
||
|
fmt.Fprintln(writer, "Enable UPnP:\t", cfg.UPnPEnabled, "\t(upnp)")
|
||
|
fmt.Fprintln(writer, "UPnP Lease in minutes:\t", cfg.UPnPLeaseM, "\t(upnplease)")
|
||
|
fmt.Fprintln(writer, "UPnP Renewal period in minutes:\t", cfg.UPnPRenewalM, "\t(upnprenew)")
|
||
|
fmt.Fprintln(writer, "Restart on Wake Up:\t", cfg.RestartOnWakeup, "\t(wake)")
|
||
|
|
||
|
reporting := "unrecognized value"
|
||
|
switch cfg.URAccepted {
|
||
|
case -1:
|
||
|
reporting = "false"
|
||
|
case 0:
|
||
|
reporting = "undecided/false"
|
||
|
case 1:
|
||
|
reporting = "true"
|
||
|
}
|
||
|
fmt.Fprintln(writer, "Anonymous usage reporting:\t", reporting, "\t(reporting)")
|
||
|
|
||
|
writer.Flush()
|
||
|
}
|
||
|
|
||
|
func optionsGet(c *cli.Context) {
|
||
|
cfg := getConfig(c).Options
|
||
|
arg := c.Args()[0]
|
||
|
switch strings.ToLower(arg) {
|
||
|
case "address":
|
||
|
fmt.Println(strings.Join(cfg.ListenAddress, "\n"))
|
||
|
case "globalannenabled":
|
||
|
fmt.Println(cfg.GlobalAnnEnabled)
|
||
|
case "globalannservers":
|
||
|
fmt.Println(strings.Join(cfg.GlobalAnnServers, "\n"))
|
||
|
case "localannenabled":
|
||
|
fmt.Println(cfg.LocalAnnEnabled)
|
||
|
case "localannport":
|
||
|
fmt.Println(cfg.LocalAnnPort)
|
||
|
case "maxsend":
|
||
|
fmt.Println(cfg.MaxSendKbps)
|
||
|
case "maxrecv":
|
||
|
fmt.Println(cfg.MaxRecvKbps)
|
||
|
case "reconnect":
|
||
|
fmt.Println(cfg.ReconnectIntervalS)
|
||
|
case "browser":
|
||
|
fmt.Println(cfg.StartBrowser)
|
||
|
case "upnp":
|
||
|
fmt.Println(cfg.UPnPEnabled)
|
||
|
case "upnplease":
|
||
|
fmt.Println(cfg.UPnPLeaseM)
|
||
|
case "upnprenew":
|
||
|
fmt.Println(cfg.UPnPRenewalM)
|
||
|
case "reporting":
|
||
|
switch cfg.URAccepted {
|
||
|
case -1:
|
||
|
fmt.Println("false")
|
||
|
case 0:
|
||
|
fmt.Println("undecided/false")
|
||
|
case 1:
|
||
|
fmt.Println("true")
|
||
|
default:
|
||
|
fmt.Println("unknown")
|
||
|
}
|
||
|
case "wake":
|
||
|
fmt.Println(cfg.RestartOnWakeup)
|
||
|
default:
|
||
|
die("Invalid setting: " + arg + "\nAvailable settings: address, globalannenabled, globalannserver, localannenabled, localannport, maxsend, maxrecv, reconnect, browser, upnp, upnplease, upnprenew, reporting, wake")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func optionsSet(c *cli.Context) {
|
||
|
config := getConfig(c)
|
||
|
arg := c.Args()[0]
|
||
|
val := c.Args()[1]
|
||
|
switch strings.ToLower(arg) {
|
||
|
case "address":
|
||
|
for _, item := range c.Args().Tail() {
|
||
|
validAddress(item)
|
||
|
}
|
||
|
config.Options.ListenAddress = c.Args().Tail()
|
||
|
case "globalannenabled":
|
||
|
config.Options.GlobalAnnEnabled = parseBool(val)
|
||
|
case "globalannserver":
|
||
|
for _, item := range c.Args().Tail() {
|
||
|
validAddress(item)
|
||
|
}
|
||
|
config.Options.GlobalAnnServers = c.Args().Tail()
|
||
|
case "localannenabled":
|
||
|
config.Options.LocalAnnEnabled = parseBool(val)
|
||
|
case "localannport":
|
||
|
config.Options.LocalAnnPort = parsePort(val)
|
||
|
case "maxsend":
|
||
|
config.Options.MaxSendKbps = parseUint(val)
|
||
|
case "maxrecv":
|
||
|
config.Options.MaxRecvKbps = parseUint(val)
|
||
|
case "reconnect":
|
||
|
config.Options.ReconnectIntervalS = parseUint(val)
|
||
|
case "browser":
|
||
|
config.Options.StartBrowser = parseBool(val)
|
||
|
case "upnp":
|
||
|
config.Options.UPnPEnabled = parseBool(val)
|
||
|
case "upnplease":
|
||
|
config.Options.UPnPLeaseM = parseUint(val)
|
||
|
case "upnprenew":
|
||
|
config.Options.UPnPRenewalM = parseUint(val)
|
||
|
case "reporting":
|
||
|
switch strings.ToLower(val) {
|
||
|
case "u", "undecided", "unset":
|
||
|
config.Options.URAccepted = 0
|
||
|
default:
|
||
|
boolvalue := parseBool(val)
|
||
|
if boolvalue {
|
||
|
config.Options.URAccepted = 1
|
||
|
} else {
|
||
|
config.Options.URAccepted = -1
|
||
|
}
|
||
|
}
|
||
|
case "wake":
|
||
|
config.Options.RestartOnWakeup = parseBool(val)
|
||
|
default:
|
||
|
die("Invalid setting: " + arg + "\nAvailable settings: address, globalannenabled, globalannserver, localannenabled, localannport, maxsend, maxrecv, reconnect, browser, upnp, upnplease, upnprenew, reporting, wake")
|
||
|
}
|
||
|
setConfig(c, config)
|
||
|
}
|