Documentation ¶
Overview ¶
Package config reads, writes and edits the config file and deals with command line flags
Index ¶
- Constants
- Variables
- func Authorize(ctx context.Context, args []string, noAutoBrowser bool, templateFile string) error
- func ChangeConfigPasswordAndSave()
- func ChangePassword(name string) string
- func Choose(what string, kind string, choices, help []string, defaultValue string, ...) string
- func ChooseNumber(what string, min, max int) int
- func ChooseOption(o *fs.Option, name string) string
- func ChoosePassword(defaultValue string, required bool) string
- func ChooseRemote() string
- func ClearConfigPassword()
- func Command(commands []string) byte
- func CommandDefault(commands []string, defaultIndex int) byte
- func Confirm(Default bool) bool
- func CopyRemote(name string)
- func CreateRemote(ctx context.Context, name string, Type string, keyValues rc.Params, ...) (out *fs.ConfigOut, err error)
- func Decrypt(b io.ReadSeeker) (io.Reader, error)
- func DeleteRemote(name string)
- func Dump() error
- func DumpRcBlob() (dump rc.Params)
- func DumpRcRemote(name string) (dump rc.Params)
- func EditConfig(ctx context.Context) (err error)
- func EditRemote(ctx context.Context, ri *fs.RegInfo, name string) error
- func Encrypt(src io.Reader, dst io.Writer) error
- func Enter(what string, kind string, defaultValue string, required bool) string
- func FileDeleteKey(section, key string) bool
- func FileGetValue(section, key string) (string, bool)
- func FileSections() []string
- func FileSetValue(section, key, value string)
- func GetCacheDir() string
- func GetConfigPath() string
- func GetPassword(prompt string) string
- func GetPasswordCommand(ctx context.Context) (pass string, err error)
- func GetRemoteNames() []string
- func GetValue(remote, key string) string
- func IsEncrypted() bool
- func JSONListProviders() error
- func NewRemote(ctx context.Context, name string) error
- func NewRemoteName() (name string)
- func OkRemote(name string) bool
- func PasswordRemote(ctx context.Context, name string, keyValues rc.Params) error
- func PostConfig(ctx context.Context, name string, m configmap.Mapper, ri *fs.RegInfo) error
- func ReadNonEmptyLine(prompt string) string
- func ReadPassword() string
- func RemoteConfig(ctx context.Context, name string) error
- func RemoveConfigPasswordAndSave()
- func RenameRemote(name string)
- func SaveConfig()
- func SetCacheDir(path string) (err error)
- func SetConfigPassword(password string) error
- func SetConfigPath(path string) (err error)
- func SetData(newData Storage)
- func SetPassword()
- func SetTempDir(path string) (err error)
- func SetValueAndSave(remote, key, value string) error
- func ShowConfig()
- func ShowConfigLocation()
- func ShowRedactedConfig()
- func ShowRedactedRemote(name string)
- func ShowRemote(name string)
- func ShowRemotes()
- func UpdateRemote(ctx context.Context, name string, keyValues rc.Params, opt UpdateRemoteOpt) (out *fs.ConfigOut, err error)
- type Remote
- type Storage
- type UpdateRemoteOpt
Constants ¶
const ( // ConfigToken is the key used to store the token under ConfigToken = "token" // ConfigClientID is the config key used to store the client id ConfigClientID = "client_id" // ConfigClientSecret is the config key used to store the client secret ConfigClientSecret = "client_secret" // ConfigAuthURL is the config key used to store the auth server endpoint ConfigAuthURL = "auth_url" // ConfigTokenURL is the config key used to store the token server endpoint ConfigTokenURL = "token_url" // ConfigEncoding is the config key to change the encoding for a backend ConfigEncoding = "encoding" // ConfigEncodingHelp is the help for ConfigEncoding ConfigEncodingHelp = "The encoding for the backend.\n\nSee the [encoding section in the overview](/overview/#encoding) for more info." // ConfigAuthorize indicates that we just want "rclone authorize" ConfigAuthorize = "config_authorize" // ConfigAuthNoBrowser indicates that we do not want to open browser ConfigAuthNoBrowser = "config_auth_no_browser" // ConfigTemplate is the template content to be used in the authorization webserver ConfigTemplate = "config_template" // ConfigTemplateFile is the path to a template file to read into the value of `ConfigTemplate` above ConfigTemplateFile = "config_template_file" )
Variables ¶
var ( // PasswordPromptOutput is output of prompt for password PasswordPromptOutput = os.Stderr // PassConfigKeyForDaemonization if set to true, the configKey // is obscured with obscure.Obscure and saved to a temp file // when it is calculated from the password. The path of that // temp file is then written to the environment variable // `_RCLONE_CONFIG_KEY_FILE`. If `_RCLONE_CONFIG_KEY_FILE` is // present, password prompt is skipped and // `RCLONE_CONFIG_PASS` ignored. For security reasons, the // temp file is deleted once the configKey is successfully // loaded. This can be used to pass the configKey to a child // process. PassConfigKeyForDaemonization = false )
var ErrorConfigFileNotFound = errors.New("config file not found")
ErrorConfigFileNotFound is returned when the config file is not found
var ( // Password can be used to configure the random password generator Password = random.Password )
Global
var ReadLine = func() string { buf := bufio.NewReader(os.Stdin) line, err := buf.ReadString('\n') if err != nil { fs.Fatalf(nil, "Failed to read line: %v", err) } return strings.TrimSpace(line) }
ReadLine reads some input
Functions ¶
func Authorize ¶
Authorize is for remote authorization of headless machines.
It expects 1, 2 or 3 arguments
rclone authorize "fs name" rclone authorize "fs name" "base64 encoded JSON blob" rclone authorize "fs name" "client id" "client secret"
func ChangeConfigPasswordAndSave ¶
func ChangeConfigPasswordAndSave()
ChangeConfigPasswordAndSave will query the user twice for a password. If the same password is entered twice the key is updated.
This will use --password-command if configured to read the password.
It will then save the config
func ChangePassword ¶
ChangePassword will query the user twice for the named password. If the same password is entered it is returned.
func Choose ¶
func Choose(what string, kind string, choices, help []string, defaultValue string, required bool, newOk bool) string
Choose one of the choices, or default, or type a new string if newOk is set
func ChooseNumber ¶
ChooseNumber asks the user to enter a number between min and max inclusive prompting them with what.
func ChooseOption ¶
ChooseOption asks the user to choose an option
func ChoosePassword ¶
ChoosePassword asks the user for a password
func ClearConfigPassword ¶
func ClearConfigPassword()
ClearConfigPassword sets the current the password to empty
func CommandDefault ¶
CommandDefault - choose one. If return is pressed then it will chose the defaultIndex if it is >= 0
Must not call fs.Log anything from here to avoid deadlock in --interactive --progress
func Confirm ¶
Confirm asks the user for Yes or No and returns true or false
If the user presses enter then the Default will be used
func CreateRemote ¶
func CreateRemote(ctx context.Context, name string, Type string, keyValues rc.Params, opts UpdateRemoteOpt) (out *fs.ConfigOut, err error)
CreateRemote creates a new remote with name, type and a list of parameters which are key, value pairs. If update is set then it adds the new keys rather than replacing all of them.
func Decrypt ¶
func Decrypt(b io.ReadSeeker) (io.Reader, error)
Decrypt will automatically decrypt a reader
func DumpRcBlob ¶
DumpRcBlob dumps all the config as an unstructured blob suitable for the rc
func DumpRcRemote ¶
DumpRcRemote dumps the config for a single remote
func EditConfig ¶
EditConfig edits the config file interactively
func EditRemote ¶
EditRemote gets the user to edit a remote
func FileDeleteKey ¶
FileDeleteKey deletes the config key in the config file. It returns true if the key was deleted, or returns false if the section or key didn't exist.
func FileGetValue ¶
FileGetValue gets the config key under section returning the the value and true if found and or ("", false) otherwise
func FileSections ¶
func FileSections() []string
FileSections returns the sections in the config file
func FileSetValue ¶
func FileSetValue(section, key, value string)
FileSetValue sets the key in section to value. It doesn't save the config file.
func GetCacheDir ¶
func GetCacheDir() string
GetCacheDir returns the default directory for cache
The directory is neither guaranteed to exist nor have accessible permissions. Users of this should make a subdirectory and use MkdirAll() to create it and any parents.
func GetPassword ¶
GetPassword asks the user for a password with the prompt given.
func GetPasswordCommand ¶
GetPasswordCommand gets the password using the --password-command setting
If the the --password-command flag was not in use it returns "", nil
func GetRemoteNames ¶
func GetRemoteNames() []string
GetRemoteNames returns the names of remotes defined in environment and config file.
func GetValue ¶
GetValue gets the value for a config key from environment or config file under section returning the default if not set.
Emulates the preference documented and normally used by rclone via configmap, which means environment variables before config file.
func JSONListProviders ¶
func JSONListProviders() error
JSONListProviders prints all the providers and options in JSON format
func NewRemoteName ¶
func NewRemoteName() (name string)
NewRemoteName asks the user for a name for a new remote
func PasswordRemote ¶
PasswordRemote adds the keyValues passed in to the remote of name. keyValues should be key, value pairs.
func PostConfig ¶
PostConfig configures the backend after the main config has been done
The is the user interface loop that drives the post configuration backend config.
func ReadNonEmptyLine ¶
ReadNonEmptyLine prints prompt and calls Readline until non empty
func ReadPassword ¶
func ReadPassword() string
ReadPassword reads a password without echoing it to the terminal.
func RemoteConfig ¶
RemoteConfig runs the config helper for the remote if needed
func RemoveConfigPasswordAndSave ¶
func RemoveConfigPasswordAndSave()
RemoveConfigPasswordAndSave will clear the config password and save the unencrypted config file.
func SaveConfig ¶
func SaveConfig()
SaveConfig calling function which saves configuration file. if SaveConfig returns error trying again after sleep.
func SetCacheDir ¶
SetCacheDir sets new default directory for cache
func SetConfigPassword ¶
SetConfigPassword will set the configKey to the hash of the password. If the length of the password is zero after trimming+normalization, an error is returned.
func SetConfigPath ¶
SetConfigPath sets new config file path
Checks for empty string, os null device, or special path, all of which indicates in-memory config.
func SetPassword ¶
func SetPassword()
SetPassword will allow the user to modify the current configuration encryption settings.
func SetTempDir ¶
SetTempDir sets new default directory to use for temporary files.
Assuming golang's os.TempDir is used to get the directory: "On Unix systems, it returns $TMPDIR if non-empty, else /tmp. On Windows, it uses GetTempPath, returning the first non-empty value from %TMP%, %TEMP%, %USERPROFILE%, or the Windows directory."
To override the default we therefore set environment variable TMPDIR on Unix systems, and both TMP and TEMP on Windows (they are almost exclusively aliases for the same path, and programs may refer to to either of them). This should make all libraries and forked processes use the same.
func SetValueAndSave ¶
SetValueAndSave sets the key to the value and saves just that value in the config file. It loads the old config file in from disk first and overwrites the given value only.
func ShowConfigLocation ¶
func ShowConfigLocation()
ShowConfigLocation prints the location of the config file in use
func ShowRedactedConfig ¶
func ShowRedactedConfig()
ShowRedactedConfig prints the redacted (unencrypted) config options
func ShowRedactedRemote ¶
func ShowRedactedRemote(name string)
ShowRedactedRemote shows the contents of the remote in config file format
func ShowRemote ¶
func ShowRemote(name string)
ShowRemote shows the contents of the remote in config file format
Types ¶
type Remote ¶
type Remote struct { Name string `json:"name"` Type string `json:"type"` Source string `json:"source"` Description string `json:"description"` }
Remote defines a remote with a name, type, source and description
func GetRemotes ¶
func GetRemotes() []Remote
GetRemotes returns the list of remotes defined in environment and config file.
Emulates the preference documented and normally used by rclone via configmap, which means environment variables before config file.
type Storage ¶
type Storage interface { // GetSectionList returns a slice of strings with names for all the // sections GetSectionList() []string // HasSection returns true if section exists in the config file HasSection(section string) bool // DeleteSection removes the named section and all config from the // config file DeleteSection(section string) // GetKeyList returns the keys in this section GetKeyList(section string) []string // GetValue returns the key in section with a found flag GetValue(section string, key string) (value string, found bool) // SetValue sets the value under key in section SetValue(section string, key string, value string) // DeleteKey removes the key under section DeleteKey(section string, key string) bool // Load the config from permanent storage Load() error // Save the config to permanent storage Save() error // Serialize the config into a string Serialize() (string, error) }
Storage defines an interface for loading and saving config to persistent storage. Rclone provides a default implementation to load and save to a config file when this is imported
import "github.com/morecup/rclone/fs/config/configfile" configfile.Install()
func LoadedData ¶
func LoadedData() Storage
LoadedData ensures the config file storage is loaded and returns it
type UpdateRemoteOpt ¶
type UpdateRemoteOpt struct { // Treat all passwords as plain that need obscuring Obscure bool `json:"obscure"` // Treat all passwords as obscured NoObscure bool `json:"noObscure"` // Don't interact with the user - return questions NonInteractive bool `json:"nonInteractive"` // If set then supply state and result parameters to continue the process Continue bool `json:"continue"` // If set then ask all the questions, not just the post config questions All bool `json:"all"` // State to restart with - used with Continue State string `json:"state"` // Result to return - used with Continue Result string `json:"result"` // If set then edit existing values Edit bool `json:"edit"` }
UpdateRemoteOpt configures the remote update
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package configfile implements a config file loader and saver
|
Package configfile implements a config file loader and saver |
Package configflags defines the flags used by rclone.
|
Package configflags defines the flags used by rclone. |
Package configmap provides an abstraction for reading and writing config
|
Package configmap provides an abstraction for reading and writing config |
Package configstruct parses unstructured maps into structures
|
Package configstruct parses unstructured maps into structures |
Package flags contains enhanced versions of spf13/pflag flag routines which will read from the environment also.
|
Package flags contains enhanced versions of spf13/pflag flag routines which will read from the environment also. |
Package obscure contains the Obscure and Reveal commands
|
Package obscure contains the Obscure and Reveal commands |