diff --git a/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php b/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php index 630b1544..ddbd3d2b 100644 --- a/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php +++ b/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php @@ -1,93 +1,1468 @@ -_attestationObject['attStmt']; - - if (!\array_key_exists('alg', $attStmt) || $this->_getCoseAlgorithm($attStmt['alg']) === null) { - throw new WebAuthnException('unsupported alg: ' . $attStmt['alg'], WebAuthnException::INVALID_DATA); - } - - if (!\array_key_exists('sig', $attStmt) || !\is_object($attStmt['sig']) || !($attStmt['sig'] instanceof ByteBuffer)) { - throw new WebAuthnException('no signature found', WebAuthnException::INVALID_DATA); - } - - if (!\array_key_exists('x5c', $attStmt) || !\is_array($attStmt['x5c']) || \count($attStmt['x5c']) !== 1) { - throw new WebAuthnException('invalid x5c certificate', WebAuthnException::INVALID_DATA); - } - - if (!\is_object($attStmt['x5c'][0]) || !($attStmt['x5c'][0] instanceof ByteBuffer)) { - throw new WebAuthnException('invalid x5c certificate', WebAuthnException::INVALID_DATA); - } - - $this->_alg = $attStmt['alg']; - $this->_signature = $attStmt['sig']->getBinaryString(); - $this->_x5c = $attStmt['x5c'][0]->getBinaryString(); - } - /* - * returns the key certificate in PEM format - * @return string - */ - public function getCertificatePem() { - $pem = '-----BEGIN CERTIFICATE-----' . "\n"; - $pem .= \chunk_split(\base64_encode($this->_x5c), 64, "\n"); - $pem .= '-----END CERTIFICATE-----' . "\n"; - return $pem; - } - /** - * @param string $clientDataHash - */ - public function validateAttestation($clientDataHash) { - $publicKey = \openssl_pkey_get_public($this->getCertificatePem()); - if ($publicKey === false) { - throw new WebAuthnException('invalid public key: ' . \openssl_error_string(), WebAuthnException::INVALID_PUBLIC_KEY); - } + + + + + + + + + + + - // Let verificationData be the concatenation of (0x00 || rpIdHash || clientDataHash || credentialId || publicKeyU2F) - $dataToVerify = "\x00"; - $dataToVerify .= $this->_authenticatorData->getRpIdHash(); - $dataToVerify .= $clientDataHash; - $dataToVerify .= $this->_authenticatorData->getCredentialId(); - $dataToVerify .= $this->_authenticatorData->getPublicKeyU2F(); - $coseAlgorithm = $this->_getCoseAlgorithm($this->_alg); - // check certificate - return \openssl_verify($dataToVerify, $this->_signature, $publicKey, $coseAlgorithm->openssl) === 1; - } + + + + + + + - /** - * validates the certificate against root certificates - * @param array $rootCas - * @return boolean - * @throws WebAuthnException - */ - public function validateRootCertificate($rootCas) { - $chainC = $this->_createX5cChainFile(); - if ($chainC) { - $rootCas[] = $chainC; - } + + + + + + + + + + + + + + + + + + + + + + WebAuthn/U2f.php at master · lbuchs/WebAuthn · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content + + + + + + + + +
+ +
+ + + + + +
+ + + +
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + +
+ +
+ +
+

+ + + / + + WebAuthn + + +

+ + +
+ + + +
+ + +
+ + +
+
+ + + + + + + Permalink + + + +
+ +
+
+ + + master + + + + +
+ + + +
+
+
+ +
+ + + + Go to file + + +
+ + +
+ +
+ + + +
+ +
+
+ + + +
+
+ + + + Bugfix u2f + +
+ + + + + +
+
+ + Latest commit + e62a661 + Jan 4, 2021 + + + + + + History + + +
+
+ +
+ +
+
+ + + 2 + + contributors + + +
+ +

+ Users who have contributed to this file +

+
+ + + + + + + + +
+
+ + + @lbuchs + + @BenjaminHae + + + +
+
+ + + + + + +
+ +
+
+ + 93 lines (74 sloc) + + 3.43 KB +
+ +
+ +
+ Raw + Blame +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
<?php
+
+
namespace lbuchs\WebAuthn\Attestation\Format;
use lbuchs\WebAuthn\Attestation\AuthenticatorData;
use lbuchs\WebAuthn\WebAuthnException;
use lbuchs\WebAuthn\Binary\ByteBuffer;
+
class U2f extends FormatBase {
private $_alg = -7;
private $_signature;
private $_x5c;
+
public function __construct($AttestionObject, AuthenticatorData $authenticatorData) {
parent::__construct($AttestionObject, $authenticatorData);
+
// check u2f data
$attStmt = $this->_attestationObject['attStmt'];
+
if (\array_key_exists('alg', $attStmt) && $attStmt['alg'] !== $this->_alg) {
throw new WebAuthnException('u2f only accepts algorithm -7 ("ES256"), but got ' . $attStmt['alg'], WebAuthnException::INVALID_DATA);
}
+
if (!\array_key_exists('sig', $attStmt) || !\is_object($attStmt['sig']) || !($attStmt['sig'] instanceof ByteBuffer)) {
throw new WebAuthnException('no signature found', WebAuthnException::INVALID_DATA);
}
+
if (!\array_key_exists('x5c', $attStmt) || !\is_array($attStmt['x5c']) || \count($attStmt['x5c']) !== 1) {
throw new WebAuthnException('invalid x5c certificate', WebAuthnException::INVALID_DATA);
}
+
if (!\is_object($attStmt['x5c'][0]) || !($attStmt['x5c'][0] instanceof ByteBuffer)) {
throw new WebAuthnException('invalid x5c certificate', WebAuthnException::INVALID_DATA);
}
+
$this->_signature = $attStmt['sig']->getBinaryString();
$this->_x5c = $attStmt['x5c'][0]->getBinaryString();
}
+
+
/*
* returns the key certificate in PEM format
* @return string
*/
public function getCertificatePem() {
$pem = '-----BEGIN CERTIFICATE-----' . "\n";
$pem .= \chunk_split(\base64_encode($this->_x5c), 64, "\n");
$pem .= '-----END CERTIFICATE-----' . "\n";
return $pem;
}
+
/**
* @param string $clientDataHash
*/
public function validateAttestation($clientDataHash) {
$publicKey = \openssl_pkey_get_public($this->getCertificatePem());
+
if ($publicKey === false) {
throw new WebAuthnException('invalid public key: ' . \openssl_error_string(), WebAuthnException::INVALID_PUBLIC_KEY);
}
+
// Let verificationData be the concatenation of (0x00 || rpIdHash || clientDataHash || credentialId || publicKeyU2F)
$dataToVerify = "\x00";
$dataToVerify .= $this->_authenticatorData->getRpIdHash();
$dataToVerify .= $clientDataHash;
$dataToVerify .= $this->_authenticatorData->getCredentialId();
$dataToVerify .= $this->_authenticatorData->getPublicKeyU2F();
+
$coseAlgorithm = $this->_getCoseAlgorithm($this->_alg);
+
// check certificate
return \openssl_verify($dataToVerify, $this->_signature, $publicKey, $coseAlgorithm->openssl) === 1;
}
+
/**
* validates the certificate against root certificates
* @param array $rootCas
* @return boolean
* @throws WebAuthnException
*/
public function validateRootCertificate($rootCas) {
$chainC = $this->_createX5cChainFile();
if ($chainC) {
$rootCas[] = $chainC;
}
+
$v = \openssl_x509_checkpurpose($this->getCertificatePem(), -1, $rootCas);
if ($v === -1) {
throw new WebAuthnException('error on validating root certificate: ' . \openssl_error_string(), WebAuthnException::CERTIFICATE_NOT_TRUSTED);
}
return $v;
}
}
+ + + +
+ +
+ + + + +
+ + +
+ + +
+
+ + + + + + +
+
+ +
+
+ +
+ + + + + + +
+ + + You can’t perform that action at this time. +
+ + + + + + + + + + - $v = \openssl_x509_checkpurpose($this->getCertificatePem(), -1, $rootCas); - if ($v === -1) { - throw new WebAuthnException('error on validating root certificate: ' . \openssl_error_string(), WebAuthnException::CERTIFICATE_NOT_TRUSTED); - } - return $v; - } -} diff --git a/data/web/inc/lib/composer.lock b/data/web/inc/lib/composer.lock index 2c61844f..b00a75df 100644 --- a/data/web/inc/lib/composer.lock +++ b/data/web/inc/lib/composer.lock @@ -62,35 +62,39 @@ "oauth", "oauth2" ], + "support": { + "issues": "https://github.com/bshaffer/oauth2-server-php/issues", + "source": "https://github.com/bshaffer/oauth2-server-php/tree/master" + }, "time": "2018-12-04T00:29:32+00:00" }, { "name": "ddeboer/imap", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/ddeboer/imap.git", - "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde" + "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ddeboer/imap/zipball/fc09dbf6fb9ba7317a95c719e45893efc4fe6bde", - "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde", + "url": "https://api.github.com/repos/ddeboer/imap/zipball/a089dfcb9d177f921eb5dadc8d4144a44dff22ee", + "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee", "shasum": "" }, "require": { "ext-iconv": "*", "ext-imap": "*", "ext-mbstring": "*", - "php": "^7.2" + "php": "^7.3 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.5", - "zendframework/zend-mail": "^2.10" + "friendsofphp/php-cs-fixer": "^2.16.7", + "laminas/laminas-mail": "^2.12.3", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-phpunit": "^0.12.16", + "phpstan/phpstan-strict-rules": "^0.12.5", + "phpunit/phpunit": "^9.4.3" }, "type": "library", "autoload": { @@ -122,20 +126,34 @@ "imap", "mail" ], - "time": "2020-01-24T08:15:24+00:00" + "support": { + "issues": "https://github.com/ddeboer/imap/issues", + "source": "https://github.com/ddeboer/imap/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/Slamdunk", + "type": "github" + }, + { + "url": "https://github.com/ddeboer", + "type": "github" + } + ], + "time": "2020-11-30T14:52:49+00:00" }, { "name": "matthiasmullie/minify", - "version": "1.3.63", + "version": "1.3.65", "source": { "type": "git", "url": "https://github.com/matthiasmullie/minify.git", - "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117" + "reference": "227f19062451c55a797e0cc667ef983834e6580c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117", - "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c", + "reference": "227f19062451c55a797e0cc667ef983834e6580c", "shasum": "" }, "require": { @@ -182,7 +200,25 @@ "minifier", "minify" ], - "time": "2020-01-21T20:21:08+00:00" + "support": { + "issues": "https://github.com/matthiasmullie/minify/issues", + "source": "https://github.com/matthiasmullie/minify/tree/1.3.65" + }, + "funding": [ + { + "url": "https://github.com/[user1", + "type": "github" + }, + { + "url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.", + "type": "github" + }, + { + "url": "https://github.com/user2", + "type": "github" + } + ], + "time": "2020-12-27T21:43:29+00:00" }, { "name": "matthiasmullie/path-converter", @@ -231,6 +267,10 @@ "paths", "relative" ], + "support": { + "issues": "https://github.com/matthiasmullie/path-converter/issues", + "source": "https://github.com/matthiasmullie/path-converter/tree/1.1.3" + }, "time": "2019-02-05T23:41:09+00:00" }, { @@ -285,20 +325,20 @@ }, { "name": "paragonie/random_compat", - "version": "v9.99.99", + "version": "v9.99.100", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", "shasum": "" }, "require": { - "php": "^7" + "php": ">= 7" }, "require-dev": { "phpunit/phpunit": "4.*|5.*", @@ -326,7 +366,12 @@ "pseudorandom", "random" ], - "time": "2018-07-02T15:55:56+00:00" + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" }, { "name": "php-mime-mail-parser/php-mime-mail-parser", @@ -408,31 +453,39 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/php-mime-mail-parser/php-mime-mail-parser/issues", + "source": "https://github.com/php-mime-mail-parser/php-mime-mail-parser/tree/master" + }, "time": "2019-09-23T11:57:58+00:00" }, { "name": "phpmailer/phpmailer", - "version": "v6.1.6", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3" + "reference": "e38888a75c070304ca5514197d4847a59a5c853f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", + "reference": "e38888a75c070304ca5514197d4847a59a5c853f", "shasum": "" }, "require": { "ext-ctype": "*", "ext-filter": "*", + "ext-hash": "*", "php": ">=5.5.0" }, "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "doctrine/annotations": "^1.2", - "friendsofphp/php-cs-fixer": "^2.2", - "phpunit/phpunit": "^4.8 || ^5.7" + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.5.6", + "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { "ext-mbstring": "Needed to send email in multibyte encoding charset", @@ -470,13 +523,17 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "support": { + "issues": "https://github.com/PHPMailer/PHPMailer/issues", + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0" + }, "funding": [ { - "url": "https://github.com/synchro", + "url": "https://github.com/Synchro", "type": "github" } ], - "time": "2020-05-27T12:24:03+00:00" + "time": "2020-11-25T15:24:57+00:00" }, { "name": "robthree/twofactorauth", @@ -527,6 +584,10 @@ "php", "tfa" ], + "support": { + "issues": "https://github.com/RobThree/TwoFactorAuth/issues", + "source": "https://github.com/RobThree/TwoFactorAuth" + }, "time": "2020-01-02T19:56:46+00:00" }, { @@ -577,6 +638,11 @@ "php", "text" ], + "support": { + "email": "support@jevon.org", + "issues": "https://github.com/soundasleep/html2text/issues", + "source": "https://github.com/soundasleep/html2text/tree/master" + }, "time": "2017-04-19T22:01:50+00:00" }, { @@ -614,6 +680,10 @@ ], "description": "Library for U2F implementation", "homepage": "https://developers.yubico.com/php-u2flib-server", + "support": { + "issues": "https://github.com/Yubico/php-u2flib-server/issues", + "source": "https://github.com/Yubico/php-u2flib-server/tree/1.0.2" + }, "time": "2018-09-07T08:16:44+00:00" } ], @@ -625,5 +695,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.0.0" } diff --git a/data/web/inc/lib/vendor/composer/ClassLoader.php b/data/web/inc/lib/vendor/composer/ClassLoader.php index fce8549f..1a58957d 100644 --- a/data/web/inc/lib/vendor/composer/ClassLoader.php +++ b/data/web/inc/lib/vendor/composer/ClassLoader.php @@ -37,8 +37,8 @@ namespace Composer\Autoload; * * @author Fabien Potencier * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ */ class ClassLoader { @@ -60,7 +60,7 @@ class ClassLoader public function getPrefixes() { if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); } return array(); diff --git a/data/web/inc/lib/vendor/composer/InstalledVersions.php b/data/web/inc/lib/vendor/composer/InstalledVersions.php new file mode 100644 index 00000000..2d167277 --- /dev/null +++ b/data/web/inc/lib/vendor/composer/InstalledVersions.php @@ -0,0 +1,332 @@ + + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + 'name' => '__root__', + ), + 'versions' => + array ( + '__root__' => + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + ), + 'bshaffer/oauth2-server-php' => + array ( + 'pretty_version' => 'v1.11.1', + 'version' => '1.11.1.0', + 'aliases' => + array ( + ), + 'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa', + ), + 'ddeboer/imap' => + array ( + 'pretty_version' => '1.11.0', + 'version' => '1.11.0.0', + 'aliases' => + array ( + ), + 'reference' => 'a089dfcb9d177f921eb5dadc8d4144a44dff22ee', + ), + 'exorus/php-mime-mail-parser' => + array ( + 'replaced' => + array ( + 0 => '*', + ), + ), + 'matthiasmullie/minify' => + array ( + 'pretty_version' => '1.3.65', + 'version' => '1.3.65.0', + 'aliases' => + array ( + ), + 'reference' => '227f19062451c55a797e0cc667ef983834e6580c', + ), + 'matthiasmullie/path-converter' => + array ( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'aliases' => + array ( + ), + 'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9', + ), + 'messaged/php-mime-mail-parser' => + array ( + 'replaced' => + array ( + 0 => '*', + ), + ), + 'mustangostang/spyc' => + array ( + 'pretty_version' => '0.6.3', + 'version' => '0.6.3.0', + 'aliases' => + array ( + ), + 'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0', + ), + 'paragonie/random_compat' => + array ( + 'pretty_version' => 'v9.99.100', + 'version' => '9.99.100.0', + 'aliases' => + array ( + ), + 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a', + ), + 'php-mime-mail-parser/php-mime-mail-parser' => + array ( + 'pretty_version' => '5.0.5', + 'version' => '5.0.5.0', + 'aliases' => + array ( + ), + 'reference' => '27983433aabeccee832573c3c56e6a4855e57745', + ), + 'phpmailer/phpmailer' => + array ( + 'pretty_version' => 'v6.2.0', + 'version' => '6.2.0.0', + 'aliases' => + array ( + ), + 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + ), + 'robthree/twofactorauth' => + array ( + 'pretty_version' => '1.7.0', + 'version' => '1.7.0.0', + 'aliases' => + array ( + ), + 'reference' => '37983bf675c5baca09d19d6705170489d0df0002', + ), + 'soundasleep/html2text' => + array ( + 'pretty_version' => '0.5.0', + 'version' => '0.5.0.0', + 'aliases' => + array ( + ), + 'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad', + ), + 'yubico/u2flib-server' => + array ( + 'pretty_version' => '1.0.2', + 'version' => '1.0.2.0', + 'aliases' => + array ( + ), + 'reference' => '55d813acf68212ad2cadecde07551600d6971939', + ), + ), +); + + + + + + + +public static function getInstalledPackages() +{ +return array_keys(self::$installed['versions']); +} + + + + + + + + + +public static function isInstalled($packageName) +{ +return isset(self::$installed['versions'][$packageName]); +} + + + + + + + + + + + + + + +public static function satisfies(VersionParser $parser, $packageName, $constraint) +{ +$constraint = $parser->parseConstraints($constraint); +$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + +return $provided->matches($constraint); +} + + + + + + + + + + +public static function getVersionRanges($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +$ranges = array(); +if (isset(self::$installed['versions'][$packageName]['pretty_version'])) { +$ranges[] = self::$installed['versions'][$packageName]['pretty_version']; +} +if (array_key_exists('aliases', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']); +} +if (array_key_exists('replaced', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']); +} +if (array_key_exists('provided', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']); +} + +return implode(' || ', $ranges); +} + + + + + +public static function getVersion($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['version'])) { +return null; +} + +return self::$installed['versions'][$packageName]['version']; +} + + + + + +public static function getPrettyVersion($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) { +return null; +} + +return self::$installed['versions'][$packageName]['pretty_version']; +} + + + + + +public static function getReference($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['reference'])) { +return null; +} + +return self::$installed['versions'][$packageName]['reference']; +} + + + + + +public static function getRootPackage() +{ +return self::$installed['root']; +} + + + + + + + +public static function getRawData() +{ +return self::$installed; +} + + + + + + + + + + + + + + + + + + + +public static function reload($data) +{ +self::$installed = $data; +} +} diff --git a/data/web/inc/lib/vendor/composer/autoload_classmap.php b/data/web/inc/lib/vendor/composer/autoload_classmap.php index 44393069..827360c3 100644 --- a/data/web/inc/lib/vendor/composer/autoload_classmap.php +++ b/data/web/inc/lib/vendor/composer/autoload_classmap.php @@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'u2flib_server\\Error' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php', 'u2flib_server\\RegisterRequest' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php', 'u2flib_server\\Registration' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php', diff --git a/data/web/inc/lib/vendor/composer/autoload_real.php b/data/web/inc/lib/vendor/composer/autoload_real.php index b6274e8f..d380e489 100644 --- a/data/web/inc/lib/vendor/composer/autoload_real.php +++ b/data/web/inc/lib/vendor/composer/autoload_real.php @@ -22,13 +22,15 @@ class ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b return self::$loader; } + require __DIR__ . '/platform_check.php'; + spl_autoload_register(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); spl_autoload_unregister(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; + require __DIR__ . '/autoload_static.php'; call_user_func(\Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::getInitializer($loader)); } else { diff --git a/data/web/inc/lib/vendor/composer/autoload_static.php b/data/web/inc/lib/vendor/composer/autoload_static.php index 5867eee2..94db3884 100644 --- a/data/web/inc/lib/vendor/composer/autoload_static.php +++ b/data/web/inc/lib/vendor/composer/autoload_static.php @@ -77,6 +77,7 @@ class ComposerStaticInit873464e4bd965a3168f133248b1b218b ); public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'u2flib_server\\Error' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php', 'u2flib_server\\RegisterRequest' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php', 'u2flib_server\\Registration' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php', diff --git a/data/web/inc/lib/vendor/composer/installed.json b/data/web/inc/lib/vendor/composer/installed.json index e38fd636..72d1d8d5 100644 --- a/data/web/inc/lib/vendor/composer/installed.json +++ b/data/web/inc/lib/vendor/composer/installed.json @@ -1,634 +1,694 @@ -[ - { - "name": "bshaffer/oauth2-server-php", - "version": "v1.11.1", - "version_normalized": "1.11.1.0", - "source": { - "type": "git", - "url": "https://github.com/bshaffer/oauth2-server-php.git", - "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa", - "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "aws/aws-sdk-php": "~2.8", - "firebase/php-jwt": "~2.2", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^4.0", - "predis/predis": "dev-master", - "thobbs/phpcassa": "dev-master" - }, - "suggest": { - "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage", - "firebase/php-jwt": "~2.2 is required to use JWT features", - "mongodb/mongodb": "^1.1 is required to use MongoDB storage", - "predis/predis": "Required to use Redis storage", - "thobbs/phpcassa": "Required to use Cassandra storage" - }, - "time": "2018-12-04T00:29:32+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "OAuth2": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brent Shaffer", - "email": "bshafs@gmail.com", - "homepage": "http://brentertainment.com" - } - ], - "description": "OAuth2 Server for PHP", - "homepage": "http://github.com/bshaffer/oauth2-server-php", - "keywords": [ - "auth", - "oauth", - "oauth2" - ] - }, - { - "name": "ddeboer/imap", - "version": "1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/ddeboer/imap.git", - "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ddeboer/imap/zipball/fc09dbf6fb9ba7317a95c719e45893efc4fe6bde", - "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "ext-imap": "*", - "ext-mbstring": "*", - "php": "^7.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.5", - "zendframework/zend-mail": "^2.10" - }, - "time": "2020-01-24T08:15:24+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Ddeboer\\Imap\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "David de Boer", - "email": "david@ddeboer.nl" +{ + "packages": [ + { + "name": "bshaffer/oauth2-server-php", + "version": "v1.11.1", + "version_normalized": "1.11.1.0", + "source": { + "type": "git", + "url": "https://github.com/bshaffer/oauth2-server-php.git", + "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa" }, - { - "name": "Filippo Tessarotto", - "email": "zoeslam@gmail.com" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa", + "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa", + "shasum": "" }, - { - "name": "Community contributors", - "homepage": "https://github.com/ddeboer/imap/graphs/contributors" - } - ], - "description": "Object-oriented IMAP for PHP", - "keywords": [ - "email", - "imap", - "mail" - ] - }, - { - "name": "matthiasmullie/minify", - "version": "1.3.63", - "version_normalized": "1.3.63.0", - "source": { - "type": "git", - "url": "https://github.com/matthiasmullie/minify.git", - "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117", - "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "matthiasmullie/path-converter": "~1.1", - "php": ">=5.3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.0", - "matthiasmullie/scrapbook": "~1.0", - "phpunit/phpunit": "~4.8" - }, - "suggest": { - "psr/cache-implementation": "Cache implementation to use with Minify::cache" - }, - "time": "2020-01-21T20:21:08+00:00", - "bin": [ - "bin/minifycss", - "bin/minifyjs" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "MatthiasMullie\\Minify\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthias Mullie", - "email": "minify@mullie.eu", - "homepage": "http://www.mullie.eu", - "role": "Developer" - } - ], - "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", - "homepage": "http://www.minifier.org", - "keywords": [ - "JS", - "css", - "javascript", - "minifier", - "minify" - ] - }, - { - "name": "matthiasmullie/path-converter", - "version": "1.1.3", - "version_normalized": "1.1.3.0", - "source": { - "type": "git", - "url": "https://github.com/matthiasmullie/path-converter.git", - "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9", - "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "time": "2019-02-05T23:41:09+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "MatthiasMullie\\PathConverter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthias Mullie", - "email": "pathconverter@mullie.eu", - "homepage": "http://www.mullie.eu", - "role": "Developer" - } - ], - "description": "Relative path converter", - "homepage": "http://github.com/matthiasmullie/path-converter", - "keywords": [ - "converter", - "path", - "paths", - "relative" - ] - }, - { - "name": "mustangostang/spyc", - "version": "0.6.3", - "version_normalized": "0.6.3.0", - "source": { - "type": "git", - "url": "git@github.com:mustangostang/spyc.git", - "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0", - "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "4.3.*@dev" - }, - "time": "2019-09-10T13:16:29+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "Spyc.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "mustangostang", - "email": "vlad.andersen@gmail.com" - } - ], - "description": "A simple YAML loader/dumper class for PHP", - "homepage": "https://github.com/mustangostang/spyc/", - "keywords": [ - "spyc", - "yaml", - "yml" - ] - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "version_normalized": "9.99.99.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2018-07-02T15:55:56+00:00", - "type": "library", - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ] - }, - { - "name": "php-mime-mail-parser/php-mime-mail-parser", - "version": "5.0.5", - "version_normalized": "5.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/php-mime-mail-parser/php-mime-mail-parser.git", - "reference": "27983433aabeccee832573c3c56e6a4855e57745" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-mime-mail-parser/php-mime-mail-parser/zipball/27983433aabeccee832573c3c56e6a4855e57745", - "reference": "27983433aabeccee832573c3c56e6a4855e57745", - "shasum": "" - }, - "require": { - "ext-mailparse": "*", - "php": "^7.1" - }, - "replace": { - "exorus/php-mime-mail-parser": "*", - "messaged/php-mime-mail-parser": "*" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/php-token-stream": "^3.0", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.4" - }, - "time": "2019-09-23T11:57:58+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpMimeMailParser\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "eXorus", - "email": "exorus.spam@gmail.com", - "homepage": "https://github.com/eXorus/", - "role": "Developer" + "require": { + "php": ">=5.3.9" }, - { - "name": "M.Valinskis", - "email": "M.Valins@gmail.com", - "homepage": "https://code.google.com/p/php-mime-mail-parser", - "role": "Developer" + "require-dev": { + "aws/aws-sdk-php": "~2.8", + "firebase/php-jwt": "~2.2", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^4.0", + "predis/predis": "dev-master", + "thobbs/phpcassa": "dev-master" }, - { - "name": "eugene.emmett.wood", - "email": "gene_w@cementhorizon.com", - "homepage": "https://code.google.com/p/php-mime-mail-parser", - "role": "Developer" + "suggest": { + "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage", + "firebase/php-jwt": "~2.2 is required to use JWT features", + "mongodb/mongodb": "^1.1 is required to use MongoDB storage", + "predis/predis": "Required to use Redis storage", + "thobbs/phpcassa": "Required to use Cassandra storage" }, - { - "name": "alknetso", - "email": "alkne@gmail.com", - "homepage": "https://code.google.com/p/php-mime-mail-parser", - "role": "Developer" + "time": "2018-12-04T00:29:32+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "OAuth2": "src/" + } }, - { - "name": "bucabay", - "email": "gabe@fijiwebdesign.com", - "homepage": "http://www.fijiwebdesign.com", - "role": "Developer" - } - ], - "description": "A fully tested email parser for PHP 7.1+ (mailparse extension wrapper).", - "homepage": "https://github.com/php-mime-mail-parser/php-mime-mail-parser", - "keywords": [ - "MimeMailParser", - "mail", - "mailparse", - "mime", - "parser", - "php" - ] - }, - { - "name": "phpmailer/phpmailer", - "version": "v6.1.6", - "version_normalized": "6.1.6.0", - "source": { - "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brent Shaffer", + "email": "bshafs@gmail.com", + "homepage": "http://brentertainment.com" + } + ], + "description": "OAuth2 Server for PHP", + "homepage": "http://github.com/bshaffer/oauth2-server-php", + "keywords": [ + "auth", + "oauth", + "oauth2" + ], + "install-path": "../bshaffer/oauth2-server-php" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-filter": "*", - "php": ">=5.5.0" - }, - "require-dev": { - "doctrine/annotations": "^1.2", - "friendsofphp/php-cs-fixer": "^2.2", - "phpunit/phpunit": "^4.8 || ^5.7" - }, - "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" - }, - "time": "2020-05-27T12:24:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" + { + "name": "ddeboer/imap", + "version": "1.11.0", + "version_normalized": "1.11.0.0", + "source": { + "type": "git", + "url": "https://github.com/ddeboer/imap.git", + "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee" }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ddeboer/imap/zipball/a089dfcb9d177f921eb5dadc8d4144a44dff22ee", + "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee", + "shasum": "" }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" + "require": { + "ext-iconv": "*", + "ext-imap": "*", + "ext-mbstring": "*", + "php": "^7.3 || ^8.0" }, - { - "name": "Brent R. Matzelle" - } - ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "funding": [ - { - "url": "https://github.com/synchro", - "type": "github" - } - ] - }, - { - "name": "robthree/twofactorauth", - "version": "1.7.0", - "version_normalized": "1.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/RobThree/TwoFactorAuth.git", - "reference": "37983bf675c5baca09d19d6705170489d0df0002" + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.16.7", + "laminas/laminas-mail": "^2.12.3", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-phpunit": "^0.12.16", + "phpstan/phpstan-strict-rules": "^0.12.5", + "phpunit/phpunit": "^9.4.3" + }, + "time": "2020-11-30T14:52:49+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Ddeboer\\Imap\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David de Boer", + "email": "david@ddeboer.nl" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com" + }, + { + "name": "Community contributors", + "homepage": "https://github.com/ddeboer/imap/graphs/contributors" + } + ], + "description": "Object-oriented IMAP for PHP", + "keywords": [ + "email", + "imap", + "mail" + ], + "support": { + "issues": "https://github.com/ddeboer/imap/issues", + "source": "https://github.com/ddeboer/imap/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/Slamdunk", + "type": "github" + }, + { + "url": "https://github.com/ddeboer", + "type": "github" + } + ], + "install-path": "../ddeboer/imap" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/RobThree/TwoFactorAuth/zipball/37983bf675c5baca09d19d6705170489d0df0002", - "reference": "37983bf675c5baca09d19d6705170489d0df0002", - "shasum": "" + { + "name": "matthiasmullie/minify", + "version": "1.3.65", + "version_normalized": "1.3.65.0", + "source": { + "type": "git", + "url": "https://github.com/matthiasmullie/minify.git", + "reference": "227f19062451c55a797e0cc667ef983834e6580c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c", + "reference": "227f19062451c55a797e0cc667ef983834e6580c", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "matthiasmullie/path-converter": "~1.1", + "php": ">=5.3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.0", + "matthiasmullie/scrapbook": "~1.0", + "phpunit/phpunit": "~4.8" + }, + "suggest": { + "psr/cache-implementation": "Cache implementation to use with Minify::cache" + }, + "time": "2020-12-27T21:43:29+00:00", + "bin": [ + "bin/minifycss", + "bin/minifyjs" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "MatthiasMullie\\Minify\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Mullie", + "email": "minify@mullie.eu", + "homepage": "http://www.mullie.eu", + "role": "Developer" + } + ], + "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", + "homepage": "http://www.minifier.org", + "keywords": [ + "JS", + "css", + "javascript", + "minifier", + "minify" + ], + "support": { + "issues": "https://github.com/matthiasmullie/minify/issues", + "source": "https://github.com/matthiasmullie/minify/tree/1.3.65" + }, + "funding": [ + { + "url": "https://github.com/[user1", + "type": "github" + }, + { + "url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.", + "type": "github" + }, + { + "url": "https://github.com/user2", + "type": "github" + } + ], + "install-path": "../matthiasmullie/minify" }, - "require": { - "php": ">=5.6.0" + { + "name": "matthiasmullie/path-converter", + "version": "1.1.3", + "version_normalized": "1.1.3.0", + "source": { + "type": "git", + "url": "https://github.com/matthiasmullie/path-converter.git", + "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9", + "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "time": "2019-02-05T23:41:09+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "MatthiasMullie\\PathConverter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Mullie", + "email": "pathconverter@mullie.eu", + "homepage": "http://www.mullie.eu", + "role": "Developer" + } + ], + "description": "Relative path converter", + "homepage": "http://github.com/matthiasmullie/path-converter", + "keywords": [ + "converter", + "path", + "paths", + "relative" + ], + "install-path": "../matthiasmullie/path-converter" }, - "require-dev": { - "phpunit/phpunit": "@stable" + { + "name": "mustangostang/spyc", + "version": "0.6.3", + "version_normalized": "0.6.3.0", + "source": { + "type": "git", + "url": "git@github.com:mustangostang/spyc.git", + "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0", + "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "4.3.*@dev" + }, + "time": "2019-09-10T13:16:29+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "Spyc.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "mustangostang", + "email": "vlad.andersen@gmail.com" + } + ], + "description": "A simple YAML loader/dumper class for PHP", + "homepage": "https://github.com/mustangostang/spyc/", + "keywords": [ + "spyc", + "yaml", + "yml" + ], + "install-path": "../mustangostang/spyc" }, - "time": "2020-01-02T19:56:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "RobThree\\Auth\\": "lib" - } + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "version_normalized": "9.99.100.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "time": "2020-10-15T08:29:30+00:00", + "type": "library", + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "install-path": "../paragonie/random_compat" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rob Janssen", - "homepage": "http://robiii.me", - "role": "Developer" - } - ], - "description": "Two Factor Authentication", - "homepage": "https://github.com/RobThree/TwoFactorAuth", - "keywords": [ - "Authentication", - "MFA", - "Multi Factor Authentication", - "Two Factor Authentication", - "authenticator", - "authy", - "php", - "tfa" - ] - }, - { - "name": "soundasleep/html2text", - "version": "0.5.0", - "version_normalized": "0.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/soundasleep/html2text.git", - "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad" + { + "name": "php-mime-mail-parser/php-mime-mail-parser", + "version": "5.0.5", + "version_normalized": "5.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/php-mime-mail-parser/php-mime-mail-parser.git", + "reference": "27983433aabeccee832573c3c56e6a4855e57745" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-mime-mail-parser/php-mime-mail-parser/zipball/27983433aabeccee832573c3c56e6a4855e57745", + "reference": "27983433aabeccee832573c3c56e6a4855e57745", + "shasum": "" + }, + "require": { + "ext-mailparse": "*", + "php": "^7.1" + }, + "replace": { + "exorus/php-mime-mail-parser": "*", + "messaged/php-mime-mail-parser": "*" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/php-token-stream": "^3.0", + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "time": "2019-09-23T11:57:58+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "PhpMimeMailParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "eXorus", + "email": "exorus.spam@gmail.com", + "homepage": "https://github.com/eXorus/", + "role": "Developer" + }, + { + "name": "M.Valinskis", + "email": "M.Valins@gmail.com", + "homepage": "https://code.google.com/p/php-mime-mail-parser", + "role": "Developer" + }, + { + "name": "eugene.emmett.wood", + "email": "gene_w@cementhorizon.com", + "homepage": "https://code.google.com/p/php-mime-mail-parser", + "role": "Developer" + }, + { + "name": "alknetso", + "email": "alkne@gmail.com", + "homepage": "https://code.google.com/p/php-mime-mail-parser", + "role": "Developer" + }, + { + "name": "bucabay", + "email": "gabe@fijiwebdesign.com", + "homepage": "http://www.fijiwebdesign.com", + "role": "Developer" + } + ], + "description": "A fully tested email parser for PHP 7.1+ (mailparse extension wrapper).", + "homepage": "https://github.com/php-mime-mail-parser/php-mime-mail-parser", + "keywords": [ + "MimeMailParser", + "mail", + "mailparse", + "mime", + "parser", + "php" + ], + "install-path": "../php-mime-mail-parser/php-mime-mail-parser" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/soundasleep/html2text/zipball/cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad", - "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad", - "shasum": "" + { + "name": "phpmailer/phpmailer", + "version": "v6.2.0", + "version_normalized": "6.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPMailer/PHPMailer.git", + "reference": "e38888a75c070304ca5514197d4847a59a5c853f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", + "reference": "e38888a75c070304ca5514197d4847a59a5c853f", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "php": ">=5.5.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.2", + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.5.6", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "suggest": { + "ext-mbstring": "Needed to send email in multibyte encoding charset", + "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", + "league/oauth2-google": "Needed for Google XOAUTH2 authentication", + "psr/log": "For optional PSR-3 debug logging", + "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", + "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + }, + "time": "2020-11-25T15:24:57+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "PHPMailer\\PHPMailer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-only" + ], + "authors": [ + { + "name": "Marcus Bointon", + "email": "phpmailer@synchromedia.co.uk" + }, + { + "name": "Jim Jagielski", + "email": "jimjag@gmail.com" + }, + { + "name": "Andy Prevost", + "email": "codeworxtech@users.sourceforge.net" + }, + { + "name": "Brent R. Matzelle" + } + ], + "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "support": { + "issues": "https://github.com/PHPMailer/PHPMailer/issues", + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0" + }, + "funding": [ + { + "url": "https://github.com/Synchro", + "type": "github" + } + ], + "install-path": "../phpmailer/phpmailer" }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": ">=5.3.2" + { + "name": "robthree/twofactorauth", + "version": "1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/RobThree/TwoFactorAuth.git", + "reference": "37983bf675c5baca09d19d6705170489d0df0002" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/RobThree/TwoFactorAuth/zipball/37983bf675c5baca09d19d6705170489d0df0002", + "reference": "37983bf675c5baca09d19d6705170489d0df0002", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "@stable" + }, + "time": "2020-01-02T19:56:46+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "RobThree\\Auth\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Janssen", + "homepage": "http://robiii.me", + "role": "Developer" + } + ], + "description": "Two Factor Authentication", + "homepage": "https://github.com/RobThree/TwoFactorAuth", + "keywords": [ + "Authentication", + "MFA", + "Multi Factor Authentication", + "Two Factor Authentication", + "authenticator", + "authy", + "php", + "tfa" + ], + "install-path": "../robthree/twofactorauth" }, - "require-dev": { - "phpunit/phpunit": ">=4.0", - "soundasleep/component-tests": "dev-master" + { + "name": "soundasleep/html2text", + "version": "0.5.0", + "version_normalized": "0.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/soundasleep/html2text.git", + "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/soundasleep/html2text/zipball/cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad", + "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": ">=4.0", + "soundasleep/component-tests": "dev-master" + }, + "time": "2017-04-19T22:01:50+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Html2Text\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "EPL-1.0" + ], + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "description": "A PHP script to convert HTML into a plain text format", + "homepage": "https://github.com/soundasleep/html2text", + "keywords": [ + "email", + "html", + "php", + "text" + ], + "install-path": "../soundasleep/html2text" }, - "time": "2017-04-19T22:01:50+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Html2Text\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "EPL-1.0" - ], - "authors": [ - { - "name": "Jevon Wright", - "homepage": "https://jevon.org", - "role": "Developer" - } - ], - "description": "A PHP script to convert HTML into a plain text format", - "homepage": "https://github.com/soundasleep/html2text", - "keywords": [ - "email", - "html", - "php", - "text" - ] - }, - { - "name": "yubico/u2flib-server", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/Yubico/php-u2flib-server.git", - "reference": "55d813acf68212ad2cadecde07551600d6971939" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Yubico/php-u2flib-server/zipball/55d813acf68212ad2cadecde07551600d6971939", - "reference": "55d813acf68212ad2cadecde07551600d6971939", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "paragonie/random_compat": ">= 1", - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "vimeo/psalm": "^0|^1|^2" - }, - "time": "2018-09-07T08:16:44+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "description": "Library for U2F implementation", - "homepage": "https://developers.yubico.com/php-u2flib-server" - } -] + { + "name": "yubico/u2flib-server", + "version": "1.0.2", + "version_normalized": "1.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/Yubico/php-u2flib-server.git", + "reference": "55d813acf68212ad2cadecde07551600d6971939" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Yubico/php-u2flib-server/zipball/55d813acf68212ad2cadecde07551600d6971939", + "reference": "55d813acf68212ad2cadecde07551600d6971939", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "paragonie/random_compat": ">= 1", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "~5.7", + "vimeo/psalm": "^0|^1|^2" + }, + "time": "2018-09-07T08:16:44+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Library for U2F implementation", + "homepage": "https://developers.yubico.com/php-u2flib-server", + "install-path": "../yubico/u2flib-server" + } + ], + "dev": true, + "dev-package-names": [] +} diff --git a/data/web/inc/lib/vendor/composer/installed.php b/data/web/inc/lib/vendor/composer/installed.php new file mode 100644 index 00000000..189c9b77 --- /dev/null +++ b/data/web/inc/lib/vendor/composer/installed.php @@ -0,0 +1,137 @@ + + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + 'name' => '__root__', + ), + 'versions' => + array ( + '__root__' => + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + ), + 'bshaffer/oauth2-server-php' => + array ( + 'pretty_version' => 'v1.11.1', + 'version' => '1.11.1.0', + 'aliases' => + array ( + ), + 'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa', + ), + 'ddeboer/imap' => + array ( + 'pretty_version' => '1.11.0', + 'version' => '1.11.0.0', + 'aliases' => + array ( + ), + 'reference' => 'a089dfcb9d177f921eb5dadc8d4144a44dff22ee', + ), + 'exorus/php-mime-mail-parser' => + array ( + 'replaced' => + array ( + 0 => '*', + ), + ), + 'matthiasmullie/minify' => + array ( + 'pretty_version' => '1.3.65', + 'version' => '1.3.65.0', + 'aliases' => + array ( + ), + 'reference' => '227f19062451c55a797e0cc667ef983834e6580c', + ), + 'matthiasmullie/path-converter' => + array ( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'aliases' => + array ( + ), + 'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9', + ), + 'messaged/php-mime-mail-parser' => + array ( + 'replaced' => + array ( + 0 => '*', + ), + ), + 'mustangostang/spyc' => + array ( + 'pretty_version' => '0.6.3', + 'version' => '0.6.3.0', + 'aliases' => + array ( + ), + 'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0', + ), + 'paragonie/random_compat' => + array ( + 'pretty_version' => 'v9.99.100', + 'version' => '9.99.100.0', + 'aliases' => + array ( + ), + 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a', + ), + 'php-mime-mail-parser/php-mime-mail-parser' => + array ( + 'pretty_version' => '5.0.5', + 'version' => '5.0.5.0', + 'aliases' => + array ( + ), + 'reference' => '27983433aabeccee832573c3c56e6a4855e57745', + ), + 'phpmailer/phpmailer' => + array ( + 'pretty_version' => 'v6.2.0', + 'version' => '6.2.0.0', + 'aliases' => + array ( + ), + 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + ), + 'robthree/twofactorauth' => + array ( + 'pretty_version' => '1.7.0', + 'version' => '1.7.0.0', + 'aliases' => + array ( + ), + 'reference' => '37983bf675c5baca09d19d6705170489d0df0002', + ), + 'soundasleep/html2text' => + array ( + 'pretty_version' => '0.5.0', + 'version' => '0.5.0.0', + 'aliases' => + array ( + ), + 'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad', + ), + 'yubico/u2flib-server' => + array ( + 'pretty_version' => '1.0.2', + 'version' => '1.0.2.0', + 'aliases' => + array ( + ), + 'reference' => '55d813acf68212ad2cadecde07551600d6971939', + ), + ), +); diff --git a/data/web/inc/lib/vendor/composer/platform_check.php b/data/web/inc/lib/vendor/composer/platform_check.php new file mode 100644 index 00000000..92370c5a --- /dev/null +++ b/data/web/inc/lib/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70300)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md b/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md index 62fffabf..4ddae6e9 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md +++ b/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md @@ -1,5 +1,46 @@ # Changelog +## [1.11.0](https://github.com/ddeboer/imap/tree/1.11.0) (2020-11-30) + +[Full Changelog](https://github.com/ddeboer/imap/compare/1.10.1...1.11.0) + +**Implemented enhancements:** + +- PHP 8 Compatibility [\#481](https://github.com/ddeboer/imap/issues/481) +- \[GA\] PHP 8 compatibility fix [\#483](https://github.com/ddeboer/imap/pull/483) ([Slamdunk](https://github.com/Slamdunk)) +- Support PHP 8.0, require PHP 7.3 [\#482](https://github.com/ddeboer/imap/pull/482) ([Slamdunk](https://github.com/Slamdunk)) + +**Fixed bugs:** + +- Fix: Outlook date format [\#480](https://github.com/ddeboer/imap/pull/480) ([gajosadrian](https://github.com/gajosadrian)) + +**Closed issues:** + +- Closing Connection [\#479](https://github.com/ddeboer/imap/issues/479) +- Problem with charset of message part / DataPartInfo [\#475](https://github.com/ddeboer/imap/issues/475) +- Unsupported charset "X-UNKNOWN" [\#425](https://github.com/ddeboer/imap/issues/425) + +## [1.10.1](https://github.com/ddeboer/imap/tree/1.10.1) (2020-08-26) + +[Full Changelog](https://github.com/ddeboer/imap/compare/1.10.0...1.10.1) + +**Fixed bugs:** + +- getThread and getMessageSequence not using with the same id [\#469](https://github.com/ddeboer/imap/issues/469) +- imap\_thread: use absolude ids [\#474](https://github.com/ddeboer/imap/pull/474) ([Slamdunk](https://github.com/Slamdunk)) + +**Closed issues:** + +- How to get a message by Message-ID [\#472](https://github.com/ddeboer/imap/issues/472) +- Mail with e-sign [\#467](https://github.com/ddeboer/imap/issues/467) +- Duplicate method definition in MessageInterface [\#455](https://github.com/ddeboer/imap/issues/455) +- Missed errors in search method [\#444](https://github.com/ddeboer/imap/issues/444) + +**Merged pull requests:** + +- Subtype not always present [\#473](https://github.com/ddeboer/imap/pull/473) ([Piskvor](https://github.com/Piskvor)) +- Improved error handling for message search method [\#445](https://github.com/ddeboer/imap/pull/445) ([ikarol](https://github.com/ikarol)) + ## [1.10.0](https://github.com/ddeboer/imap/tree/1.10.0) (2020-01-24) [Full Changelog](https://github.com/ddeboer/imap/compare/1.9.0...1.10.0) diff --git a/data/web/inc/lib/vendor/ddeboer/imap/README.md b/data/web/inc/lib/vendor/ddeboer/imap/README.md index 59dc5321..6b16183e 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/README.md +++ b/data/web/inc/lib/vendor/ddeboer/imap/README.md @@ -1,12 +1,11 @@ # IMAP library -[![Build Status](https://travis-ci.org/ddeboer/imap.svg?branch=master)](https://travis-ci.org/ddeboer/imap) -[![Code Coverage](https://scrutinizer-ci.com/g/ddeboer/imap/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/ddeboer/imap/?branch=master) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ddeboer/imap/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ddeboer/imap/?branch=master) -[![Latest Stable Version](https://poser.pugx.org/ddeboer/imap/v/stable.svg)](https://packagist.org/packages/ddeboer/imap) -[![Total Downloads](https://poser.pugx.org/ddeboer/imap/downloads.png)](https://packagist.org/packages/ddeboer/imap) +[![Latest Stable Version](https://img.shields.io/packagist/v/ddeboer/imap.svg)](https://packagist.org/packages/ddeboer/imap) +[![Downloads](https://img.shields.io/packagist/dt/ddeboer/imap.svg)](https://packagist.org/packages/ddeboer/imap) +[![Integrate](https://github.com/ddeboer/imap/workflows/Integrate/badge.svg?branch=master)](https://github.com/ddeboer/imap/actions) +[![Code Coverage](https://codecov.io/gh/ddeboer/imap/coverage.svg?branch=master)](https://codecov.io/gh/ddeboer/imap?branch=master) -A PHP 7.2+ library to read and process e-mails over IMAP. +A PHP 7.3+ library to read and process e-mails over IMAP. This library requires [IMAP](https://secure.php.net/manual/en/book.imap.php), [iconv](https://secure.php.net/manual/en/book.iconv.php) and diff --git a/data/web/inc/lib/vendor/ddeboer/imap/composer.json b/data/web/inc/lib/vendor/ddeboer/imap/composer.json index d48ac0dc..d56ea384 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/composer.json +++ b/data/web/inc/lib/vendor/ddeboer/imap/composer.json @@ -22,18 +22,23 @@ } ], "require": { - "php": "^7.2", + "php": "^7.3 || ^8.0", "ext-iconv": "*", "ext-imap": "*", "ext-mbstring": "*" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.5", - "zendframework/zend-mail": "^2.10" + "friendsofphp/php-cs-fixer": "^2.16.7", + "laminas/laminas-mail": "^2.12.3", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-phpunit": "^0.12.16", + "phpstan/phpstan-strict-rules": "^0.12.5", + "phpunit/phpunit": "^9.4.3" + }, + "config": { + "platform": { + "php": "7.3" + } }, "autoload": { "psr-4": { diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php index 902c7cea..4f9f4050 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php +++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php @@ -228,6 +228,7 @@ final class Connection implements ConnectionInterface foreach ($mailboxesInfo as $mailboxInfo) { $name = \mb_convert_encoding(\str_replace($this->server, '', $mailboxInfo->name), 'UTF-8', 'UTF7-IMAP'); + \assert(\is_string($name)); $this->mailboxNames[$name] = $mailboxInfo; } } diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php index d4e1bf49..1544aff0 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php +++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php @@ -154,6 +154,10 @@ final class Mailbox implements MailboxInterface } $query = $search->toString(); + if (\PHP_VERSION_ID < 80000) { + $descending = (int) $descending; + } + // We need to clear the stack to know whether imap_last_error() // is related to this imap_search \imap_errors(); @@ -162,7 +166,7 @@ final class Mailbox implements MailboxInterface $params = [ $this->resource->getStream(), $sortCriteria, - $descending ? 1 : 0, + $descending, \SE_UID, $query, ]; @@ -181,11 +185,13 @@ final class Mailbox implements MailboxInterface } $messageNumbers = \imap_search(...$params); } + if (false !== \imap_last_error()) { + // this way all errors occurred during search will be reported + throw new InvalidSearchCriteriaException( + \sprintf('Invalid search criteria [%s]', $query) + ); + } if (false === $messageNumbers) { - if (false !== \imap_last_error()) { - throw new InvalidSearchCriteriaException(\sprintf('Invalid search criteria [%s]', $query)); - } - // imap_search can also return false $messageNumbers = []; } @@ -203,13 +209,14 @@ final class Mailbox implements MailboxInterface \imap_errors(); $overview = \imap_fetch_overview($this->resource->getStream(), $sequence, \FT_UID); + if (false !== \imap_last_error()) { + throw new InvalidSearchCriteriaException( + \sprintf('Invalid sequence [%s]', $sequence) + ); + } if (\is_array($overview) && [] !== $overview) { $messageNumbers = \array_column($overview, 'uid'); } else { - if (false !== \imap_last_error()) { - throw new InvalidSearchCriteriaException(\sprintf('Invalid sequence [%s]', $sequence)); - } - $messageNumbers = []; } @@ -264,7 +271,7 @@ final class Mailbox implements MailboxInterface }); /** @var array|false $tree */ - $tree = \imap_thread($this->resource->getStream()); + $tree = \imap_thread($this->resource->getStream(), \SE_UID); \restore_error_handler(); diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php index 7b50777f..843ce610 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php +++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php @@ -109,7 +109,15 @@ final class Message extends Message\AbstractMessage implements MessageInterface } $this->messageNumberVerified = true; + $msgno = null; + \set_error_handler(static function (): bool { + return true; + }); + $msgno = \imap_msgno($this->resource->getStream(), $messageNumber); + + \restore_error_handler(); + if (\is_numeric($msgno) && $msgno > 0) { $this->imapMsgNo = $msgno; @@ -306,7 +314,7 @@ final class Message extends Message\AbstractMessage implements MessageInterface // 'deleted' header changed, force to reload headers, would be better to set deleted flag to true on header $this->clearHeaders(); - if (!\imap_delete($this->resource->getStream(), $this->getNumber(), \FT_UID)) { + if (!\imap_delete($this->resource->getStream(), (string) $this->getNumber(), \FT_UID)) { throw new MessageDeleteException(\sprintf('Message "%s" cannot be deleted', $this->getNumber())); } } @@ -320,7 +328,7 @@ final class Message extends Message\AbstractMessage implements MessageInterface { // 'deleted' header changed, force to reload headers, would be better to set deleted flag to false on header $this->clearHeaders(); - if (!\imap_undelete($this->resource->getStream(), $this->getNumber(), \FT_UID)) { + if (!\imap_undelete($this->resource->getStream(), (string) $this->getNumber(), \FT_UID)) { throw new MessageUndeleteException(\sprintf('Message "%s" cannot be undeleted', $this->getNumber())); } } diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php index 9187c38b..5d67e904 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php +++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php @@ -113,6 +113,7 @@ abstract class AbstractMessage extends AbstractPart $alteredValue = \str_replace(',', '', $alteredValue); $alteredValue = (string) \preg_replace('/^[a-zA-Z]+ ?/', '', $alteredValue); $alteredValue = (string) \preg_replace('/\(.*\)/', '', $alteredValue); + $alteredValue = (string) \preg_replace('/\<.*\>/', '', $alteredValue); $alteredValue = (string) \preg_replace('/\bUT\b/', 'UTC', $alteredValue); if (0 === \preg_match('/\d\d:\d\d:\d\d.* [\+\-]\d\d:?\d\d/', $alteredValue)) { $alteredValue .= ' +0000'; diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php index 923f3009..ab13eb02 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php +++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php @@ -471,9 +471,11 @@ abstract class AbstractPart implements PartInterface $this->type = self::$typesMap[$this->structure->type] ?? self::TYPE_UNKNOWN; - // In our context, \ENCOTHER is as useful as an uknown encoding + // In our context, \ENCOTHER is as useful as an unknown encoding $this->encoding = self::$encodingsMap[$this->structure->encoding] ?? self::ENCODING_UNKNOWN; - $this->subtype = $this->structure->subtype; + if (isset($this->structure->subtype)) { + $this->subtype = $this->structure->subtype; + } if (isset($this->structure->bytes)) { $this->bytes = $this->structure->bytes; diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php index 15dfb872..ee02a15d 100644 --- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php +++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php @@ -310,7 +310,13 @@ final class Transcoder return true; }); - $decodedText = \mb_convert_encoding($text, 'UTF-8', $fromCharset); + $decodedText = ''; + + try { + $decodedText = \mb_convert_encoding($text, 'UTF-8', $fromCharset); + } catch (\Error $error) { + $errorMessage = $error->getMessage(); + } \restore_error_handler(); diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml b/data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml new file mode 100644 index 00000000..9b986887 --- /dev/null +++ b/data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile b/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile index d17f9d74..fc36a814 100644 --- a/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile +++ b/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /var/www RUN apt-get update RUN apt-get install -y zip unzip zlib1g-dev -RUN docker-php-ext-install zip +RUN if [[ `php-config --vernum` -ge 73000 ]]; then docker-php-ext-install zip; fi RUN docker-php-ext-install pcntl RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml b/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml index 5413e24b..cb7ace10 100644 --- a/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml +++ b/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml @@ -9,6 +9,21 @@ services: - ./data:/var/www/data - ./tests:/var/www/tests - ./phpunit.xml.dist:/var/www/phpunit.xml.dist + '8.0': + extends: php + build: + args: + version: 8.0-cli + '7.4': + extends: php + build: + args: + version: 7.4-cli + '7.3': + extends: php + build: + args: + version: 7.3-cli '7.2': extends: php build: diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php b/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php index 89fcf1bb..ea8e8cd9 100644 --- a/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php +++ b/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php @@ -216,7 +216,7 @@ class CSS extends Minify // grab referenced file & minify it (which may include importing // yet other @import statements recursively) - $minifier = new static($importPath); + $minifier = new self($importPath); $minifier->setMaxImportSize($this->maxImportSize); $minifier->setImportExtensions($this->importExtensions); $importContent = $minifier->execute($source, $parents); @@ -307,7 +307,8 @@ class CSS extends Minify */ $this->extractStrings(); $this->stripComments(); - $this->extractCalcs(); + $this->extractMath(); + $this->extractCustomProperties(); $css = $this->replace($css); $css = $this->stripWhitespace($css); @@ -678,19 +679,29 @@ class CSS extends Minify } /** - * Replace all `calc()` occurrences. + * Replace all occurrences of functions that may contain math, where + * whitespace around operators needs to be preserved (e.g. calc, clamp) */ - protected function extractCalcs() + protected function extractMath() { + $functions = array('calc', 'clamp', 'min', 'max'); + $pattern = '/('. implode('|', $functions) .')(\(.+?)(?=$|;|})/m'; + // PHP only supports $this inside anonymous functions since 5.4 $minifier = $this; - $callback = function ($match) use ($minifier) { - $length = strlen($match[1]); + $callback = function ($match) use ($minifier, $pattern, &$callback) { + $function = $match[1]; + $length = strlen($match[2]); $expr = ''; $opened = 0; + // the regular expression for extracting math has 1 significant problem: + // it can't determine the correct closing parenthesis... + // instead, it'll match a larger portion of code to where it's certain that + // the calc() musts have ended, and we'll figure out which is the correct + // closing parenthesis here, by counting how many have opened for ($i = 0; $i < $length; $i++) { - $char = $match[1][$i]; + $char = $match[2][$i]; $expr .= $char; if ($char === '(') { $opened++; @@ -698,18 +709,41 @@ class CSS extends Minify break; } } - $rest = str_replace($expr, '', $match[1]); - $expr = trim(substr($expr, 1, -1)); + // now that we've figured out where the calc() starts and ends, extract it $count = count($minifier->extracted); - $placeholder = 'calc('.$count.')'; - $minifier->extracted[$placeholder] = 'calc('.$expr.')'; + $placeholder = 'math('.$count.')'; + $minifier->extracted[$placeholder] = $function.'('.trim(substr($expr, 1, -1)).')'; + + // and since we've captured more code than required, we may have some leftover + // calc() in here too - go recursive on the remaining but of code to go figure + // that out and extract what is needed + $rest = str_replace($function.$expr, '', $match[0]); + $rest = preg_replace_callback($pattern, $callback, $rest); return $placeholder.$rest; }; - $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/', $callback); - $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/m', $callback); + $this->registerPattern($pattern, $callback); + } + + /** + * Replace custom properties, whose values may be used in scenarios where + * we wouldn't want them to be minified (e.g. inside calc) + */ + protected function extractCustomProperties() + { + // PHP only supports $this inside anonymous functions since 5.4 + $minifier = $this; + $this->registerPattern( + '/(?<=^|[;}])(--[^:;{}"\'\s]+)\s*:([^;{}]+)/m', + function ($match) use ($minifier) { + $placeholder = '--custom-'. count($minifier->extracted) . ':0'; + $minifier->extracted[$placeholder] = $match[1] .':'. trim($match[2]); + return $placeholder; + + } + ); } /** diff --git a/data/web/inc/lib/vendor/paragonie/random_compat/composer.json b/data/web/inc/lib/vendor/paragonie/random_compat/composer.json index 1fa8de9f..f2b9c4e5 100644 --- a/data/web/inc/lib/vendor/paragonie/random_compat/composer.json +++ b/data/web/inc/lib/vendor/paragonie/random_compat/composer.json @@ -22,7 +22,7 @@ "source": "https://github.com/paragonie/random_compat" }, "require": { - "php": "^7" + "php": ">= 7" }, "require-dev": { "vimeo/psalm": "^1", diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md b/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md index c287e307..d9cbbaaf 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md @@ -167,15 +167,9 @@ Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](h If this isn't passing, is there something you can do to help? ## Security -Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately. +Please disclose any vulnerabilities found responsibly – report security issues to the maintainers privately. -PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity. - -PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer). - -PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a critical remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html). - -See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for more detail on security issues. +See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for details on security issues. ## Contributing Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues). diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION b/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION index 3af67b5c..4ac4fded 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION @@ -1 +1 @@ -6.1.6 \ No newline at end of file +6.2.0 \ No newline at end of file diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json b/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json index 90d2576f..7388bd98 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json @@ -21,26 +21,30 @@ ], "funding": [ { - "url": "https://github.com/synchro", + "url": "https://github.com/Synchro", "type": "github" } ], "require": { "php": ">=5.5.0", "ext-ctype": "*", - "ext-filter": "*" + "ext-filter": "*", + "ext-hash": "*" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.2", - "phpunit/phpunit": "^4.8 || ^5.7", - "doctrine/annotations": "^1.2" + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.2", + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.5.6", + "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "psr/log": "For optional PSR-3 debug logging", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", "ext-mbstring": "Needed to send email in multibyte encoding charset", + "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", + "league/oauth2-google": "Needed for Google XOAUTH2 authentication", + "psr/log": "For optional PSR-3 debug logging", + "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" }, "autoload": { diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php index 1237b57b..560d3645 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon + * @copyright 2012 - 2020 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 @@ -16,6 +17,7 @@ * 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 @@ -44,7 +46,7 @@ use Hayageek\OAuth2\Client\Provider\Yahoo; use Stevenmaguire\OAuth2\Client\Provider\Microsoft; if (!isset($_GET['code']) && !isset($_GET['provider'])) { -?> + ?> Select Provider:
Google
@@ -52,8 +54,8 @@ if (!isset($_GET['code']) && !isset($_GET['provider'])) { Microsoft/Outlook/Hotmail/Live/Office365
- - * Rewrite and extension of the work by Mikael Stokkebro - * + * Rewrite and extension of the work by Mikael Stokkebro + * */ $PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Login mislykkedes.'; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php index aa987a9c..e7e59d2b 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php @@ -1,4 +1,5 @@ */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। '; $PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। '; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। '; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php index 3822920a..cacb6c37 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php @@ -1,4 +1,5 @@ */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.'; $PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.'; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.'; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php index ba6ca5fa..212a11f1 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php @@ -1,9 +1,11 @@ * @author @januridp + * @author Ian Mustafa */ $PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.'; @@ -11,17 +13,19 @@ $PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung $PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima.'; $PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong'; $PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: '; -$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses : '; -$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas : '; -$PHPMAILER_LANG['file_open'] = 'Kesalahan File: Berkas tidak dapat dibuka : '; -$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan : '; -$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel'; -$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak benar : '; -$PHPMAILER_LANG['provide_address'] = 'Harus disediakan minimal satu alamat tujuan'; +$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: '; +$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: '; +$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: '; +$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: '; +$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.'; +$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: '; +$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: '; +$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan'; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung'; -$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menghasilkan kesalahan : '; -$PHPMAILER_LANG['signing'] = 'Kesalahan dalam tanda tangan : '; +$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: '; +$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.'; -$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP : '; -$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variable : '; -$PHPMAILER_LANG['extension_missing'] = 'Ekstensi hilang: '; +$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: '; +$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: '; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php index e67b6f72..08a6b733 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php @@ -1,4 +1,5 @@ */ + $PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.'; $PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.'; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.'; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php index f12a6ad4..71db3383 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php @@ -1,4 +1,5 @@ * @author Filip Š + * @author Blaž Oražem */ $PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; @@ -17,8 +19,10 @@ $PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: '; $PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: '; $PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.'; $PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: '; +$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.'; -$PHPMAILER_LANG['provide_address'] = 'Prosim vnesite vsaj enega naslovnika.'; +$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: '; $PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.'; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php index 34c1e182..0b5280f7 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php @@ -1,4 +1,5 @@ + * @author Adriane Justine Tan */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.'; $PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi maaaring matatanggap.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.'; $PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe'; $PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: '; $PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: '; $PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: '; -$PHPMAILER_LANG['file_open'] = 'Hindi mabuksan ang file: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: '; $PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: '; -$PHPMAILER_LANG['instantiate'] = 'Hindi maaaring magbigay ng institusyon ang mail'; +$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.'; $PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: '; -$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado'; -$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap'; +$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.'; +$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: '; -$PHPMAILER_LANG['signing'] = 'Hindi ma-sign'; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo'; -$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo'; -$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda ang mga variables: '; -$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension'; +$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.'; +$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: '; +$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: '; +$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: '; diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php index cfe8eaae..f938f802 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon + * @copyright 2012 - 2020 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 diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php index 0271963c..07fde4c8 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2015 Marcus Bointon + * @copyright 2012 - 2020 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 diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php index ed14d7c7..c8fc1a82 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2019 Marcus Bointon + * @copyright 2012 - 2020 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 @@ -388,11 +389,11 @@ class PHPMailer * SMTP class debug output mode. * Debug output level. * Options: - * * SMTP::DEBUG_OFF: No output - * * SMTP::DEBUG_CLIENT: Client messages - * * SMTP::DEBUG_SERVER: Client and server messages - * * SMTP::DEBUG_CONNECTION: As SERVER plus connection status - * * SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed + * @see SMTP::DEBUG_OFF: No output + * @see SMTP::DEBUG_CLIENT: Client messages + * @see SMTP::DEBUG_SERVER: Client and server messages + * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status + * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed * * @see SMTP::$do_debug * @@ -441,6 +442,8 @@ class PHPMailer * Only supported in `mail` and `sendmail` transports, not in SMTP. * * @var bool + * + * @deprecated 6.0.0 PHPMailer isn't a mailing list manager! */ public $SingleTo = false; @@ -745,7 +748,7 @@ class PHPMailer * * @var string */ - const VERSION = '6.1.6'; + const VERSION = '6.2.0'; /** * Error severity: message only, continue processing. @@ -897,6 +900,7 @@ class PHPMailer switch ($this->Debugoutput) { case 'error_log': //Don't output, just log + /** @noinspection ForgottenDebugOutputInspection */ error_log($str); break; case 'html': @@ -1182,9 +1186,11 @@ class PHPMailer //Use this built-in parser if it's available $list = imap_rfc822_parse_adrlist($addrstr, ''); foreach ($list as $address) { - if (('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress( - $address->mailbox . '@' . $address->host - )) { + if ( + ('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress( + $address->mailbox . '@' . $address->host + ) + ) { $addresses[] = [ 'name' => (property_exists($address, 'personal') ? $address->personal : ''), 'address' => $address->mailbox . '@' . $address->host, @@ -1238,7 +1244,8 @@ class PHPMailer $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim // Don't validate now addresses with IDN. Will be done in send(). $pos = strrpos($address, '@'); - if ((false === $pos) + if ( + (false === $pos) || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported()) && !static::validateAddress($address)) ) { @@ -1307,7 +1314,7 @@ class PHPMailer $patternselect = static::$validator; } if (is_callable($patternselect)) { - return $patternselect($address); + return call_user_func($patternselect, $address); } //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) { @@ -1348,7 +1355,7 @@ class PHPMailer /* * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. * - * @see http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) + * @see https://html.spec.whatwg.org/#e-mail-state-(type=email) */ return (bool) preg_match( '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . @@ -1390,7 +1397,8 @@ class PHPMailer { // Verify we have required functions, CharSet, and at-sign. $pos = strrpos($address, '@'); - if (!empty($this->CharSet) && + if ( + !empty($this->CharSet) && false !== $pos && static::idnSupported() ) { @@ -1452,8 +1460,9 @@ class PHPMailer */ public function preSend() { - if ('smtp' === $this->Mailer - || ('mail' === $this->Mailer && stripos(PHP_OS, 'WIN') === 0) + if ( + 'smtp' === $this->Mailer + || ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) ) { //SMTP mandates RFC-compliant line endings //and it's also used with mail() on Windows @@ -1463,7 +1472,8 @@ class PHPMailer static::setLE(PHP_EOL); } //Check for buggy PHP versions that add a header with an incorrect line break - if ('mail' === $this->Mailer + if ( + 'mail' === $this->Mailer && ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017) || (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103)) && ini_get('mail.add_x_header') === '1' @@ -1550,7 +1560,8 @@ class PHPMailer } // Sign with DKIM if enabled - if (!empty($this->DKIM_domain) + if ( + !empty($this->DKIM_domain) && !empty($this->DKIM_selector) && (!empty($this->DKIM_private_string) || (!empty($this->DKIM_private) @@ -1607,6 +1618,9 @@ class PHPMailer return $this->mailSend($this->MIMEHeader, $this->MIMEBody); } } catch (Exception $exc) { + if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) { + $this->smtp->reset(); + } $this->setError($exc->getMessage()); $this->edebug($exc->getMessage()); if ($this->exceptions) { @@ -1711,7 +1725,8 @@ class PHPMailer protected static function isShellSafe($string) { // Future-proof - if (escapeshellcmd($string) !== $string + if ( + escapeshellcmd($string) !== $string || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) ) { return false; @@ -1747,6 +1762,23 @@ class PHPMailer return !preg_match('#^[a-z]+://#i', $path); } + /** + * Check whether a file path is safe, accessible, and readable. + * + * @param string $path A relative or absolute path to a file + * + * @return bool + */ + protected static function fileIsAccessible($path) + { + $readable = file_exists($path); + //If not a UNC path (expected to start with \\), check read permission, see #2069 + if (strpos($path, '\\\\') !== 0) { + $readable = $readable && is_readable($path); + } + return static::isPermittedPath($path) && $readable; + } + /** * Send mail using the PHP mail() function. * @@ -1878,7 +1910,7 @@ class PHPMailer $isSent = true; } - $callbacks[] = ['issent'=>$isSent, 'to'=>$to[0]]; + $callbacks[] = ['issent' => $isSent, 'to' => $to[0]]; } } @@ -1958,11 +1990,13 @@ class PHPMailer foreach ($hosts as $hostentry) { $hostinfo = []; - if (!preg_match( - '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', - trim($hostentry), - $hostinfo - )) { + if ( + !preg_match( + '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', + trim($hostentry), + $hostinfo + ) + ) { $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry)); // Not a valid host entry continue; @@ -2000,7 +2034,12 @@ class PHPMailer } $host = $hostinfo[2]; $port = $this->Port; - if (array_key_exists(3, $hostinfo) && is_numeric($hostinfo[3]) && $hostinfo[3] > 0 && $hostinfo[3] < 65536) { + if ( + array_key_exists(3, $hostinfo) && + is_numeric($hostinfo[3]) && + $hostinfo[3] > 0 && + $hostinfo[3] < 65536 + ) { $port = (int) $hostinfo[3]; } if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { @@ -2026,12 +2065,14 @@ class PHPMailer // We must resend EHLO after TLS negotiation $this->smtp->hello($hello); } - if ($this->SMTPAuth && !$this->smtp->authenticate( - $this->Username, - $this->Password, - $this->AuthType, - $this->oauth - )) { + if ( + $this->SMTPAuth && !$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->oauth + ) + ) { throw new Exception($this->lang('authenticate')); } @@ -2089,7 +2130,7 @@ class PHPMailer 'am' => 'hy', ]; - if (isset($renamed_langcodes[$langcode])) { + if (array_key_exists($langcode, $renamed_langcodes)) { $langcode = $renamed_langcodes[$langcode]; } @@ -2130,7 +2171,7 @@ class PHPMailer // There is no English translation file if ('en' !== $langcode) { // Make sure language file path is readable - if (!static::isPermittedPath($lang_file) || !file_exists($lang_file)) { + if (!static::fileIsAccessible($lang_file)) { $foundlang = false; } else { // Overwrite language-specific strings. @@ -2378,21 +2419,18 @@ class PHPMailer $result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate); - // To be created automatically by mail() - if ($this->SingleTo) { - if ('mail' !== $this->Mailer) { + // The To header is created automatically by mail(), so needs to be omitted here + if ('mail' !== $this->Mailer) { + if ($this->SingleTo) { foreach ($this->to as $toaddr) { $this->SingleToArray[] = $this->addrFormat($toaddr); } - } - } elseif (count($this->to) > 0) { - if ('mail' !== $this->Mailer) { + } elseif (count($this->to) > 0) { $result .= $this->addrAppend('To', $this->to); + } elseif (count($this->cc) === 0) { + $result .= $this->headerLine('To', 'undisclosed-recipients:;'); } - } elseif (count($this->cc) === 0) { - $result .= $this->headerLine('To', 'undisclosed-recipients:;'); } - $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]); // sendmail and mail() extract Cc from the header before sending @@ -2401,7 +2439,8 @@ class PHPMailer } // sendmail and mail() extract Bcc from the header before sending - if (( + if ( + ( 'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer ) && count($this->bcc) > 0 @@ -2947,7 +2986,7 @@ class PHPMailer * @param string $path Path to the attachment * @param string $name Overrides the attachment name * @param string $encoding File encoding (see $Encoding) - * @param string $type File extension (MIME) type + * @param string $type MIME type, e.g. `image/jpeg`; determined automatically from $path if not specified * @param string $disposition Disposition to use * * @throws Exception @@ -2962,7 +3001,7 @@ class PHPMailer $disposition = 'attachment' ) { try { - if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) { + if (!static::fileIsAccessible($path)) { throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } @@ -2975,7 +3014,6 @@ class PHPMailer if ('' === $name) { $name = $filename; } - if (!$this->validateEncoding($encoding)) { throw new Exception($this->lang('encoding') . $encoding); } @@ -3137,7 +3175,7 @@ class PHPMailer protected function encodeFile($path, $encoding = self::ENCODING_BASE64) { try { - if (!static::isPermittedPath($path) || !file_exists($path) || !is_readable($path)) { + if (!static::fileIsAccessible($path)) { throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE); } $file_buffer = file_get_contents($path); @@ -3523,7 +3561,7 @@ class PHPMailer $disposition = 'inline' ) { try { - if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) { + if (!static::fileIsAccessible($path)) { throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } @@ -3872,7 +3910,8 @@ class PHPMailer public static function isValidHost($host) { //Simple syntax limits - if (empty($host) + if ( + empty($host) || !is_string($host) || strlen($host) > 256 || !preg_match('/^([a-zA-Z\d.-]*|\[[a-fA-F\d:]+])$/', $host) @@ -3990,7 +4029,8 @@ class PHPMailer * @param string $message HTML message string * @param string $basedir Absolute path to a base directory to prepend to relative paths to images * @param bool|callable $advanced Whether to use the internal HTML to text converter - * or your own custom converter @return string $message The transformed message Body + * or your own custom converter + * @return string The transformed message body * * @throws Exception * @@ -4037,7 +4077,8 @@ class PHPMailer ); continue; } - if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + if ( + // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) !empty($basedir) // Ignore URLs containing parent dir traversal (..) && (strpos($url, '..') === false) @@ -4059,13 +4100,14 @@ class PHPMailer if (strlen($directory) > 1 && '/' !== substr($directory, -1)) { $directory .= '/'; } - if ($this->addEmbeddedImage( - $basedir . $directory . $filename, - $cid, - $filename, - static::ENCODING_BASE64, - static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION)) - ) + if ( + $this->addEmbeddedImage( + $basedir . $directory . $filename, + $cid, + $filename, + static::ENCODING_BASE64, + static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION)) + ) ) { $message = preg_replace( '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui', @@ -4114,7 +4156,7 @@ class PHPMailer public function html2text($html, $advanced = false) { if (is_callable($advanced)) { - return $advanced($html); + return call_user_func($advanced, $html); } return html_entity_decode( @@ -4213,6 +4255,7 @@ class PHPMailer 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'webp' => 'image/webp', + 'avif' => 'image/avif', 'heif' => 'image/heif', 'heifs' => 'image/heif-sequence', 'heic' => 'image/heic', @@ -4483,11 +4526,15 @@ class PHPMailer $privKey = openssl_pkey_get_private($privKeyStr); } if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { - openssl_pkey_free($privKey); + if (PHP_MAJOR_VERSION < 8) { + openssl_pkey_free($privKey); + } return base64_encode($signature); } - openssl_pkey_free($privKey); + if (PHP_MAJOR_VERSION < 8) { + openssl_pkey_free($privKey); + } return ''; } diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php index 7d4c88f6..235e6372 100644 --- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php +++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2019 Marcus Bointon + * @copyright 2012 - 2020 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 @@ -45,7 +46,7 @@ class POP3 * * @var string */ - const VERSION = '6.1.6'; + const VERSION = '6.2.0'; /** * Default POP3 port number. @@ -62,12 +63,16 @@ class POP3 const DEFAULT_TIMEOUT = 30; /** - * Debug display level. - * Options: 0 = no, 1+ = yes. + * POP3 class debug output mode. + * Debug output level. + * Options: + * @see POP3::DEBUG_OFF: No output + * @see POP3::DEBUG_SERVER: Server messages, connection/server errors + * @see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors * * @var int */ - public $do_debug = 0; + public $do_debug = self::DEBUG_OFF; /** * POP3 mail server hostname. @@ -130,6 +135,28 @@ class POP3 */ const LE = "\r\n"; + /** + * Debug level for no output. + * + * @var int + */ + const DEBUG_OFF = 0; + + /** + * Debug level to show server -> client messages + * also shows clients connection errors or errors from server + * + * @var int + */ + const DEBUG_SERVER = 1; + + /** + * Debug level to show client -> server and server -> client messages. + * + * @var int + */ + const DEBUG_CLIENT = 2; + /** * Simple static wrapper for all-in-one POP before SMTP. * @@ -329,7 +356,7 @@ class POP3 protected function getResponse($size = 128) { $response = fgets($this->pop_conn, $size); - if ($this->do_debug >= 1) { + if ($this->do_debug >= self::DEBUG_SERVER) { echo 'Server -> Client: ', $response; } @@ -346,7 +373,7 @@ class POP3 protected function sendString($string) { if ($this->pop_conn) { - if ($this->do_debug >= 2) { //Show client messages when debug >= 2 + if ($this->do_debug >= self::DEBUG_CLIENT) { //Show client messages when debug >= 2 echo 'Client -> Server: ', $string; } @@ -384,7 +411,7 @@ class POP3 protected function setError($error) { $this->errors[] = $error; - if ($this->do_debug >= 1) { + if ($this->do_debug >= self::DEBUG_SERVER) { echo '
';
             foreach ($this->errors as $e) {
                 print_r($e);
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php
index aa555514..ab7f46e4 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php
@@ -1,4 +1,5 @@
 
  * @author    Andy Prevost (codeworxtech) 
  * @author    Brent R. Matzelle (original founder)
- * @copyright 2012 - 2019 Marcus Bointon
+ * @copyright 2012 - 2020 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
@@ -34,7 +35,7 @@ class SMTP
      *
      * @var string
      */
-    const VERSION = '6.1.6';
+    const VERSION = '6.2.0';
 
     /**
      * SMTP line break constant.
@@ -311,12 +312,6 @@ class SMTP
      */
     public function connect($host, $port = null, $timeout = 30, $options = [])
     {
-        static $streamok;
-        //This is enabled by default since 5.0.0 but some providers disable it
-        //Check this once and cache the result
-        if (null === $streamok) {
-            $streamok = function_exists('stream_socket_client');
-        }
         // Clear errors to avoid confusion
         $this->setError('');
         // Make sure we are __not__ connected
@@ -335,12 +330,48 @@ class SMTP
             (count($options) > 0 ? var_export($options, true) : 'array()'),
             self::DEBUG_CONNECTION
         );
+
+        $this->smtp_conn = $this->getSMTPConnection($host, $port, $timeout, $options);
+
+        if ($this->smtp_conn === false) {
+            //Error info already set inside `getSMTPConnection()`
+            return false;
+        }
+
+        $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
+
+        // Get any announcement
+        $this->last_reply = $this->get_lines();
+        $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
+
+        return true;
+    }
+
+    /**
+     * Create connection to the SMTP server.
+     *
+     * @param string $host    SMTP server IP or host name
+     * @param int    $port    The port number to connect to
+     * @param int    $timeout How long to wait for the connection to open
+     * @param array  $options An array of options for stream_context_create()
+     *
+     * @return false|resource
+     */
+    protected function getSMTPConnection($host, $port = null, $timeout = 30, $options = [])
+    {
+        static $streamok;
+        //This is enabled by default since 5.0.0 but some providers disable it
+        //Check this once and cache the result
+        if (null === $streamok) {
+            $streamok = function_exists('stream_socket_client');
+        }
+
         $errno = 0;
         $errstr = '';
         if ($streamok) {
             $socket_context = stream_context_create($options);
             set_error_handler([$this, 'errorHandler']);
-            $this->smtp_conn = stream_socket_client(
+            $connection = stream_socket_client(
                 $host . ':' . $port,
                 $errno,
                 $errstr,
@@ -356,7 +387,7 @@ class SMTP
                 self::DEBUG_CONNECTION
             );
             set_error_handler([$this, 'errorHandler']);
-            $this->smtp_conn = fsockopen(
+            $connection = fsockopen(
                 $host,
                 $port,
                 $errno,
@@ -365,8 +396,9 @@ class SMTP
             );
             restore_error_handler();
         }
+
         // Verify we connected properly
-        if (!is_resource($this->smtp_conn)) {
+        if (!is_resource($connection)) {
             $this->setError(
                 'Failed to connect to server',
                 '',
@@ -381,22 +413,19 @@ class SMTP
 
             return false;
         }
-        $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
+
         // SMTP server can take longer to respond, give longer timeout for first read
         // Windows does not have support for this timeout function
         if (strpos(PHP_OS, 'WIN') !== 0) {
-            $max = (int) ini_get('max_execution_time');
-            // Don't bother if unlimited
-            if (0 !== $max && $timeout > $max) {
+            $max = (int)ini_get('max_execution_time');
+            // Don't bother if unlimited, or if set_time_limit is disabled
+            if (0 !== $max && $timeout > $max && strpos(ini_get('disable_functions'), 'set_time_limit') === false) {
                 @set_time_limit($timeout);
             }
-            stream_set_timeout($this->smtp_conn, $timeout, 0);
+            stream_set_timeout($connection, $timeout, 0);
         }
-        // Get any announcement
-        $announce = $this->get_lines();
-        $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
 
-        return true;
+        return $connection;
     }
 
     /**
@@ -511,11 +540,12 @@ class SMTP
                     return false;
                 }
                 // Send encoded username and password
-                if (!$this->sendCommand(
-                    'User & Password',
-                    base64_encode("\0" . $username . "\0" . $password),
-                    235
-                )
+                if (
+                    !$this->sendCommand(
+                        'User & Password',
+                        base64_encode("\0" . $username . "\0" . $password),
+                        235
+                    )
                 ) {
                     return false;
                 }
@@ -1058,8 +1088,10 @@ class SMTP
     {
         //If SMTP transcripts are left enabled, or debug output is posted online
         //it can leak credentials, so hide credentials in all but lowest level
-        if (self::DEBUG_LOWLEVEL > $this->do_debug &&
-            in_array($command, ['User & Password', 'Username', 'Password'], true)) {
+        if (
+            self::DEBUG_LOWLEVEL > $this->do_debug &&
+            in_array($command, ['User & Password', 'Username', 'Password'], true)
+        ) {
             $this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
         } else {
             $this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT);
@@ -1166,13 +1198,41 @@ class SMTP
         $selW = null;
         while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
             //Must pass vars in here as params are by reference
-            if (!stream_select($selR, $selW, $selW, $this->Timelimit)) {
+            //solution for signals inspired by https://github.com/symfony/symfony/pull/6540
+            set_error_handler([$this, 'errorHandler']);
+            $n = stream_select($selR, $selW, $selW, $this->Timelimit);
+            restore_error_handler();
+
+            if ($n === false) {
+                $message = $this->getError()['detail'];
+
+                $this->edebug(
+                    'SMTP -> get_lines(): select failed (' . $message . ')',
+                    self::DEBUG_LOWLEVEL
+                );
+
+                //stream_select returns false when the `select` system call is interrupted
+                //by an incoming signal, try the select again
+                if (stripos($message, 'interrupted system call') !== false) {
+                    $this->edebug(
+                        'SMTP -> get_lines(): retrying stream_select',
+                        self::DEBUG_LOWLEVEL
+                    );
+                    $this->setError('');
+                    continue;
+                }
+
+                break;
+            }
+
+            if (!$n) {
                 $this->edebug(
                     'SMTP -> get_lines(): select timed-out in (' . $this->Timelimit . ' sec)',
                     self::DEBUG_LOWLEVEL
                 );
                 break;
             }
+
             //Deliberate noise suppression - errors are handled afterwards
             $str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH);
             $this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL);