1
0
mirror of https://github.com/rclone/rclone.git synced 2025-12-11 05:43:15 +00:00

rc: add config/unlock to unlock the config file

This commit is contained in:
n4n5
2025-07-25 12:19:07 +02:00
committed by GitHub
parent d71a4195d6
commit 30d8ab5f2f
2 changed files with 45 additions and 0 deletions

View File

@@ -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",

View File

@@ -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)
}