Documentation ¶
Index ¶
- Constants
- Variables
- func Config(ctx context.Context, id, name string, m configmap.Mapper, ...) error
- func Context(ctx context.Context, client *http.Client) context.Context
- func GetToken(name string, m configmap.Mapper) (*oauth2.Token, error)
- func PutToken(name string, m configmap.Mapper, token *oauth2.Token, newSection bool) error
- type AuthResult
- type CheckAuthFn
- type Options
- type Renew
- type TokenSource
Constants ¶
const ( // 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 // prompting the user to copy the code and paste it in the application. TitleBarRedirectURL = "urn:ietf:wg:oauth:2.0:oob" // RedirectURL is redirect to local webserver when active RedirectURL = "http://" + bindAddress + "/" // RedirectPublicURL is redirect to local webserver when active with public name RedirectPublicURL = "http://localhost.rclone.org:" + bindPort + "/" // RedirectLocalhostURL is redirect to local webserver when active with localhost RedirectLocalhostURL = "http://localhost:" + bindPort + "/" // RedirectPublicSecureURL is a public https URL which // redirects to the local webserver RedirectPublicSecureURL = "https://oauth.rclone.org/" // AuthResponseTemplate is a template to handle the redirect URL for oauth requests AuthResponseTemplate = `` /* 584-byte string literal not displayed */ )
Variables ¶
config.ConfigClientID, Help: "OAuth Client Id\nLeave blank normally.", }, { Name: config.ConfigClientSecret, Help: "OAuth Client Secret\nLeave blank normally.", }, { Name: config.ConfigToken, Help: "OAuth Access Token as a JSON blob.", Advanced: true, }, { Name: config.ConfigAuthURL, Help: "Auth server URL.\nLeave blank to use the provider defaults.", Advanced: true, }, { Name: config.ConfigTokenURL, Help: "Token server url.\nLeave blank to use the provider defaults.", Advanced: true, }}Name:
SharedOptions are shared between backends the utilize an OAuth flow
Functions ¶
func Config ¶
func Config(ctx context.Context, id, name string, m configmap.Mapper, oauthConfig *oauth2.Config, opt *Options) error
Config does the initial creation of the token
If opt is nil it will use the default Options ¶
It may run an internal webserver to receive the results
Types ¶
type AuthResult ¶ added in v1.50.0
type AuthResult struct { OK bool // Failure or Success? Name string Description string Code string HelpURL string Form url.Values // the complete contents of the form Err error // any underlying error to report }
AuthResult is returned from the web server after authorization success or failure
func (*AuthResult) Error ¶ added in v1.50.0
func (ar *AuthResult) Error() string
Error satisfies the error interface so AuthResult can be used as an error
type CheckAuthFn ¶ added in v1.50.0
type CheckAuthFn func(*oauth2.Config, *AuthResult) error
CheckAuthFn is called when a good Auth has been received
type Options ¶ added in v1.52.0
type Options struct { NoOffline bool // If set then "access_type=offline" parameter is not passed CheckAuth CheckAuthFn // When the AuthResult is known the checkAuth function is called if set OAuth2Opts []oauth2.AuthCodeOption // extra oauth2 options StateBlankOK bool // If set, state returned as "" is deemed to be OK }
Options for the oauth config
type Renew ¶
type Renew struct {
// contains filtered or unexported fields
}
Renew allows tokens to be renewed on expiry if uploads are in progress.
func NewRenew ¶
func NewRenew(name string, ts *TokenSource, run func() error) *Renew
NewRenew creates a new Renew struct and starts a background process which renews the token whenever it expires. It uses the run() call to run a transaction to do this.
It will only renew the token if the number of uploads > 0
type TokenSource ¶
type TokenSource struct {
// contains filtered or unexported fields
}
TokenSource stores updated tokens in the config file
func NewClient ¶
func NewClient(ctx context.Context, name string, m configmap.Mapper, oauthConfig *oauth2.Config) (*http.Client, *TokenSource, error)
NewClient gets a token from the config file and configures a Client with it. It returns the client and a TokenSource which Invalidate may need to be called on
func NewClientWithBaseClient ¶
func NewClientWithBaseClient(ctx context.Context, name string, m configmap.Mapper, config *oauth2.Config, baseClient *http.Client) (*http.Client, *TokenSource, error)
NewClientWithBaseClient gets a token from the config file and configures a Client with it. It returns the client and a TokenSource which Invalidate may need to be called on. It uses the httpClient passed in as the base client.
func (*TokenSource) Invalidate ¶
func (ts *TokenSource) Invalidate()
Invalidate invalidates the token
func (*TokenSource) OnExpiry ¶
func (ts *TokenSource) OnExpiry() <-chan time.Time
OnExpiry returns a channel which has the time written to it when the token expires. Note that there is only one channel so if attaching multiple go routines it will only signal to one of them.