mirror of
https://github.com/rclone/rclone.git
synced 2024-12-23 15:38:57 +01:00
Allow user to override credentials again in drive, gcs and acd - fixes #139
This commit is contained in:
parent
0a5870208e
commit
0872ec3204
@ -71,10 +71,10 @@ func init() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Options: []fs.Option{{
|
Options: []fs.Option{{
|
||||||
Name: "client_id",
|
Name: oauthutil.ConfigClientID,
|
||||||
Help: "Amazon Application Client Id - leave blank to use rclone's.",
|
Help: "Amazon Application Client Id - leave blank to use rclone's.",
|
||||||
}, {
|
}, {
|
||||||
Name: "client_secret",
|
Name: oauthutil.ConfigClientSecret,
|
||||||
Help: "Amazon Application Client Secret - leave blank to use rclone's.",
|
Help: "Amazon Application Client Secret - leave blank to use rclone's.",
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -70,10 +70,10 @@ func init() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Options: []fs.Option{{
|
Options: []fs.Option{{
|
||||||
Name: "client_id",
|
Name: oauthutil.ConfigClientID,
|
||||||
Help: "Google Application Client Id - leave blank to use rclone's.",
|
Help: "Google Application Client Id - leave blank to use rclone's.",
|
||||||
}, {
|
}, {
|
||||||
Name: "client_secret",
|
Name: oauthutil.ConfigClientSecret,
|
||||||
Help: "Google Application Client Secret - leave blank to use rclone's.",
|
Help: "Google Application Client Secret - leave blank to use rclone's.",
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -65,10 +65,10 @@ func init() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Options: []fs.Option{{
|
Options: []fs.Option{{
|
||||||
Name: "client_id",
|
Name: oauthutil.ConfigClientID,
|
||||||
Help: "Google Application Client Id - leave blank to use rclone's.",
|
Help: "Google Application Client Id - leave blank to use rclone's.",
|
||||||
}, {
|
}, {
|
||||||
Name: "client_secret",
|
Name: oauthutil.ConfigClientSecret,
|
||||||
Help: "Google Application Client Secret - leave blank to use rclone's.",
|
Help: "Google Application Client Secret - leave blank to use rclone's.",
|
||||||
}, {
|
}, {
|
||||||
Name: "project_number",
|
Name: "project_number",
|
||||||
|
@ -16,8 +16,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// configKey is the key used to store the token under
|
// ConfigToken is the key used to store the token under
|
||||||
configKey = "token"
|
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"
|
||||||
|
|
||||||
// TitleBarRedirectURL is the OAuth2 redirect URL to use when the authorization
|
// TitleBarRedirectURL is the OAuth2 redirect URL to use when the authorization
|
||||||
// code should be returned in the title bar of the browser, with the page text
|
// code should be returned in the title bar of the browser, with the page text
|
||||||
@ -45,7 +51,7 @@ type oldToken struct {
|
|||||||
// getToken returns the token saved in the config file under
|
// getToken returns the token saved in the config file under
|
||||||
// section name.
|
// section name.
|
||||||
func getToken(name string) (*oauth2.Token, error) {
|
func getToken(name string) (*oauth2.Token, error) {
|
||||||
tokenString, err := fs.ConfigFile.GetValue(string(name), configKey)
|
tokenString, err := fs.ConfigFile.GetValue(string(name), ConfigToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -88,9 +94,9 @@ func putToken(name string, token *oauth2.Token) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
tokenString := string(tokenBytes)
|
tokenString := string(tokenBytes)
|
||||||
old := fs.ConfigFile.MustValue(name, configKey)
|
old := fs.ConfigFile.MustValue(name, ConfigToken)
|
||||||
if tokenString != old {
|
if tokenString != old {
|
||||||
fs.ConfigFile.SetValue(name, configKey, tokenString)
|
fs.ConfigFile.SetValue(name, ConfigToken, tokenString)
|
||||||
fs.SaveConfig()
|
fs.SaveConfig()
|
||||||
fs.Debug(name, "Saving new token in config file")
|
fs.Debug(name, "Saving new token in config file")
|
||||||
}
|
}
|
||||||
@ -128,9 +134,23 @@ func Context() context.Context {
|
|||||||
return context.WithValue(nil, oauth2.HTTPClient, fs.Config.Client())
|
return context.WithValue(nil, oauth2.HTTPClient, fs.Config.Client())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// overrideCredentials sets the ClientID and ClientSecret from the
|
||||||
|
// config file if they are not blank
|
||||||
|
func overrideCredentials(name string, config *oauth2.Config) {
|
||||||
|
ClientID := fs.ConfigFile.MustValue(name, ConfigClientID)
|
||||||
|
if ClientID != "" {
|
||||||
|
config.ClientID = ClientID
|
||||||
|
}
|
||||||
|
ClientSecret := fs.ConfigFile.MustValue(name, ConfigClientSecret)
|
||||||
|
if ClientSecret != "" {
|
||||||
|
config.ClientSecret = ClientSecret
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NewClient gets a token from the config file and configures a Client
|
// NewClient gets a token from the config file and configures a Client
|
||||||
// with it
|
// with it
|
||||||
func NewClient(name string, config *oauth2.Config) (*http.Client, error) {
|
func NewClient(name string, config *oauth2.Config) (*http.Client, error) {
|
||||||
|
overrideCredentials(name, config)
|
||||||
token, err := getToken(name)
|
token, err := getToken(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -154,6 +174,7 @@ func NewClient(name string, config *oauth2.Config) (*http.Client, error) {
|
|||||||
//
|
//
|
||||||
// It may run an internal webserver to receive the results
|
// It may run an internal webserver to receive the results
|
||||||
func Config(name string, config *oauth2.Config) error {
|
func Config(name string, config *oauth2.Config) error {
|
||||||
|
overrideCredentials(name, config)
|
||||||
// See if already have a token
|
// See if already have a token
|
||||||
tokenString := fs.ConfigFile.MustValue(name, "token")
|
tokenString := fs.ConfigFile.MustValue(name, "token")
|
||||||
if tokenString != "" {
|
if tokenString != "" {
|
||||||
|
Loading…
Reference in New Issue
Block a user