1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* Details of supported OAuth2 Providers.
*/
var EXPORTED_SYMBOLS = ["OAuth2Providers"];
var {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components;
// map of hostnames to [issuer, scope]
var kHostnames = new Map([
["imap.googlemail.com", ["accounts.google.com", "https://mail.google.com/"]],
["smtp.googlemail.com", ["accounts.google.com", "https://mail.google.com/"]],
["imap.gmail.com", ["accounts.google.com", "https://mail.google.com/"]],
["smtp.gmail.com", ["accounts.google.com", "https://mail.google.com/"]],
["imap.mail.ru", ["o2.mail.ru", "mail.imap"]],
["smtp.mail.ru", ["o2.mail.ru", "mail.imap"]],
]);
// map of issuers to appKey, appSecret, authURI, tokenURI
// For the moment, these details are hard-coded, since Google does not
// provide dynamic client registration. Don't copy these values for your
// own application--register it yourself. This code (and possibly even the
// registration itself) will disappear when this is switched to dynamic
// client registration.
var kIssuers = new Map ([
["accounts.google.com", [
'406964657835-aq8lmia8j95dhl1a2bvharmfk3t1hgqj.apps.googleusercontent.com',
'kSmqreRr0qwBWJgbf5Y-PjSU',
'https://accounts.google.com/o/oauth2/auth',
'https://www.googleapis.com/oauth2/v3/token'
]],
["o2.mail.ru", [
'thunderbird',
'I0dCAXrcaNFujaaY',
'https://o2.mail.ru/login',
'https://o2.mail.ru/token'
]],
]);
/**
* OAuth2Providers: Methods to lookup OAuth2 parameters for supported
* email providers.
*/
var OAuth2Providers = {
/**
* Map a hostname to the relevant issuer and scope.
*
* @param aHostname String representing the url for an imap or smtp
* server (example "imap.googlemail.com").
*
* @returns Array with [issuer, scope] for the hostname if found,
* else undefined. issuer is a string representing the
* organization, scope is an oauth parameter describing\
* the required access level.
*/
getHostnameDetails: function (aHostname) { return kHostnames.get(aHostname);},
/**
* Map an issuer to OAuth2 account details.
*
* @param aIssuer The organization issuing oauth2 parameters, example
* "accounts.google.com".
*
* @return Array containing [appKey, appSecret, authURI, tokenURI]
* where appKey and appDetails are strings representing the
* account registered for Thunderbird with the organization,
* authURI and tokenURI are url strings representing
* endpoints to access OAuth2 authentication.
*/
getIssuerDetails: function (aIssuer) { return kIssuers.get(aIssuer);}
}
|