mirror of
https://github.com/rclone/rclone.git
synced 2025-12-11 13:53:15 +00:00
rc: add config/unlock to unlock the config file
This commit is contained in:
@@ -9,6 +9,37 @@ import (
|
||||
"github.com/rclone/rclone/fs/rc"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rc.Add(rc.Call{
|
||||
Path: "config/unlock",
|
||||
Fn: rcConfigPassword,
|
||||
Title: "Unlock the config file.",
|
||||
AuthRequired: true,
|
||||
Help: `
|
||||
Unlocks the config file if it is locked.
|
||||
|
||||
Parameters:
|
||||
|
||||
- 'config_password' - password to unlock the config file
|
||||
|
||||
A good idea is to disable AskPassword before making this call
|
||||
`,
|
||||
})
|
||||
}
|
||||
|
||||
// Unlock the config file
|
||||
// A good idea is to disable AskPassword before making this call
|
||||
func rcConfigPassword(ctx context.Context, in rc.Params) (out rc.Params, err error) {
|
||||
configPass, err := in.GetString("config_password")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if SetConfigPassword(configPass) != nil {
|
||||
return nil, errors.New("failed to set config password")
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
rc.Add(rc.Call{
|
||||
Path: "config/dump",
|
||||
|
||||
@@ -188,3 +188,17 @@ func TestRcPaths(t *testing.T) {
|
||||
assert.Equal(t, config.GetCacheDir(), out["cache"])
|
||||
assert.Equal(t, os.TempDir(), out["temp"])
|
||||
}
|
||||
|
||||
func TestRcConfigUnlock(t *testing.T) {
|
||||
call := rc.Calls.Get("config/unlock")
|
||||
assert.NotNil(t, call)
|
||||
in := rc.Params{
|
||||
"config_password": "test",
|
||||
}
|
||||
out, err := call.Fn(context.Background(), in)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Nil(t, err)
|
||||
assert.Nil(t, out)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user