| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // Copyright (C) 2019 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 main
- import (
- "fmt"
- "github.com/urfave/cli"
- )
- var operationCommand = cli.Command{
- Name: "operations",
- HideHelp: true,
- Usage: "Operation command group",
- Subcommands: []cli.Command{
- {
- Name: "restart",
- Usage: "Restart syncthing",
- Action: expects(0, emptyPost("system/restart")),
- },
- {
- Name: "shutdown",
- Usage: "Shutdown syncthing",
- Action: expects(0, emptyPost("system/shutdown")),
- },
- {
- Name: "reset",
- Usage: "Reset syncthing deleting all folders and devices",
- Action: expects(0, emptyPost("system/reset")),
- },
- {
- Name: "upgrade",
- Usage: "Upgrade syncthing (if a newer version is available)",
- Action: expects(0, emptyPost("system/upgrade")),
- },
- {
- Name: "folder-override",
- Usage: "Override changes on folder (remote for sendonly, local for receiveonly)",
- ArgsUsage: "[folder id]",
- Action: expects(1, foldersOverride),
- },
- },
- }
- func foldersOverride(c *cli.Context) error {
- client := c.App.Metadata["client"].(*APIClient)
- cfg, err := getConfig(client)
- if err != nil {
- return err
- }
- rid := c.Args()[0]
- for _, folder := range cfg.Folders {
- if folder.ID == rid {
- response, err := client.Post("db/override", "")
- if err != nil {
- return err
- }
- if response.StatusCode != 200 {
- errStr := fmt.Sprint("Failed to override changes\nStatus code: ", response.StatusCode)
- bytes, err := responseToBArray(response)
- if err != nil {
- return err
- }
- body := string(bytes)
- if body != "" {
- errStr += "\nBody: " + body
- }
- return fmt.Errorf(errStr)
- }
- return nil
- }
- }
- return fmt.Errorf("Folder " + rid + " not found")
- }
|