Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
mahara
mahara
Commits
459a71df
Commit
459a71df
authored
Jan 24, 2019
by
Cecilia Vela Gurovic
Committed by
Gerrit Code Review
Jan 24, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Bug 1811163: Upgrade phpmailer to 6.0.6" into 18.10_STABLE
parents
9c8b3c4e
a8e83954
Changes
36
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
2675 additions
and
2240 deletions
+2675
-2240
htdocs/lib/mahara.php
htdocs/lib/mahara.php
+1
-2
htdocs/lib/phpmailer/LICENSE
htdocs/lib/phpmailer/LICENSE
+20
-22
htdocs/lib/phpmailer/PHPMailerAutoload.php
htdocs/lib/phpmailer/PHPMailerAutoload.php
+0
-49
htdocs/lib/phpmailer/README.Mahara
htdocs/lib/phpmailer/README.Mahara
+1
-2
htdocs/lib/phpmailer/VERSION
htdocs/lib/phpmailer/VERSION
+0
-1
htdocs/lib/phpmailer/class.phpmaileroauth.php
htdocs/lib/phpmailer/class.phpmaileroauth.php
+0
-197
htdocs/lib/phpmailer/class.phpmaileroauthgoogle.php
htdocs/lib/phpmailer/class.phpmaileroauthgoogle.php
+0
-77
htdocs/lib/phpmailer/get_oauth_token.php
htdocs/lib/phpmailer/get_oauth_token.php
+106
-124
htdocs/lib/phpmailer/language/phpmailer.lang-ar.php
htdocs/lib/phpmailer/language/phpmailer.lang-ar.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-ba.php
htdocs/lib/phpmailer/language/phpmailer.lang-ba.php
+26
-0
htdocs/lib/phpmailer/language/phpmailer.lang-cs.php
htdocs/lib/phpmailer/language/phpmailer.lang-cs.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-eo.php
htdocs/lib/phpmailer/language/phpmailer.lang-eo.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-es.php
htdocs/lib/phpmailer/language/phpmailer.lang-es.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-fr.php
htdocs/lib/phpmailer/language/phpmailer.lang-fr.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-hi.php
htdocs/lib/phpmailer/language/phpmailer.lang-hi.php
+26
-0
htdocs/lib/phpmailer/language/phpmailer.lang-hu.php
htdocs/lib/phpmailer/language/phpmailer.lang-hu.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-id.php
htdocs/lib/phpmailer/language/phpmailer.lang-id.php
+12
-11
htdocs/lib/phpmailer/language/phpmailer.lang-it.php
htdocs/lib/phpmailer/language/phpmailer.lang-it.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-mg.php
htdocs/lib/phpmailer/language/phpmailer.lang-mg.php
+25
-0
htdocs/lib/phpmailer/language/phpmailer.lang-nb.php
htdocs/lib/phpmailer/language/phpmailer.lang-nb.php
+16
-16
htdocs/lib/phpmailer/language/phpmailer.lang-nl.php
htdocs/lib/phpmailer/language/phpmailer.lang-nl.php
+2
-2
htdocs/lib/phpmailer/language/phpmailer.lang-pt_br.php
htdocs/lib/phpmailer/language/phpmailer.lang-pt_br.php
+2
-1
htdocs/lib/phpmailer/language/phpmailer.lang-sk.php
htdocs/lib/phpmailer/language/phpmailer.lang-sk.php
+2
-1
htdocs/lib/phpmailer/language/phpmailer.lang-sl.php
htdocs/lib/phpmailer/language/phpmailer.lang-sl.php
+3
-2
htdocs/lib/phpmailer/language/phpmailer.lang-sr.php
htdocs/lib/phpmailer/language/phpmailer.lang-sr.php
+8
-7
htdocs/lib/phpmailer/language/phpmailer.lang-tl.php
htdocs/lib/phpmailer/language/phpmailer.lang-tl.php
+27
-0
htdocs/lib/phpmailer/language/phpmailer.lang-tr.php
htdocs/lib/phpmailer/language/phpmailer.lang-tr.php
+2
-1
htdocs/lib/phpmailer/language/phpmailer.lang-uk.php
htdocs/lib/phpmailer/language/phpmailer.lang-uk.php
+1
-1
htdocs/lib/phpmailer/language/phpmailer.lang-zh_cn.php
htdocs/lib/phpmailer/language/phpmailer.lang-zh_cn.php
+4
-3
htdocs/lib/phpmailer/src/Exception.php
htdocs/lib/phpmailer/src/Exception.php
+39
-0
htdocs/lib/phpmailer/src/OAuth.php
htdocs/lib/phpmailer/src/OAuth.php
+138
-0
htdocs/lib/phpmailer/src/PHPMailer.php
htdocs/lib/phpmailer/src/PHPMailer.php
+1588
-1125
htdocs/lib/phpmailer/src/POP3.php
htdocs/lib/phpmailer/src/POP3.php
+132
-120
htdocs/lib/phpmailer/src/SMTP.php
htdocs/lib/phpmailer/src/SMTP.php
+413
-336
htdocs/lib/tests/phpunit/LibmaharaTest.php
htdocs/lib/tests/phpunit/LibmaharaTest.php
+70
-130
htdocs/lib/user.php
htdocs/lib/user.php
+4
-3
No files found.
htdocs/lib/mahara.php
View file @
459a71df
...
...
@@ -4736,8 +4736,7 @@ function is_https() {
}
function
sanitize_email
(
$value
)
{
require_once
(
'phpmailer/class.phpmailer.php'
);
if
(
!
PHPMailer
::
validateAddress
(
$value
))
{
if
(
!
PHPMailer\PHPMailer\PHPMailer
::
validateAddress
(
$value
))
{
return
''
;
}
return
$value
;
...
...
htdocs/lib/phpmailer/LICENSE
View file @
459a71df
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330
, Boston, MA 0211
1
-130
7
USA
51 Franklin Street, Fifth Floor
, Boston, MA 0211
0
-130
1
USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
...
...
@@ -10,7 +10,7 @@
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
...
...
@@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
...
...
@@ -111,8 +111,8 @@ modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
...
...
@@ -146,7 +146,7 @@ such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
...
...
@@ -158,7 +158,7 @@ Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
...
...
@@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
...
...
@@ -267,7 +267,7 @@ Library will still fall under Section 6.)
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
...
...
@@ -312,7 +312,7 @@ of these things:
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e)
v
erify that the user has already received a copy of these
e)
V
erify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
...
...
@@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
...
...
@@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
...
...
@@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
...
...
@@ -432,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
...
...
@@ -455,8 +455,8 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
...
...
@@ -485,7 +485,7 @@ convey the exclusion of warranty; and each file should have at least the
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 5
9 Temple Place, Suite 330
, Boston, MA 0211
1
-130
7
USA
Foundation, Inc., 5
1 Franklin Street, Fifth Floor
, Boston, MA 0211
0
-130
1
USA
Also add information on how to contact you by electronic and paper mail.
...
...
@@ -499,6 +499,4 @@ necessary. Here is a sample; alter the names:
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
That's all there is to it!
\ No newline at end of file
htdocs/lib/phpmailer/PHPMailerAutoload.php
deleted
100644 → 0
View file @
9c8b3c4e
<?php
/**
* PHPMailer SPL autoloader.
* PHP Version 5
* @package PHPMailer
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2014 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* PHPMailer SPL autoloader.
* @param string $classname The name of the class to load
*/
function
PHPMailerAutoload
(
$classname
)
{
//Can't use __DIR__ as it's only in PHP 5.3+
$filename
=
dirname
(
__FILE__
)
.
DIRECTORY_SEPARATOR
.
'class.'
.
strtolower
(
$classname
)
.
'.php'
;
if
(
is_readable
(
$filename
))
{
require
$filename
;
}
}
if
(
version_compare
(
PHP_VERSION
,
'5.1.2'
,
'>='
))
{
//SPL autoloading was introduced in PHP 5.1.2
if
(
version_compare
(
PHP_VERSION
,
'5.3.0'
,
'>='
))
{
spl_autoload_register
(
'PHPMailerAutoload'
,
true
,
true
);
}
else
{
spl_autoload_register
(
'PHPMailerAutoload'
);
}
}
else
{
/**
* Fall back to traditional autoload for old PHP versions
* @param string $classname The name of the class to load
*/
function
__autoload
(
$classname
)
{
PHPMailerAutoload
(
$classname
);
}
}
htdocs/lib/phpmailer/README.Mahara
View file @
459a71df
...
...
@@ -2,11 +2,10 @@ phpmailer in Mahara
======================
Website: https://github.com/PHPMailer/PHPMailer
Version:
5.2.22
Version:
6.0.6
This library is for the email_user() function in lib/user.php
Changes:
- None
htdocs/lib/phpmailer/VERSION
deleted
100644 → 0
View file @
9c8b3c4e
5.2.22
htdocs/lib/phpmailer/class.phpmaileroauth.php
deleted
100644 → 0
View file @
9c8b3c4e
<?php
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.4
* @package PHPMailer
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2014 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* PHPMailerOAuth - PHPMailer subclass adding OAuth support.
* @package PHPMailer
* @author @sherryl4george
* @author Marcus Bointon (@Synchro) <phpmailer@synchromedia.co.uk>
*/
class
PHPMailerOAuth
extends
PHPMailer
{
/**
* The OAuth user's email address
* @var string
*/
public
$oauthUserEmail
=
''
;
/**
* The OAuth refresh token
* @var string
*/
public
$oauthRefreshToken
=
''
;
/**
* The OAuth client ID
* @var string
*/
public
$oauthClientId
=
''
;
/**
* The OAuth client secret
* @var string
*/
public
$oauthClientSecret
=
''
;
/**
* An instance of the PHPMailerOAuthGoogle class.
* @var PHPMailerOAuthGoogle
* @access protected
*/
protected
$oauth
=
null
;
/**
* Get a PHPMailerOAuthGoogle instance to use.
* @return PHPMailerOAuthGoogle
*/
public
function
getOAUTHInstance
()
{
if
(
!
is_object
(
$this
->
oauth
))
{
$this
->
oauth
=
new
PHPMailerOAuthGoogle
(
$this
->
oauthUserEmail
,
$this
->
oauthClientSecret
,
$this
->
oauthClientId
,
$this
->
oauthRefreshToken
);
}
return
$this
->
oauth
;
}
/**
* Initiate a connection to an SMTP server.
* Overrides the original smtpConnect method to add support for OAuth.
* @param array $options An array of options compatible with stream_context_create()
* @uses SMTP
* @access public
* @return bool
* @throws phpmailerException
*/
public
function
smtpConnect
(
$options
=
array
())
{
if
(
is_null
(
$this
->
smtp
))
{
$this
->
smtp
=
$this
->
getSMTPInstance
();
}
if
(
is_null
(
$this
->
oauth
))
{
$this
->
oauth
=
$this
->
getOAUTHInstance
();
}
// Already connected?
if
(
$this
->
smtp
->
connected
())
{
return
true
;
}
$this
->
smtp
->
setTimeout
(
$this
->
Timeout
);
$this
->
smtp
->
setDebugLevel
(
$this
->
SMTPDebug
);
$this
->
smtp
->
setDebugOutput
(
$this
->
Debugoutput
);
$this
->
smtp
->
setVerp
(
$this
->
do_verp
);
$hosts
=
explode
(
';'
,
$this
->
Host
);
$lastexception
=
null
;
foreach
(
$hosts
as
$hostentry
)
{
$hostinfo
=
array
();
if
(
!
preg_match
(
'/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*):?([0-9]*)$/'
,
trim
(
$hostentry
),
$hostinfo
))
{
// Not a valid host entry
continue
;
}
// $hostinfo[2]: optional ssl or tls prefix
// $hostinfo[3]: the hostname
// $hostinfo[4]: optional port number
// The host string prefix can temporarily override the current setting for SMTPSecure
// If it's not specified, the default value is used
$prefix
=
''
;
$secure
=
$this
->
SMTPSecure
;
$tls
=
(
$this
->
SMTPSecure
==
'tls'
);
if
(
'ssl'
==
$hostinfo
[
2
]
or
(
''
==
$hostinfo
[
2
]
and
'ssl'
==
$this
->
SMTPSecure
))
{
$prefix
=
'ssl://'
;
$tls
=
false
;
// Can't have SSL and TLS at the same time
$secure
=
'ssl'
;
}
elseif
(
$hostinfo
[
2
]
==
'tls'
)
{
$tls
=
true
;
// tls doesn't use a prefix
$secure
=
'tls'
;
}
//Do we need the OpenSSL extension?
$sslext
=
defined
(
'OPENSSL_ALGO_SHA1'
);
if
(
'tls'
===
$secure
or
'ssl'
===
$secure
)
{
//Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled
if
(
!
$sslext
)
{
throw
new
phpmailerException
(
$this
->
lang
(
'extension_missing'
)
.
'openssl'
,
self
::
STOP_CRITICAL
);
}
}
$host
=
$hostinfo
[
3
];
$port
=
$this
->
Port
;
$tport
=
(
integer
)
$hostinfo
[
4
];
if
(
$tport
>
0
and
$tport
<
65536
)
{
$port
=
$tport
;
}
if
(
$this
->
smtp
->
connect
(
$prefix
.
$host
,
$port
,
$this
->
Timeout
,
$options
))
{
try
{
if
(
$this
->
Helo
)
{
$hello
=
$this
->
Helo
;
}
else
{
$hello
=
$this
->
serverHostname
();
}
$this
->
smtp
->
hello
(
$hello
);
//Automatically enable TLS encryption if:
// * it's not disabled
// * we have openssl extension
// * we are not already using SSL
// * the server offers STARTTLS
if
(
$this
->
SMTPAutoTLS
and
$sslext
and
$secure
!=
'ssl'
and
$this
->
smtp
->
getServerExt
(
'STARTTLS'
))
{
$tls
=
true
;
}
if
(
$tls
)
{
if
(
!
$this
->
smtp
->
startTLS
())
{
throw
new
phpmailerException
(
$this
->
lang
(
'connect_host'
));
}
// We must resend HELO after tls negotiation
$this
->
smtp
->
hello
(
$hello
);
}
if
(
$this
->
SMTPAuth
)
{
if
(
!
$this
->
smtp
->
authenticate
(
$this
->
Username
,
$this
->
Password
,
$this
->
AuthType
,
$this
->
Realm
,
$this
->
Workstation
,
$this
->
oauth
)
)
{
throw
new
phpmailerException
(
$this
->
lang
(
'authenticate'
));
}
}
return
true
;
}
catch
(
phpmailerException
$exc
)
{
$lastexception
=
$exc
;
$this
->
edebug
(
$exc
->
getMessage
());
// We must have connected, but then failed TLS or Auth, so close connection nicely
$this
->
smtp
->
quit
();
}
}
}
// If we get here, all connection attempts have failed, so close connection hard
$this
->
smtp
->
close
();
// As we've caught all exceptions, just report whatever the last one was
if
(
$this
->
exceptions
and
!
is_null
(
$lastexception
))
{
throw
$lastexception
;
}
return
false
;
}
}
htdocs/lib/phpmailer/class.phpmaileroauthgoogle.php
deleted
100644 → 0
View file @
9c8b3c4e
<?php
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.4
* @package PHPMailer
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2014 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* PHPMailerOAuthGoogle - Wrapper for League OAuth2 Google provider.
* @package PHPMailer
* @author @sherryl4george
* @author Marcus Bointon (@Synchro) <phpmailer@synchromedia.co.uk>
* @link https://github.com/thephpleague/oauth2-client
*/
class
PHPMailerOAuthGoogle
{
private
$oauthUserEmail
=
''
;
private
$oauthRefreshToken
=
''
;
private
$oauthClientId
=
''
;
private
$oauthClientSecret
=
''
;
/**
* @param string $UserEmail
* @param string $ClientSecret
* @param string $ClientId
* @param string $RefreshToken
*/
public
function
__construct
(
$UserEmail
,
$ClientSecret
,
$ClientId
,
$RefreshToken
)
{
$this
->
oauthClientId
=
$ClientId
;
$this
->
oauthClientSecret
=
$ClientSecret
;
$this
->
oauthRefreshToken
=
$RefreshToken
;
$this
->
oauthUserEmail
=
$UserEmail
;
}
private
function
getProvider
()
{
return
new
League\OAuth2\Client\Provider\Google
([
'clientId'
=>
$this
->
oauthClientId
,
'clientSecret'
=>
$this
->
oauthClientSecret
]);
}
private
function
getGrant
()
{
return
new
\
League\OAuth2\Client\Grant\RefreshToken
();
}
private
function
getToken
()
{
$provider
=
$this
->
getProvider
();
$grant
=
$this
->
getGrant
();
return
$provider
->
getAccessToken
(
$grant
,
[
'refresh_token'
=>
$this
->
oauthRefreshToken
]);
}
public
function
getOauth64
()
{
$token
=
$this
->
getToken
();
return
base64_encode
(
"user="
.
$this
->
oauthUserEmail
.
"
\001
auth=Bearer "
.
$token
.
"
\001\001
"
);
}
}
htdocs/lib/phpmailer/get_oauth_token.php
View file @
459a71df
<?php
/**
* Get an OAuth2 token from Google.
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5
* @package PHPMailer
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2017 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* Get an OAuth2 token from an OAuth2 provider.
* * Install this script on your server so that it's accessible
* as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
* e.g.: http://localhost/phpmail/get_oauth_token.php
* e.g.: http://localhost/phpmail
er
/get_oauth_token.php
* * Ensure dependencies are installed with 'composer install'
* * Set up an app in your Google
developer console
* * Set up an app in your Google
/Yahoo/Microsoft account
* * Set the script address as the app's redirect URL
* If no refresh token is obtained when running this file, revoke access to your app
* using link: https://accounts.google.com/b/0/IssuedAuthSubTokens and run the script again.
* This script requires PHP 5.4 or later
* PHP Version 5.4
* If no refresh token is obtained when running this file,
* revoke access to your app and run the script again.
*/
namespace
League\OAuth2\Client\Provid
er
;
namespace
PHPMailer\PHPMail
er
;
require
'vendor/autoload.php'
;
/**
* Aliases for League Provider Classes
* Make sure you have added these to your composer.json and run `composer install`
* Plenty to choose from here:
* @see http://oauth2-client.thephpleague.com/providers/thirdparty/
*/
// @see https://github.com/thephpleague/oauth2-google
use
League\OAuth2\Client\Provider\Google
;
// @see https://packagist.org/packages/hayageek/oauth2-yahoo
use
Hayageek\OAuth2\Client\Provider\Yahoo
;
// @see https://github.com/stevenmaguire/oauth2-microsoft
use
Stevenmaguire\OAuth2\Client\Provider\Microsoft
;
if
(
!
isset
(
$_GET
[
'code'
])
&&
!
isset
(
$_GET
[
'provider'
]))
{
?>
<html>
<body>
Select Provider:
<br/>
<a
href=
'?provider=Google'
>
Google
</a><br/>
<a
href=
'?provider=Yahoo'
>
Yahoo
</a><br/>
<a
href=
'?provider=Microsoft'
>
Microsoft/Outlook/Hotmail/Live/Office365
</a><br/>
</body>
</html>
<?php
exit
;
}
use
League\OAuth2\Client\Provider\Exception\IdentityProviderException
;
use
League\OAuth2\Client\Token\AccessToken
;
use
League\OAuth2\Client\Tool\BearerAuthorizationTrait
;
use
Psr\Http\Message\ResponseInterface
;
require
'vendor/autoload.php'
;
session_start
();
//If this automatic URL doesn't work, set it yourself manually
$redirectUri
=
isset
(
$_SERVER
[
'HTTPS'
])
?
'https://'
:
'http://'
.
$_SERVER
[
'HTTP_HOST'
]
.
$_SERVER
[
'PHP_SELF'
];
//$redirectUri = 'http://localhost/phpmailer/get_oauth_token.php';
$providerName
=
''
;
//These details obtained are by setting up app in Google developer console.
if
(
array_key_exists
(
'provider'
,
$_GET
))
{
$providerName
=
$_GET
[
'provider'
];
$_SESSION
[
'provider'
]
=
$providerName
;
}
elseif
(
array_key_exists
(
'provider'
,
$_SESSION
))
{
$providerName
=
$_SESSION
[
'provider'
];
}
if
(
!
in_array
(
$providerName
,
[
'Google'
,
'Microsoft'
,
'Yahoo'
]))
{
exit
(
'Only Google, Microsoft and Yahoo OAuth2 providers are currently supported in this script.'
);
}
//These details are obtained by setting up an app in the Google developer console,
//or whichever provider you're using.
$clientId
=
'RANDOMCHARS-----duv1n2.apps.googleusercontent.com'
;
$clientSecret
=
'RANDOMCHARS-----lGyjPcRtvP'
;
class
Google
extends
AbstractProvider
{
use
BearerAuthorizationTrait
;
const
ACCESS_TOKEN_RESOURCE_OWNER_ID
=
'id'
;
/**
* @var string If set, this will be sent to google as the "access_type" parameter.
* @link https://developers.google.com/accounts/docs/OAuth2WebServer#offline
*/
protected
$accessType
;
/**
* @var string If set, this will be sent to google as the "hd" parameter.
* @link https://developers.google.com/accounts/docs/OAuth2Login#hd-param
*/
protected
$hostedDomain
;