From ce92d50934cd0cf3d8ebb36d326baddce4e5f903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Dom=C3=ADnguez?= Date: Fri, 9 Feb 2018 14:06:32 +0100 Subject: [PATCH] * [MOD] Removed vendor directory --- vendor/autoload.php | 7 - vendor/composer/ClassLoader.php | 445 -- vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 9 - vendor/composer/autoload_files.php | 12 - vendor/composer/autoload_namespaces.php | 13 - vendor/composer/autoload_psr4.php | 23 - vendor/composer/autoload_real.php | 70 - vendor/composer/installed.json | 1228 ----- vendor/defuse/php-encryption/.gitignore | 11 - vendor/defuse/php-encryption/README.md | 88 - vendor/defuse/php-encryption/composer.json | 35 - vendor/defuse/php-encryption/dist/Makefile | 37 - vendor/defuse/php-encryption/dist/box.json | 25 - .../defuse/php-encryption/dist/signingkey.asc | 52 - .../php-encryption/docs/CryptoDetails.md | 64 - .../docs/InstallingAndVerifying.md | 53 - .../docs/InternalDeveloperDocs.md | 160 - vendor/defuse/php-encryption/docs/Tutorial.md | 298 - .../php-encryption/docs/UpgradingFromV1.2.md | 51 - .../php-encryption/docs/classes/Crypto.md | 260 - .../php-encryption/docs/classes/File.md | 446 -- .../defuse/php-encryption/docs/classes/Key.md | 117 - vendor/defuse/php-encryption/src/Core.php | 446 -- vendor/defuse/php-encryption/src/Crypto.php | 393 -- .../src/Exception/CryptoException.php | 7 - .../src/Exception/IOException.php | 7 - vendor/defuse/php-encryption/src/File.php | 784 --- vendor/defuse/php-encryption/src/Key.php | 95 - .../src/KeyProtectedByPassword.php | 115 - .../php-encryption/src/RuntimeTests.php | 247 - vendor/paragonie/random_compat/build-phar.sh | 5 - vendor/paragonie/random_compat/composer.json | 37 - .../dist/random_compat.phar.pubkey | 5 - .../dist/random_compat.phar.pubkey.asc | 11 - .../random_compat/lib/byte_safe_strings.php | 181 - .../random_compat/lib/error_polyfill.php | 49 - vendor/paragonie/random_compat/lib/random.php | 223 - .../lib/random_bytes_com_dotnet.php | 88 - .../lib/random_bytes_dev_urandom.php | 167 - .../lib/random_bytes_libsodium.php | 88 - .../lib/random_bytes_libsodium_legacy.php | 92 - .../random_compat/lib/random_bytes_mcrypt.php | 77 - .../random_compat/lib/random_int.php | 190 - .../random_compat/other/build_phar.php | 57 - .../random_compat/psalm-autoload.php | 9 - vendor/paragonie/random_compat/psalm.xml | 16 - vendor/phpmailer/phpmailer/LICENSE | 502 -- vendor/phpmailer/phpmailer/VERSION | 1 - .../phpmailer/phpmailer/get_oauth_token.php | 144 - .../phpmailer/language/phpmailer.lang-az.php | 26 - .../phpmailer/language/phpmailer.lang-ba.php | 26 - .../phpmailer/language/phpmailer.lang-be.php | 26 - .../phpmailer/language/phpmailer.lang-bg.php | 26 - .../phpmailer/language/phpmailer.lang-cs.php | 25 - .../phpmailer/language/phpmailer.lang-de.php | 25 - .../phpmailer/language/phpmailer.lang-el.php | 25 - .../phpmailer/language/phpmailer.lang-eo.php | 25 - .../phpmailer/language/phpmailer.lang-es.php | 26 - .../phpmailer/language/phpmailer.lang-et.php | 27 - .../phpmailer/language/phpmailer.lang-fa.php | 27 - .../phpmailer/language/phpmailer.lang-fo.php | 26 - .../phpmailer/language/phpmailer.lang-fr.php | 29 - .../phpmailer/language/phpmailer.lang-gl.php | 26 - .../phpmailer/language/phpmailer.lang-he.php | 26 - .../phpmailer/language/phpmailer.lang-hr.php | 26 - .../phpmailer/language/phpmailer.lang-it.php | 27 - .../phpmailer/language/phpmailer.lang-ja.php | 27 - .../phpmailer/language/phpmailer.lang-ka.php | 26 - .../phpmailer/language/phpmailer.lang-ko.php | 26 - .../phpmailer/language/phpmailer.lang-lt.php | 26 - .../phpmailer/language/phpmailer.lang-lv.php | 26 - .../phpmailer/language/phpmailer.lang-nl.php | 26 - .../phpmailer/language/phpmailer.lang-pt.php | 26 - .../language/phpmailer.lang-pt_br.php | 29 - .../phpmailer/language/phpmailer.lang-ro.php | 26 - .../phpmailer/language/phpmailer.lang-rs.php | 26 - .../phpmailer/language/phpmailer.lang-ru.php | 27 - .../phpmailer/language/phpmailer.lang-sk.php | 26 - .../phpmailer/language/phpmailer.lang-sl.php | 26 - .../phpmailer/language/phpmailer.lang-tr.php | 30 - .../phpmailer/language/phpmailer.lang-uk.php | 27 - .../phpmailer/language/phpmailer.lang-vi.php | 26 - vendor/phpmailer/phpmailer/src/Exception.php | 39 - vendor/phpmailer/phpmailer/src/OAuth.php | 138 - vendor/phpmailer/phpmailer/src/SMTP.php | 1325 ----- vendor/phpseclib/phpseclib/LICENSE | 21 - vendor/phpseclib/phpseclib/README.md | 75 - vendor/phpseclib/phpseclib/composer.json | 76 - vendor/phpseclib/phpseclib/composer.lock | 1819 ------- .../phpseclib/phpseclib/Crypt/AES.php | 126 - .../phpseclib/phpseclib/Crypt/Blowfish.php | 577 -- .../phpseclib/phpseclib/Crypt/DES.php | 1443 ----- .../phpseclib/phpseclib/Crypt/Hash.php | 824 --- .../phpseclib/phpseclib/Crypt/RC2.php | 688 --- .../phpseclib/phpseclib/Crypt/RC4.php | 342 -- .../phpseclib/phpseclib/Crypt/Random.php | 270 - .../phpseclib/phpseclib/Crypt/Rijndael.php | 936 ---- .../phpseclib/phpseclib/Crypt/TripleDES.php | 460 -- .../phpseclib/phpseclib/File/ANSI.php | 577 -- .../phpseclib/phpseclib/File/X509.php | 4846 ----------------- .../phpseclib/phpseclib/Math/BigInteger.php | 3763 ------------- .../phpseclib/phpseclib/phpseclib/Net/SCP.php | 337 -- .../phpseclib/phpseclib/Net/SFTP/Stream.php | 795 --- .../phpseclib/phpseclib/Net/SSH2.php | 4616 ---------------- .../phpseclib/phpseclib/System/SSH/Agent.php | 308 -- .../phpseclib/System/SSH/Agent/Identity.php | 158 - .../phpseclib/phpseclib/bootstrap.php | 16 - .../phpseclib/phpseclib/phpseclib/openssl.cnf | 6 - 109 files changed, 33012 deletions(-) delete mode 100644 vendor/autoload.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_files.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/installed.json delete mode 100644 vendor/defuse/php-encryption/.gitignore delete mode 100644 vendor/defuse/php-encryption/README.md delete mode 100644 vendor/defuse/php-encryption/composer.json delete mode 100644 vendor/defuse/php-encryption/dist/Makefile delete mode 100644 vendor/defuse/php-encryption/dist/box.json delete mode 100644 vendor/defuse/php-encryption/dist/signingkey.asc delete mode 100644 vendor/defuse/php-encryption/docs/CryptoDetails.md delete mode 100644 vendor/defuse/php-encryption/docs/InstallingAndVerifying.md delete mode 100644 vendor/defuse/php-encryption/docs/InternalDeveloperDocs.md delete mode 100644 vendor/defuse/php-encryption/docs/Tutorial.md delete mode 100644 vendor/defuse/php-encryption/docs/UpgradingFromV1.2.md delete mode 100644 vendor/defuse/php-encryption/docs/classes/Crypto.md delete mode 100644 vendor/defuse/php-encryption/docs/classes/File.md delete mode 100644 vendor/defuse/php-encryption/docs/classes/Key.md delete mode 100644 vendor/defuse/php-encryption/src/Core.php delete mode 100644 vendor/defuse/php-encryption/src/Crypto.php delete mode 100644 vendor/defuse/php-encryption/src/Exception/CryptoException.php delete mode 100644 vendor/defuse/php-encryption/src/Exception/IOException.php delete mode 100644 vendor/defuse/php-encryption/src/File.php delete mode 100644 vendor/defuse/php-encryption/src/Key.php delete mode 100644 vendor/defuse/php-encryption/src/KeyProtectedByPassword.php delete mode 100644 vendor/defuse/php-encryption/src/RuntimeTests.php delete mode 100755 vendor/paragonie/random_compat/build-phar.sh delete mode 100644 vendor/paragonie/random_compat/composer.json delete mode 100644 vendor/paragonie/random_compat/dist/random_compat.phar.pubkey delete mode 100644 vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc delete mode 100644 vendor/paragonie/random_compat/lib/byte_safe_strings.php delete mode 100644 vendor/paragonie/random_compat/lib/error_polyfill.php delete mode 100644 vendor/paragonie/random_compat/lib/random.php delete mode 100644 vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php delete mode 100644 vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php delete mode 100644 vendor/paragonie/random_compat/lib/random_bytes_libsodium.php delete mode 100644 vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php delete mode 100644 vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php delete mode 100644 vendor/paragonie/random_compat/lib/random_int.php delete mode 100644 vendor/paragonie/random_compat/other/build_phar.php delete mode 100644 vendor/paragonie/random_compat/psalm-autoload.php delete mode 100644 vendor/paragonie/random_compat/psalm.xml delete mode 100644 vendor/phpmailer/phpmailer/LICENSE delete mode 100644 vendor/phpmailer/phpmailer/VERSION delete mode 100644 vendor/phpmailer/phpmailer/get_oauth_token.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-rs.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php delete mode 100644 vendor/phpmailer/phpmailer/src/Exception.php delete mode 100644 vendor/phpmailer/phpmailer/src/OAuth.php delete mode 100644 vendor/phpmailer/phpmailer/src/SMTP.php delete mode 100644 vendor/phpseclib/phpseclib/LICENSE delete mode 100644 vendor/phpseclib/phpseclib/README.md delete mode 100644 vendor/phpseclib/phpseclib/composer.json delete mode 100644 vendor/phpseclib/phpseclib/composer.lock delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/AES.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/DES.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/RC2.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/RC4.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/File/X509.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Net/SCP.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/bootstrap.php delete mode 100644 vendor/phpseclib/phpseclib/phpseclib/openssl.cnf diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index a9dd04d4..00000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - private $apcuPrefix; - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath.'\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index 7a91153b..00000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,9 +0,0 @@ - $vendorDir . '/paragonie/random_compat/lib/random.php', - 'bbf73f3db644d3dced353b837903e74c' => $vendorDir . '/php-di/php-di/src/DI/functions.php', - 'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index cb2b0646..00000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,13 +0,0 @@ - array($vendorDir . '/doctrine/lexer/lib'), - 'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'), - 'Doctrine\\Common\\Collections\\' => array($vendorDir . '/doctrine/collections/lib'), - 'Base2n' => array($vendorDir . '/ademarre/binary-to-text-php'), -); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php deleted file mode 100644 index b5654830..00000000 --- a/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,23 +0,0 @@ - array($vendorDir . '/phpseclib/phpseclib/phpseclib'), - 'SP\\Modules\\Web\\' => array($baseDir . '/app/modules/web'), - 'SP\\' => array($baseDir . '/lib/SP'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'PhpDocReader\\' => array($vendorDir . '/php-di/phpdoc-reader/src/PhpDocReader'), - 'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'), - 'Klein\\' => array($vendorDir . '/klein/klein/src/Klein'), - 'Invoker\\' => array($vendorDir . '/php-di/invoker/src'), - 'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'), - 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'), - 'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations'), - 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/common/lib/Doctrine/Common'), - 'Defuse\\Crypto\\' => array($vendorDir . '/defuse/php-encryption/src'), - 'DI\\' => array($vendorDir . '/php-di/php-di/src/DI'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index d19dbc63..00000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,70 +0,0 @@ -= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitb174c89ce62ffa56cba5b414933da45e::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitb174c89ce62ffa56cba5b414933da45e::$files; - } else { - $includeFiles = require __DIR__ . '/autoload_files.php'; - } - foreach ($includeFiles as $fileIdentifier => $file) { - composerRequireb174c89ce62ffa56cba5b414933da45e($fileIdentifier, $file); - } - - return $loader; - } -} - -function composerRequireb174c89ce62ffa56cba5b414933da45e($fileIdentifier, $file) -{ - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - require $file; - - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - } -} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json deleted file mode 100644 index f9e00e7f..00000000 --- a/vendor/composer/installed.json +++ /dev/null @@ -1,1228 +0,0 @@ -[ - { - "name": "ademarre/binary-to-text-php", - "version": "dev-master", - "version_normalized": "9999999-dev", - "source": { - "type": "git", - "url": "https://github.com/ademarre/binary-to-text-php.git", - "reference": "5d98d17be16d65e03851654a717293a4317bb947" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ademarre/binary-to-text-php/zipball/5d98d17be16d65e03851654a717293a4317bb947", - "reference": "5d98d17be16d65e03851654a717293a4317bb947", - "shasum": "" - }, - "require": { - "php": ">=5.2.14" - }, - "time": "2015-02-27T05:11:22+00:00", - "type": "library", - "installation-source": "source", - "autoload": { - "psr-0": { - "Base2n": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andre DeMarre", - "role": "Developer" - } - ], - "description": "Collection of binary-to-text encoding utilities for PHP. Includes Base32 support and much more.", - "homepage": "https://github.com/ademarre/binary-to-text-php", - "keywords": [ - "base-4", - "base-8", - "base32", - "binary", - "octal", - "rfc4648" - ] - }, - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "time": "2017-02-14T19:40:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop" - }, - { - "name": "defuse/php-encryption", - "version": "v2.1.0", - "version_normalized": "2.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/defuse/php-encryption.git", - "reference": "5176f5abb38d3ea8a6e3ac6cd3bbb54d8185a689" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/5176f5abb38d3ea8a6e3ac6cd3bbb54d8185a689", - "reference": "5176f5abb38d3ea8a6e3ac6cd3bbb54d8185a689", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "paragonie/random_compat": "~2.0", - "php": ">=5.4.0" - }, - "require-dev": { - "nikic/php-parser": "^2.0|^3.0", - "phpunit/phpunit": "^4|^5" - }, - "time": "2017-05-18T21:28:48+00:00", - "bin": [ - "bin/generate-defuse-key" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Defuse\\Crypto\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Hornby", - "email": "taylor@defuse.ca", - "homepage": "https://defuse.ca/" - }, - { - "name": "Scott Arciszewski", - "email": "info@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "Secure PHP Encryption Library", - "keywords": [ - "aes", - "authenticated encryption", - "cipher", - "crypto", - "cryptography", - "encrypt", - "encryption", - "openssl", - "security", - "symmetric key cryptography" - ] - }, - { - "name": "doctrine/annotations", - "version": "v1.4.0", - "version_normalized": "1.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" - }, - "time": "2017-02-24T16:22:25+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ] - }, - { - "name": "doctrine/cache", - "version": "v1.6.2", - "version_normalized": "1.6.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b", - "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b", - "shasum": "" - }, - "require": { - "php": "~5.5|~7.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "phpunit/phpunit": "~4.8|~5.0", - "predis/predis": "~1.0", - "satooshi/php-coveralls": "~0.6" - }, - "time": "2017-07-22T12:49:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ] - }, - { - "name": "doctrine/collections", - "version": "v1.4.0", - "version_normalized": "1.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" - }, - "time": "2017-01-03T10:49:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "array", - "collections", - "iterator" - ] - }, - { - "name": "doctrine/common", - "version": "v2.7.3", - "version_normalized": "2.7.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "4acb8f89626baafede6ee5475bc5844096eba8a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/4acb8f89626baafede6ee5475bc5844096eba8a9", - "reference": "4acb8f89626baafede6ee5475bc5844096eba8a9", - "shasum": "" - }, - "require": { - "doctrine/annotations": "1.*", - "doctrine/cache": "1.*", - "doctrine/collections": "1.*", - "doctrine/inflector": "1.*", - "doctrine/lexer": "1.*", - "php": "~5.6|~7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4.6" - }, - "time": "2017-07-22T08:35:12+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common Library for Doctrine projects", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "collections", - "eventmanager", - "persistence", - "spl" - ] - }, - { - "name": "doctrine/inflector", - "version": "v1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "4.*" - }, - "time": "2015-11-06T14:35:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ] - }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "time": "2014-09-09T13:34:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ] - }, - { - "name": "klein/klein", - "version": "v2.1.2", - "version_normalized": "2.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/klein/klein.php.git", - "reference": "6549676cc831b9417332b3d9485c64bbf7bac728" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/klein/klein.php/zipball/6549676cc831b9417332b3d9485c64bbf7bac728", - "reference": "6549676cc831b9417332b3d9485c64bbf7bac728", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/php-code-coverage": "^2.2", - "phpunit/phpunit": "^4.8", - "squizlabs/php_codesniffer": "1.4.8" - }, - "time": "2017-02-01T23:08:58+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Klein\\": "src/Klein/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris O'Hara", - "email": "cohara87@gmail.com", - "homepage": "http://chris6f.com/", - "role": "Creator/Developer" - }, - { - "name": "Trevor Suarez", - "email": "rican7@gmail.com", - "homepage": "https://trevorsuarez.com/", - "role": "Contributor/Developer" - } - ], - "description": "A lightning fast router for PHP", - "homepage": "https://github.com/klein/klein.php", - "keywords": [ - "boilerplate", - "router", - "routing", - "sinatra" - ] - }, - { - "name": "paragonie/random_compat", - "version": "v2.0.11", - "version_normalized": "2.0.11.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2017-09-27T21:40:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "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", - "pseudorandom", - "random" - ] - }, - { - "name": "php-di/invoker", - "version": "1.3.3", - "version_normalized": "1.3.3.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7", - "reference": "1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "~1.1" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "phpunit/phpunit": "~4.5" - }, - "time": "2016-07-14T13:09:58+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Invoker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Generic and extensible callable invoker", - "homepage": "https://github.com/PHP-DI/Invoker", - "keywords": [ - "callable", - "dependency", - "dependency-injection", - "injection", - "invoke", - "invoker" - ] - }, - { - "name": "php-di/php-di", - "version": "5.4.6", - "version_normalized": "5.4.6.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "3f9255659595f3e289f473778bb6c51aa72abbbd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/3f9255659595f3e289f473778bb6c51aa72abbbd", - "reference": "3f9255659595f3e289f473778bb6c51aa72abbbd", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "~1.2", - "php": ">=5.5.0", - "php-di/invoker": "^1.3.2", - "php-di/phpdoc-reader": "^2.0.1", - "psr/container": "~1.0" - }, - "provide": { - "container-interop/container-interop-implementation": "^1.0", - "psr/container-implementation": "^1.0" - }, - "replace": { - "mnapoli/php-di": "*" - }, - "require-dev": { - "doctrine/annotations": "~1.2", - "doctrine/cache": "~1.4", - "mnapoli/phpunit-easymock": "~0.2.0", - "ocramius/proxy-manager": "~1.0|~2.0", - "phpbench/phpbench": "@dev", - "phpunit/phpunit": "~4.5" - }, - "suggest": { - "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", - "doctrine/cache": "Install it if you want to use the cache (version ~1.4)", - "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~1.0 or ~2.0)" - }, - "time": "2017-12-03T08:20:27+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "DI\\": "src/DI/" - }, - "files": [ - "src/DI/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The dependency injection container for humans", - "homepage": "http://php-di.org/", - "keywords": [ - "container", - "dependency injection", - "di" - ] - }, - { - "name": "php-di/phpdoc-reader", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PhpDocReader.git", - "reference": "83f5ead159defccfa8e7092e5b6c1c533b326d68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/83f5ead159defccfa8e7092e5b6c1c533b326d68", - "reference": "83f5ead159defccfa8e7092e5b6c1c533b326d68", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.6" - }, - "time": "2015-11-29T10:34:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpDocReader\\": "src/PhpDocReader" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)", - "keywords": [ - "phpdoc", - "reflection" - ] - }, - { - "name": "phpmailer/phpmailer", - "version": "v6.0.3", - "version_normalized": "6.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "44d49bab5ab1fef721d3ee07e75dc0865ddf4cc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/44d49bab5ab1fef721d3ee07e75dc0865ddf4cc6", - "reference": "44d49bab5ab1fef721d3ee07e75dc0865ddf4cc6", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-filter": "*", - "php": ">=5.5.0" - }, - "require-dev": { - "doctrine/annotations": "1.2.*", - "friendsofphp/php-cs-fixer": "^2.2", - "phpdocumentor/phpdocumentor": "2.*", - "phpunit/phpunit": "^4.8 || ^5.7", - "zendframework/zend-eventmanager": "3.0.*", - "zendframework/zend-i18n": "2.7.3", - "zendframework/zend-serializer": "2.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": "2018-01-05T13:19:58+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "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" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.9", - "version_normalized": "2.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "c9a3fe35e20eb6eeaca716d6a23cde03f52d1558" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c9a3fe35e20eb6eeaca716d6a23cde03f52d1558", - "reference": "c9a3fe35e20eb6eeaca716d6a23cde03f52d1558", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "~4.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "time": "2017-11-29T06:38:08+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ] - }, - { - "name": "psr/container", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2017-02-14T16:28:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ] - }, - { - "name": "roave/security-advisories", - "version": "dev-master", - "version_normalized": "9999999-dev", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "3df94834c80037130b533703df4672785b6ea112" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3df94834c80037130b533703df4672785b6ea112", - "reference": "3df94834c80037130b533703df4672785b6ea112", - "shasum": "" - }, - "conflict": { - "adodb/adodb-php": "<5.20.6", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "aws/aws-sdk-php": ">=3,<3.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1.0.0-alpha11", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/core": ">=2,<3.5.32", - "contao/core-bundle": ">=4,<4.4.8", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/newsletter-bundle": ">=4,<4.1", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", - "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=8,<8.3.7", - "drupal/drupal": ">=8,<8.3.7", - "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.2|>=5.4,<5.4.10.1|>=2017.8,<2017.8.1.1", - "firebase/php-jwt": "<2", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "gree/jose": "<=2.2", - "gregwar/rst": "<1.0.3", - "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", - "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", - "joomla/session": "<1.3.1", - "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", - "magento/magento1ee": ">=1.9,<1.14.3.2", - "magento/magento2ce": ">=2,<2.2", - "monolog/monolog": ">=1.8,<1.12", - "namshi/jose": "<2.2", - "onelogin/php-saml": "<2.10.4", - "oro/crm": ">=1.7,<1.7.4", - "oro/platform": ">=1.7,<1.7.4", - "phpmailer/phpmailer": ">=5,<5.2.24", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpxmlrpc/extras": "<0.6.1", - "pusher/pusher-php-server": "<2.2.1", - "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "shopware/shopware": "<5.3.7", - "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": ">=3,<3.3", - "silverstripe/userforms": "<3", - "simplesamlphp/saml2": "<1.10.4|>=2,<2.3.5|>=3,<3.1.1", - "simplesamlphp/simplesamlphp": "<1.15.2", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "socalnick/scn-social-auth": "<1.15.2", - "squizlabs/php_codesniffer": ">=1,<2.8.1", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "symfony/dependency-injection": ">=2,<2.0.17", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", - "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", - "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.6|>=2.8.23,<2.8.25|>=3,<3.0.6|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", - "symfony/security-csrf": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/translation": ">=2,<2.0.17", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", - "twig/twig": "<1.20", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.22|>=8,<8.7.5", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", - "willdurand/js-translation-bundle": "<2.1.1", - "yiisoft/yii": ">=1.1.14,<1.1.15", - "yiisoft/yii2": "<2.0.5", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.4", - "yiisoft/yii2-gii": "<2.0.4", - "yiisoft/yii2-jui": "<2.0.4", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-diactoros": ">=1,<1.0.4", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2" - }, - "time": "2018-02-04T22:09:50+00:00", - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" - } - ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.2.2", - "version_normalized": "3.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "d7c00c3000ac0ce79c96fcbfef86b49a71158cd1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/d7c00c3000ac0ce79c96fcbfef86b49a71158cd1", - "reference": "d7c00c3000ac0ce79c96fcbfef86b49a71158cd1", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0" - }, - "time": "2017-12-19T21:44:46+00:00", - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" - ] - } -] diff --git a/vendor/defuse/php-encryption/.gitignore b/vendor/defuse/php-encryption/.gitignore deleted file mode 100644 index 987c5164..00000000 --- a/vendor/defuse/php-encryption/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*~ -/test/unit/File/big-generated-file -/composer.lock -/vendor -defuse-crypto.phar -defuse-crypto.phar.sig -composer.phar -box.phar -phpunit.phar -phpunit.phar.asc -test/unit/File/tmp diff --git a/vendor/defuse/php-encryption/README.md b/vendor/defuse/php-encryption/README.md deleted file mode 100644 index a8f29258..00000000 --- a/vendor/defuse/php-encryption/README.md +++ /dev/null @@ -1,88 +0,0 @@ -php-encryption -=============== - -[![Build Status](https://travis-ci.org/defuse/php-encryption.svg?branch=master)](https://travis-ci.org/defuse/php-encryption) - -This is a library for encrypting data with a key or password in PHP. **It -requires PHP 5.4 or newer.** The current version is v2.0.0, which is expected to -remain stable and supported by its authors with security and bugfixes until at -least January 1st, 2019. - -The library is a joint effort between [Taylor Hornby](https://defuse.ca/) and -[Scott Arciszewski](https://paragonie.com/blog/author/scott-arcizewski) as well -as numerous open-source contributors. - -What separates this library from other PHP encryption libraries is, firstly, -that it is secure. The authors used to encounter insecure PHP encryption code on -a daily basis, so they created this library to bring more security to the -ecosystem. Secondly, this library is "difficult to misuse." Like -[libsodium](https://github.com/jedisct1/libsodium), its API is designed to be -easy to use in a secure way and hard to use in an insecure way. - -Dependencies ------------- - -This library requres no special dependencies except for PHP 5.4 or newer with -the OpenSSL extensions enabled (this is the default). It uses -[random\_compat](https://github.com/paragonie/random_compat), which is bundled -in with this library so that your users will not need to follow any special -installation steps. - -Getting Started ----------------- - -Start with the [**Tutorial**](docs/Tutorial.md). You can find instructions for -obtaining this library's code securely in the [Installing and -Verifying](docs/InstallingAndVerifying.md) documentation. - -After you've read the tutorial and got the code, refer to the formal -documentation for each of the classes this library provides: - -- [Crypto](docs/classes/Crypto.md) -- [File](docs/classes/File.md) -- [Key](docs/classes/Key.md) -- [KeyProtectedByPassword](docs/classes/KeyProtectedByPassword.md) - -If you encounter difficulties, see the [FAQ](docs/FAQ.md) answers. The fixes to -the most commonly-reported problems are explained there. - -If you're a cryptographer and want to understand the nitty-gritty details of how -this library works, look at the [Cryptography Details](docs/CryptoDetails.md) -documentation. - -If you're interested in contributing to this library, see the [Internal -Developer Documentation](docs/InternalDeveloperDocs.md). - -Examples ---------- - -If the documentation is not enough for you to understand how to use this -library, then you can look at an example project that uses this library: - -- [encutil](https://github.com/defuse/encutil) -- [fileencrypt](https://github.com/tsusanka/fileencrypt) - -Security Audit Status ---------------------- - -This code has not been subjected to a formal, paid, security audit. However, it -has received lots of review from members of the PHP security community, and the -authors are experienced with cryptography. In all likelihood, you are safer -using this library than almost any other encryption library for PHP. - -If you use this library as a part of your business and would like to help fund -a formal audit, please [contact Taylor Hornby](https://defuse.ca/contact.htm). - -Public Keys ------------- - -The GnuPG public key used to sign releases is available in -[dist/signingkey.asc](https://github.com/defuse/php-encryption/raw/master/dist/signingkey.asc). Its fingerprint is: - -``` -2FA6 1D8D 99B9 2658 6BAC 3D53 385E E055 A129 1538 -``` - -You can verify it against the Taylor Hornby's [contact -page](https://defuse.ca/contact.htm) and -[twitter](https://twitter.com/DefuseSec/status/723741424253059074). diff --git a/vendor/defuse/php-encryption/composer.json b/vendor/defuse/php-encryption/composer.json deleted file mode 100644 index 866b4975..00000000 --- a/vendor/defuse/php-encryption/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "defuse/php-encryption", - "description": "Secure PHP Encryption Library", - "license": "MIT", - "keywords": ["security", "encryption", "AES", "openssl", "cipher", "cryptography", "symmetric key cryptography", "crypto", "encrypt", "authenticated encryption"], - "authors": [ - { - "name": "Taylor Hornby", - "email": "taylor@defuse.ca", - "homepage": "https://defuse.ca/" - }, - { - "name": "Scott Arciszewski", - "email": "info@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "autoload": { - "psr-4": { - "Defuse\\Crypto\\": "src" - } - }, - "require": { - "paragonie/random_compat": "~2.0", - "ext-openssl": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4|^5", - "nikic/php-parser": "^2.0|^3.0" - }, - "bin": [ - "bin/generate-defuse-key" - ] -} diff --git a/vendor/defuse/php-encryption/dist/Makefile b/vendor/defuse/php-encryption/dist/Makefile deleted file mode 100644 index 4b65c9ec..00000000 --- a/vendor/defuse/php-encryption/dist/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# This builds defuse-crypto.phar. To run this Makefile, `box` and `composer` -# must be installed and in your $PATH. Run it from inside the dist/ directory. - -box := $(shell which box) -composer := "composer" - -.PHONY: all -all: build-phar - -.PHONY: sign-phar -sign-phar: - gpg -u 7B4B2D98 --armor --output defuse-crypto.phar.sig --detach-sig defuse-crypto.phar - -# ensure we run in clean tree. export git tree and run there. -.PHONY: build-phar -build-phar: - @echo "Creating .phar from revision $(shell git rev-parse HEAD)." - rm -rf worktree - install -d worktree - (cd $(CURDIR)/..; git archive HEAD) | tar -x -C worktree - $(MAKE) -f $(CURDIR)/Makefile -C worktree defuse-crypto.phar - mv worktree/*.phar . - rm -rf worktree - -.PHONY: clean -clean: - rm -vf defuse-crypto.phar defuse-crypto.phar.sig - -# Inside workdir/: - -defuse-crypto.phar: dist/box.json composer.lock - cp dist/box.json . - php -d phar.readonly=0 $(box) build -c box.json -v - -composer.lock: - $(composer) install --no-dev - diff --git a/vendor/defuse/php-encryption/dist/box.json b/vendor/defuse/php-encryption/dist/box.json deleted file mode 100644 index f225f781..00000000 --- a/vendor/defuse/php-encryption/dist/box.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "chmod": "0755", - "finder": [ - { - "in": "src", - "name": "*.php" - }, - { - "in": "vendor/composer", - "name": "*.php" - }, - { - "in": "vendor/paragonie", - "name": "*.php", - "exclude": "other" - } - ], - "compactors": [ - "Herrera\\Box\\Compactor\\Php" - ], - "main": "vendor/autoload.php", - "output": "defuse-crypto.phar", - "shebang": false, - "stub": true -} diff --git a/vendor/defuse/php-encryption/dist/signingkey.asc b/vendor/defuse/php-encryption/dist/signingkey.asc deleted file mode 100644 index 63b6aa3d..00000000 --- a/vendor/defuse/php-encryption/dist/signingkey.asc +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 - -mQINBFarvO4BEACdQBaLt6SUBx1cB5liUu1qo+YwVLh9bxTregQtmEREMdTVqXYt -e5b79uL4pQp2GlKHcEyRURS+6rIIruM0oh9ZYGTJYPAkCDzJxaU2awZeFbfBvpCm -iF66/O4ZJI4mlT8dFKmxBJxDhfeOR2UmmhDiEsJK9FxBKUzvo/dWrX2pBzf8Y122 -iIaVraSo+tymaf7vriaIf/NnSKhDw8dtQYGM4NMrxxsPTfbCF8XiboDgTkoD2A+6 -NpOJYxA4Veedsf2TP9YLhljH4m5yYlfjjqBzbBCPWuE6Hhy5Xze9mncgDr7LKenm -Ctf2NxW6y4O3RCI+9eLlBfFWB+KuGV87/b5daetX7NNLbjID8z2rqEa+d6wu5xA5 -Ta2uiVkAOEovr3XnkayZ9zth+Za7w7Ai0ln0N/LVMkM+Gu4z/pJv6HjmTGDM2wJb -fs+UOM0TFdg+N81Do67XT2M4o0MeHyUqsIiWpYa2Qf1PNmqTQNJnRk8uZZ9I96Nh -eCgNuCbhsQiYBMicox+xmuWAlGAfA06y0kCtmqGhiBGArdJlWvUqPqGiZ4Hln9z0 -FJmXDOh0Q/FIPxcDg8mKRRbx+lOP389PLsPpj4b2B/4PEgfpCCOwuKpLotATZxC1 -9JwFk0Y/cvUUkq4a+nAJBNtBbtRJkEesuuUnRq6XexmnE3uUucDcV0XCSwARAQAB -tCBUYXlsb3IgSG9ybmJ5IDx0YXlsb3JAZGVmdXNlLmNhPokCPQQTAQgAJwUCVqu8 -7gIbAwUJB4TOAAULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRA4XuBVoSkVOJbx -EACG0F9blPMAsK05EWyNnnS4mw25zPfbaqqEvYbquAeM0nBpRDm7sRn2MNR0AL4g -7XrtxE/4qYkdEl6f2wFCQeRhZgxE3w22llredzLme11Hic8hn4i7ysdIw0r9dMMR -kjgR5UcWpv8iU847czyK09PkKW2EaLRbX2qbA7rNU5qCFKeD4Sy4bBTteISeVsHo -Vr9o1/bRrMhgZ++ts8hYf0LmujIf5cxp+qcdKwCXSnS/gmmXaKRMCPv/Wdlq9bt6 -LX9jZB9lXBdGxcBJeFOsTG+QRDiVjg3d6i3o3TAKV87ALBI4v2ADEYtN8lviHo3/ -SovVKv6zrUsZHxhoGiLTiksNrYsKMmiMxdJCoOazmtUPnZ4UOtT8NdqMPoKvdoRz -f4rhZ+f5jSVD9OuX2PDmfyq21Rdiym7Vcgr+uTIFJ3ShRHjWb/ytCwoB2FeGY6+G -AKY58bTQvUIqEJvSov/+TAqZ4BfOuSdTLcHglV1OdUu2SFZvU2gmyVp0l5elGv5t -FyUlBJUkQT9MtvsdLOR7vQi8QapV+9LWpqwvaj9hyEJz848DQ2sdYTphUytFHv7H -k58DAtVhTrVjHyeefjiYtMl6vSAgTjy5LWAUpo5TfhdGrAi0Tdd/GD7amHoWoDy8 -EKXKq2xPLo3JOdkWYQUi5NErzEskfsSzpCOgyDJmGetWK7kCDQRWq7zuARAAu7/i -cm8cjgLhHEX/bgfwOT2hLOLSjjve0O8YFSuJO9XqIHXqmfVOrqWtfG0Mh4bwlfqc -MAvBfF5NSSPfAE4ftBAQ1e5jEv8hJeqICpq3IHTFX4etBs49NfNkyveQl/amVTu1 -+/O5J4CuIcsEf3y0Xuu38n7EB3SfMQCWLcOR1NyZoX3bI+CGRpOVVoFse3ljSWL4 -LhLVl0WiEMXULsussEoN+c6x9KCyAi/jFOrxrTrFC//sZesKj6KucoqKGfwMWrrv -IeRT9Ga8Wn5MJnQu0aWg+zVVYqTedXZLNLODgQIInFnXO0seBXy15yDok1y5bkx2 -sinKg4+mueYaGUpoUti0hM3J3yaC34i6Cwa8MQoLNw1JIS/oNtKjpMxyV10w8aoc -PHRK3n7UYp10mJHx7aM+lldSKvVS1NTQmI4vloNLwMp324H5ANDFAlRUz7mysVnu -DEEvigPSPxs5ZYENu/i7pCQC5qHfhrlBrQwTjhegr0pQPcumy2fO5SGC9l/5B7ev -bqQSZmDeWWoTvh2w2wl5/RWAsgZKx6rDtkCqYx7sSBY17uorrxP24LP4zhq7NxRV -nfdsLogbCFNVQ66u7qvq5zFccdFtg9h1HQWdS7wbnKSBGZoo5gl6js7GGtxfGbb0 -oQ9kp6eciF4U92r6POhVgbRe4CfPo50nqgZBddkAEQEAAYkCJQQYAQgADwUCVqu8 -7gIbDAUJB4TOAAAKCRA4XuBVoSkVOFJ8D/9J8IJ4XWUU3FYIaHJ3XeSoxDmTi7d5 -WmNdf1lmwz82MQjG4uw17oCbvQzmj4/a/CM1Ly4v0WwBhUf9aiNErD0ByHASFnuc -tlQBLVJdk0vRyD0fZakGg64qCA76hiySjMhlGHkQFyP2mDORc2GNu/OqFGm79pXT -ZUplXxd431E603/agM5xJrweutMMpP1nBFTSEMJvbMNzDVN8I1A1CH4zVmAVxOUk -sQ5L5rXW+KeXWyiMF24+l2CMnkQ2CxfHpkcpfPJs1Cbt+TIBSSofIqK8QJXrb/2f -Zpl/ftqW7Xe86rJFrB/Y/77LDWx10rqWEvfCqrBxrMj7ONAQfbKQF/IjAwDN17Wf -1K74rqKnRu+KHCyNM89s1iDbQC9kzZfzYt4AEOvAH/ZQDMZffzPSbnfkBerExFpa -93XMuiR66jiBsf9IXIQeydpJD4Ogl2sSUSxFEJxJ/bBSxPxC5w7/BVMA7Am1y8Zo -3hrpqnX2PBzxG7L0FZ6fYkfR3p8JS7vI6nByBf2IDv8W32wn43olPf+u6uobHLvt -ttapOjwPAhPDalRuxs9U6WSg06QJkT/0F8TFUPWpsFmKTl+G4Ty7PHWsjeeNHJCL -7/5RQboFY3k8Jy3/sIofABO6Un9LJivDuu9PxqA0IgvaS6Mja8JdCCk9Nyk4vHB7 -IEgAL/CYqrk38w== -=lmD7 ------END PGP PUBLIC KEY BLOCK----- diff --git a/vendor/defuse/php-encryption/docs/CryptoDetails.md b/vendor/defuse/php-encryption/docs/CryptoDetails.md deleted file mode 100644 index 43abd72a..00000000 --- a/vendor/defuse/php-encryption/docs/CryptoDetails.md +++ /dev/null @@ -1,64 +0,0 @@ -Cryptography Details -===================== - -Here is a high-level description of how this library works. Any discrepancy -between this documentation and the actual implementation will be considered -a security bug. - -Let's start with the following definitions: - -- HKDF-SHA256(*k*, *n*, *info*, *s*) is the key derivation function specified in - RFC 5869 (using the SHA256 hash function). The parameters are: - - *k*: The initial keying material. - - *n*: The number of output bytes. - - *info*: The info string. - - *s*: The salt. -- AES-256-CTR(*m*, *k*, *iv*) is AES-256 encryption in CTR mode. The parameters - are: - - *m*: An arbitrary-length (possibly zero-length) message. - - *k*: A 32-byte key. - - *iv*: A 16-byte initialization vector (nonce). -- PBKDF2-SHA256(*p*, *s*, *i*, *n*) is the password-based key derivation - function defined in RFC 2898 (using the SHA256 hash function). The parameters - are: - - *p*: The password string. - - *s*: The salt string. - - *i*: The iteration count. - - *n*: The output length in bytes. -- VERSION is the string `"\xDE\xF5\x02\x00"`. -- AUTHINFO is the string `"DefusePHP|V2|KeyForAuthentication"`. -- ENCRINFO is the string `"DefusePHP|V2|KeyForEncryption"`. - -To encrypt a message *m* using a 32-byte key *k*, the following steps are taken: - -1. Generate a random 32-byte string *salt*. -2. Derive the 32-byte authentication key *akey* = HKDF-SHA256(*k*, 32, AUTHINFO, *salt*). -3. Derive the 32-byte encryption key *ekey* = HKDF-SHA256(*k*, 32, ENCRINFO, *salt*). -4. Generate a random 16-byte initialization vector *iv*. -5. Compute *c* = AES-256-CTR(*m*, *ekey*, *iv*). -6. Combine *ctxt* = VERSION || *salt* || *iv* || *c*. -7. Compute *h* = HMAC-SHA256(*ctxt*, *akey*). -8. Output *ctxt* || *h*. - -Decryption is roughly the reverse process (see the code for details, since the -security of the decryption routine is highly implementation-dependent). - -For encryption using a password *p*, steps 1-3 above are replaced by: - -1. Generate a random 32-byte string *salt*. -2. Compute *k* = PBKDF2-SHA256(SHA256(*p*), *salt*, 100000, 32). -3. Derive the 32-byte authentication key *akey* = HKDF-SHA256(*k*, 32, AUTHINFO, *salt*) -4. Derive the 32-byte encryption key *ekey* = HKDF-SHA256(*k*, 32, ENCRINFO, *salt*) - -The remainder of the process is the same. Notice the reuse of the same *salt* -for PBKDF2-SHA256 and HKDF-SHA256. The prehashing of the password in step 2 is -done to prevent a [DoS attack using long -passwords](https://github.com/defuse/php-encryption/issues/230). - -For `KeyProtectedByPassword`, the serialized key is encrypted according to the -password encryption defined above. However, the actual password used for -encryption is the SHA256 hash of the password the user provided. This is done in -order to provide domain separation between the message encryption in the user's -application and the internal key encryption done by this library. It fixes -a [key replacement chosen-protocol -attack](https://github.com/defuse/php-encryption/issues/240). diff --git a/vendor/defuse/php-encryption/docs/InstallingAndVerifying.md b/vendor/defuse/php-encryption/docs/InstallingAndVerifying.md deleted file mode 100644 index 12b5fee4..00000000 --- a/vendor/defuse/php-encryption/docs/InstallingAndVerifying.md +++ /dev/null @@ -1,53 +0,0 @@ -Getting The Code -================= - -There are two ways to use this library in your applications. You can either: - -1. Use [Composer](https://getcomposer.org/), or -2. `require_once` a single `.phar` file in your application. - -If you are not using either option (for example, because you're using Git submodules), you may need to write your own autoloader ([example](https://gist.github.com/paragonie-scott/949daee819bb7f19c50e5e103170b400)). - -Option 1: Using Composer -------------------------- - -Run this inside the directory of your composer-enabled project: - -```sh -composer require defuse/php-encryption -``` - -Unfortunately, composer doesn't provide a way for you to verify that the code -you're getting was signed by this library's authors. If you want a more secure -option, use the `.phar` method described below. - -Option 2: Including a PHAR ----------------------------- - -The `.phar` option lets you include this library into your project simply by -calling `require_once` on a single file. Download `defuse-crypto.phar` and -`defuse-crypto.phar.sig` from this project's -[releases](https://github.com/defuse/php-encryption/releases) page. - -You should verify the integrity of the `.phar`. The `defuse-crypto.phar.sig` -contains the signature of `defuse-crypto.phar`. It is signed with Taylor -Hornby's PGP key. You can find Taylor's public key in `dist/signingkey.asc`. You -can verify the public key's fingerprint against the Taylor Hornby's [contact -page](https://defuse.ca/contact.htm) and -[twitter](https://twitter.com/DefuseSec/status/723741424253059074). - -Once you have verified the signature, it is safe to use the `.phar`. Place it -somewhere in your file system, e.g. `/var/www/lib/defuse-crypto.phar`, and then -pass that path to `require_once`. - -```php - Whenever there is a conflict between security and some other property, - > security will be favored. For example, the library has runtime tests, - > which make it slower, but will hopefully stop it from encrypting stuff - > if the platform it's running on is broken. - -- Rule #2: It should be difficult to misuse the library. - - > We assume the developers using this library have no experience with - > cryptography. We only assume that they know that the "key" is something - > you need to encrypt and decrypt the messages, and that it must be kept - > secret. Whenever possible, the library should refuse to encrypt or decrypt - > messages when it is not being used correctly. - -- Rule #3: The library aims only to be compatible with itself. - - > Other PHP encryption libraries try to support every possible type of - > encryption, even the insecure ones (e.g. ECB mode). Because there are so - > many options, inexperienced developers must decide whether to use "CBC - > mode" or "ECB mode" when both are meaningless terms to them. This - > inevitably leads to vulnerabilities. - - > This library will only support one secure mode. A developer using this - > library will call "encrypt" and "decrypt" methods without worrying about - > how they are implemented. - -- Rule #4: The library should require no special installation. - - > Some PHP encryption libraries, like libsodium-php, are not straightforward - > to install and cannot packaged with "just download and extract" - > applications. This library will always be just a handful of PHP files that - > you can copy to your source tree and require(). - -Publishing Releases --------------------- - -To make a release, you will need to install [composer](https://getcomposer.org/) -and [box](https://github.com/box-project/box2) on your system. They will need to -be available in your `$PATH` so that running the commands `composer` and `box` -in your terminal run them, respectively. You will also need the private key for -signing (ID: 7B4B2D98) available. - -Once you have those tools installed and the key available follow these steps: - -**Remember to set the version number in `composer.json`!** - -Make a fresh clone of the repository: - -``` -git clone -``` - -Check out the branch you want to release: - -``` -git checkout -``` - -Check that the version number in composer.json is correct: - -``` -cat composer.json -``` - -Run the tests: - -``` -composer install -./test.sh -``` - -Generate the `.phar`: - -``` -cd dist -make build-phar -``` - -Test the `.phar`: - -``` -cd ../ -./test.sh dist/defuse-crypto.phar -``` - -Sign the `.phar`: - -``` -cd dist -make sign-phar -``` - -Tag the release: - -``` -git -c user.signingkey=7B4B2D98 tag -s "" -m "" -``` - -`` should be in the format `v2.0.0` and `` should look -like "Release of v2.0.0." - -Push the tag to github, then use the -[releases](https://github.com/defuse/php-encryption/releases) page to draft -a new release for that tag. Upload the `.phar` and the `.phar.sig` file to be -included as part of that release. diff --git a/vendor/defuse/php-encryption/docs/Tutorial.md b/vendor/defuse/php-encryption/docs/Tutorial.md deleted file mode 100644 index 40285cc3..00000000 --- a/vendor/defuse/php-encryption/docs/Tutorial.md +++ /dev/null @@ -1,298 +0,0 @@ -Tutorial -========= - -Hello! If you're reading this file, it's because you want to add encryption to -one of your PHP projects. My job, as the person writing this documentation, is -to help you make sure you're doing the right thing and then show you how to use -this library to do it. To help me help you, please read the documentation -*carefully* and *deliberately*. - -A Word of Caution ------------------- - -Encryption is not magic dust you can sprinkle on a system to make it more -secure. The way encryption is integrated into a system's design needs to be -carefully thought out. Sometimes, encryption is the wrong thing to use. Other -times, encryption needs to be used in a very specific way in order for it to -work as intended. Even if you are sure of what you are doing, we strongly -recommend seeking advice from an expert. - -The first step is to think about your application's threat model. Ask yourself -the following questions. Who will want to attack my application, and what will -they get out of it? Are they trying to steal some information? Trying to alter -or destroy some information? Or just trying to make the system go down so people -can't access it? Then ask yourself how encryption can help combat those threats. -If you're going to add encryption to your application, you should have a very -clear idea of exactly which kinds of attacks it's helping to secure your -application against. Once you have your threat model, think about what kinds of -attacks it *does not* cover, and whether or not you should improve your threat -model to include those attacks. - -**This isn't for storing user login passwords:** The most common use of -cryptography in web applications is to protect the users' login passwords. If -you're trying to use this library to "encrypt" your users' passwords, you're in -the wrong place. Passwords shouldn't be *encrypted*, they should be *hashed* -with a slow computation-heavy function that makes password guessing attacks more -expensive. See [How to Safely Store Your Users' Passwords in -2016](https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016). - -**This isn't for encrypting network communication:** Likewise, if you're trying -to encrypt messages sent between two parties over the Internet, you don't want -to be using this library. For that, set up a TLS connection between the two -points, or, if it's a chat app, use the [Signal -Protocol](https://whispersystems.org/blog/advanced-ratcheting/). - -What this library provides is symmetric encryption for "data at rest." This -means it is not suitable for use in building protocols where "data is in motion" -(i.e. moving over a network) except in limited set of cases. - -Getting the Code ------------------ - -There are several different ways to obtain this library's code and to add it to -your project. Even if you've already cloned the code from GitHub, you should -take steps to verify the cryptographic signatures to make sure the code you got -was not intercepted and modified by an attacker. - -Please head over to the [**Installing and -Verifying**](InstallingAndVerifying.md) documentation to get the code, and then -come back here to continue the tutorial. - -Using the Library ------------------- - -I'm going to assume you know what symmetric encryption is, and the difference -between symmetric and asymmetric encryption. If you don't, I recommend taking -[Dan Boneh's Cryptography I course](https://www.coursera.org/learn/crypto/) on -Coursera. - -To give you a quick introduction to the library, I'm going to explain how it -would be used in two sterotypical scenarios. Hopefully, one of these sterotypes -is close enough to what you want to do that you'll be able to figure out what -needs to be different on your own. - -### Formal Documentation - -While this tutorial should get you up and running fast, it's important to -understand how this library behaves. Please make sure to read the formal -documentation of all of the functions you're using, since there are some -important security warnings there. - -The following classes are available for you to use: - -- [Crypto](classes/Crypto.md): Encrypting and decrypting strings. -- [File](classes/File.md): Encrypting and decrypting files. -- [Key](classes/Key.md): Represents a secret encryption key. -- [KeyProtectedByPassword](classes/KeyProtectedByPassword.md): Represents - a secret encryption key that needs to be "unlocked" by a password before it - can be used. - -### Scenario #1: Keep data secret from the database administrator - -In this scenario, our threat model is as follows. Alice is a server -administrator responsible for managing a trusted web server. Eve is a database -administrator responsible for managing a database server. Dave is a web -developer working on code that will eventually run on the trusted web server. - -Let's say Alice and Dave trust each other, and Alice is going to host Dave's -application on her server. But both Alice and Dave don't trust Eve. They know -Eve is a good database administrator, but she might have incentive to steal the -data from the database. They want to keep some of the web application's data -secret from Eve. - -In order to do that, Alice will use the included `generate-defuse-key` script -which generates a random encryption key and prints it to standard output: - -```sh -$ composer require defuse/php-encryption -$ vendor/bin/generate-defuse-key -``` - -Alice will run this script once and save the output to a configuration file, say -in `/etc/daveapp-secret-key.txt` and set the file permissions so that only the -user that the website PHP scripts run as can access it. - -Dave will write his code to load the key from the configuration file: - -```php -saveToAsciiSafeString(); - // ... save $protected_key_encoded into the user's account record -} -``` - -Then, when the user logs in, Dave's code will load the protected key from the -user's account record, unlock it to get a `Key` object, and save the `Key` -object somewhere safe (like temporary memory-backed session storage). Note that -wherever Dave's code saves the key, it must be destroyed once the user logs out, -or else the attacker might be able to find users' keys even if they were never -logged in during the attack. - -```php -unlockKey($password); -$user_key_encoded = $user_key->saveToAsciiSafeString(); -// ... save $user_key_encoded in the session -``` - -```php - PHP_INT_MAX - 255) { - throw new Ex\EnvironmentIsBrokenException( - 'Integer overflow may occur.' - ); - } - - /* - * We start at the rightmost byte (big-endian) - * So, too, does OpenSSL: http://stackoverflow.com/a/3146214/2224584 - */ - for ($i = Core::BLOCK_BYTE_SIZE - 1; $i >= 0; --$i) { - $sum = \ord($ctr[$i]) + $inc; - - /* Detect integer overflow and fail. */ - if (! \is_int($sum)) { - throw new Ex\EnvironmentIsBrokenException( - 'Integer overflow in CTR mode nonce increment.' - ); - } - - $ctr[$i] = \pack('C', $sum & 0xFF); - $inc = $sum >> 8; - } - return $ctr; - } - - /** - * Returns a random byte string of the specified length. - * - * @param int $octets - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return string - */ - public static function secureRandom($octets) - { - self::ensureFunctionExists('random_bytes'); - try { - return \random_bytes($octets); - } catch (\Exception $ex) { - throw new Ex\EnvironmentIsBrokenException( - 'Your system does not have a secure random number generator.' - ); - } - } - - /** - * Computes the HKDF key derivation function specified in - * http://tools.ietf.org/html/rfc5869. - * - * @param string $hash Hash Function - * @param string $ikm Initial Keying Material - * @param int $length How many bytes? - * @param string $info What sort of key are we deriving? - * @param string $salt - * - * @throws Ex\EnvironmentIsBrokenException - * @psalm-suppress UndefinedFunction - We're checking if the function exists first. - * - * @return string - */ - public static function HKDF($hash, $ikm, $length, $info = '', $salt = null) - { - static $nativeHKDF = null; - if ($nativeHKDF === null) { - $nativeHKDF = \is_callable('\\hash_hkdf'); - } - if ($nativeHKDF) { - return \hash_hkdf($hash, $ikm, $length, $info, $salt); - } - - $digest_length = Core::ourStrlen(\hash_hmac($hash, '', '', true)); - - // Sanity-check the desired output length. - if (empty($length) || ! \is_int($length) || - $length < 0 || $length > 255 * $digest_length) { - throw new Ex\EnvironmentIsBrokenException( - 'Bad output length requested of HKDF.' - ); - } - - // "if [salt] not provided, is set to a string of HashLen zeroes." - if (\is_null($salt)) { - $salt = \str_repeat("\x00", $digest_length); - } - - // HKDF-Extract: - // PRK = HMAC-Hash(salt, IKM) - // The salt is the HMAC key. - $prk = \hash_hmac($hash, $ikm, $salt, true); - - // HKDF-Expand: - - // This check is useless, but it serves as a reminder to the spec. - if (Core::ourStrlen($prk) < $digest_length) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // T(0) = '' - $t = ''; - $last_block = ''; - for ($block_index = 1; Core::ourStrlen($t) < $length; ++$block_index) { - // T(i) = HMAC-Hash(PRK, T(i-1) | info | 0x??) - $last_block = \hash_hmac( - $hash, - $last_block . $info . \chr($block_index), - $prk, - true - ); - // T = T(1) | T(2) | T(3) | ... | T(N) - $t .= $last_block; - } - - // ORM = first L octets of T - /** @var string $orm */ - $orm = Core::ourSubstr($t, 0, $length); - if (!\is_string($orm)) { - throw new Ex\EnvironmentIsBrokenException(); - } - return $orm; - } - - /** - * Checks if two equal-length strings are the same without leaking - * information through side channels. - * - * @param string $expected - * @param string $given - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return bool - */ - public static function hashEquals($expected, $given) - { - static $native = null; - if ($native === null) { - $native = \function_exists('hash_equals'); - } - if ($native) { - return \hash_equals($expected, $given); - } - - // We can't just compare the strings with '==', since it would make - // timing attacks possible. We could use the XOR-OR constant-time - // comparison algorithm, but that may not be a reliable defense in an - // interpreted language. So we use the approach of HMACing both strings - // with a random key and comparing the HMACs. - - // We're not attempting to make variable-length string comparison - // secure, as that's very difficult. Make sure the strings are the same - // length. - if (Core::ourStrlen($expected) !== Core::ourStrlen($given)) { - throw new Ex\EnvironmentIsBrokenException(); - } - - $blind = Core::secureRandom(32); - $message_compare = \hash_hmac(Core::HASH_FUNCTION_NAME, $given, $blind); - $correct_compare = \hash_hmac(Core::HASH_FUNCTION_NAME, $expected, $blind); - return $correct_compare === $message_compare; - } - /** - * Throws an exception if the constant doesn't exist. - * - * @param string $name - * @return void - * - * @throws Ex\EnvironmentIsBrokenException - */ - public static function ensureConstantExists($name) - { - if (! \defined($name)) { - throw new Ex\EnvironmentIsBrokenException(); - } - } - - /** - * Throws an exception if the function doesn't exist. - * - * @param string $name - * @return void - * - * @throws Ex\EnvironmentIsBrokenException - */ - public static function ensureFunctionExists($name) - { - if (! \function_exists($name)) { - throw new Ex\EnvironmentIsBrokenException(); - } - } - - /* - * We need these strlen() and substr() functions because when - * 'mbstring.func_overload' is set in php.ini, the standard strlen() and - * substr() are replaced by mb_strlen() and mb_substr(). - */ - - /** - * Computes the length of a string in bytes. - * - * @param string $str - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return int - */ - public static function ourStrlen($str) - { - static $exists = null; - if ($exists === null) { - $exists = \function_exists('mb_strlen'); - } - if ($exists) { - $length = \mb_strlen($str, '8bit'); - if ($length === false) { - throw new Ex\EnvironmentIsBrokenException(); - } - return $length; - } else { - return \strlen($str); - } - } - - /** - * Behaves roughly like the function substr() in PHP 7 does. - * - * @param string $str - * @param int $start - * @param int $length - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return string|bool - */ - public static function ourSubstr($str, $start, $length = null) - { - static $exists = null; - if ($exists === null) { - $exists = \function_exists('mb_substr'); - } - - if ($exists) { - // mb_substr($str, 0, NULL, '8bit') returns an empty string on PHP - // 5.3, so we have to find the length ourselves. - if (! isset($length)) { - if ($start >= 0) { - $length = Core::ourStrlen($str) - $start; - } else { - $length = -$start; - } - } - - // This is required to make mb_substr behavior identical to substr. - // Without this, mb_substr() would return false, contra to what the - // PHP documentation says (it doesn't say it can return false.) - if ($start === Core::ourStrlen($str) && $length === 0) { - return ''; - } - - if ($start > Core::ourStrlen($str)) { - return false; - } - - $substr = \mb_substr($str, $start, $length, '8bit'); - if (Core::ourStrlen($substr) !== $length) { - throw new Ex\EnvironmentIsBrokenException( - 'Your version of PHP has bug #66797. Its implementation of - mb_substr() is incorrect. See the details here: - https://bugs.php.net/bug.php?id=66797' - ); - } - return $substr; - } - - // Unlike mb_substr(), substr() doesn't accept NULL for length - if (isset($length)) { - return \substr($str, $start, $length); - } else { - return \substr($str, $start); - } - } - - /** - * Computes the PBKDF2 password-based key derivation function. - * - * The PBKDF2 function is defined in RFC 2898. Test vectors can be found in - * RFC 6070. This implementation of PBKDF2 was originally created by Taylor - * Hornby, with improvements from http://www.variations-of-shadow.com/. - * - * @param string $algorithm The hash algorithm to use. Recommended: SHA256 - * @param string $password The password. - * @param string $salt A salt that is unique to the password. - * @param int $count Iteration count. Higher is better, but slower. Recommended: At least 1000. - * @param int $key_length The length of the derived key in bytes. - * @param bool $raw_output If true, the key is returned in raw binary format. Hex encoded otherwise. - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return string A $key_length-byte key derived from the password and salt. - */ - public static function pbkdf2($algorithm, $password, $salt, $count, $key_length, $raw_output = false) - { - // Type checks: - if (! \is_string($algorithm)) { - throw new \InvalidArgumentException( - 'pbkdf2(): algorithm must be a string' - ); - } - if (! \is_string($password)) { - throw new \InvalidArgumentException( - 'pbkdf2(): password must be a string' - ); - } - if (! \is_string($salt)) { - throw new \InvalidArgumentException( - 'pbkdf2(): salt must be a string' - ); - } - // Coerce strings to integers with no information loss or overflow - $count += 0; - $key_length += 0; - - $algorithm = \strtolower($algorithm); - if (! \in_array($algorithm, \hash_algos(), true)) { - throw new Ex\EnvironmentIsBrokenException( - 'Invalid or unsupported hash algorithm.' - ); - } - - // Whitelist, or we could end up with people using CRC32. - $ok_algorithms = [ - 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', - 'ripemd160', 'ripemd256', 'ripemd320', 'whirlpool', - ]; - if (! \in_array($algorithm, $ok_algorithms, true)) { - throw new Ex\EnvironmentIsBrokenException( - 'Algorithm is not a secure cryptographic hash function.' - ); - } - - if ($count <= 0 || $key_length <= 0) { - throw new Ex\EnvironmentIsBrokenException( - 'Invalid PBKDF2 parameters.' - ); - } - - if (\function_exists('hash_pbkdf2')) { - // The output length is in NIBBLES (4-bits) if $raw_output is false! - if (! $raw_output) { - $key_length = $key_length * 2; - } - return \hash_pbkdf2($algorithm, $password, $salt, $count, $key_length, $raw_output); - } - - $hash_length = Core::ourStrlen(\hash($algorithm, '', true)); - $block_count = \ceil($key_length / $hash_length); - - $output = ''; - for ($i = 1; $i <= $block_count; $i++) { - // $i encoded as 4 bytes, big endian. - $last = $salt . \pack('N', $i); - // first iteration - $last = $xorsum = \hash_hmac($algorithm, $last, $password, true); - // perform the other $count - 1 iterations - for ($j = 1; $j < $count; $j++) { - $xorsum ^= ($last = \hash_hmac($algorithm, $last, $password, true)); - } - $output .= $xorsum; - } - - if ($raw_output) { - return (string) Core::ourSubstr($output, 0, $key_length); - } else { - return Encoding::binToHex((string) Core::ourSubstr($output, 0, $key_length)); - } - } -} diff --git a/vendor/defuse/php-encryption/src/Crypto.php b/vendor/defuse/php-encryption/src/Crypto.php deleted file mode 100644 index fdb411c7..00000000 --- a/vendor/defuse/php-encryption/src/Crypto.php +++ /dev/null @@ -1,393 +0,0 @@ -deriveKeys($salt); - $ekey = $keys->getEncryptionKey(); - $akey = $keys->getAuthenticationKey(); - $iv = Core::secureRandom(Core::BLOCK_BYTE_SIZE); - - $ciphertext = Core::CURRENT_VERSION . $salt . $iv . self::plainEncrypt($plaintext, $ekey, $iv); - $auth = \hash_hmac(Core::HASH_FUNCTION_NAME, $ciphertext, $akey, true); - $ciphertext = $ciphertext . $auth; - - if ($raw_binary) { - return $ciphertext; - } - return Encoding::binToHex($ciphertext); - } - - /** - * Decrypts a ciphertext to a string with either a key or a password. - * - * @param string $ciphertext - * @param KeyOrPassword $secret - * @param bool $raw_binary - * - * @throws Ex\EnvironmentIsBrokenException - * @throws Ex\WrongKeyOrModifiedCiphertextException - * - * @return string - */ - private static function decryptInternal($ciphertext, KeyOrPassword $secret, $raw_binary) - { - RuntimeTests::runtimeTest(); - - if (! $raw_binary) { - try { - $ciphertext = Encoding::hexToBin($ciphertext); - } catch (Ex\BadFormatException $ex) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Ciphertext has invalid hex encoding.' - ); - } - } - - if (Core::ourStrlen($ciphertext) < Core::MINIMUM_CIPHERTEXT_SIZE) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Ciphertext is too short.' - ); - } - - // Get and check the version header. - /** @var string $header */ - $header = Core::ourSubstr($ciphertext, 0, Core::HEADER_VERSION_SIZE); - if ($header !== Core::CURRENT_VERSION) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Bad version header.' - ); - } - - // Get the salt. - /** @var string $salt */ - $salt = Core::ourSubstr( - $ciphertext, - Core::HEADER_VERSION_SIZE, - Core::SALT_BYTE_SIZE - ); - if (!\is_string($salt)) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // Get the IV. - /** @var string $iv */ - $iv = Core::ourSubstr( - $ciphertext, - Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE, - Core::BLOCK_BYTE_SIZE - ); - if (!\is_string($iv)) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // Get the HMAC. - /** @var string $hmac */ - $hmac = Core::ourSubstr( - $ciphertext, - Core::ourStrlen($ciphertext) - Core::MAC_BYTE_SIZE, - Core::MAC_BYTE_SIZE - ); - if (!\is_string($hmac)) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // Get the actual encrypted ciphertext. - /** @var string $encrypted */ - $encrypted = Core::ourSubstr( - $ciphertext, - Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE + - Core::BLOCK_BYTE_SIZE, - Core::ourStrlen($ciphertext) - Core::MAC_BYTE_SIZE - Core::SALT_BYTE_SIZE - - Core::BLOCK_BYTE_SIZE - Core::HEADER_VERSION_SIZE - ); - if (!\is_string($encrypted)) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // Derive the separate encryption and authentication keys from the key - // or password, whichever it is. - $keys = $secret->deriveKeys($salt); - - if (self::verifyHMAC($hmac, $header . $salt . $iv . $encrypted, $keys->getAuthenticationKey())) { - $plaintext = self::plainDecrypt($encrypted, $keys->getEncryptionKey(), $iv, Core::CIPHER_METHOD); - return $plaintext; - } else { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Integrity check failed.' - ); - } - } - - /** - * Raw unauthenticated encryption (insecure on its own). - * - * @param string $plaintext - * @param string $key - * @param string $iv - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return string - */ - protected static function plainEncrypt($plaintext, $key, $iv) - { - Core::ensureConstantExists('OPENSSL_RAW_DATA'); - Core::ensureFunctionExists('openssl_encrypt'); - /** @var string $ciphertext */ - $ciphertext = \openssl_encrypt( - $plaintext, - Core::CIPHER_METHOD, - $key, - OPENSSL_RAW_DATA, - $iv - ); - - if (!\is_string($ciphertext)) { - throw new Ex\EnvironmentIsBrokenException( - 'openssl_encrypt() failed.' - ); - } - - return $ciphertext; - } - - /** - * Raw unauthenticated decryption (insecure on its own). - * - * @param string $ciphertext - * @param string $key - * @param string $iv - * @param string $cipherMethod - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return string - */ - protected static function plainDecrypt($ciphertext, $key, $iv, $cipherMethod) - { - Core::ensureConstantExists('OPENSSL_RAW_DATA'); - Core::ensureFunctionExists('openssl_decrypt'); - - /** @var string $plaintext */ - $plaintext = \openssl_decrypt( - $ciphertext, - $cipherMethod, - $key, - OPENSSL_RAW_DATA, - $iv - ); - if (!\is_string($plaintext)) { - throw new Ex\EnvironmentIsBrokenException( - 'openssl_decrypt() failed.' - ); - } - - return $plaintext; - } - - /** - * Verifies an HMAC without leaking information through side-channels. - * - * @param string $expected_hmac - * @param string $message - * @param string $key - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return bool - */ - protected static function verifyHMAC($expected_hmac, $message, $key) - { - $message_hmac = \hash_hmac(Core::HASH_FUNCTION_NAME, $message, $key, true); - return Core::hashEquals($message_hmac, $expected_hmac); - } -} diff --git a/vendor/defuse/php-encryption/src/Exception/CryptoException.php b/vendor/defuse/php-encryption/src/Exception/CryptoException.php deleted file mode 100644 index 8d6c57fe..00000000 --- a/vendor/defuse/php-encryption/src/Exception/CryptoException.php +++ /dev/null @@ -1,7 +0,0 @@ -deriveKeys($file_salt); - $ekey = $keys->getEncryptionKey(); - $akey = $keys->getAuthenticationKey(); - - $ivsize = Core::BLOCK_BYTE_SIZE; - $iv = Core::secureRandom($ivsize); - - /* Initialize a streaming HMAC state. */ - /** @var resource $hmac */ - $hmac = \hash_init(Core::HASH_FUNCTION_NAME, HASH_HMAC, $akey); - if (!\is_resource($hmac)) { - throw new Ex\EnvironmentIsBrokenException( - 'Cannot initialize a hash context' - ); - } - - /* Write the header, salt, and IV. */ - self::writeBytes( - $outputHandle, - Core::CURRENT_VERSION . $file_salt . $iv, - Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE + $ivsize - ); - - /* Add the header, salt, and IV to the HMAC. */ - \hash_update($hmac, Core::CURRENT_VERSION); - \hash_update($hmac, $file_salt); - \hash_update($hmac, $iv); - - /* $thisIv will be incremented after each call to the encryption. */ - $thisIv = $iv; - - /* How many blocks do we encrypt at a time? We increment by this value. */ - $inc = (int) (Core::BUFFER_BYTE_SIZE / Core::BLOCK_BYTE_SIZE); - - /* Loop until we reach the end of the input file. */ - $at_file_end = false; - while (! (\feof($inputHandle) || $at_file_end)) { - /* Find out if we can read a full buffer, or only a partial one. */ - /** @var int */ - $pos = \ftell($inputHandle); - if (!\is_int($pos)) { - throw new Ex\IOException( - 'Could not get current position in input file during encryption' - ); - } - if ($pos + Core::BUFFER_BYTE_SIZE >= $inputSize) { - /* We're at the end of the file, so we need to break out of the loop. */ - $at_file_end = true; - $read = self::readBytes( - $inputHandle, - $inputSize - $pos - ); - } else { - $read = self::readBytes( - $inputHandle, - Core::BUFFER_BYTE_SIZE - ); - } - - /* Encrypt this buffer. */ - /** @var string */ - $encrypted = \openssl_encrypt( - $read, - Core::CIPHER_METHOD, - $ekey, - OPENSSL_RAW_DATA, - $thisIv - ); - - if (!\is_string($encrypted)) { - throw new Ex\EnvironmentIsBrokenException( - 'OpenSSL encryption error' - ); - } - - /* Write this buffer's ciphertext. */ - self::writeBytes($outputHandle, $encrypted, Core::ourStrlen($encrypted)); - /* Add this buffer's ciphertext to the HMAC. */ - \hash_update($hmac, $encrypted); - - /* Increment the counter by the number of blocks in a buffer. */ - $thisIv = Core::incrementCounter($thisIv, $inc); - /* WARNING: Usually, unless the file is a multiple of the buffer - * size, $thisIv will contain an incorrect value here on the last - * iteration of this loop. */ - } - - /* Get the HMAC and append it to the ciphertext. */ - $final_mac = \hash_final($hmac, true); - self::writeBytes($outputHandle, $final_mac, Core::MAC_BYTE_SIZE); - } - - /** - * Decrypts a file-backed resource with either a key or a password. - * - * @param resource $inputHandle - * @param resource $outputHandle - * @param KeyOrPassword $secret - * @return void - * - * @throws Ex\EnvironmentIsBrokenException - * @throws Ex\IOException - * @throws Ex\WrongKeyOrModifiedCiphertextException - */ - public static function decryptResourceInternal($inputHandle, $outputHandle, KeyOrPassword $secret) - { - if (! \is_resource($inputHandle)) { - throw new Ex\IOException( - 'Input handle must be a resource!' - ); - } - if (! \is_resource($outputHandle)) { - throw new Ex\IOException( - 'Output handle must be a resource!' - ); - } - - /* Make sure the file is big enough for all the reads we need to do. */ - $stat = \fstat($inputHandle); - if ($stat['size'] < Core::MINIMUM_CIPHERTEXT_SIZE) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Input file is too small to have been created by this library.' - ); - } - - /* Check the version header. */ - $header = self::readBytes($inputHandle, Core::HEADER_VERSION_SIZE); - if ($header !== Core::CURRENT_VERSION) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Bad version header.' - ); - } - - /* Get the salt. */ - $file_salt = self::readBytes($inputHandle, Core::SALT_BYTE_SIZE); - - /* Get the IV. */ - $ivsize = Core::BLOCK_BYTE_SIZE; - $iv = self::readBytes($inputHandle, $ivsize); - - /* Derive the authentication and encryption keys. */ - $keys = $secret->deriveKeys($file_salt); - $ekey = $keys->getEncryptionKey(); - $akey = $keys->getAuthenticationKey(); - - /* We'll store the MAC of each buffer-sized chunk as we verify the - * actual MAC, so that we can check them again when decrypting. */ - $macs = []; - - /* $thisIv will be incremented after each call to the decryption. */ - $thisIv = $iv; - - /* How many blocks do we encrypt at a time? We increment by this value. */ - $inc = (int) (Core::BUFFER_BYTE_SIZE / Core::BLOCK_BYTE_SIZE); - - /* Get the HMAC. */ - if (\fseek($inputHandle, (-1 * Core::MAC_BYTE_SIZE), SEEK_END) === false) { - throw new Ex\IOException( - 'Cannot seek to beginning of MAC within input file' - ); - } - - /* Get the position of the last byte in the actual ciphertext. */ - /** @var int $cipher_end */ - $cipher_end = \ftell($inputHandle); - if (!\is_int($cipher_end)) { - throw new Ex\IOException( - 'Cannot read input file' - ); - } - /* We have the position of the first byte of the HMAC. Go back by one. */ - --$cipher_end; - - /* Read the HMAC. */ - /** @var string $stored_mac */ - $stored_mac = self::readBytes($inputHandle, Core::MAC_BYTE_SIZE); - - /* Initialize a streaming HMAC state. */ - /** @var resource $hmac */ - $hmac = \hash_init(Core::HASH_FUNCTION_NAME, HASH_HMAC, $akey); - if (!\is_resource($hmac)) { - throw new Ex\EnvironmentIsBrokenException( - 'Cannot initialize a hash context' - ); - } - - /* Reset file pointer to the beginning of the file after the header */ - if (\fseek($inputHandle, Core::HEADER_VERSION_SIZE, SEEK_SET) === false) { - throw new Ex\IOException( - 'Cannot read seek within input file' - ); - } - - /* Seek to the start of the actual ciphertext. */ - if (\fseek($inputHandle, Core::SALT_BYTE_SIZE + $ivsize, SEEK_CUR) === false) { - throw new Ex\IOException( - 'Cannot seek input file to beginning of ciphertext' - ); - } - - /* PASS #1: Calculating the HMAC. */ - - \hash_update($hmac, $header); - \hash_update($hmac, $file_salt); - \hash_update($hmac, $iv); - /** @var resource $hmac2 */ - $hmac2 = \hash_copy($hmac); - - $break = false; - while (! $break) { - /** @var int $pos */ - $pos = \ftell($inputHandle); - if (!\is_int($pos)) { - throw new Ex\IOException( - 'Could not get current position in input file during decryption' - ); - } - - /* Read the next buffer-sized chunk (or less). */ - if ($pos + Core::BUFFER_BYTE_SIZE >= $cipher_end) { - $break = true; - $read = self::readBytes( - $inputHandle, - $cipher_end - $pos + 1 - ); - } else { - $read = self::readBytes( - $inputHandle, - Core::BUFFER_BYTE_SIZE - ); - } - - /* Update the HMAC. */ - \hash_update($hmac, $read); - - /* Remember this buffer-sized chunk's HMAC. */ - /** @var resource $chunk_mac */ - $chunk_mac = \hash_copy($hmac); - if (!\is_resource($chunk_mac)) { - throw new Ex\EnvironmentIsBrokenException( - 'Cannot duplicate a hash context' - ); - } - $macs []= \hash_final($chunk_mac); - } - - /* Get the final HMAC, which should match the stored one. */ - /** @var string $final_mac */ - $final_mac = \hash_final($hmac, true); - - /* Verify the HMAC. */ - if (! Core::hashEquals($final_mac, $stored_mac)) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'Integrity check failed.' - ); - } - - /* PASS #2: Decrypt and write output. */ - - /* Rewind to the start of the actual ciphertext. */ - if (\fseek($inputHandle, Core::SALT_BYTE_SIZE + $ivsize + Core::HEADER_VERSION_SIZE, SEEK_SET) === false) { - throw new Ex\IOException( - 'Could not move the input file pointer during decryption' - ); - } - - $at_file_end = false; - while (! $at_file_end) { - /** @var int $pos */ - $pos = \ftell($inputHandle); - if (!\is_int($pos)) { - throw new Ex\IOException( - 'Could not get current position in input file during decryption' - ); - } - - /* Read the next buffer-sized chunk (or less). */ - if ($pos + Core::BUFFER_BYTE_SIZE >= $cipher_end) { - $at_file_end = true; - $read = self::readBytes( - $inputHandle, - $cipher_end - $pos + 1 - ); - } else { - $read = self::readBytes( - $inputHandle, - Core::BUFFER_BYTE_SIZE - ); - } - - /* Recalculate the MAC (so far) and compare it with the one we - * remembered from pass #1 to ensure attackers didn't change the - * ciphertext after MAC verification. */ - \hash_update($hmac2, $read); - /** @var resource $calc_mac */ - $calc_mac = \hash_copy($hmac2); - if (!\is_resource($calc_mac)) { - throw new Ex\EnvironmentIsBrokenException( - 'Cannot duplicate a hash context' - ); - } - $calc = \hash_final($calc_mac); - - if (empty($macs)) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'File was modified after MAC verification' - ); - } elseif (! Core::hashEquals(\array_shift($macs), $calc)) { - throw new Ex\WrongKeyOrModifiedCiphertextException( - 'File was modified after MAC verification' - ); - } - - /* Decrypt this buffer-sized chunk. */ - /** @var string $decrypted */ - $decrypted = \openssl_decrypt( - $read, - Core::CIPHER_METHOD, - $ekey, - OPENSSL_RAW_DATA, - $thisIv - ); - if (!\is_string($decrypted)) { - throw new Ex\EnvironmentIsBrokenException( - 'OpenSSL decryption error' - ); - } - - /* Write the plaintext to the output file. */ - self::writeBytes( - $outputHandle, - $decrypted, - Core::ourStrlen($decrypted) - ); - - /* Increment the IV by the amount of blocks in a buffer. */ - /** @var string $thisIv */ - $thisIv = Core::incrementCounter($thisIv, $inc); - /* WARNING: Usually, unless the file is a multiple of the buffer - * size, $thisIv will contain an incorrect value here on the last - * iteration of this loop. */ - } - } - - /** - * Read from a stream; prevent partial reads. - * - * @param resource $stream - * @param int $num_bytes - * @return string - * - * @throws Ex\IOException - * @throws Ex\EnvironmentIsBrokenException - * - * @return string - */ - public static function readBytes($stream, $num_bytes) - { - if ($num_bytes < 0) { - throw new Ex\EnvironmentIsBrokenException( - 'Tried to read less than 0 bytes' - ); - } elseif ($num_bytes === 0) { - return ''; - } - $buf = ''; - $remaining = $num_bytes; - while ($remaining > 0 && ! \feof($stream)) { - /** @var string $read */ - $read = \fread($stream, $remaining); - if (!\is_string($read)) { - throw new Ex\IOException( - 'Could not read from the file' - ); - } - $buf .= $read; - $remaining -= Core::ourStrlen($read); - } - if (Core::ourStrlen($buf) !== $num_bytes) { - throw new Ex\IOException( - 'Tried to read past the end of the file' - ); - } - return $buf; - } - - /** - * Write to a stream; prevents partial writes. - * - * @param resource $stream - * @param string $buf - * @param int $num_bytes - * @return int - * - * @throws Ex\IOException - * - * @return string - */ - public static function writeBytes($stream, $buf, $num_bytes = null) - { - $bufSize = Core::ourStrlen($buf); - if ($num_bytes === null) { - $num_bytes = $bufSize; - } - if ($num_bytes > $bufSize) { - throw new Ex\IOException( - 'Trying to write more bytes than the buffer contains.' - ); - } - if ($num_bytes < 0) { - throw new Ex\IOException( - 'Tried to write less than 0 bytes' - ); - } - $remaining = $num_bytes; - while ($remaining > 0) { - /** @var int $written */ - $written = \fwrite($stream, $buf, $remaining); - if (!\is_int($written)) { - throw new Ex\IOException( - 'Could not write to the file' - ); - } - $buf = (string) Core::ourSubstr($buf, $written, null); - $remaining -= $written; - } - return $num_bytes; - } - - /** - * Returns the last PHP error's or warning's message string. - * - * @return string - */ - private static function getLastErrorMessage() - { - $error = error_get_last(); - if ($error === null) { - return '[no PHP error]'; - } else { - return $error['message']; - } - } -} diff --git a/vendor/defuse/php-encryption/src/Key.php b/vendor/defuse/php-encryption/src/Key.php deleted file mode 100644 index fe4bf7d5..00000000 --- a/vendor/defuse/php-encryption/src/Key.php +++ /dev/null @@ -1,95 +0,0 @@ -key_bytes - ); - } - - /** - * Gets the raw bytes of the key. - * - * @return string - */ - public function getRawBytes() - { - return $this->key_bytes; - } - - /** - * Constructs a new Key object from a string of raw bytes. - * - * @param string $bytes - * - * @throws Ex\EnvironmentIsBrokenException - */ - private function __construct($bytes) - { - if (Core::ourStrlen($bytes) !== self::KEY_BYTE_SIZE) { - throw new Ex\EnvironmentIsBrokenException( - 'Bad key length.' - ); - } - $this->key_bytes = $bytes; - } - -} diff --git a/vendor/defuse/php-encryption/src/KeyProtectedByPassword.php b/vendor/defuse/php-encryption/src/KeyProtectedByPassword.php deleted file mode 100644 index 9d32e762..00000000 --- a/vendor/defuse/php-encryption/src/KeyProtectedByPassword.php +++ /dev/null @@ -1,115 +0,0 @@ -saveToAsciiSafeString(), - \hash(Core::HASH_FUNCTION_NAME, $password, true), - true - ); - - return new KeyProtectedByPassword($encrypted_key); - } - - /** - * Loads a KeyProtectedByPassword from its encoded form. - * - * @param string $saved_key_string - * - * @throws Ex\BadFormatException - * - * @return KeyProtectedByPassword - */ - public static function loadFromAsciiSafeString($saved_key_string) - { - $encrypted_key = Encoding::loadBytesFromChecksummedAsciiSafeString( - self::PASSWORD_KEY_CURRENT_VERSION, - $saved_key_string - ); - return new KeyProtectedByPassword($encrypted_key); - } - - /** - * Encodes the KeyProtectedByPassword into a string of printable ASCII - * characters. - * - * @throws Ex\EnvironmentIsBrokenException - * - * @return string - */ - public function saveToAsciiSafeString() - { - return Encoding::saveBytesToChecksummedAsciiSafeString( - self::PASSWORD_KEY_CURRENT_VERSION, - $this->encrypted_key - ); - } - - /** - * Decrypts the protected key, returning an unprotected Key object that can - * be used for encryption and decryption. - * - * @throws Ex\EnvironmentIsBrokenException - * @throws Ex\WrongKeyOrModifiedCiphertextException - * - * @return Key - */ - public function unlockKey($password) - { - try { - $inner_key_encoded = Crypto::decryptWithPassword( - $this->encrypted_key, - \hash(Core::HASH_FUNCTION_NAME, $password, true), - true - ); - return Key::loadFromAsciiSafeString($inner_key_encoded); - } catch (Ex\BadFormatException $ex) { - /* This should never happen unless an attacker replaced the - * encrypted key ciphertext with some other ciphertext that was - * encrypted with the same password. We transform the exception type - * here in order to make the API simpler, avoiding the need to - * document that this method might throw an Ex\BadFormatException. */ - throw new Ex\WrongKeyOrModifiedCiphertextException( - "The decrypted key was found to be in an invalid format. " . - "This very likely indicates it was modified by an attacker." - ); - } - } - - /** - * Constructor for KeyProtectedByPassword. - * - * @param string $encrypted_key - */ - private function __construct($encrypted_key) - { - $this->encrypted_key = $encrypted_key; - } -} diff --git a/vendor/defuse/php-encryption/src/RuntimeTests.php b/vendor/defuse/php-encryption/src/RuntimeTests.php deleted file mode 100644 index 9f00a97a..00000000 --- a/vendor/defuse/php-encryption/src/RuntimeTests.php +++ /dev/null @@ -1,247 +0,0 @@ -getRawBytes()) != Core::KEY_BYTE_SIZE) { - throw new Ex\EnvironmentIsBrokenException(); - } - - if (Core::ENCRYPTION_INFO_STRING == Core::AUTHENTICATION_INFO_STRING) { - throw new Ex\EnvironmentIsBrokenException(); - } - } catch (Ex\EnvironmentIsBrokenException $ex) { - // Do this, otherwise it will stay in the "tests are running" state. - $test_state = 3; - throw $ex; - } - - // Change this to '0' make the tests always re-run (for benchmarking). - $test_state = 1; - } - - /** - * High-level tests of Crypto operations. - * - * @throws Ex\EnvironmentIsBrokenException - * @return void - */ - private static function testEncryptDecrypt() - { - $key = Key::createNewRandomKey(); - $data = "EnCrYpT EvErYThInG\x00\x00"; - - // Make sure encrypting then decrypting doesn't change the message. - $ciphertext = Crypto::encrypt($data, $key, true); - try { - $decrypted = Crypto::decrypt($ciphertext, $key, true); - } catch (Ex\WrongKeyOrModifiedCiphertextException $ex) { - // It's important to catch this and change it into a - // Ex\EnvironmentIsBrokenException, otherwise a test failure could trick - // the user into thinking it's just an invalid ciphertext! - throw new Ex\EnvironmentIsBrokenException(); - } - if ($decrypted !== $data) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // Modifying the ciphertext: Appending a string. - try { - Crypto::decrypt($ciphertext . 'a', $key, true); - throw new Ex\EnvironmentIsBrokenException(); - } catch (Ex\WrongKeyOrModifiedCiphertextException $e) { /* expected */ - } - - // Modifying the ciphertext: Changing an HMAC byte. - $indices_to_change = [ - 0, // The header. - Core::HEADER_VERSION_SIZE + 1, // the salt - Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE + 1, // the IV - Core::HEADER_VERSION_SIZE + Core::SALT_BYTE_SIZE + Core::BLOCK_BYTE_SIZE + 1, // the ciphertext - ]; - - foreach ($indices_to_change as $index) { - try { - $ciphertext[$index] = \chr((\ord($ciphertext[$index]) + 1) % 256); - Crypto::decrypt($ciphertext, $key, true); - throw new Ex\EnvironmentIsBrokenException(); - } catch (Ex\WrongKeyOrModifiedCiphertextException $e) { /* expected */ - } - } - - // Decrypting with the wrong key. - $key = Key::createNewRandomKey(); - $data = 'abcdef'; - $ciphertext = Crypto::encrypt($data, $key, true); - $wrong_key = Key::createNewRandomKey(); - try { - Crypto::decrypt($ciphertext, $wrong_key, true); - throw new Ex\EnvironmentIsBrokenException(); - } catch (Ex\WrongKeyOrModifiedCiphertextException $e) { /* expected */ - } - - // Ciphertext too small. - $key = Key::createNewRandomKey(); - $ciphertext = \str_repeat('A', Core::MINIMUM_CIPHERTEXT_SIZE - 1); - try { - Crypto::decrypt($ciphertext, $key, true); - throw new Ex\EnvironmentIsBrokenException(); - } catch (Ex\WrongKeyOrModifiedCiphertextException $e) { /* expected */ - } - } - - /** - * Test HKDF against test vectors. - * - * @throws Ex\EnvironmentIsBrokenException - * @return void - */ - private static function HKDFTestVector() - { - // HKDF test vectors from RFC 5869 - - // Test Case 1 - $ikm = \str_repeat("\x0b", 22); - $salt = Encoding::hexToBin('000102030405060708090a0b0c'); - $info = Encoding::hexToBin('f0f1f2f3f4f5f6f7f8f9'); - $length = 42; - $okm = Encoding::hexToBin( - '3cb25f25faacd57a90434f64d0362f2a' . - '2d2d0a90cf1a5a4c5db02d56ecc4c5bf' . - '34007208d5b887185865' - ); - $computed_okm = Core::HKDF('sha256', $ikm, $length, $info, $salt); - if ($computed_okm !== $okm) { - throw new Ex\EnvironmentIsBrokenException(); - } - - // Test Case 7 - $ikm = \str_repeat("\x0c", 22); - $length = 42; - $okm = Encoding::hexToBin( - '2c91117204d745f3500d636a62f64f0a' . - 'b3bae548aa53d423b0d1f27ebba6f5e5' . - '673a081d70cce7acfc48' - ); - $computed_okm = Core::HKDF('sha1', $ikm, $length, '', null); - if ($computed_okm !== $okm) { - throw new Ex\EnvironmentIsBrokenException(); - } - } - - /** - * Test HMAC against test vectors. - * - * @throws Ex\EnvironmentIsBrokenException - * @return void - */ - private static function HMACTestVector() - { - // HMAC test vector From RFC 4231 (Test Case 1) - $key = \str_repeat("\x0b", 20); - $data = 'Hi There'; - $correct = 'b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7'; - if (\hash_hmac(Core::HASH_FUNCTION_NAME, $data, $key) !== $correct) { - throw new Ex\EnvironmentIsBrokenException(); - } - } - - /** - * Test AES against test vectors. - * - * @throws Ex\EnvironmentIsBrokenException - * @return void - */ - private static function AESTestVector() - { - // AES CTR mode test vector from NIST SP 800-38A - $key = Encoding::hexToBin( - '603deb1015ca71be2b73aef0857d7781' . - '1f352c073b6108d72d9810a30914dff4' - ); - $iv = Encoding::hexToBin('f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); - $plaintext = Encoding::hexToBin( - '6bc1bee22e409f96e93d7e117393172a' . - 'ae2d8a571e03ac9c9eb76fac45af8e51' . - '30c81c46a35ce411e5fbc1191a0a52ef' . - 'f69f2445df4f9b17ad2b417be66c3710' - ); - $ciphertext = Encoding::hexToBin( - '601ec313775789a5b7a7f504bbf3d228' . - 'f443e3ca4d62b59aca84e990cacaf5c5' . - '2b0930daa23de94ce87017ba2d84988d' . - 'dfc9c58db67aada613c2dd08457941a6' - ); - - $computed_ciphertext = Crypto::plainEncrypt($plaintext, $key, $iv); - if ($computed_ciphertext !== $ciphertext) { - echo \str_repeat("\n", 30); - echo \bin2hex($computed_ciphertext); - echo "\n---\n"; - echo \bin2hex($ciphertext); - echo \str_repeat("\n", 30); - throw new Ex\EnvironmentIsBrokenException(); - } - - $computed_plaintext = Crypto::plainDecrypt($ciphertext, $key, $iv, Core::CIPHER_METHOD); - if ($computed_plaintext !== $plaintext) { - throw new Ex\EnvironmentIsBrokenException(); - } - } -} diff --git a/vendor/paragonie/random_compat/build-phar.sh b/vendor/paragonie/random_compat/build-phar.sh deleted file mode 100755 index b4a5ba31..00000000 --- a/vendor/paragonie/random_compat/build-phar.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -basedir=$( dirname $( readlink -f ${BASH_SOURCE[0]} ) ) - -php -dphar.readonly=0 "$basedir/other/build_phar.php" $* \ No newline at end of file diff --git a/vendor/paragonie/random_compat/composer.json b/vendor/paragonie/random_compat/composer.json deleted file mode 100644 index 1c5978c6..00000000 --- a/vendor/paragonie/random_compat/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "paragonie/random_compat", - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "random", - "pseudorandom" - ], - "license": "MIT", - "type": "library", - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "support": { - "issues": "https://github.com/paragonie/random_compat/issues", - "email": "info@paragonie.com", - "source": "https://github.com/paragonie/random_compat" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "autoload": { - "files": [ - "lib/random.php" - ] - } -} diff --git a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey b/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey deleted file mode 100644 index eb50ebfc..00000000 --- a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEEd+wCqJDrx5B4OldM0dQE0ZMX+lx1ZWm -pui0SUqD4G29L3NGsz9UhJ/0HjBdbnkhIK5xviT0X5vtjacF6ajgcCArbTB+ds+p -+h7Q084NuSuIpNb6YPfoUFgC/CL9kAoc ------END PUBLIC KEY----- diff --git a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc b/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc deleted file mode 100644 index 6a1d7f30..00000000 --- a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.22 (MingW32) - -iQEcBAABAgAGBQJWtW1hAAoJEGuXocKCZATaJf0H+wbZGgskK1dcRTsuVJl9IWip -QwGw/qIKI280SD6/ckoUMxKDCJiFuPR14zmqnS36k7N5UNPnpdTJTS8T11jttSpg -1LCmgpbEIpgaTah+cELDqFCav99fS+bEiAL5lWDAHBTE/XPjGVCqeehyPYref4IW -NDBIEsvnHPHPLsn6X5jq4+Yj5oUixgxaMPiR+bcO4Sh+RzOVB6i2D0upWfRXBFXA -NNnsg9/zjvoC7ZW73y9uSH+dPJTt/Vgfeiv52/v41XliyzbUyLalf02GNPY+9goV -JHG1ulEEBJOCiUD9cE1PUIJwHA/HqyhHIvV350YoEFiHl8iSwm7SiZu5kPjaq74= -=B6+8 ------END PGP SIGNATURE----- diff --git a/vendor/paragonie/random_compat/lib/byte_safe_strings.php b/vendor/paragonie/random_compat/lib/byte_safe_strings.php deleted file mode 100644 index 3de86b22..00000000 --- a/vendor/paragonie/random_compat/lib/byte_safe_strings.php +++ /dev/null @@ -1,181 +0,0 @@ - RandomCompat_strlen($binary_string)) { - return ''; - } - - return (string) mb_substr($binary_string, $start, $length, '8bit'); - } - - } else { - - /** - * substr() implementation that isn't brittle to mbstring.func_overload - * - * This version just uses the default substr() - * - * @param string $binary_string - * @param int $start - * @param int $length (optional) - * - * @throws TypeError - * - * @return string - */ - function RandomCompat_substr($binary_string, $start, $length = null) - { - if (!is_string($binary_string)) { - throw new TypeError( - 'RandomCompat_substr(): First argument should be a string' - ); - } - - if (!is_int($start)) { - throw new TypeError( - 'RandomCompat_substr(): Second argument should be an integer' - ); - } - - if ($length !== null) { - if (!is_int($length)) { - throw new TypeError( - 'RandomCompat_substr(): Third argument should be an integer, or omitted' - ); - } - - return (string) substr($binary_string, $start, $length); - } - - return (string) substr($binary_string, $start); - } - } -} diff --git a/vendor/paragonie/random_compat/lib/error_polyfill.php b/vendor/paragonie/random_compat/lib/error_polyfill.php deleted file mode 100644 index 6a91990c..00000000 --- a/vendor/paragonie/random_compat/lib/error_polyfill.php +++ /dev/null @@ -1,49 +0,0 @@ -= 70000) { - return; -} - -if (!defined('RANDOM_COMPAT_READ_BUFFER')) { - define('RANDOM_COMPAT_READ_BUFFER', 8); -} - -$RandomCompatDIR = dirname(__FILE__); - -require_once $RandomCompatDIR . '/byte_safe_strings.php'; -require_once $RandomCompatDIR . '/cast_to_int.php'; -require_once $RandomCompatDIR . '/error_polyfill.php'; - -if (!is_callable('random_bytes')) { - /** - * PHP 5.2.0 - 5.6.x way to implement random_bytes() - * - * We use conditional statements here to define the function in accordance - * to the operating environment. It's a micro-optimization. - * - * In order of preference: - * 1. Use libsodium if available. - * 2. fread() /dev/urandom if available (never on Windows) - * 3. mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM) - * 4. COM('CAPICOM.Utilities.1')->GetRandom() - * - * See RATIONALE.md for our reasoning behind this particular order - */ - if (extension_loaded('libsodium')) { - // See random_bytes_libsodium.php - if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) { - require_once $RandomCompatDIR . '/random_bytes_libsodium.php'; - } elseif (method_exists('Sodium', 'randombytes_buf')) { - require_once $RandomCompatDIR . '/random_bytes_libsodium_legacy.php'; - } - } - - /** - * Reading directly from /dev/urandom: - */ - if (DIRECTORY_SEPARATOR === '/') { - // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast - // way to exclude Windows. - $RandomCompatUrandom = true; - $RandomCompat_basedir = ini_get('open_basedir'); - - if (!empty($RandomCompat_basedir)) { - $RandomCompat_open_basedir = explode( - PATH_SEPARATOR, - strtolower($RandomCompat_basedir) - ); - $RandomCompatUrandom = (array() !== array_intersect( - array('/dev', '/dev/', '/dev/urandom'), - $RandomCompat_open_basedir - )); - $RandomCompat_open_basedir = null; - } - - if ( - !is_callable('random_bytes') - && - $RandomCompatUrandom - && - @is_readable('/dev/urandom') - ) { - // Error suppression on is_readable() in case of an open_basedir - // or safe_mode failure. All we care about is whether or not we - // can read it at this point. If the PHP environment is going to - // panic over trying to see if the file can be read in the first - // place, that is not helpful to us here. - - // See random_bytes_dev_urandom.php - require_once $RandomCompatDIR . '/random_bytes_dev_urandom.php'; - } - // Unset variables after use - $RandomCompat_basedir = null; - } else { - $RandomCompatUrandom = false; - } - - /** - * mcrypt_create_iv() - * - * We only want to use mcypt_create_iv() if: - * - * - random_bytes() hasn't already been defined - * - the mcrypt extensions is loaded - * - One of these two conditions is true: - * - We're on Windows (DIRECTORY_SEPARATOR !== '/') - * - We're not on Windows and /dev/urandom is readabale - * (i.e. we're not in a chroot jail) - * - Special case: - * - If we're not on Windows, but the PHP version is between - * 5.6.10 and 5.6.12, we don't want to use mcrypt. It will - * hang indefinitely. This is bad. - * - If we're on Windows, we want to use PHP >= 5.3.7 or else - * we get insufficient entropy errors. - */ - if ( - !is_callable('random_bytes') - && - // Windows on PHP < 5.3.7 is broken, but non-Windows is not known to be. - (DIRECTORY_SEPARATOR === '/' || PHP_VERSION_ID >= 50307) - && - // Prevent this code from hanging indefinitely on non-Windows; - // see https://bugs.php.net/bug.php?id=69833 - ( - DIRECTORY_SEPARATOR !== '/' || - (PHP_VERSION_ID <= 50609 || PHP_VERSION_ID >= 50613) - ) - && - extension_loaded('mcrypt') - ) { - // See random_bytes_mcrypt.php - require_once $RandomCompatDIR . '/random_bytes_mcrypt.php'; - } - $RandomCompatUrandom = null; - - /** - * This is a Windows-specific fallback, for when the mcrypt extension - * isn't loaded. - */ - if ( - !is_callable('random_bytes') - && - extension_loaded('com_dotnet') - && - class_exists('COM') - ) { - $RandomCompat_disabled_classes = preg_split( - '#\s*,\s*#', - strtolower(ini_get('disable_classes')) - ); - - if (!in_array('com', $RandomCompat_disabled_classes)) { - try { - $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1'); - if (method_exists($RandomCompatCOMtest, 'GetRandom')) { - // See random_bytes_com_dotnet.php - require_once $RandomCompatDIR . '/random_bytes_com_dotnet.php'; - } - } catch (com_exception $e) { - // Don't try to use it. - } - } - $RandomCompat_disabled_classes = null; - $RandomCompatCOMtest = null; - } - - /** - * throw new Exception - */ - if (!is_callable('random_bytes')) { - /** - * We don't have any more options, so let's throw an exception right now - * and hope the developer won't let it fail silently. - * - * @param mixed $length - * @return void - * @throws Exception - */ - function random_bytes($length) - { - unset($length); // Suppress "variable not used" warnings. - throw new Exception( - 'There is no suitable CSPRNG installed on your system' - ); - } - } -} - -if (!is_callable('random_int')) { - require_once $RandomCompatDIR . '/random_int.php'; -} - -$RandomCompatDIR = null; diff --git a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php b/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php deleted file mode 100644 index fc1926e5..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php +++ /dev/null @@ -1,88 +0,0 @@ -GetRandom($bytes, 0)); - if (RandomCompat_strlen($buf) >= $bytes) { - /** - * Return our random entropy buffer here: - */ - return RandomCompat_substr($buf, 0, $bytes); - } - ++$execCount; - } while ($execCount < $bytes); - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Could not gather sufficient random data' - ); - } -} \ No newline at end of file diff --git a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php b/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php deleted file mode 100644 index df5b9152..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php +++ /dev/null @@ -1,167 +0,0 @@ - 0); - - /** - * Is our result valid? - */ - if (is_string($buf)) { - if (RandomCompat_strlen($buf) === $bytes) { - /** - * Return our random entropy buffer here: - */ - return $buf; - } - } - } - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Error reading from source device' - ); - } -} diff --git a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php b/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php deleted file mode 100644 index 4af1a242..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php +++ /dev/null @@ -1,88 +0,0 @@ - 2147483647) { - $buf = ''; - for ($i = 0; $i < $bytes; $i += 1073741824) { - $n = ($bytes - $i) > 1073741824 - ? 1073741824 - : $bytes - $i; - $buf .= \Sodium\randombytes_buf($n); - } - } else { - $buf = \Sodium\randombytes_buf($bytes); - } - - if ($buf !== false) { - if (RandomCompat_strlen($buf) === $bytes) { - return $buf; - } - } - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Could not gather sufficient random data' - ); - } -} diff --git a/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php b/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php deleted file mode 100644 index 705af526..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php +++ /dev/null @@ -1,92 +0,0 @@ - 2147483647) { - for ($i = 0; $i < $bytes; $i += 1073741824) { - $n = ($bytes - $i) > 1073741824 - ? 1073741824 - : $bytes - $i; - $buf .= Sodium::randombytes_buf((int) $n); - } - } else { - $buf .= Sodium::randombytes_buf((int) $bytes); - } - - if (is_string($buf)) { - if (RandomCompat_strlen($buf) === $bytes) { - return $buf; - } - } - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Could not gather sufficient random data' - ); - } -} diff --git a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php b/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php deleted file mode 100644 index aac9c013..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php +++ /dev/null @@ -1,77 +0,0 @@ - operators might accidentally let a float - * through. - */ - - try { - $min = RandomCompat_intval($min); - } catch (TypeError $ex) { - throw new TypeError( - 'random_int(): $min must be an integer' - ); - } - - try { - $max = RandomCompat_intval($max); - } catch (TypeError $ex) { - throw new TypeError( - 'random_int(): $max must be an integer' - ); - } - - /** - * Now that we've verified our weak typing system has given us an integer, - * let's validate the logic then we can move forward with generating random - * integers along a given range. - */ - if ($min > $max) { - throw new Error( - 'Minimum value must be less than or equal to the maximum value' - ); - } - - if ($max === $min) { - return (int) $min; - } - - /** - * Initialize variables to 0 - * - * We want to store: - * $bytes => the number of random bytes we need - * $mask => an integer bitmask (for use with the &) operator - * so we can minimize the number of discards - */ - $attempts = $bits = $bytes = $mask = $valueShift = 0; - - /** - * At this point, $range is a positive number greater than 0. It might - * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to - * a float and we will lose some precision. - */ - $range = $max - $min; - - /** - * Test for integer overflow: - */ - if (!is_int($range)) { - - /** - * Still safely calculate wider ranges. - * Provided by @CodesInChaos, @oittaa - * - * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435 - * - * We use ~0 as a mask in this case because it generates all 1s - * - * @ref https://eval.in/400356 (32-bit) - * @ref http://3v4l.org/XX9r5 (64-bit) - */ - $bytes = PHP_INT_SIZE; - $mask = ~0; - - } else { - - /** - * $bits is effectively ceil(log($range, 2)) without dealing with - * type juggling - */ - while ($range > 0) { - if ($bits % 8 === 0) { - ++$bytes; - } - ++$bits; - $range >>= 1; - $mask = $mask << 1 | 1; - } - $valueShift = $min; - } - - $val = 0; - /** - * Now that we have our parameters set up, let's begin generating - * random integers until one falls between $min and $max - */ - do { - /** - * The rejection probability is at most 0.5, so this corresponds - * to a failure probability of 2^-128 for a working RNG - */ - if ($attempts > 128) { - throw new Exception( - 'random_int: RNG is broken - too many rejections' - ); - } - - /** - * Let's grab the necessary number of random bytes - */ - $randomByteString = random_bytes($bytes); - - /** - * Let's turn $randomByteString into an integer - * - * This uses bitwise operators (<< and |) to build an integer - * out of the values extracted from ord() - * - * Example: [9F] | [6D] | [32] | [0C] => - * 159 + 27904 + 3276800 + 201326592 => - * 204631455 - */ - $val &= 0; - for ($i = 0; $i < $bytes; ++$i) { - $val |= ord($randomByteString[$i]) << ($i * 8); - } - - /** - * Apply mask - */ - $val &= $mask; - $val += $valueShift; - - ++$attempts; - /** - * If $val overflows to a floating point number, - * ... or is larger than $max, - * ... or smaller than $min, - * then try again. - */ - } while (!is_int($val) || $val > $max || $val < $min); - - return (int) $val; - } -} diff --git a/vendor/paragonie/random_compat/other/build_phar.php b/vendor/paragonie/random_compat/other/build_phar.php deleted file mode 100644 index 70ef4b2e..00000000 --- a/vendor/paragonie/random_compat/other/build_phar.php +++ /dev/null @@ -1,57 +0,0 @@ -buildFromDirectory(dirname(__DIR__).'/lib'); -rename( - dirname(__DIR__).'/lib/index.php', - dirname(__DIR__).'/lib/random.php' -); - -/** - * If we pass an (optional) path to a private key as a second argument, we will - * sign the Phar with OpenSSL. - * - * If you leave this out, it will produce an unsigned .phar! - */ -if ($argc > 1) { - if (!@is_readable($argv[1])) { - echo 'Could not read the private key file:', $argv[1], "\n"; - exit(255); - } - $pkeyFile = file_get_contents($argv[1]); - - $private = openssl_get_privatekey($pkeyFile); - if ($private !== false) { - $pkey = ''; - openssl_pkey_export($private, $pkey); - $phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey); - - /** - * Save the corresponding public key to the file - */ - if (!@is_readable($dist.'/random_compat.phar.pubkey')) { - $details = openssl_pkey_get_details($private); - file_put_contents( - $dist.'/random_compat.phar.pubkey', - $details['key'] - ); - } - } else { - echo 'An error occurred reading the private key from OpenSSL.', "\n"; - exit(255); - } -} diff --git a/vendor/paragonie/random_compat/psalm-autoload.php b/vendor/paragonie/random_compat/psalm-autoload.php deleted file mode 100644 index d71d1b81..00000000 --- a/vendor/paragonie/random_compat/psalm-autoload.php +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - - - - diff --git a/vendor/phpmailer/phpmailer/LICENSE b/vendor/phpmailer/phpmailer/LICENSE deleted file mode 100644 index f166cc57..00000000 --- a/vendor/phpmailer/phpmailer/LICENSE +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! \ No newline at end of file diff --git a/vendor/phpmailer/phpmailer/VERSION b/vendor/phpmailer/phpmailer/VERSION deleted file mode 100644 index 39c5d6a6..00000000 --- a/vendor/phpmailer/phpmailer/VERSION +++ /dev/null @@ -1 +0,0 @@ -6.0.3 \ No newline at end of file diff --git a/vendor/phpmailer/phpmailer/get_oauth_token.php b/vendor/phpmailer/phpmailer/get_oauth_token.php deleted file mode 100644 index 1237b57b..00000000 --- a/vendor/phpmailer/phpmailer/get_oauth_token.php +++ /dev/null @@ -1,144 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ -/** - * Get an OAuth2 token from an OAuth2 provider. - * * Install this script on your server so that it's accessible - * as [https/http]:////get_oauth_token.php - * e.g.: http://localhost/phpmailer/get_oauth_token.php - * * Ensure dependencies are installed with 'composer install' - * * Set up an app in your Google/Yahoo/Microsoft account - * * Set the script address as the app's redirect URL - * If no refresh token is obtained when running this file, - * revoke access to your app and run the script again. - */ - -namespace PHPMailer\PHPMailer; - -/** - * Aliases for League Provider Classes - * Make sure you have added these to your composer.json and run `composer install` - * Plenty to choose from here: - * @see http://oauth2-client.thephpleague.com/providers/thirdparty/ - */ -// @see https://github.com/thephpleague/oauth2-google -use League\OAuth2\Client\Provider\Google; -// @see https://packagist.org/packages/hayageek/oauth2-yahoo -use Hayageek\OAuth2\Client\Provider\Yahoo; -// @see https://github.com/stevenmaguire/oauth2-microsoft -use Stevenmaguire\OAuth2\Client\Provider\Microsoft; - -if (!isset($_GET['code']) && !isset($_GET['provider'])) { -?> - -Select Provider:
-Google
-Yahoo
-Microsoft/Outlook/Hotmail/Live/Office365
- - - $clientId, - 'clientSecret' => $clientSecret, - 'redirectUri' => $redirectUri, - 'accessType' => 'offline' -]; - -$options = []; -$provider = null; - -switch ($providerName) { - case 'Google': - $provider = new Google($params); - $options = [ - 'scope' => [ - 'https://mail.google.com/' - ] - ]; - break; - case 'Yahoo': - $provider = new Yahoo($params); - break; - case 'Microsoft': - $provider = new Microsoft($params); - $options = [ - 'scope' => [ - 'wl.imap', - 'wl.offline_access' - ] - ]; - break; -} - -if (null === $provider) { - exit('Provider missing'); -} - -if (!isset($_GET['code'])) { - // If we don't have an authorization code then get one - $authUrl = $provider->getAuthorizationUrl($options); - $_SESSION['oauth2state'] = $provider->getState(); - header('Location: ' . $authUrl); - exit; -// Check given state against previously stored one to mitigate CSRF attack -} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { - unset($_SESSION['oauth2state']); - unset($_SESSION['provider']); - exit('Invalid state'); -} else { - unset($_SESSION['provider']); - // Try to get an access token (using the authorization code grant) - $token = $provider->getAccessToken( - 'authorization_code', - [ - 'code' => $_GET['code'] - ] - ); - // Use this to interact with an API on the users behalf - // Use this to get a new access token if the old one expires - echo 'Refresh Token: ', $token->getRefreshToken(); -} diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php deleted file mode 100644 index 3749d83d..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela prijava.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Nije moguće spojiti se sa SMTP serverom.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznata kriptografija: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje sa navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedene e-mail adrese nije uspjelo: '; -$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definišite barem jednu adresu primaoca.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP server nije uspjelo.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP greška: '; -$PHPMAILER_LANG['variable_set'] = 'Nije moguće postaviti varijablu ili je vratiti nazad: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: '; \ No newline at end of file diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php deleted file mode 100644 index e2f98f0f..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Памылка SMTP: памылка ідэнтыфікацыі.'; -$PHPMAILER_LANG['connect_host'] = 'Памылка SMTP: нельга ўстанавіць сувязь з SMTP-серверам.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Памылка SMTP: звесткі непрынятыя.'; -$PHPMAILER_LANG['empty_message'] = 'Пустое паведамленне.'; -$PHPMAILER_LANG['encoding'] = 'Невядомая кадыроўка тэксту: '; -$PHPMAILER_LANG['execute'] = 'Нельга выканаць каманду: '; -$PHPMAILER_LANG['file_access'] = 'Няма доступу да файла: '; -$PHPMAILER_LANG['file_open'] = 'Нельга адкрыць файл: '; -$PHPMAILER_LANG['from_failed'] = 'Няправільны адрас адпраўніка: '; -$PHPMAILER_LANG['instantiate'] = 'Нельга прымяніць функцыю mail().'; -$PHPMAILER_LANG['invalid_address'] = 'Нельга даслаць паведамленне, няправільны email атрымальніка: '; -$PHPMAILER_LANG['provide_address'] = 'Запоўніце, калі ласка, правільны email атрымальніка.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - паштовы сервер не падтрымліваецца.'; -$PHPMAILER_LANG['recipients_failed'] = 'Памылка SMTP: няправільныя атрымальнікі: '; -$PHPMAILER_LANG['signing'] = 'Памылка подпісу паведамлення: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Памылка сувязі з SMTP-серверам.'; -$PHPMAILER_LANG['smtp_error'] = 'Памылка SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Нельга ўстанавіць або перамяніць значэнне пераменнай: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php deleted file mode 100644 index b22941f6..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: Не може да се удостовери пред сървъра.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: Не може да се свърже с SMTP хоста.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: данните не са приети.'; -$PHPMAILER_LANG['empty_message'] = 'Съдържанието на съобщението е празно'; -$PHPMAILER_LANG['encoding'] = 'Неизвестно кодиране: '; -$PHPMAILER_LANG['execute'] = 'Не може да се изпълни: '; -$PHPMAILER_LANG['file_access'] = 'Няма достъп до файл: '; -$PHPMAILER_LANG['file_open'] = 'Файлова грешка: Не може да се отвори файл: '; -$PHPMAILER_LANG['from_failed'] = 'Следните адреси за подател са невалидни: '; -$PHPMAILER_LANG['instantiate'] = 'Не може да се инстанцира функцията mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.'; -$PHPMAILER_LANG['provide_address'] = 'Трябва да предоставите поне един email адрес за получател.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: Следните адреси за Получател са невалидни: '; -$PHPMAILER_LANG['signing'] = 'Грешка при подписване: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP провален connect().'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP сървърна грешка: '; -$PHPMAILER_LANG['variable_set'] = 'Не може да се установи или възстанови променлива: '; -$PHPMAILER_LANG['extension_missing'] = 'Липсва разширение: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php deleted file mode 100644 index 1160cf0c..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.'; -$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.'; -$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío'; -$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: '; -$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: '; -$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: '; -$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: '; -$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: '; -$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.'; -$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.'; -$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: '; -$PHPMAILER_LANG['signing'] = 'Error al firmar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.'; -$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php deleted file mode 100644 index 7e06da13..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Viga: Autoriseerimise viga.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Viga: Vigased andmed.'; -$PHPMAILER_LANG['empty_message'] = 'Tühi kirja sisu'; -$PHPMAILER_LANG["encoding"] = 'Tundmatu kodeering: '; -$PHPMAILER_LANG['execute'] = 'Tegevus ebaõnnestus: '; -$PHPMAILER_LANG['file_access'] = 'Pole piisavalt õiguseid järgneva faili avamiseks: '; -$PHPMAILER_LANG['file_open'] = 'Faili Viga: Faili avamine ebaõnnestus: '; -$PHPMAILER_LANG['from_failed'] = 'Järgnev saatja e-posti aadress on vigane: '; -$PHPMAILER_LANG['instantiate'] = 'mail funktiooni käivitamine ebaõnnestus.'; -$PHPMAILER_LANG['invalid_address'] = 'Saatmine peatatud, e-posti address vigane: '; -$PHPMAILER_LANG['provide_address'] = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: '; -$PHPMAILER_LANG["signing"] = 'Viga allkirjastamisel: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() ebaõnnestus.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri viga: '; -$PHPMAILER_LANG['variable_set'] = 'Ei õnnestunud määrata või lähtestada muutujat: '; -$PHPMAILER_LANG['extension_missing'] = 'Nõutud laiendus on puudu: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php deleted file mode 100644 index ad0745c5..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @author Mohammad Hossein Mojtahedi - */ - -$PHPMAILER_LANG['authenticate'] = 'خطای SMTP: احراز هویت با شکست مواجه شد.'; -$PHPMAILER_LANG['connect_host'] = 'خطای SMTP: اتصال به سرور SMTP برقرار نشد.'; -$PHPMAILER_LANG['data_not_accepted'] = 'خطای SMTP: داده‌ها نا‌درست هستند.'; -$PHPMAILER_LANG['empty_message'] = 'بخش متن پیام خالی است.'; -$PHPMAILER_LANG['encoding'] = 'کد‌گذاری نا‌شناخته: '; -$PHPMAILER_LANG['execute'] = 'امکان اجرا وجود ندارد: '; -$PHPMAILER_LANG['file_access'] = 'امکان دسترسی به فایل وجود ندارد: '; -$PHPMAILER_LANG['file_open'] = 'خطای File: امکان بازکردن فایل وجود ندارد: '; -$PHPMAILER_LANG['from_failed'] = 'آدرس فرستنده اشتباه است: '; -$PHPMAILER_LANG['instantiate'] = 'امکان معرفی تابع ایمیل وجود ندارد.'; -$PHPMAILER_LANG['invalid_address'] = 'آدرس ایمیل معتبر نیست: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer پشتیبانی نمی‌شود.'; -$PHPMAILER_LANG['provide_address'] = 'باید حداقل یک آدرس گیرنده وارد کنید.'; -$PHPMAILER_LANG['recipients_failed'] = 'خطای SMTP: ارسال به آدرس گیرنده با خطا مواجه شد: '; -$PHPMAILER_LANG['signing'] = 'خطا در امضا: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'خطا در اتصال به SMTP.'; -$PHPMAILER_LANG['smtp_error'] = 'خطا در SMTP Server: '; -$PHPMAILER_LANG['variable_set'] = 'امکان ارسال یا ارسال مجدد متغیر‌ها وجود ندارد: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php deleted file mode 100644 index 68cdef1d..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP feilur: Kundi ikki góðkenna.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP feilur: Data ikki góðkent.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Ókend encoding: '; -$PHPMAILER_LANG['execute'] = 'Kundi ikki útføra: '; -$PHPMAILER_LANG['file_access'] = 'Kundi ikki tilganga fílu: '; -$PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: '; -$PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: '; -$PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.'; -$PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php deleted file mode 100644 index af68c923..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php +++ /dev/null @@ -1,29 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro SMTP: Non puido ser autentificado.'; -$PHPMAILER_LANG['connect_host'] = 'Erro SMTP: Non puido conectar co servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro SMTP: Datos non aceptados.'; -$PHPMAILER_LANG['empty_message'] = 'Corpo da mensaxe vacía'; -$PHPMAILER_LANG['encoding'] = 'Codificación descoñecida: '; -$PHPMAILER_LANG['execute'] = 'Non puido ser executado: '; -$PHPMAILER_LANG['file_access'] = 'Nob puido acceder ó arquivo: '; -$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: No puido abrir o arquivo: '; -$PHPMAILER_LANG['from_failed'] = 'A(s) seguinte(s) dirección(s) de remitente(s) deron erro: '; -$PHPMAILER_LANG['instantiate'] = 'Non puido crear unha instancia da función Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Non puido envia-lo correo: dirección de email inválida: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer non está soportado.'; -$PHPMAILER_LANG['provide_address'] = 'Debe engadir polo menos unha dirección de email coma destino.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro SMTP: Os seguintes destinos fallaron: '; -$PHPMAILER_LANG['signing'] = 'Erro ó firmar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Non puidemos axustar ou reaxustar a variábel: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php deleted file mode 100644 index 70eb7175..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'שגיאת SMTP: פעולת האימות נכשלה.'; -$PHPMAILER_LANG['connect_host'] = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'שגיאת SMTP: מידע לא התקבל.'; -$PHPMAILER_LANG['empty_message'] = 'גוף ההודעה ריק'; -$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה: '; -$PHPMAILER_LANG['encoding'] = 'קידוד לא מוכר: '; -$PHPMAILER_LANG['execute'] = 'לא הצלחתי להפעיל את: '; -$PHPMAILER_LANG['file_access'] = 'לא ניתן לגשת לקובץ: '; -$PHPMAILER_LANG['file_open'] = 'שגיאת קובץ: לא ניתן לגשת לקובץ: '; -$PHPMAILER_LANG['from_failed'] = 'כתובות הנמענים הבאות נכשלו: '; -$PHPMAILER_LANG['instantiate'] = 'לא הצלחתי להפעיל את פונקציית המייל.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' אינה נתמכת.'; -$PHPMAILER_LANG['provide_address'] = 'חובה לספק לפחות כתובת אחת של מקבל המייל.'; -$PHPMAILER_LANG['recipients_failed'] = 'שגיאת SMTP: הנמענים הבאים נכשלו: '; -$PHPMAILER_LANG['signing'] = 'שגיאת חתימה: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -$PHPMAILER_LANG['smtp_error'] = 'שגיאת שרת SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'לא ניתן לקבוע או לשנות את המשתנה: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php deleted file mode 100644 index 3822920a..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela autentikacija.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Ne mogu se spojiti na SMTP poslužitelj.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznati encoding: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definirajte barem jednu adresu primatelja.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP poslužitelj nije uspjelo.'; -$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP poslužitelja: '; -$PHPMAILER_LANG['variable_set'] = 'Ne mogu postaviti varijablu niti ju vratiti nazad: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php deleted file mode 100644 index d2f4643e..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @author Stefano Sabatini - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.'; -$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto'; -$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: '; -$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: '; -$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: '; -$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: '; -$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail'; -$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: '; -$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente'; -$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: '; -$PHPMAILER_LANG['signing'] = 'Errore nella firma: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.'; -$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php deleted file mode 100644 index 2d778728..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @author Yoshi Sakai - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: 認証できませんでした。'; -$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPホストに接続できませんでした。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データが受け付けられませんでした。'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = '不明なエンコーディング: '; -$PHPMAILER_LANG['execute'] = '実行できませんでした: '; -$PHPMAILER_LANG['file_access'] = 'ファイルにアクセスできません: '; -$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: '; -$PHPMAILER_LANG['from_failed'] = 'Fromアドレスを登録する際にエラーが発生しました: '; -$PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。'; -$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php deleted file mode 100644 index dd1af8ab..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP შეცდომა: ავტორიზაცია შეუძლებელია.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP შეცდომა: SMTP სერვერთან დაკავშირება შეუძლებელია.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP შეცდომა: მონაცემები არ იქნა მიღებული.'; -$PHPMAILER_LANG['encoding'] = 'კოდირების უცნობი ტიპი: '; -$PHPMAILER_LANG['execute'] = 'შეუძლებელია შემდეგი ბრძანების შესრულება: '; -$PHPMAILER_LANG['file_access'] = 'შეუძლებელია წვდომა ფაილთან: '; -$PHPMAILER_LANG['file_open'] = 'ფაილური სისტემის შეცდომა: არ იხსნება ფაილი: '; -$PHPMAILER_LANG['from_failed'] = 'გამგზავნის არასწორი მისამართი: '; -$PHPMAILER_LANG['instantiate'] = 'mail ფუნქციის გაშვება ვერ ხერხდება.'; -$PHPMAILER_LANG['provide_address'] = 'გთხოვთ მიუთითოთ ერთი ადრესატის e-mail მისამართი მაინც.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - საფოსტო სერვერის მხარდაჭერა არ არის.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP შეცდომა: შემდეგ მისამართებზე გაგზავნა ვერ მოხერხდა: '; -$PHPMAILER_LANG['empty_message'] = 'შეტყობინება ცარიელია'; -$PHPMAILER_LANG['invalid_address'] = 'არ გაიგზავნა, e-mail მისამართის არასწორი ფორმატი: '; -$PHPMAILER_LANG['signing'] = 'ხელმოწერის შეცდომა: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: '; -$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: '; -$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php deleted file mode 100644 index 9599fa68..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 오류: 인증할 수 없습니다.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 오류: SMTP 호스트에 접속할 수 없습니다.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 오류: 데이터가 받아들여지지 않았습니다.'; -$PHPMAILER_LANG['empty_message'] = '메세지 내용이 없습니다'; -$PHPMAILER_LANG['encoding'] = '알 수 없는 인코딩: '; -$PHPMAILER_LANG['execute'] = '실행 불가: '; -$PHPMAILER_LANG['file_access'] = '파일 접근 불가: '; -$PHPMAILER_LANG['file_open'] = '파일 오류: 파일을 열 수 없습니다: '; -$PHPMAILER_LANG['from_failed'] = '다음 From 주소에서 오류가 발생했습니다: '; -$PHPMAILER_LANG['instantiate'] = 'mail 함수를 인스턴스화할 수 없습니다'; -$PHPMAILER_LANG['invalid_address'] = '잘못된 주소: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.'; -$PHPMAILER_LANG['provide_address'] = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: '; -$PHPMAILER_LANG['signing'] = '서명 오류: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 연결을 실패하였습니다.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP 서버 오류: '; -$PHPMAILER_LANG['variable_set'] = '변수 설정 및 초기화 불가: '; -$PHPMAILER_LANG['extension_missing'] = '확장자 없음: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php deleted file mode 100644 index 1253a4fd..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP klaida: autentifikacija nepavyko.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP klaida: nepavyksta prisijungti prie SMTP stoties.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP klaida: duomenys nepriimti.'; -$PHPMAILER_LANG['empty_message'] = 'Laiško turinys tuščias'; -$PHPMAILER_LANG['encoding'] = 'Neatpažinta koduotė: '; -$PHPMAILER_LANG['execute'] = 'Nepavyko įvykdyti komandos: '; -$PHPMAILER_LANG['file_access'] = 'Byla nepasiekiama: '; -$PHPMAILER_LANG['file_open'] = 'Bylos klaida: Nepavyksta atidaryti: '; -$PHPMAILER_LANG['from_failed'] = 'Neteisingas siuntėjo adresas: '; -$PHPMAILER_LANG['instantiate'] = 'Nepavyko paleisti mail funkcijos.'; -$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.'; -$PHPMAILER_LANG['provide_address'] = 'Nurodykite bent vieną gavėjo adresą.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: '; -$PHPMAILER_LANG['signing'] = 'Prisijungimo klaida: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP susijungimo klaida'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP stoties klaida: '; -$PHPMAILER_LANG['variable_set'] = 'Nepavyko priskirti reikšmės kintamajam: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php deleted file mode 100644 index 39bf9a19..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP kļūda: Autorizācija neizdevās.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Kļūda: Nevar izveidot savienojumu ar SMTP serveri.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Kļūda: Nepieņem informāciju.'; -$PHPMAILER_LANG['empty_message'] = 'Ziņojuma teksts ir tukšs'; -$PHPMAILER_LANG['encoding'] = 'Neatpazīts kodējums: '; -$PHPMAILER_LANG['execute'] = 'Neizdevās izpildīt komandu: '; -$PHPMAILER_LANG['file_access'] = 'Fails nav pieejams: '; -$PHPMAILER_LANG['file_open'] = 'Faila kļūda: Nevar atvērt failu: '; -$PHPMAILER_LANG['from_failed'] = 'Nepareiza sūtītāja adrese: '; -$PHPMAILER_LANG['instantiate'] = 'Nevar palaist sūtīšanas funkciju.'; -$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.'; -$PHPMAILER_LANG['provide_address'] = 'Lūdzu, norādiet vismaz vienu adresātu.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: '; -$PHPMAILER_LANG['signing'] = 'Autorizācijas kļūda: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP savienojuma kļūda'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP servera kļūda: '; -$PHPMAILER_LANG['variable_set'] = 'Nevar piešķirt mainīgā vērtību: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php deleted file mode 100644 index c36d8b21..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP-fout: authenticatie mislukt.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP-fout: kon niet verbinden met SMTP-host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-fout: data niet geaccepteerd.'; -$PHPMAILER_LANG['empty_message'] = 'Berichttekst is leeg'; -$PHPMAILER_LANG['encoding'] = 'Onbekende codering: '; -$PHPMAILER_LANG['execute'] = 'Kon niet uitvoeren: '; -$PHPMAILER_LANG['file_access'] = 'Kreeg geen toegang tot bestand: '; -$PHPMAILER_LANG['file_open'] = 'Bestandsfout: kon bestand niet openen: '; -$PHPMAILER_LANG['from_failed'] = 'Het volgende afzendersadres is mislukt: '; -$PHPMAILER_LANG['instantiate'] = 'Kon mailfunctie niet initialiseren.'; -$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.'; -$PHPMAILER_LANG['provide_address'] = 'Er moet minstens één ontvanger worden opgegeven.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: de volgende ontvangers zijn mislukt: '; -$PHPMAILER_LANG['signing'] = 'Signeerfout: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Verbinding mislukt.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfout: '; -$PHPMAILER_LANG['variable_set'] = 'Kan de volgende variabele niet instellen of resetten: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php deleted file mode 100644 index f365d5d0..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro do SMTP: Não foi possível realizar a autenticação.'; -$PHPMAILER_LANG['connect_host'] = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro do SMTP: Os dados foram rejeitados.'; -$PHPMAILER_LANG['empty_message'] = 'A mensagem no e-mail está vazia.'; -$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; -$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; -$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder o ficheiro: '; -$PHPMAILER_LANG['file_open'] = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: '; -$PHPMAILER_LANG['from_failed'] = 'Ocorreram falhas nos endereços dos seguintes remententes: '; -$PHPMAILER_LANG['instantiate'] = 'Não foi possível iniciar uma instância da função mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro do SMTP: O endereço do seguinte destinatário falhou: '; -$PHPMAILER_LANG['signing'] = 'Erro ao assinar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php deleted file mode 100644 index 4ec10f77..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @author Lucas Guimarães - * @author Phelipe Alves - * @author Fabio Beneditto - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.'; -$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.'; -$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia'; -$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; -$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; -$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: '; -$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: '; -$PHPMAILER_LANG['from_failed'] = 'Os seguintes remetentes falharam: '; -$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: '; -$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensão ausente: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php deleted file mode 100644 index fa100eaa..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Autentificarea a eșuat.'; -$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Conectarea la serverul SMTP a eșuat.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Datele nu au fost acceptate.'; -$PHPMAILER_LANG['empty_message'] = 'Mesajul este gol.'; -$PHPMAILER_LANG['encoding'] = 'Encodare necunoscută: '; -$PHPMAILER_LANG['execute'] = 'Nu se poate executa următoarea comandă: '; -$PHPMAILER_LANG['file_access'] = 'Nu se poate accesa următorul fișier: '; -$PHPMAILER_LANG['file_open'] = 'Eroare fișier: Nu se poate deschide următorul fișier: '; -$PHPMAILER_LANG['from_failed'] = 'Următoarele adrese From au dat eroare: '; -$PHPMAILER_LANG['instantiate'] = 'Funcția mail nu a putut fi inițializată.'; -$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este validă: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.'; -$PHPMAILER_LANG['provide_address'] = 'Trebuie să adăugați cel puțin o adresă de email.'; -$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Următoarele adrese de email au eșuat: '; -$PHPMAILER_LANG['signing'] = 'A aparut o problemă la semnarea emailului. '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a eșuat.'; -$PHPMAILER_LANG['smtp_error'] = 'Eroare server SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Nu se poate seta/reseta variabila. '; -$PHPMAILER_LANG['extension_missing'] = 'Lipsește extensia: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-rs.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-rs.php deleted file mode 100644 index 0502f021..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-rs.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: аутентификација није успела.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: није могуће повезивање са SMTP сервером.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: подаци нису прихваћени.'; -$PHPMAILER_LANG['empty_message'] = 'Садржај поруке је празан.'; -$PHPMAILER_LANG['encoding'] = 'Непознато кодовање: '; -$PHPMAILER_LANG['execute'] = 'Није могуће извршити наредбу: '; -$PHPMAILER_LANG['file_access'] = 'Није могуће приступити датотеци: '; -$PHPMAILER_LANG['file_open'] = 'Није могуће отворити датотеку: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: '; -$PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.'; -$PHPMAILER_LANG['invalid_address'] = 'Порука није послата због неисправне адресе: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.'; -$PHPMAILER_LANG['provide_address'] = 'Потребно је задати најмање једну адресу.'; -$PHPMAILER_LANG['signing'] = 'Грешка приликом пријављивања: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Повезивање са SMTP сервером није успело.'; -$PHPMAILER_LANG['smtp_error'] = 'Грешка SMTP сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Није могуће задати променљиву, нити је вратити уназад: '; -$PHPMAILER_LANG['extension_missing'] = 'Недостаје проширење: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php deleted file mode 100644 index 4066f6b4..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @author Foster Snowhill - */ - -$PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: ошибка авторизации.'; -$PHPMAILER_LANG['connect_host'] = 'Ошибка SMTP: не удается подключиться к серверу SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Ошибка SMTP: данные не приняты.'; -$PHPMAILER_LANG['encoding'] = 'Неизвестный вид кодировки: '; -$PHPMAILER_LANG['execute'] = 'Невозможно выполнить команду: '; -$PHPMAILER_LANG['file_access'] = 'Нет доступа к файлу: '; -$PHPMAILER_LANG['file_open'] = 'Файловая ошибка: не удается открыть файл: '; -$PHPMAILER_LANG['from_failed'] = 'Неверный адрес отправителя: '; -$PHPMAILER_LANG['instantiate'] = 'Невозможно запустить функцию mail.'; -$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.'; -$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: '; -$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение'; -$PHPMAILER_LANG['invalid_address'] = 'Не отослано, неправильный формат email адреса: '; -$PHPMAILER_LANG['signing'] = 'Ошибка подписи: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером'; -$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или переустановить переменную: '; -$PHPMAILER_LANG['extension_missing'] = 'Расширение отсутствует: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php deleted file mode 100644 index a38f4e52..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Chyba autentifikácie.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Nebolo možné nadviazať spojenie so SMTP serverom.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dáta neboli prijaté'; -$PHPMAILER_LANG['empty_message'] = 'Prázdne telo správy.'; -$PHPMAILER_LANG['encoding'] = 'Neznáme kódovanie: '; -$PHPMAILER_LANG['execute'] = 'Nedá sa vykonať: '; -$PHPMAILER_LANG['file_access'] = 'Súbor nebol nájdený: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre čítanie: '; -$PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: '; -$PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.'; -$PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.'; -$PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne '; -$PHPMAILER_LANG['signing'] = 'Chyba prihlasovania: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zlyhalo.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP chyba serveru: '; -$PHPMAILER_LANG['variable_set'] = 'Nemožno nastaviť alebo resetovať premennú: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php deleted file mode 100644 index 54c95725..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP napaka: Ne morem vzpostaviti povezave s SMTP gostiteljem.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP napaka: Strežnik zavrača podatke.'; -$PHPMAILER_LANG['empty_message'] = 'E-poštno sporočilo nima vsebine.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznan tip kodiranja: '; -$PHPMAILER_LANG['execute'] = 'Operacija ni uspela: '; -$PHPMAILER_LANG['file_access'] = 'Nimam dostopa do datoteke: '; -$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['mailer_not_supported'] = ' mailer ni podprt.'; -$PHPMAILER_LANG['provide_address'] = 'Prosim 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.'; -$PHPMAILER_LANG['smtp_error'] = 'Napaka SMTP strežnika: '; -$PHPMAILER_LANG['variable_set'] = 'Ne morem nastaviti oz. ponastaviti spremenljivke: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php deleted file mode 100644 index cfe8eaae..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @fixed by Boris Yurchenko - */ - -$PHPMAILER_LANG['authenticate'] = 'Помилка SMTP: помилка авторизації.'; -$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається під\'єднатися до серверу SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Помилка SMTP: дані не прийняті.'; -$PHPMAILER_LANG['encoding'] = 'Невідомий тип кодування: '; -$PHPMAILER_LANG['execute'] = 'Неможливо виконати команду: '; -$PHPMAILER_LANG['file_access'] = 'Немає доступу до файлу: '; -$PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: '; -$PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: '; -$PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail.'; -$PHPMAILER_LANG['provide_address'] = 'Будь-ласка, введіть хоча б одну адресу e-mail отримувача.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; -$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: відправлення наступним отримувачам не вдалося: '; -$PHPMAILER_LANG['empty_message'] = 'Пусте тіло повідомлення'; -$PHPMAILER_LANG['invalid_address'] = 'Не відправлено, невірний формат адреси e-mail: '; -$PHPMAILER_LANG['signing'] = 'Помилка підпису: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання із SMTP-сервером'; -$PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Неможливо встановити або перевстановити змінну: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php deleted file mode 100644 index c60dadeb..00000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Lỗi SMTP: Không thể xác thực.'; -$PHPMAILER_LANG['connect_host'] = 'Lỗi SMTP: Không thể kết nối máy chủ SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Lỗi SMTP: Dữ liệu không được chấp nhận.'; -$PHPMAILER_LANG['empty_message'] = 'Không có nội dung'; -$PHPMAILER_LANG['encoding'] = 'Mã hóa không xác định: '; -$PHPMAILER_LANG['execute'] = 'Không thực hiện được: '; -$PHPMAILER_LANG['file_access'] = 'Không thể truy cập tệp tin '; -$PHPMAILER_LANG['file_open'] = 'Lỗi Tập tin: Không thể mở tệp tin: '; -$PHPMAILER_LANG['from_failed'] = 'Lỗi địa chỉ gửi đi: '; -$PHPMAILER_LANG['instantiate'] = 'Không dùng được các hàm gửi thư.'; -$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.'; -$PHPMAILER_LANG['provide_address'] = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.'; -$PHPMAILER_LANG['recipients_failed'] = 'Lỗi SMTP: lỗi địa chỉ người nhận: '; -$PHPMAILER_LANG['signing'] = 'Lỗi đăng nhập: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Lỗi kết nối với SMTP'; -$PHPMAILER_LANG['smtp_error'] = 'Lỗi máy chủ smtp '; -$PHPMAILER_LANG['variable_set'] = 'Không thể thiết lập hoặc thiết lập lại biến: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/src/Exception.php b/vendor/phpmailer/phpmailer/src/Exception.php deleted file mode 100644 index 9a05dec3..00000000 --- a/vendor/phpmailer/phpmailer/src/Exception.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer exception handler. - * - * @author Marcus Bointon - */ -class Exception extends \Exception -{ - /** - * Prettify error message output. - * - * @return string - */ - public function errorMessage() - { - return '' . htmlspecialchars($this->getMessage()) . "
\n"; - } -} diff --git a/vendor/phpmailer/phpmailer/src/OAuth.php b/vendor/phpmailer/phpmailer/src/OAuth.php deleted file mode 100644 index 0bce7e34..00000000 --- a/vendor/phpmailer/phpmailer/src/OAuth.php +++ /dev/null @@ -1,138 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2015 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -use League\OAuth2\Client\Grant\RefreshToken; -use League\OAuth2\Client\Provider\AbstractProvider; -use League\OAuth2\Client\Token\AccessToken; - -/** - * OAuth - OAuth2 authentication wrapper class. - * Uses the oauth2-client package from the League of Extraordinary Packages. - * - * @see http://oauth2-client.thephpleague.com - * - * @author Marcus Bointon (Synchro/coolbru) - */ -class OAuth -{ - /** - * An instance of the League OAuth Client Provider. - * - * @var AbstractProvider - */ - protected $provider; - - /** - * The current OAuth access token. - * - * @var AccessToken - */ - protected $oauthToken; - - /** - * The user's email address, usually used as the login ID - * and also the from address when sending email. - * - * @var string - */ - protected $oauthUserEmail = ''; - - /** - * The client secret, generated in the app definition of the service you're connecting to. - * - * @var string - */ - protected $oauthClientSecret = ''; - - /** - * The client ID, generated in the app definition of the service you're connecting to. - * - * @var string - */ - protected $oauthClientId = ''; - - /** - * The refresh token, used to obtain new AccessTokens. - * - * @var string - */ - protected $oauthRefreshToken = ''; - - /** - * OAuth constructor. - * - * @param array $options Associative array containing - * `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements - */ - public function __construct($options) - { - $this->provider = $options['provider']; - $this->oauthUserEmail = $options['userName']; - $this->oauthClientSecret = $options['clientSecret']; - $this->oauthClientId = $options['clientId']; - $this->oauthRefreshToken = $options['refreshToken']; - } - - /** - * Get a new RefreshToken. - * - * @return RefreshToken - */ - protected function getGrant() - { - return new RefreshToken(); - } - - /** - * Get a new AccessToken. - * - * @return AccessToken - */ - protected function getToken() - { - return $this->provider->getAccessToken( - $this->getGrant(), - ['refresh_token' => $this->oauthRefreshToken] - ); - } - - /** - * Generate a base64-encoded OAuth token. - * - * @return string - */ - public function getOauth64() - { - // Get a new token if it's not available or has expired - if (null === $this->oauthToken or $this->oauthToken->hasExpired()) { - $this->oauthToken = $this->getToken(); - } - - return base64_encode( - 'user=' . - $this->oauthUserEmail . - "\001auth=Bearer " . - $this->oauthToken . - "\001\001" - ); - } -} diff --git a/vendor/phpmailer/phpmailer/src/SMTP.php b/vendor/phpmailer/phpmailer/src/SMTP.php deleted file mode 100644 index 27b752ec..00000000 --- a/vendor/phpmailer/phpmailer/src/SMTP.php +++ /dev/null @@ -1,1325 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer RFC821 SMTP email transport class. - * Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server. - * - * @author Chris Ryan - * @author Marcus Bointon - */ -class SMTP -{ - /** - * The PHPMailer SMTP version number. - * - * @var string - */ - const VERSION = '6.0.3'; - - /** - * SMTP line break constant. - * - * @var string - */ - const LE = "\r\n"; - - /** - * The SMTP port to use if one is not specified. - * - * @var int - */ - const DEFAULT_PORT = 25; - - /** - * The maximum line length allowed by RFC 2822 section 2.1.1. - * - * @var int - */ - const MAX_LINE_LENGTH = 998; - - /** - * Debug level for no output. - */ - const DEBUG_OFF = 0; - - /** - * Debug level to show client -> server messages. - */ - const DEBUG_CLIENT = 1; - - /** - * Debug level to show client -> server and server -> client messages. - */ - const DEBUG_SERVER = 2; - - /** - * Debug level to show connection status, client -> server and server -> client messages. - */ - const DEBUG_CONNECTION = 3; - - /** - * Debug level to show all messages. - */ - const DEBUG_LOWLEVEL = 4; - - /** - * Debug output level. - * Options: - * * self::DEBUG_OFF (`0`) No debug output, default - * * self::DEBUG_CLIENT (`1`) Client commands - * * self::DEBUG_SERVER (`2`) Client commands and server responses - * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status - * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages. - * - * @var int - */ - public $do_debug = self::DEBUG_OFF; - - /** - * How to handle debug output. - * Options: - * * `echo` Output plain-text as-is, appropriate for CLI - * * `html` Output escaped, line breaks converted to `
`, appropriate for browser output - * * `error_log` Output to error log as configured in php.ini - * Alternatively, you can provide a callable expecting two params: a message string and the debug level: - * - * ```php - * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; - * ``` - * - * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug` - * level output is used: - * - * ```php - * $mail->Debugoutput = new myPsr3Logger; - * ``` - * - * @var string|callable|\Psr\Log\LoggerInterface - */ - public $Debugoutput = 'echo'; - - /** - * Whether to use VERP. - * - * @see http://en.wikipedia.org/wiki/Variable_envelope_return_path - * @see http://www.postfix.org/VERP_README.html Info on VERP - * - * @var bool - */ - public $do_verp = false; - - /** - * The timeout value for connection, in seconds. - * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. - * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure. - * - * @see http://tools.ietf.org/html/rfc2821#section-4.5.3.2 - * - * @var int - */ - public $Timeout = 300; - - /** - * How long to wait for commands to complete, in seconds. - * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. - * - * @var int - */ - public $Timelimit = 300; - - /** - * Patterns to extract an SMTP transaction id from reply to a DATA command. - * The first capture group in each regex will be used as the ID. - * MS ESMTP returns the message ID, which may not be correct for internal tracking. - * - * @var string[] - */ - protected $smtp_transaction_id_patterns = [ - 'exim' => '/[0-9]{3} OK id=(.*)/', - 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', - 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/', - 'Microsoft_ESMTP' => '/[0-9]{3} 2.[0-9].0 (.*)@(?:.*) Queued mail for delivery/', - 'Amazon_SES' => '/[0-9]{3} Ok (.*)/', - 'SendGrid' => '/[0-9]{3} Ok: queued as (.*)/', - ]; - - /** - * The last transaction ID issued in response to a DATA command, - * if one was detected. - * - * @var string|bool|null - */ - protected $last_smtp_transaction_id; - - /** - * The socket for the server connection. - * - * @var ?resource - */ - protected $smtp_conn; - - /** - * Error information, if any, for the last SMTP command. - * - * @var array - */ - protected $error = [ - 'error' => '', - 'detail' => '', - 'smtp_code' => '', - 'smtp_code_ex' => '', - ]; - - /** - * The reply the server sent to us for HELO. - * If null, no HELO string has yet been received. - * - * @var string|null - */ - protected $helo_rply = null; - - /** - * The set of SMTP extensions sent in reply to EHLO command. - * Indexes of the array are extension names. - * Value at index 'HELO' or 'EHLO' (according to command that was sent) - * represents the server name. In case of HELO it is the only element of the array. - * Other values can be boolean TRUE or an array containing extension options. - * If null, no HELO/EHLO string has yet been received. - * - * @var array|null - */ - protected $server_caps = null; - - /** - * The most recent reply received from the server. - * - * @var string - */ - protected $last_reply = ''; - - /** - * Output debugging info via a user-selected method. - * - * @param string $str Debug string to output - * @param int $level The debug level of this message; see DEBUG_* constants - * - * @see SMTP::$Debugoutput - * @see SMTP::$do_debug - */ - protected function edebug($str, $level = 0) - { - if ($level > $this->do_debug) { - return; - } - //Is this a PSR-3 logger? - if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) { - $this->Debugoutput->debug($str); - - return; - } - //Avoid clash with built-in function names - if (!in_array($this->Debugoutput, ['error_log', 'html', 'echo']) and is_callable($this->Debugoutput)) { - call_user_func($this->Debugoutput, $str, $level); - - return; - } - switch ($this->Debugoutput) { - case 'error_log': - //Don't output, just log - error_log($str); - break; - case 'html': - //Cleans up output a bit for a better looking, HTML-safe output - echo gmdate('Y-m-d H:i:s'), ' ', htmlentities( - preg_replace('/[\r\n]+/', '', $str), - ENT_QUOTES, - 'UTF-8' - ), "
\n"; - break; - case 'echo': - default: - //Normalize line breaks - $str = preg_replace('/\r\n|\r/ms', "\n", $str); - echo gmdate('Y-m-d H:i:s'), - "\t", - //Trim trailing space - trim( - //Indent for readability, except for trailing break - str_replace( - "\n", - "\n \t ", - trim($str) - ) - ), - "\n"; - } - } - - /** - * Connect to an 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 bool - */ - 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 - if ($this->connected()) { - // Already connected, generate error - $this->setError('Already connected to a server'); - - return false; - } - if (empty($port)) { - $port = self::DEFAULT_PORT; - } - // Connect to the SMTP server - $this->edebug( - "Connection: opening to $host:$port, timeout=$timeout, options=" . - (count($options) > 0 ? var_export($options, true) : 'array()'), - self::DEBUG_CONNECTION - ); - $errno = 0; - $errstr = ''; - if ($streamok) { - $socket_context = stream_context_create($options); - set_error_handler([$this, 'errorHandler']); - $this->smtp_conn = stream_socket_client( - $host . ':' . $port, - $errno, - $errstr, - $timeout, - STREAM_CLIENT_CONNECT, - $socket_context - ); - restore_error_handler(); - } else { - //Fall back to fsockopen which should work in more places, but is missing some features - $this->edebug( - 'Connection: stream_socket_client not available, falling back to fsockopen', - self::DEBUG_CONNECTION - ); - set_error_handler([$this, 'errorHandler']); - $this->smtp_conn = fsockopen( - $host, - $port, - $errno, - $errstr, - $timeout - ); - restore_error_handler(); - } - // Verify we connected properly - if (!is_resource($this->smtp_conn)) { - $this->setError( - 'Failed to connect to server', - '', - (string) $errno, - (string) $errstr - ); - $this->edebug( - 'SMTP ERROR: ' . $this->error['error'] - . ": $errstr ($errno)", - self::DEBUG_CLIENT - ); - - 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 (substr(PHP_OS, 0, 3) != 'WIN') { - $max = ini_get('max_execution_time'); - // Don't bother if unlimited - if (0 != $max and $timeout > $max) { - @set_time_limit($timeout); - } - stream_set_timeout($this->smtp_conn, $timeout, 0); - } - // Get any announcement - $announce = $this->get_lines(); - $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER); - - return true; - } - - /** - * Initiate a TLS (encrypted) session. - * - * @return bool - */ - public function startTLS() - { - if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) { - return false; - } - - //Allow the best TLS version(s) we can - $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; - - //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT - //so add them back in manually if we can - if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { - $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; - $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; - } - - // Begin encrypted connection - set_error_handler([$this, 'errorHandler']); - $crypto_ok = stream_socket_enable_crypto( - $this->smtp_conn, - true, - $crypto_method - ); - restore_error_handler(); - - return (bool) $crypto_ok; - } - - /** - * Perform SMTP authentication. - * Must be run after hello(). - * - * @see hello() - * - * @param string $username The user name - * @param string $password The password - * @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2) - * @param OAuth $OAuth An optional OAuth instance for XOAUTH2 authentication - * - * @return bool True if successfully authenticated - */ - public function authenticate( - $username, - $password, - $authtype = null, - $OAuth = null - ) { - if (!$this->server_caps) { - $this->setError('Authentication is not allowed before HELO/EHLO'); - - return false; - } - - if (array_key_exists('EHLO', $this->server_caps)) { - // SMTP extensions are available; try to find a proper authentication method - if (!array_key_exists('AUTH', $this->server_caps)) { - $this->setError('Authentication is not allowed at this stage'); - // 'at this stage' means that auth may be allowed after the stage changes - // e.g. after STARTTLS - - return false; - } - - $this->edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL); - $this->edebug( - 'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']), - self::DEBUG_LOWLEVEL - ); - - //If we have requested a specific auth type, check the server supports it before trying others - if (!in_array($authtype, $this->server_caps['AUTH'])) { - $this->edebug('Requested auth method not available: ' . $authtype, self::DEBUG_LOWLEVEL); - $authtype = null; - } - - if (empty($authtype)) { - //If no auth mechanism is specified, attempt to use these, in this order - //Try CRAM-MD5 first as it's more secure than the others - foreach (['CRAM-MD5', 'LOGIN', 'PLAIN', 'XOAUTH2'] as $method) { - if (in_array($method, $this->server_caps['AUTH'])) { - $authtype = $method; - break; - } - } - if (empty($authtype)) { - $this->setError('No supported authentication methods found'); - - return false; - } - self::edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL); - } - - if (!in_array($authtype, $this->server_caps['AUTH'])) { - $this->setError("The requested authentication method \"$authtype\" is not supported by the server"); - - return false; - } - } elseif (empty($authtype)) { - $authtype = 'LOGIN'; - } - switch ($authtype) { - case 'PLAIN': - // Start authentication - if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { - return false; - } - // Send encoded username and password - if (!$this->sendCommand( - 'User & Password', - base64_encode("\0" . $username . "\0" . $password), - 235 - ) - ) { - return false; - } - break; - case 'LOGIN': - // Start authentication - if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { - return false; - } - if (!$this->sendCommand('Username', base64_encode($username), 334)) { - return false; - } - if (!$this->sendCommand('Password', base64_encode($password), 235)) { - return false; - } - break; - case 'CRAM-MD5': - // Start authentication - if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { - return false; - } - // Get the challenge - $challenge = base64_decode(substr($this->last_reply, 4)); - - // Build the response - $response = $username . ' ' . $this->hmac($challenge, $password); - - // send encoded credentials - return $this->sendCommand('Username', base64_encode($response), 235); - case 'XOAUTH2': - //The OAuth instance must be set up prior to requesting auth. - if (null === $OAuth) { - return false; - } - $oauth = $OAuth->getOauth64(); - - // Start authentication - if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { - return false; - } - break; - default: - $this->setError("Authentication method \"$authtype\" is not supported"); - - return false; - } - - return true; - } - - /** - * Calculate an MD5 HMAC hash. - * Works like hash_hmac('md5', $data, $key) - * in case that function is not available. - * - * @param string $data The data to hash - * @param string $key The key to hash with - * - * @return string - */ - protected function hmac($data, $key) - { - if (function_exists('hash_hmac')) { - return hash_hmac('md5', $data, $key); - } - - // The following borrowed from - // http://php.net/manual/en/function.mhash.php#27225 - - // RFC 2104 HMAC implementation for php. - // Creates an md5 HMAC. - // Eliminates the need to install mhash to compute a HMAC - // by Lance Rushing - - $bytelen = 64; // byte length for md5 - if (strlen($key) > $bytelen) { - $key = pack('H*', md5($key)); - } - $key = str_pad($key, $bytelen, chr(0x00)); - $ipad = str_pad('', $bytelen, chr(0x36)); - $opad = str_pad('', $bytelen, chr(0x5c)); - $k_ipad = $key ^ $ipad; - $k_opad = $key ^ $opad; - - return md5($k_opad . pack('H*', md5($k_ipad . $data))); - } - - /** - * Check connection state. - * - * @return bool True if connected - */ - public function connected() - { - if (is_resource($this->smtp_conn)) { - $sock_status = stream_get_meta_data($this->smtp_conn); - if ($sock_status['eof']) { - // The socket is valid but we are not connected - $this->edebug( - 'SMTP NOTICE: EOF caught while checking if connected', - self::DEBUG_CLIENT - ); - $this->close(); - - return false; - } - - return true; // everything looks good - } - - return false; - } - - /** - * Close the socket and clean up the state of the class. - * Don't use this function without first trying to use QUIT. - * - * @see quit() - */ - public function close() - { - $this->setError(''); - $this->server_caps = null; - $this->helo_rply = null; - if (is_resource($this->smtp_conn)) { - // close the connection and cleanup - fclose($this->smtp_conn); - $this->smtp_conn = null; //Makes for cleaner serialization - $this->edebug('Connection: closed', self::DEBUG_CONNECTION); - } - } - - /** - * Send an SMTP DATA command. - * Issues a data command and sends the msg_data to the server, - * finializing the mail transaction. $msg_data is the message - * that is to be send with the headers. Each header needs to be - * on a single line followed by a with the message headers - * and the message body being separated by an additional . - * Implements RFC 821: DATA . - * - * @param string $msg_data Message data to send - * - * @return bool - */ - public function data($msg_data) - { - //This will use the standard timelimit - if (!$this->sendCommand('DATA', 'DATA', 354)) { - return false; - } - - /* The server is ready to accept data! - * According to rfc821 we should not send more than 1000 characters on a single line (including the LE) - * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into - * smaller lines to fit within the limit. - * We will also look for lines that start with a '.' and prepend an additional '.'. - * NOTE: this does not count towards line-length limit. - */ - - // Normalize line breaks before exploding - $lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $msg_data)); - - /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field - * of the first line (':' separated) does not contain a space then it _should_ be a header and we will - * process all lines before a blank line as headers. - */ - - $field = substr($lines[0], 0, strpos($lines[0], ':')); - $in_headers = false; - if (!empty($field) and strpos($field, ' ') === false) { - $in_headers = true; - } - - foreach ($lines as $line) { - $lines_out = []; - if ($in_headers and $line == '') { - $in_headers = false; - } - //Break this line up into several smaller lines if it's too long - //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len), - while (isset($line[self::MAX_LINE_LENGTH])) { - //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on - //so as to avoid breaking in the middle of a word - $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' '); - //Deliberately matches both false and 0 - if (!$pos) { - //No nice break found, add a hard break - $pos = self::MAX_LINE_LENGTH - 1; - $lines_out[] = substr($line, 0, $pos); - $line = substr($line, $pos); - } else { - //Break at the found point - $lines_out[] = substr($line, 0, $pos); - //Move along by the amount we dealt with - $line = substr($line, $pos + 1); - } - //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1 - if ($in_headers) { - $line = "\t" . $line; - } - } - $lines_out[] = $line; - - //Send the lines to the server - foreach ($lines_out as $line_out) { - //RFC2821 section 4.5.2 - if (!empty($line_out) and $line_out[0] == '.') { - $line_out = '.' . $line_out; - } - $this->client_send($line_out . static::LE, 'DATA'); - } - } - - //Message data has been sent, complete the command - //Increase timelimit for end of DATA command - $savetimelimit = $this->Timelimit; - $this->Timelimit = $this->Timelimit * 2; - $result = $this->sendCommand('DATA END', '.', 250); - $this->recordLastTransactionID(); - //Restore timelimit - $this->Timelimit = $savetimelimit; - - return $result; - } - - /** - * Send an SMTP HELO or EHLO command. - * Used to identify the sending server to the receiving server. - * This makes sure that client and server are in a known state. - * Implements RFC 821: HELO - * and RFC 2821 EHLO. - * - * @param string $host The host name or IP to connect to - * - * @return bool - */ - public function hello($host = '') - { - //Try extended hello first (RFC 2821) - return (bool) ($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host)); - } - - /** - * Send an SMTP HELO or EHLO command. - * Low-level implementation used by hello(). - * - * @param string $hello The HELO string - * @param string $host The hostname to say we are - * - * @return bool - * - * @see hello() - */ - protected function sendHello($hello, $host) - { - $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250); - $this->helo_rply = $this->last_reply; - if ($noerror) { - $this->parseHelloFields($hello); - } else { - $this->server_caps = null; - } - - return $noerror; - } - - /** - * Parse a reply to HELO/EHLO command to discover server extensions. - * In case of HELO, the only parameter that can be discovered is a server name. - * - * @param string $type `HELO` or `EHLO` - */ - protected function parseHelloFields($type) - { - $this->server_caps = []; - $lines = explode("\n", $this->helo_rply); - - foreach ($lines as $n => $s) { - //First 4 chars contain response code followed by - or space - $s = trim(substr($s, 4)); - if (empty($s)) { - continue; - } - $fields = explode(' ', $s); - if (!empty($fields)) { - if (!$n) { - $name = $type; - $fields = $fields[0]; - } else { - $name = array_shift($fields); - switch ($name) { - case 'SIZE': - $fields = ($fields ? $fields[0] : 0); - break; - case 'AUTH': - if (!is_array($fields)) { - $fields = []; - } - break; - default: - $fields = true; - } - } - $this->server_caps[$name] = $fields; - } - } - } - - /** - * Send an SMTP MAIL command. - * Starts a mail transaction from the email address specified in - * $from. Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more recipient - * commands may be called followed by a data command. - * Implements RFC 821: MAIL FROM: . - * - * @param string $from Source address of this message - * - * @return bool - */ - public function mail($from) - { - $useVerp = ($this->do_verp ? ' XVERP' : ''); - - return $this->sendCommand( - 'MAIL FROM', - 'MAIL FROM:<' . $from . '>' . $useVerp, - 250 - ); - } - - /** - * Send an SMTP QUIT command. - * Closes the socket if there is no error or the $close_on_error argument is true. - * Implements from RFC 821: QUIT . - * - * @param bool $close_on_error Should the connection close if an error occurs? - * - * @return bool - */ - public function quit($close_on_error = true) - { - $noerror = $this->sendCommand('QUIT', 'QUIT', 221); - $err = $this->error; //Save any error - if ($noerror or $close_on_error) { - $this->close(); - $this->error = $err; //Restore any error from the quit command - } - - return $noerror; - } - - /** - * Send an SMTP RCPT command. - * Sets the TO argument to $toaddr. - * Returns true if the recipient was accepted false if it was rejected. - * Implements from RFC 821: RCPT TO: . - * - * @param string $address The address the message is being sent to - * - * @return bool - */ - public function recipient($address) - { - return $this->sendCommand( - 'RCPT TO', - 'RCPT TO:<' . $address . '>', - [250, 251] - ); - } - - /** - * Send an SMTP RSET command. - * Abort any transaction that is currently in progress. - * Implements RFC 821: RSET . - * - * @return bool True on success - */ - public function reset() - { - return $this->sendCommand('RSET', 'RSET', 250); - } - - /** - * Send a command to an SMTP server and check its return code. - * - * @param string $command The command name - not sent to the server - * @param string $commandstring The actual command to send - * @param int|array $expect One or more expected integer success codes - * - * @return bool True on success - */ - protected function sendCommand($command, $commandstring, $expect) - { - if (!$this->connected()) { - $this->setError("Called $command without being connected"); - - return false; - } - //Reject line breaks in all commands - if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) { - $this->setError("Command '$command' contained line breaks"); - - return false; - } - $this->client_send($commandstring . static::LE, $command); - - $this->last_reply = $this->get_lines(); - // Fetch SMTP code and possible error code explanation - $matches = []; - if (preg_match('/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/', $this->last_reply, $matches)) { - $code = $matches[1]; - $code_ex = (count($matches) > 2 ? $matches[2] : null); - // Cut off error code from each response line - $detail = preg_replace( - "/{$code}[ -]" . - ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . '/m', - '', - $this->last_reply - ); - } else { - // Fall back to simple parsing if regex fails - $code = substr($this->last_reply, 0, 3); - $code_ex = null; - $detail = substr($this->last_reply, 4); - } - - $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); - - if (!in_array($code, (array) $expect)) { - $this->setError( - "$command command failed", - $detail, - $code, - $code_ex - ); - $this->edebug( - 'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply, - self::DEBUG_CLIENT - ); - - return false; - } - - $this->setError(''); - - return true; - } - - /** - * Send an SMTP SAML command. - * Starts a mail transaction from the email address specified in $from. - * Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more recipient - * commands may be called followed by a data command. This command - * will send the message to the users terminal if they are logged - * in and send them an email. - * Implements RFC 821: SAML FROM: . - * - * @param string $from The address the message is from - * - * @return bool - */ - public function sendAndMail($from) - { - return $this->sendCommand('SAML', "SAML FROM:$from", 250); - } - - /** - * Send an SMTP VRFY command. - * - * @param string $name The name to verify - * - * @return bool - */ - public function verify($name) - { - return $this->sendCommand('VRFY', "VRFY $name", [250, 251]); - } - - /** - * Send an SMTP NOOP command. - * Used to keep keep-alives alive, doesn't actually do anything. - * - * @return bool - */ - public function noop() - { - return $this->sendCommand('NOOP', 'NOOP', 250); - } - - /** - * Send an SMTP TURN command. - * This is an optional command for SMTP that this class does not support. - * This method is here to make the RFC821 Definition complete for this class - * and _may_ be implemented in future. - * Implements from RFC 821: TURN . - * - * @return bool - */ - public function turn() - { - $this->setError('The SMTP TURN command is not implemented'); - $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT); - - return false; - } - - /** - * Send raw data to the server. - * - * @param string $data The data to send - * @param string $command Optionally, the command this is part of, used only for controlling debug output - * - * @return int|bool The number of bytes sent to the server or false on error - */ - public function client_send($data, $command = '') - { - //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 and - in_array($command, ['User & Password', 'Username', 'Password'], true)) { - $this->edebug('CLIENT -> SERVER: