aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/vendor
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2021-04-16 09:19:51 +0200
committerAndreas Gohr <andi@splitbrain.org>2021-04-16 09:19:51 +0200
commit6cb05674d342c24351edf98467e681cbaabf9d0b (patch)
tree52702ff1cb90496773d1eca010284217e09d4862 /vendor
parent4ee6ddae660f9ec72c1f6e2ddb72d6b29d6d8900 (diff)
downloaddokuwiki-6cb05674d342c24351edf98467e681cbaabf9d0b.tar.gz
dokuwiki-6cb05674d342c24351edf98467e681cbaabf9d0b.zip
updated composer dependencies
Diffstat (limited to 'vendor')
-rw-r--r--vendor/composer/ClassLoader.php38
-rw-r--r--vendor/composer/InstalledVersions.php366
-rw-r--r--vendor/composer/autoload_classmap.php1
-rw-r--r--vendor/composer/autoload_real.php6
-rw-r--r--vendor/composer/autoload_static.php1
-rw-r--r--vendor/composer/installed.json1052
-rw-r--r--vendor/composer/installed.php107
-rw-r--r--vendor/composer/platform_check.php26
-rw-r--r--vendor/marcusschwarz/lesserphp/HISTORY.md5
-rw-r--r--vendor/marcusschwarz/lesserphp/LICENSE2
-rw-r--r--vendor/marcusschwarz/lesserphp/README.md2
-rw-r--r--vendor/marcusschwarz/lesserphp/composer.json2
-rw-r--r--vendor/marcusschwarz/lesserphp/lessc.inc.php4
-rw-r--r--vendor/openpsa/universalfeedcreator/LICENSE456
-rw-r--r--vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php2
-rw-r--r--vendor/phpseclib/phpseclib/README.md20
-rw-r--r--vendor/phpseclib/phpseclib/composer.json3
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php69
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php1
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php92
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php48
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php73
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/File/X509.php37
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php28
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php98
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php11
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php5
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php277
-rw-r--r--vendor/splitbrain/php-archive/.gitignore3
-rw-r--r--vendor/splitbrain/php-archive/README.md2
-rw-r--r--vendor/splitbrain/php-archive/composer.json2
-rw-r--r--vendor/splitbrain/php-archive/phpunit.xml3
-rw-r--r--vendor/splitbrain/php-archive/src/Tar.php45
-rw-r--r--vendor/splitbrain/php-cli/.gitignore2
-rw-r--r--vendor/splitbrain/php-cli/README.md2
-rw-r--r--vendor/splitbrain/php-cli/composer.json2
-rw-r--r--vendor/splitbrain/php-cli/src/Options.php42
-rw-r--r--vendor/splitbrain/slika/README.md2
-rw-r--r--vendor/splitbrain/slika/src/Adapter.php8
-rw-r--r--vendor/splitbrain/slika/src/GdAdapter.php23
40 files changed, 2139 insertions, 829 deletions
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 03b9bb9c4..247294d66 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -37,11 +37,13 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
+ private $vendorDir;
+
// PSR-4
private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array();
@@ -57,6 +59,13 @@ class ClassLoader
private $missingClasses = array();
private $apcuPrefix;
+ private static $registeredLoaders = array();
+
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ }
+
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
@@ -300,6 +309,17 @@ class ClassLoader
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
}
/**
@@ -308,6 +328,10 @@ class ClassLoader
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
}
/**
@@ -367,6 +391,16 @@ class ClassLoader
return $file;
}
+ /**
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
+ *
+ * @return self[]
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
new file mode 100644
index 000000000..4910e1b21
--- /dev/null
+++ b/vendor/composer/InstalledVersions.php
@@ -0,0 +1,366 @@
+<?php
+
+
+
+
+
+
+
+
+
+
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+
+
+
+
+
+class InstalledVersions
+{
+private static $installed = array (
+ 'root' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4ee6ddae660f9ec72c1f6e2ddb72d6b29d6d8900',
+ 'name' => 'splitbrain/dokuwiki',
+ ),
+ 'versions' =>
+ array (
+ 'aziraphale/email-address-validator' =>
+ array (
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fa25bc22c1c0b6491657c91473fae3e40719a650',
+ ),
+ 'geshi/geshi' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ 0 => '1.0.x-dev',
+ 1 => '9999999-dev',
+ ),
+ 'reference' => '3c12a7931d509c5e3557c5ed44c9a32e9c917c7d',
+ ),
+ 'marcusschwarz/lesserphp' =>
+ array (
+ 'pretty_version' => 'v0.5.5',
+ 'version' => '0.5.5.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '77ba82b5218ff228267d3b0e5ec8697be75e86a7',
+ ),
+ 'openpsa/universalfeedcreator' =>
+ array (
+ 'pretty_version' => 'v1.8.4',
+ 'version' => '1.8.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '099817dc9efef33ca2382b04daf9e191b77fed13',
+ ),
+ 'phpseclib/phpseclib' =>
+ array (
+ 'pretty_version' => '2.0.31',
+ 'version' => '2.0.31.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '233a920cb38636a43b18d428f9a8db1f0a1a08f4',
+ ),
+ 'simplepie/simplepie' =>
+ array (
+ 'pretty_version' => '1.5.6',
+ 'version' => '1.5.6.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6',
+ ),
+ 'splitbrain/dokuwiki' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4ee6ddae660f9ec72c1f6e2ddb72d6b29d6d8900',
+ ),
+ 'splitbrain/php-archive' =>
+ array (
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '211a2198b73b233d7d2b6159462e11cd9a91348a',
+ ),
+ 'splitbrain/php-cli' =>
+ array (
+ 'pretty_version' => '1.1.8',
+ 'version' => '1.1.8.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '8c2c001b1b55d194402cf18aad2757049ac6d575',
+ ),
+ 'splitbrain/slika' =>
+ array (
+ 'pretty_version' => '1.0.4',
+ 'version' => '1.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fda87e816eb150f3608282da962788b4ad509c11',
+ ),
+ ),
+);
+private static $canGetVendors;
+private static $installedByVendor = array();
+
+
+
+
+
+
+
+public static function getInstalledPackages()
+{
+$packages = array();
+foreach (self::getInstalled() as $installed) {
+$packages[] = array_keys($installed['versions']);
+}
+
+
+if (1 === \count($packages)) {
+return $packages[0];
+}
+
+return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+}
+
+
+
+
+
+
+
+
+
+public static function isInstalled($packageName)
+{
+foreach (self::getInstalled() as $installed) {
+if (isset($installed['versions'][$packageName])) {
+return true;
+}
+}
+
+return false;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public static function satisfies(VersionParser $parser, $packageName, $constraint)
+{
+$constraint = $parser->parseConstraints($constraint);
+$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+return $provided->matches($constraint);
+}
+
+
+
+
+
+
+
+
+
+
+public static function getVersionRanges($packageName)
+{
+foreach (self::getInstalled() as $installed) {
+if (!isset($installed['versions'][$packageName])) {
+continue;
+}
+
+$ranges = array();
+if (isset($installed['versions'][$packageName]['pretty_version'])) {
+$ranges[] = $installed['versions'][$packageName]['pretty_version'];
+}
+if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+}
+if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+}
+if (array_key_exists('provided', $installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+}
+
+return implode(' || ', $ranges);
+}
+
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+
+
+
+
+public static function getVersion($packageName)
+{
+foreach (self::getInstalled() as $installed) {
+if (!isset($installed['versions'][$packageName])) {
+continue;
+}
+
+if (!isset($installed['versions'][$packageName]['version'])) {
+return null;
+}
+
+return $installed['versions'][$packageName]['version'];
+}
+
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+
+
+
+
+public static function getPrettyVersion($packageName)
+{
+foreach (self::getInstalled() as $installed) {
+if (!isset($installed['versions'][$packageName])) {
+continue;
+}
+
+if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+return null;
+}
+
+return $installed['versions'][$packageName]['pretty_version'];
+}
+
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+
+
+
+
+public static function getReference($packageName)
+{
+foreach (self::getInstalled() as $installed) {
+if (!isset($installed['versions'][$packageName])) {
+continue;
+}
+
+if (!isset($installed['versions'][$packageName]['reference'])) {
+return null;
+}
+
+return $installed['versions'][$packageName]['reference'];
+}
+
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+
+
+
+
+public static function getRootPackage()
+{
+$installed = self::getInstalled();
+
+return $installed[0]['root'];
+}
+
+
+
+
+
+
+
+public static function getRawData()
+{
+return self::$installed;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public static function reload($data)
+{
+self::$installed = $data;
+self::$installedByVendor = array();
+}
+
+
+
+
+private static function getInstalled()
+{
+if (null === self::$canGetVendors) {
+self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+}
+
+$installed = array();
+
+if (self::$canGetVendors) {
+foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+if (isset(self::$installedByVendor[$vendorDir])) {
+$installed[] = self::$installedByVendor[$vendorDir];
+} elseif (is_file($vendorDir.'/composer/installed.php')) {
+$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+}
+}
+}
+
+$installed[] = self::$installed;
+
+return $installed;
+}
+}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 538036724..65472be27 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -8,6 +8,7 @@ $baseDir = dirname($vendorDir);
return array(
'AtomCreator03' => $vendorDir . '/openpsa/universalfeedcreator/lib/Creator/AtomCreator03.php',
'AtomCreator10' => $vendorDir . '/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php',
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'FeedCreator' => $vendorDir . '/openpsa/universalfeedcreator/lib/Creator/FeedCreator.php',
'FeedDate' => $vendorDir . '/openpsa/universalfeedcreator/lib/Element/FeedDate.php',
'FeedHtmlField' => $vendorDir . '/openpsa/universalfeedcreator/lib/Element/FeedHtmlField.php',
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 99e063b99..14bd01a30 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -22,13 +22,15 @@ class ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b
return self::$loader;
}
+ require __DIR__ . '/platform_check.php';
+
spl_autoload_register(array('ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
+ require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInita19a915ee98347a0c787119619d2ff9b::getInitializer($loader));
} else {
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 3fb7c1a0c..4618df6b3 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -68,6 +68,7 @@ class ComposerStaticInita19a915ee98347a0c787119619d2ff9b
public static $classMap = array (
'AtomCreator03' => __DIR__ . '/..' . '/openpsa/universalfeedcreator/lib/Creator/AtomCreator03.php',
'AtomCreator10' => __DIR__ . '/..' . '/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php',
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'FeedCreator' => __DIR__ . '/..' . '/openpsa/universalfeedcreator/lib/Creator/FeedCreator.php',
'FeedDate' => __DIR__ . '/..' . '/openpsa/universalfeedcreator/lib/Element/FeedDate.php',
'FeedHtmlField' => __DIR__ . '/..' . '/openpsa/universalfeedcreator/lib/Element/FeedHtmlField.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index c34e8afff..86a2915cd 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,522 +1,534 @@
-[
- {
- "name": "aziraphale/email-address-validator",
- "version": "2.0.1",
- "version_normalized": "2.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/aziraphale/email-address-validator.git",
- "reference": "fa25bc22c1c0b6491657c91473fae3e40719a650"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/aziraphale/email-address-validator/zipball/fa25bc22c1c0b6491657c91473fae3e40719a650",
- "reference": "fa25bc22c1c0b6491657c91473fae3e40719a650",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7"
- },
- "time": "2017-05-22T14:05:57+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "EmailAddressValidator": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dave Child",
- "email": "dave@addedbytes.com"
- },
- {
- "name": "Andrew Gillard",
- "email": "andrew@lorddeath.net"
- }
- ],
- "description": "Fork of AddedBytes' PHP EmailAddressValidator script, now with Composer support!",
- "homepage": "https://github.com/aziraphale/email-address-validator"
- },
- {
- "name": "geshi/geshi",
- "version": "dev-master",
- "version_normalized": "9999999-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/GeSHi/geshi-1.0.git",
- "reference": "3c12a7931d509c5e3557c5ed44c9a32e9c917c7d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GeSHi/geshi-1.0/zipball/3c12a7931d509c5e3557c5ed44c9a32e9c917c7d",
- "reference": "3c12a7931d509c5e3557c5ed44c9a32e9c917c7d",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.2"
- },
- "time": "2020-06-22T15:46:04+00:00",
- "type": "library",
- "installation-source": "source",
- "autoload": {
- "classmap": [
- "src/geshi/",
- "src/geshi.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0+"
- ],
- "authors": [
- {
- "name": "Benny Baumann",
- "email": "BenBE@geshi.org",
- "homepage": "http://blog.benny-baumann.de/",
- "role": "Developer"
- }
- ],
- "description": "Generic Syntax Highlighter",
- "homepage": "http://qbnz.com/highlighter/"
- },
- {
- "name": "marcusschwarz/lesserphp",
- "version": "v0.5.4",
- "version_normalized": "0.5.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/MarcusSchwarz/lesserphp.git",
- "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/MarcusSchwarz/lesserphp/zipball/3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e",
- "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "~4.3"
- },
- "time": "2020-01-19T19:18:49+00:00",
- "bin": [
- "plessc"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.5.1-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "lessc.inc.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "Leaf Corcoran",
- "email": "leafot@gmail.com",
- "homepage": "http://leafo.net"
- },
- {
- "name": "Marcus Schwarz",
- "email": "github@maswaba.de",
- "homepage": "https://www.maswaba.de"
- }
- ],
- "description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.",
- "homepage": "http://leafo.net/lessphp/"
- },
- {
- "name": "openpsa/universalfeedcreator",
- "version": "v1.8.3.2",
- "version_normalized": "1.8.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/flack/UniversalFeedCreator.git",
- "reference": "906745196469b13ceefa6523ef04851a78ad10f4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/flack/UniversalFeedCreator/zipball/906745196469b13ceefa6523ef04851a78ad10f4",
- "reference": "906745196469b13ceefa6523ef04851a78ad10f4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "*"
- },
- "time": "2019-09-01T17:49:46+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "lib"
+{
+ "packages": [
+ {
+ "name": "aziraphale/email-address-validator",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/aziraphale/email-address-validator.git",
+ "reference": "fa25bc22c1c0b6491657c91473fae3e40719a650"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/aziraphale/email-address-validator/zipball/fa25bc22c1c0b6491657c91473fae3e40719a650",
+ "reference": "fa25bc22c1c0b6491657c91473fae3e40719a650",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7"
+ },
+ "time": "2017-05-22T14:05:57+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "EmailAddressValidator": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
],
- "files": [
- "lib/constants.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1-or-later"
- ],
- "authors": [
- {
- "name": "Andreas Flack",
- "email": "flack@contentcontrol-berlin.de",
- "homepage": "http://www.contentcontrol-berlin.de/"
- }
- ],
- "description": "RSS and Atom feed generator by Kai Blankenhorn",
- "keywords": [
- "atom",
- "georss",
- "gpx",
- "opml",
- "pie",
- "rss"
- ]
- },
- {
- "name": "phpseclib/phpseclib",
- "version": "2.0.28",
- "version_normalized": "2.0.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "d1ca58cf33cb21046d702ae3a7b14fdacd9f3260"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d1ca58cf33cb21046d702ae3a7b14fdacd9f3260",
- "reference": "d1ca58cf33cb21046d702ae3a7b14fdacd9f3260",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phing/phing": "~2.7",
- "phpunit/phpunit": "^4.8.35|^5.7|^6.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": "2020-07-08T09:08:33+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "phpseclib/bootstrap.php"
+ "authors": [
+ {
+ "name": "Dave Child",
+ "email": "dave@addedbytes.com"
+ },
+ {
+ "name": "Andrew Gillard",
+ "email": "andrew@lorddeath.net"
+ }
],
- "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"
- ],
- "funding": [
- {
- "url": "https://github.com/terrafrost",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/phpseclib",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "simplepie/simplepie",
- "version": "1.5.6",
- "version_normalized": "1.5.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/simplepie/simplepie.git",
- "reference": "1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6",
- "reference": "1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6",
- "shasum": ""
- },
- "require": {
- "ext-pcre": "*",
- "ext-xml": "*",
- "ext-xmlreader": "*",
- "php": ">=5.6.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~5.4.3 || ~6.5"
- },
- "suggest": {
- "ext-curl": "",
- "ext-iconv": "",
- "ext-intl": "",
- "ext-mbstring": "",
- "mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
- },
- "time": "2020-10-14T07:17:22+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "SimplePie": "library"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Ryan Parman",
- "homepage": "http://ryanparman.com/",
- "role": "Creator, alumnus developer"
- },
- {
- "name": "Sam Sneddon",
- "homepage": "https://gsnedders.com/",
- "role": "Alumnus developer"
- },
- {
- "name": "Ryan McCue",
- "email": "me@ryanmccue.info",
- "homepage": "http://ryanmccue.info/",
- "role": "Developer"
- }
- ],
- "description": "A simple Atom/RSS parsing library for PHP",
- "homepage": "http://simplepie.org/",
- "keywords": [
- "atom",
- "feeds",
- "rss"
- ]
- },
- {
- "name": "splitbrain/php-archive",
- "version": "1.2.0",
- "version_normalized": "1.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/splitbrain/php-archive.git",
- "reference": "d4cf2d9a2d82548b7e4f1dc04802c526eba68b65"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/splitbrain/php-archive/zipball/d4cf2d9a2d82548b7e4f1dc04802c526eba68b65",
- "reference": "d4cf2d9a2d82548b7e4f1dc04802c526eba68b65",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4"
- },
- "require-dev": {
- "ext-bz2": "*",
- "ext-zip": "*",
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": "^4.8"
- },
- "suggest": {
- "ext-iconv": "Used for proper filename encode handling",
- "ext-mbstring": "Can be used alternatively for handling filename encoding"
- },
- "time": "2020-10-13T12:41:15+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "splitbrain\\PHPArchive\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Andreas Gohr",
- "email": "andi@splitbrain.org"
- }
- ],
- "description": "Pure-PHP implementation to read and write TAR and ZIP archives",
- "keywords": [
- "archive",
- "extract",
- "tar",
- "unpack",
- "unzip",
- "zip"
- ]
- },
- {
- "name": "splitbrain/php-cli",
- "version": "1.1.7",
- "version_normalized": "1.1.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/splitbrain/php-cli.git",
- "reference": "fb4f888866d090b10e3e68292d197ca274cea626"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/splitbrain/php-cli/zipball/fb4f888866d090b10e3e68292d197ca274cea626",
- "reference": "fb4f888866d090b10e3e68292d197ca274cea626",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "4.5.*"
- },
- "suggest": {
- "psr/log": "Allows you to make the CLI available as PSR-3 logger"
- },
- "time": "2019-12-12T08:24:54+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "splitbrain\\phpcli\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Andreas Gohr",
- "email": "andi@splitbrain.org"
- }
- ],
- "description": "Easy command line scripts for PHP with opt parsing and color output. No dependencies",
- "keywords": [
- "argparse",
- "cli",
- "command line",
- "console",
- "getopt",
- "optparse",
- "terminal"
- ]
- },
- {
- "name": "splitbrain/slika",
- "version": "1.0.3",
- "version_normalized": "1.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/splitbrain/slika.git",
- "reference": "a357f2ac6a10668c43516ef11220f60da9fab171"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/splitbrain/slika/zipball/a357f2ac6a10668c43516ef11220f60da9fab171",
- "reference": "a357f2ac6a10668c43516ef11220f60da9fab171",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0"
- },
- "suggest": {
- "ext-gd": "PHP's builtin image manipulation library. Alternatively use an installation of ImageMagick"
- },
- "time": "2020-09-01T15:14:41+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "splitbrain\\slika\\tests\\": "tests",
- "splitbrain\\slika\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Andreas Gohr",
- "email": "andi@splitbrain.org"
- }
- ],
- "description": "Simple image resizing"
- }
-]
+ "description": "Fork of AddedBytes' PHP EmailAddressValidator script, now with Composer support!",
+ "homepage": "https://github.com/aziraphale/email-address-validator",
+ "install-path": "../aziraphale/email-address-validator"
+ },
+ {
+ "name": "geshi/geshi",
+ "version": "dev-master",
+ "version_normalized": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GeSHi/geshi-1.0.git",
+ "reference": "3c12a7931d509c5e3557c5ed44c9a32e9c917c7d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GeSHi/geshi-1.0/zipball/3c12a7931d509c5e3557c5ed44c9a32e9c917c7d",
+ "reference": "3c12a7931d509c5e3557c5ed44c9a32e9c917c7d",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.2"
+ },
+ "time": "2020-06-22T15:46:04+00:00",
+ "type": "library",
+ "installation-source": "source",
+ "autoload": {
+ "classmap": [
+ "src/geshi/",
+ "src/geshi.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "Benny Baumann",
+ "email": "BenBE@geshi.org",
+ "homepage": "http://blog.benny-baumann.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Generic Syntax Highlighter",
+ "homepage": "http://qbnz.com/highlighter/",
+ "install-path": "../geshi/geshi"
+ },
+ {
+ "name": "marcusschwarz/lesserphp",
+ "version": "v0.5.5",
+ "version_normalized": "0.5.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MarcusSchwarz/lesserphp.git",
+ "reference": "77ba82b5218ff228267d3b0e5ec8697be75e86a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MarcusSchwarz/lesserphp/zipball/77ba82b5218ff228267d3b0e5ec8697be75e86a7",
+ "reference": "77ba82b5218ff228267d3b0e5ec8697be75e86a7",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4.8.35 <8"
+ },
+ "time": "2021-03-10T17:56:57+00:00",
+ "bin": [
+ "plessc"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "lessc.inc.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT",
+ "GPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Leaf Corcoran",
+ "email": "leafot@gmail.com",
+ "homepage": "http://leafo.net"
+ },
+ {
+ "name": "Marcus Schwarz",
+ "email": "github@maswaba.de",
+ "homepage": "https://www.maswaba.de"
+ }
+ ],
+ "description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.",
+ "homepage": "http://leafo.net/lessphp/",
+ "install-path": "../marcusschwarz/lesserphp"
+ },
+ {
+ "name": "openpsa/universalfeedcreator",
+ "version": "v1.8.4",
+ "version_normalized": "1.8.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/flack/UniversalFeedCreator.git",
+ "reference": "099817dc9efef33ca2382b04daf9e191b77fed13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/flack/UniversalFeedCreator/zipball/099817dc9efef33ca2382b04daf9e191b77fed13",
+ "reference": "099817dc9efef33ca2382b04daf9e191b77fed13",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "time": "2020-09-25T08:36:47+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "lib"
+ ],
+ "files": [
+ "lib/constants.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Andreas Flack",
+ "email": "flack@contentcontrol-berlin.de",
+ "homepage": "http://www.contentcontrol-berlin.de/"
+ }
+ ],
+ "description": "RSS and Atom feed generator by Kai Blankenhorn",
+ "keywords": [
+ "atom",
+ "georss",
+ "gpx",
+ "opml",
+ "pie",
+ "rss"
+ ],
+ "install-path": "../openpsa/universalfeedcreator"
+ },
+ {
+ "name": "phpseclib/phpseclib",
+ "version": "2.0.31",
+ "version_normalized": "2.0.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpseclib/phpseclib.git",
+ "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/233a920cb38636a43b18d428f9a8db1f0a1a08f4",
+ "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phing/phing": "~2.7",
+ "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4",
+ "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": "2021-04-06T13:56:45+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"
+ ],
+ "funding": [
+ {
+ "url": "https://github.com/terrafrost",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpseclib",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../phpseclib/phpseclib"
+ },
+ {
+ "name": "simplepie/simplepie",
+ "version": "1.5.6",
+ "version_normalized": "1.5.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/simplepie/simplepie.git",
+ "reference": "1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6",
+ "reference": "1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "ext-xml": "*",
+ "ext-xmlreader": "*",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.4.3 || ~6.5"
+ },
+ "suggest": {
+ "ext-curl": "",
+ "ext-iconv": "",
+ "ext-intl": "",
+ "ext-mbstring": "",
+ "mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
+ },
+ "time": "2020-10-14T07:17:22+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "SimplePie": "library"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Ryan Parman",
+ "homepage": "http://ryanparman.com/",
+ "role": "Creator, alumnus developer"
+ },
+ {
+ "name": "Sam Sneddon",
+ "homepage": "https://gsnedders.com/",
+ "role": "Alumnus developer"
+ },
+ {
+ "name": "Ryan McCue",
+ "email": "me@ryanmccue.info",
+ "homepage": "http://ryanmccue.info/",
+ "role": "Developer"
+ }
+ ],
+ "description": "A simple Atom/RSS parsing library for PHP",
+ "homepage": "http://simplepie.org/",
+ "keywords": [
+ "atom",
+ "feeds",
+ "rss"
+ ],
+ "install-path": "../simplepie/simplepie"
+ },
+ {
+ "name": "splitbrain/php-archive",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/splitbrain/php-archive.git",
+ "reference": "211a2198b73b233d7d2b6159462e11cd9a91348a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/splitbrain/php-archive/zipball/211a2198b73b233d7d2b6159462e11cd9a91348a",
+ "reference": "211a2198b73b233d7d2b6159462e11cd9a91348a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4"
+ },
+ "require-dev": {
+ "ext-bz2": "*",
+ "ext-zip": "*",
+ "mikey179/vfsstream": "^1.6",
+ "phpunit/phpunit": "^8"
+ },
+ "suggest": {
+ "ext-iconv": "Used for proper filename encode handling",
+ "ext-mbstring": "Can be used alternatively for handling filename encoding"
+ },
+ "time": "2021-02-22T17:59:24+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "splitbrain\\PHPArchive\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Andreas Gohr",
+ "email": "andi@splitbrain.org"
+ }
+ ],
+ "description": "Pure-PHP implementation to read and write TAR and ZIP archives",
+ "keywords": [
+ "archive",
+ "extract",
+ "tar",
+ "unpack",
+ "unzip",
+ "zip"
+ ],
+ "install-path": "../splitbrain/php-archive"
+ },
+ {
+ "name": "splitbrain/php-cli",
+ "version": "1.1.8",
+ "version_normalized": "1.1.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/splitbrain/php-cli.git",
+ "reference": "8c2c001b1b55d194402cf18aad2757049ac6d575"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/splitbrain/php-cli/zipball/8c2c001b1b55d194402cf18aad2757049ac6d575",
+ "reference": "8c2c001b1b55d194402cf18aad2757049ac6d575",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8"
+ },
+ "suggest": {
+ "psr/log": "Allows you to make the CLI available as PSR-3 logger"
+ },
+ "time": "2021-02-05T12:02:46+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "splitbrain\\phpcli\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Andreas Gohr",
+ "email": "andi@splitbrain.org"
+ }
+ ],
+ "description": "Easy command line scripts for PHP with opt parsing and color output. No dependencies",
+ "keywords": [
+ "argparse",
+ "cli",
+ "command line",
+ "console",
+ "getopt",
+ "optparse",
+ "terminal"
+ ],
+ "install-path": "../splitbrain/php-cli"
+ },
+ {
+ "name": "splitbrain/slika",
+ "version": "1.0.4",
+ "version_normalized": "1.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/splitbrain/slika.git",
+ "reference": "fda87e816eb150f3608282da962788b4ad509c11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/splitbrain/slika/zipball/fda87e816eb150f3608282da962788b4ad509c11",
+ "reference": "fda87e816eb150f3608282da962788b4ad509c11",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "ext-gd": "PHP's builtin image manipulation library. Alternatively use an installation of ImageMagick"
+ },
+ "time": "2020-09-07T18:35:00+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "splitbrain\\slika\\tests\\": "tests",
+ "splitbrain\\slika\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Andreas Gohr",
+ "email": "andi@splitbrain.org"
+ }
+ ],
+ "description": "Simple image resizing",
+ "install-path": "../splitbrain/slika"
+ }
+ ],
+ "dev": true,
+ "dev-package-names": []
+}
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
new file mode 100644
index 000000000..57d493fd1
--- /dev/null
+++ b/vendor/composer/installed.php
@@ -0,0 +1,107 @@
+<?php return array (
+ 'root' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4ee6ddae660f9ec72c1f6e2ddb72d6b29d6d8900',
+ 'name' => 'splitbrain/dokuwiki',
+ ),
+ 'versions' =>
+ array (
+ 'aziraphale/email-address-validator' =>
+ array (
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fa25bc22c1c0b6491657c91473fae3e40719a650',
+ ),
+ 'geshi/geshi' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ 0 => '1.0.x-dev',
+ 1 => '9999999-dev',
+ ),
+ 'reference' => '3c12a7931d509c5e3557c5ed44c9a32e9c917c7d',
+ ),
+ 'marcusschwarz/lesserphp' =>
+ array (
+ 'pretty_version' => 'v0.5.5',
+ 'version' => '0.5.5.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '77ba82b5218ff228267d3b0e5ec8697be75e86a7',
+ ),
+ 'openpsa/universalfeedcreator' =>
+ array (
+ 'pretty_version' => 'v1.8.4',
+ 'version' => '1.8.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '099817dc9efef33ca2382b04daf9e191b77fed13',
+ ),
+ 'phpseclib/phpseclib' =>
+ array (
+ 'pretty_version' => '2.0.31',
+ 'version' => '2.0.31.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '233a920cb38636a43b18d428f9a8db1f0a1a08f4',
+ ),
+ 'simplepie/simplepie' =>
+ array (
+ 'pretty_version' => '1.5.6',
+ 'version' => '1.5.6.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1c68e14ca3ac84346b6e6fe3c5eedf725d0f92c6',
+ ),
+ 'splitbrain/dokuwiki' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4ee6ddae660f9ec72c1f6e2ddb72d6b29d6d8900',
+ ),
+ 'splitbrain/php-archive' =>
+ array (
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '211a2198b73b233d7d2b6159462e11cd9a91348a',
+ ),
+ 'splitbrain/php-cli' =>
+ array (
+ 'pretty_version' => '1.1.8',
+ 'version' => '1.1.8.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '8c2c001b1b55d194402cf18aad2757049ac6d575',
+ ),
+ 'splitbrain/slika' =>
+ array (
+ 'pretty_version' => '1.0.4',
+ 'version' => '1.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fda87e816eb150f3608282da962788b4ad509c11',
+ ),
+ ),
+);
diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php
new file mode 100644
index 000000000..589e9e770
--- /dev/null
+++ b/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+<?php
+
+// platform_check.php @generated by Composer
+
+$issues = array();
+
+if (!(PHP_VERSION_ID >= 70200)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/vendor/marcusschwarz/lesserphp/HISTORY.md b/vendor/marcusschwarz/lesserphp/HISTORY.md
index 4a55d823c..b36ce91f3 100644
--- a/vendor/marcusschwarz/lesserphp/HISTORY.md
+++ b/vendor/marcusschwarz/lesserphp/HISTORY.md
@@ -1,10 +1,13 @@
-# lesserphp v0.5.4
+# lesserphp v0.5.5
Originally written by Leaf Corcoran, obviously abandoned circa 2014
https://github.com/leafo/lessphp
Last version provided by Leaf was 0.5.0
+### v.0.5.5
+* 2021-03-10: More PHP 7.4 support for 0.5-dev (@phy25)
+
### v.0.5.4
* 2020-01-19: added 7.4 support to travis and removed antique php versions (@phy25)
* 2020-01-19: fixed wrong array access in lib_luma
diff --git a/vendor/marcusschwarz/lesserphp/LICENSE b/vendor/marcusschwarz/lesserphp/LICENSE
index 529020266..5dcdbf377 100644
--- a/vendor/marcusschwarz/lesserphp/LICENSE
+++ b/vendor/marcusschwarz/lesserphp/LICENSE
@@ -1,4 +1,4 @@
-For ease of distribution, lessphp 0.5.1 is under a dual license.
+For ease of distribution, lesserphp is under a dual license.
You are free to pick which one suits your needs.
diff --git a/vendor/marcusschwarz/lesserphp/README.md b/vendor/marcusschwarz/lesserphp/README.md
index 8c26ab14a..efa660182 100644
--- a/vendor/marcusschwarz/lesserphp/README.md
+++ b/vendor/marcusschwarz/lesserphp/README.md
@@ -1,6 +1,6 @@
[![Build Status](https://travis-ci.org/MarcusSchwarz/lesserphp.svg)](https://travis-ci.org/MarcusSchwarz/lesserphp)
-# lesserphp v0.5.4
+# lesserphp v0.5.5
### <http://github.com/MarcusSchwarz/lesserphp>
`lesserphp` is a compiler for LESS written in PHP. It is based on lessphp bei leafo.
diff --git a/vendor/marcusschwarz/lesserphp/composer.json b/vendor/marcusschwarz/lesserphp/composer.json
index d32a5d4af..f96d98d86 100644
--- a/vendor/marcusschwarz/lesserphp/composer.json
+++ b/vendor/marcusschwarz/lesserphp/composer.json
@@ -30,7 +30,7 @@
}
},
"require-dev": {
- "phpunit/phpunit": "~4.3"
+ "phpunit/phpunit": ">=4.8.35 <8"
},
"scripts": {
"test": "phpunit"
diff --git a/vendor/marcusschwarz/lesserphp/lessc.inc.php b/vendor/marcusschwarz/lesserphp/lessc.inc.php
index e8c85d9cf..175b27cd9 100644
--- a/vendor/marcusschwarz/lesserphp/lessc.inc.php
+++ b/vendor/marcusschwarz/lesserphp/lessc.inc.php
@@ -1,7 +1,7 @@
<?php
/**
- * lessphp v0.5.2
+ * lessphp v0.5.5
* http://leafo.net/lessphp
*
* LESS CSS compiler, adapted from http://lesscss.org
@@ -39,7 +39,7 @@
* handling things like indentation.
*/
class lessc {
- static public $VERSION = "v0.5.2";
+ static public $VERSION = "v0.5.5";
static public $TRUE = array("keyword", "true");
static public $FALSE = array("keyword", "false");
diff --git a/vendor/openpsa/universalfeedcreator/LICENSE b/vendor/openpsa/universalfeedcreator/LICENSE
new file mode 100644
index 000000000..178db1468
--- /dev/null
+++ b/vendor/openpsa/universalfeedcreator/LICENSE
@@ -0,0 +1,456 @@
+ 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.
diff --git a/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php b/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php
index e02a8d767..f0f03d857 100644
--- a/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php
+++ b/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php
@@ -140,7 +140,7 @@ class HTMLCreator extends FeedCreator
$feedArray[] = "<div class='".$this->stylePrefix."footer'>".$this->footer."</div>";
}
- $feed = "".join($feedArray, "\r\n");
+ $feed = "".implode("\r\n", $feedArray);
return $feed;
}
diff --git a/vendor/phpseclib/phpseclib/README.md b/vendor/phpseclib/phpseclib/README.md
index 56260b0bc..099486dc9 100644
--- a/vendor/phpseclib/phpseclib/README.md
+++ b/vendor/phpseclib/phpseclib/README.md
@@ -1,6 +1,6 @@
# phpseclib - PHP Secure Communications Library
-[![Build Status](https://travis-ci.org/phpseclib/phpseclib.svg?branch=2.0)](https://travis-ci.org/phpseclib/phpseclib)
+[![Build Status](https://travis-ci.com/phpseclib/phpseclib.svg?branch=2.0)](https://travis-ci.com/phpseclib/phpseclib)
## Supporting phpseclib
@@ -10,16 +10,16 @@
## Introduction
-MIT-licensed pure-PHP implementations of an arbitrary-precision integer
-arithmetic library, fully PKCS#1 (v2.1) compliant RSA, DES, 3DES, RC4, Rijndael,
-AES, Blowfish, Twofish, SSH-1, SSH-2, SFTP, and X.509
+MIT-licensed pure-PHP implementations of the following:
+
+SSH-2, SFTP, X.509, an arbitrary-precision integer arithmetic library, Ed25519 / Ed449 / Curve25519 / Curve449, ECDSA / ECDH (with support for 66 curves), RSA (PKCS#1 v2.2 compliant), DSA / DH, DES / 3DES / RC4 / Rijndael / AES / Blowfish / Twofish / Salsa20 / ChaCha20, GCM / Poly1305
* [Browse Git](https://github.com/phpseclib/phpseclib)
## Documentation
-* [Documentation / Manual](http://phpseclib.sourceforge.net/)
-* [API Documentation](https://api.phpseclib.org/2.0/) (generated by Sami)
+* [Documentation / Manual](https://phpseclib.com/)
+* [API Documentation](https://api.phpseclib.com/2.0/) (generated by Doctum)
## Branches
@@ -29,6 +29,14 @@ AES, Blowfish, Twofish, SSH-1, SSH-2, SFTP, and X.509
* Unstable API
* Do not use in production
+### 3.0
+
+* Long term support (LTS) release
+* Major expansion of cryptographic primitives
+* Minimum PHP version: 5.6.1
+* PSR-4 autoloading with namespace rooted at `\phpseclib3`
+* Install via Composer: `composer require phpseclib/phpseclib:~3.0`
+
### 2.0
* Long term support (LTS) release
diff --git a/vendor/phpseclib/phpseclib/composer.json b/vendor/phpseclib/phpseclib/composer.json
index b4e8a1c9c..08b9c7c91 100644
--- a/vendor/phpseclib/phpseclib/composer.json
+++ b/vendor/phpseclib/phpseclib/composer.json
@@ -55,8 +55,7 @@
},
"require-dev": {
"phing/phing": "~2.7",
- "phpunit/phpunit": "^4.8.35|^5.7|^6.0",
- "sami/sami": "~2.0",
+ "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4",
"squizlabs/php_codesniffer": "~2.0"
},
"suggest": {
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
index 224eaa521..8822b9b88 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
@@ -779,12 +779,14 @@ abstract class Base
}
if ($this->engine === self::ENGINE_MCRYPT) {
+ set_error_handler(array($this, 'do_nothing'));
+
if ($this->changed) {
$this->_setupMcrypt();
$this->changed = false;
}
if ($this->enchanged) {
- @mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
+ mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
$this->enchanged = false;
}
@@ -817,15 +819,15 @@ abstract class Base
if ($len >= $block_size) {
if ($this->enbuffer['enmcrypt_init'] === false || $len > $this->cfb_init_len) {
if ($this->enbuffer['enmcrypt_init'] === true) {
- @mcrypt_generic_init($this->enmcrypt, $this->key, $iv);
+ mcrypt_generic_init($this->enmcrypt, $this->key, $iv);
$this->enbuffer['enmcrypt_init'] = false;
}
- $ciphertext.= @mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size));
+ $ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size));
$iv = substr($ciphertext, -$block_size);
$len%= $block_size;
} else {
while ($len >= $block_size) {
- $iv = @mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size);
+ $iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size);
$ciphertext.= $iv;
$len-= $block_size;
$i+= $block_size;
@@ -834,22 +836,26 @@ abstract class Base
}
if ($len) {
- $iv = @mcrypt_generic($this->ecb, $iv);
+ $iv = mcrypt_generic($this->ecb, $iv);
$block = $iv ^ substr($plaintext, -$len);
$iv = substr_replace($iv, $block, 0, $len);
$ciphertext.= $block;
$pos = $len;
}
+ restore_error_handler();
+
return $ciphertext;
}
- $ciphertext = @mcrypt_generic($this->enmcrypt, $plaintext);
+ $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext);
if (!$this->continuousBuffer) {
- @mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
+ mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
}
+ restore_error_handler();
+
return $ciphertext;
}
@@ -1118,13 +1124,14 @@ abstract class Base
}
if ($this->engine === self::ENGINE_MCRYPT) {
+ set_error_handler(array($this, 'do_nothing'));
$block_size = $this->block_size;
if ($this->changed) {
$this->_setupMcrypt();
$this->changed = false;
}
if ($this->dechanged) {
- @mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
+ mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
$this->dechanged = false;
}
@@ -1152,26 +1159,30 @@ abstract class Base
}
if ($len >= $block_size) {
$cb = substr($ciphertext, $i, $len - $len % $block_size);
- $plaintext.= @mcrypt_generic($this->ecb, $iv . $cb) ^ $cb;
+ $plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb;
$iv = substr($cb, -$block_size);
$len%= $block_size;
}
if ($len) {
- $iv = @mcrypt_generic($this->ecb, $iv);
+ $iv = mcrypt_generic($this->ecb, $iv);
$plaintext.= $iv ^ substr($ciphertext, -$len);
$iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len);
$pos = $len;
}
+ restore_error_handler();
+
return $plaintext;
}
- $plaintext = @mdecrypt_generic($this->demcrypt, $ciphertext);
+ $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext);
if (!$this->continuousBuffer) {
- @mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
+ mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
}
+ restore_error_handler();
+
return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
}
@@ -1649,9 +1660,12 @@ abstract class Base
}
return false;
case self::ENGINE_MCRYPT:
- return $this->cipher_name_mcrypt &&
+ set_error_handler(array($this, 'do_nothing'));
+ $result = $this->cipher_name_mcrypt &&
extension_loaded('mcrypt') &&
- in_array($this->cipher_name_mcrypt, @mcrypt_list_algorithms());
+ in_array($this->cipher_name_mcrypt, mcrypt_list_algorithms());
+ restore_error_handler();
+ return $result;
case self::ENGINE_INTERNAL:
return true;
}
@@ -1728,17 +1742,19 @@ abstract class Base
}
if ($this->engine != self::ENGINE_MCRYPT && $this->enmcrypt) {
+ set_error_handler(array($this, 'do_nothing'));
// Closing the current mcrypt resource(s). _mcryptSetup() will, if needed,
// (re)open them with the module named in $this->cipher_name_mcrypt
- @mcrypt_module_close($this->enmcrypt);
- @mcrypt_module_close($this->demcrypt);
+ mcrypt_module_close($this->enmcrypt);
+ mcrypt_module_close($this->demcrypt);
$this->enmcrypt = null;
$this->demcrypt = null;
if ($this->ecb) {
- @mcrypt_module_close($this->ecb);
+ mcrypt_module_close($this->ecb);
$this->ecb = null;
}
+ restore_error_handler();
}
$this->changed = true;
@@ -1851,19 +1867,19 @@ abstract class Base
self::MODE_STREAM => MCRYPT_MODE_STREAM,
);
- $this->demcrypt = @mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
- $this->enmcrypt = @mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
+ $this->demcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
+ $this->enmcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], '');
// we need the $ecb mcrypt resource (only) in MODE_CFB with enableContinuousBuffer()
// to workaround mcrypt's broken ncfb implementation in buffered mode
// see: {@link http://phpseclib.sourceforge.net/cfb-demo.phps}
if ($this->mode == self::MODE_CFB) {
- $this->ecb = @mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, '');
+ $this->ecb = mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, '');
}
} // else should mcrypt_generic_deinit be called?
if ($this->mode == self::MODE_CFB) {
- @mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size));
+ mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size));
}
}
@@ -2627,7 +2643,7 @@ abstract class Base
*
* @see self::_setupInlineCrypt()
* @access private
- * @param $bytes
+ * @param string $bytes
* @return string
*/
function _hashInlineCryptFunction($bytes)
@@ -2696,4 +2712,13 @@ abstract class Base
return $safeint . '((fmod(floor($temp / 0x80000000), 2) & 1) << 31))';
}
}
+
+ /**
+ * Dummy error handler to suppress mcrypt errors
+ *
+ * @access private
+ */
+ function do_nothing()
+ {
+ }
}
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php
index a61668209..248b65ef7 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php
@@ -849,7 +849,6 @@ class Hash
* _sha256() adds multiple unsigned 32-bit integers. Since PHP doesn't support unsigned integers and since the
* possibility of overflow exists, care has to be taken. BigInteger could be used but this should be faster.
*
- * @param int $...
* @return int
* @see self::_sha256()
* @access private
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
index 72be6eeb1..811d039d3 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
@@ -537,7 +537,7 @@ class RSA
* @access public
* @param int $bits
* @param int $timeout
- * @param array $p
+ * @param array $partial
*/
function createKey($bits = 1024, $timeout = false, $partial = array())
{
@@ -716,7 +716,12 @@ class RSA
*
* @access private
* @see self::setPrivateKeyFormat()
- * @param string $RSAPrivateKey
+ * @param Math_BigInteger $n
+ * @param Math_BigInteger $e
+ * @param Math_BigInteger $d
+ * @param array<int,Math_BigInteger> $primes
+ * @param array<int,Math_BigInteger> $exponents
+ * @param array<int,Math_BigInteger> $coefficients
* @return string
*/
function _convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients)
@@ -997,8 +1002,9 @@ class RSA
*
* @access private
* @see self::setPublicKeyFormat()
- * @param string $RSAPrivateKey
- * @return string
+ * @param Math_BigInteger $n
+ * @param Math_BigInteger $e
+ * @return string|array<string,Math_BigInteger>
*/
function _convertPublicKey($n, $e)
{
@@ -1213,6 +1219,7 @@ class RSA
$length = $this->_decodeLength($temp);
switch ($this->_string_shift($temp, $length)) {
case "\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01": // rsaEncryption
+ case "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0A": // rsaPSS
break;
case "\x2a\x86\x48\x86\xf7\x0d\x01\x05\x03": // pbeWithMD5AndDES-CBC
/*
@@ -1539,6 +1546,8 @@ class RSA
return $components;
}
+
+ return false;
}
/**
@@ -1878,7 +1887,6 @@ class RSA
*
* @see self::getPublicKey()
* @access public
- * @param string $key
* @param int $type optional
*/
function getPublicKey($type = self::PUBLIC_FORMAT_PKCS8)
@@ -1936,7 +1944,6 @@ class RSA
*
* @see self::getPublicKey()
* @access public
- * @param string $key
* @param int $type optional
* @return mixed
*/
@@ -1961,8 +1968,7 @@ class RSA
*
* @see self::getPrivateKey()
* @access private
- * @param string $key
- * @param int $type optional
+ * @param int $mode optional
*/
function _getPrivatePublicKey($mode = self::PUBLIC_FORMAT_PKCS8)
{
@@ -2179,7 +2185,7 @@ class RSA
* of the hash function Hash) and 0.
*
* @access public
- * @param int $format
+ * @param int $sLen
*/
function setSaltLength($sLen)
{
@@ -2212,7 +2218,7 @@ class RSA
* See {@link http://tools.ietf.org/html/rfc3447#section-4.2 RFC3447#section-4.2}.
*
* @access private
- * @param string $x
+ * @param int|string|resource $x
* @return \phpseclib\Math\BigInteger
*/
function _os2ip($x)
@@ -2439,7 +2445,7 @@ class RSA
*
* @access private
* @param string $mgfSeed
- * @param int $mgfLen
+ * @param int $maskLen
* @return string
*/
function _mgf1($mgfSeed, $maskLen)
@@ -2912,6 +2918,59 @@ class RSA
}
/**
+ * EMSA-PKCS1-V1_5-ENCODE (without NULL)
+ *
+ * Quoting https://tools.ietf.org/html/rfc8017#page-65,
+ *
+ * "The parameters field associated with id-sha1, id-sha224, id-sha256,
+ * id-sha384, id-sha512, id-sha512/224, and id-sha512/256 should
+ * generally be omitted, but if present, it shall have a value of type
+ * NULL"
+ *
+ * @access private
+ * @param string $m
+ * @param int $emLen
+ * @return string
+ */
+ function _emsa_pkcs1_v1_5_encode_without_null($m, $emLen)
+ {
+ $h = $this->hash->hash($m);
+ if ($h === false) {
+ return false;
+ }
+
+ switch ($this->hashName) {
+ case 'sha1':
+ $t = pack('H*', '301f300706052b0e03021a0414');
+ break;
+ case 'sha256':
+ $t = pack('H*', '302f300b06096086480165030402010420');
+ break;
+ case 'sha384':
+ $t = pack('H*', '303f300b06096086480165030402020430');
+ break;
+ case 'sha512':
+ $t = pack('H*', '304f300b06096086480165030402030440');
+ break;
+ default:
+ return false;
+ }
+ $t.= $h;
+ $tLen = strlen($t);
+
+ if ($emLen < $tLen + 11) {
+ user_error('Intended encoded message length too short');
+ return false;
+ }
+
+ $ps = str_repeat(chr(0xFF), $emLen - $tLen - 3);
+
+ $em = "\0\1$ps\0$t";
+
+ return $em;
+ }
+
+ /**
* RSASSA-PKCS1-V1_5-SIGN
*
* See {@link http://tools.ietf.org/html/rfc3447#section-8.2.1 RFC3447#section-8.2.1}.
@@ -2948,6 +3007,7 @@ class RSA
*
* @access private
* @param string $m
+ * @param string $s
* @return string
*/
function _rsassa_pkcs1_v1_5_verify($m, $s)
@@ -2976,13 +3036,17 @@ class RSA
// EMSA-PKCS1-v1_5 encoding
$em2 = $this->_emsa_pkcs1_v1_5_encode($m, $this->k);
- if ($em2 === false) {
+ $em3 = $this->_emsa_pkcs1_v1_5_encode_without_null($m, $this->k);
+
+ if ($em2 === false && $em3 === false) {
user_error('RSA modulus too short');
return false;
}
// Compare
- return $this->_equals($em, $em2);
+
+ return ($em2 !== false && $this->_equals($em, $em2)) ||
+ ($em3 !== false && $this->_equals($em, $em3));
}
/**
@@ -3088,7 +3152,7 @@ class RSA
*
* @see self::encrypt()
* @access public
- * @param string $plaintext
+ * @param string $ciphertext
* @return string
*/
function decrypt($ciphertext)
diff --git a/vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php b/vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php
index 334d10faf..b6874d357 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php
@@ -203,8 +203,7 @@ class ANSI
/**
* Set the number of lines that should be logged past the terminal height
*
- * @param int $x
- * @param int $y
+ * @param int $history
* @access public
*/
function setHistory($history)
@@ -316,19 +315,20 @@ class ANSI
$mods = explode(';', $match[1]);
foreach ($mods as $mod) {
switch ($mod) {
- case 0: // Turn off character attributes
+ case '':
+ case '0': // Turn off character attributes
$attr_cell = clone $this->base_attr_cell;
break;
- case 1: // Turn bold mode on
+ case '1': // Turn bold mode on
$attr_cell->bold = true;
break;
- case 4: // Turn underline mode on
+ case '4': // Turn underline mode on
$attr_cell->underline = true;
break;
- case 5: // Turn blinking mode on
+ case '5': // Turn blinking mode on
$attr_cell->blink = true;
break;
- case 7: // Turn reverse video on
+ case '7': // Turn reverse video on
$attr_cell->reverse = !$attr_cell->reverse;
$temp = $attr_cell->background;
$attr_cell->background = $attr_cell->foreground;
@@ -341,23 +341,23 @@ class ANSI
$back = &$attr_cell->{ $attr_cell->reverse ? 'foreground' : 'background' };
switch ($mod) {
// @codingStandardsIgnoreStart
- case 30: $front = 'black'; break;
- case 31: $front = 'red'; break;
- case 32: $front = 'green'; break;
- case 33: $front = 'yellow'; break;
- case 34: $front = 'blue'; break;
- case 35: $front = 'magenta'; break;
- case 36: $front = 'cyan'; break;
- case 37: $front = 'white'; break;
-
- case 40: $back = 'black'; break;
- case 41: $back = 'red'; break;
- case 42: $back = 'green'; break;
- case 43: $back = 'yellow'; break;
- case 44: $back = 'blue'; break;
- case 45: $back = 'magenta'; break;
- case 46: $back = 'cyan'; break;
- case 47: $back = 'white'; break;
+ case '30': $front = 'black'; break;
+ case '31': $front = 'red'; break;
+ case '32': $front = 'green'; break;
+ case '33': $front = 'yellow'; break;
+ case '34': $front = 'blue'; break;
+ case '35': $front = 'magenta'; break;
+ case '36': $front = 'cyan'; break;
+ case '37': $front = 'white'; break;
+
+ case '40': $back = 'black'; break;
+ case '41': $back = 'red'; break;
+ case '42': $back = 'green'; break;
+ case '43': $back = 'yellow'; break;
+ case '44': $back = 'blue'; break;
+ case '45': $back = 'magenta'; break;
+ case '46': $back = 'cyan'; break;
+ case '47': $back = 'white'; break;
// @codingStandardsIgnoreEnd
default:
diff --git a/vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php b/vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php
index a304a000a..dc5b78f64 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php
@@ -235,7 +235,7 @@ class ASN1
$current = array('start' => $start);
$type = ord($encoded[$encoded_pos++]);
- $start++;
+ $startOffset = 1;
$constructed = ($type >> 5) & 1;
@@ -245,13 +245,20 @@ class ASN1
// process septets (since the eighth bit is ignored, it's not an octet)
do {
$temp = ord($encoded[$encoded_pos++]);
+ $startOffset++;
$loop = $temp >> 7;
$tag <<= 7;
- $tag |= $temp & 0x7F;
- $start++;
+ $temp &= 0x7F;
+ // "bits 7 to 1 of the first subsequent octet shall not all be zero"
+ if ($startOffset == 2 && $temp == 0) {
+ return false;
+ }
+ $tag |= $temp;
} while ($loop);
}
+ $start+= $startOffset;
+
// Length, as discussed in paragraph 8.1.3 of X.690-0207.pdf#page=13
$length = ord($encoded[$encoded_pos++]);
$start++;
@@ -344,13 +351,16 @@ class ASN1
switch ($tag) {
case self::TYPE_BOOLEAN:
// "The contents octets shall consist of a single octet." -- paragraph 8.2.1
- //if (strlen($content) != 1) {
- // return false;
- //}
+ if ($constructed || strlen($content) != 1) {
+ return false;
+ }
$current['content'] = (bool) ord($content[$content_pos]);
break;
case self::TYPE_INTEGER:
case self::TYPE_ENUMERATED:
+ if ($constructed) {
+ return false;
+ }
$current['content'] = new BigInteger(substr($content, $content_pos), -256);
break;
case self::TYPE_REAL: // not currently supported
@@ -370,15 +380,15 @@ class ASN1
$last = count($temp) - 1;
for ($i = 0; $i < $last; $i++) {
// all subtags should be bit strings
- //if ($temp[$i]['type'] != self::TYPE_BIT_STRING) {
- // return false;
- //}
+ if ($temp[$i]['type'] != self::TYPE_BIT_STRING) {
+ return false;
+ }
$current['content'].= substr($temp[$i]['content'], 1);
}
// all subtags should be bit strings
- //if ($temp[$last]['type'] != self::TYPE_BIT_STRING) {
- // return false;
- //}
+ if ($temp[$last]['type'] != self::TYPE_BIT_STRING) {
+ return false;
+ }
$current['content'] = $temp[$last]['content'][0] . $current['content'] . substr($temp[$i]['content'], 1);
}
break;
@@ -395,9 +405,9 @@ class ASN1
}
$content_pos += $temp['length'];
// all subtags should be octet strings
- //if ($temp['type'] != self::TYPE_OCTET_STRING) {
- // return false;
- //}
+ if ($temp['type'] != self::TYPE_OCTET_STRING) {
+ return false;
+ }
$current['content'].= $temp['content'];
$length+= $temp['length'];
}
@@ -408,12 +418,15 @@ class ASN1
break;
case self::TYPE_NULL:
// "The contents octets shall not contain any octets." -- paragraph 8.8.2
- //if (strlen($content)) {
- // return false;
- //}
+ if ($constructed || strlen($content)) {
+ return false;
+ }
break;
case self::TYPE_SEQUENCE:
case self::TYPE_SET:
+ if (!$constructed) {
+ return false;
+ }
$offset = 0;
$current['content'] = array();
$content_len = strlen($content);
@@ -434,7 +447,13 @@ class ASN1
}
break;
case self::TYPE_OBJECT_IDENTIFIER:
+ if ($constructed) {
+ return false;
+ }
$current['content'] = $this->_decodeOID(substr($content, $content_pos));
+ if ($current['content'] === false) {
+ return false;
+ }
break;
/* Each character string type shall be encoded as if it had been declared:
[UNIVERSAL x] IMPLICIT OCTET STRING
@@ -464,12 +483,20 @@ class ASN1
case self::TYPE_UTF8_STRING:
// ????
case self::TYPE_BMP_STRING:
+ if ($constructed) {
+ return false;
+ }
$current['content'] = substr($content, $content_pos);
break;
case self::TYPE_UTC_TIME:
case self::TYPE_GENERALIZED_TIME:
+ if ($constructed) {
+ return false;
+ }
$current['content'] = $this->_decodeTime(substr($content, $content_pos), $tag);
+ break;
default:
+ return false;
}
$start+= $length;
@@ -790,7 +817,7 @@ class ASN1
*
* @param string $source
* @param string $mapping
- * @param int $idx
+ * @param array $special
* @return string
* @access public
*/
@@ -806,6 +833,7 @@ class ASN1
* @param string $source
* @param string $mapping
* @param int $idx
+ * @param array $special
* @return string
* @access private
*/
@@ -1126,6 +1154,11 @@ class ASN1
$oid = array();
$pos = 0;
$len = strlen($content);
+
+ if (ord($content[$len - 1]) & 0x80) {
+ return false;
+ }
+
$n = new BigInteger();
while ($pos < $len) {
$temp = ord($content[$pos++]);
@@ -1161,7 +1194,7 @@ class ASN1
* Called by _encode_der()
*
* @access private
- * @param string $content
+ * @param string $source
* @return string
*/
function _encodeOID($source)
diff --git a/vendor/phpseclib/phpseclib/phpseclib/File/X509.php b/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
index ddbc61595..7b1b1cfad 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
@@ -1608,7 +1608,7 @@ class X509
* Map extension values from octet string to extension-specific internal
* format.
*
- * @param array ref $root
+ * @param array $root (by reference)
* @param string $path
* @param object $asn1
* @access private
@@ -1661,7 +1661,7 @@ class X509
* Map extension values from extension-specific internal format to
* octet string.
*
- * @param array ref $root
+ * @param array $root (by reference)
* @param string $path
* @param object $asn1
* @access private
@@ -1727,7 +1727,7 @@ class X509
* Map attribute values from ANY type to attribute-specific internal
* format.
*
- * @param array ref $root
+ * @param array $root (by reference)
* @param string $path
* @param object $asn1
* @access private
@@ -1768,7 +1768,7 @@ class X509
* Map attribute values from attribute-specific internal format to
* ANY type.
*
- * @param array ref $root
+ * @param array $root (by reference)
* @param string $path
* @param object $asn1
* @access private
@@ -1811,7 +1811,7 @@ class X509
* Map DN values from ANY type to DN-specific internal
* format.
*
- * @param array ref $root
+ * @param array $root (by reference)
* @param string $path
* @param object $asn1
* @access private
@@ -1841,7 +1841,7 @@ class X509
* Map DN values from DN-specific internal format to
* ANY type.
*
- * @param array ref $root
+ * @param array $root (by reference)
* @param string $path
* @param object $asn1
* @access private
@@ -3195,7 +3195,8 @@ class X509
/**
* Load a Certificate Signing Request
*
- * @param string $csr
+ * @param string|array $csr
+ * @param int $mode
* @access public
* @return mixed
*/
@@ -3332,7 +3333,7 @@ class X509
*
* https://developer.mozilla.org/en-US/docs/HTML/Element/keygen
*
- * @param string $csr
+ * @param string|array $spkac
* @access public
* @return mixed
*/
@@ -3403,7 +3404,7 @@ class X509
/**
* Save a SPKAC CSR request
*
- * @param array $csr
+ * @param string|array $spkac
* @param int $format optional
* @access public
* @return string
@@ -3447,6 +3448,7 @@ class X509
* Load a Certificate Revocation List
*
* @param string $crl
+ * @param int $mode
* @access public
* @return mixed
*/
@@ -4043,8 +4045,7 @@ class X509
/**
* X.509 certificate signing helper function.
*
- * @param object $key
- * @param \phpseclib\File\X509 $subject
+ * @param \phpseclib\File\X509 $key
* @param string $signatureAlgorithm
* @access public
* @return mixed
@@ -4119,7 +4120,7 @@ class X509
* Set Serial Number
*
* @param string $serial
- * @param $base optional
+ * @param int $base optional
* @access public
*/
function setSerialNumber($serial, $base = -256)
@@ -4782,7 +4783,6 @@ class X509
* Set the IP Addresses's which the cert is to be valid for
*
* @access public
- * @param string $ipAddress optional
*/
function setIPAddress()
{
@@ -5054,11 +5054,16 @@ class X509
* subject=/O=organization/OU=org unit/CN=common name
* issuer=/O=organization/CN=common name
*/
- $temp = preg_replace('#.*?^-+[^-]+-+[\r\n ]*$#ms', '', $str, 1);
- // remove the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- stuff
- $temp = preg_replace('#-+[^-]+-+#', '', $temp);
+ if (strlen($str) > ini_get('pcre.backtrack_limit')) {
+ $temp = $str;
+ } else {
+ $temp = preg_replace('#.*?^-+[^-]+-+[\r\n ]*$#ms', '', $str, 1);
+ $temp = preg_replace('#-+END.*[\r\n ]*.*#ms', '', $str, 1);
+ }
// remove new lines
$temp = str_replace(array("\r", "\n", ' '), '', $temp);
+ // remove the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- stuff
+ $temp = preg_replace('#^-+[^-]+-+|-+[^-]+-+$#', '', $temp);
$temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false;
return $temp != false ? $temp : $str;
}
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php b/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
index e7f664670..fc24b9145 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
@@ -243,7 +243,7 @@ class BigInteger
* ?>
* </code>
*
- * @param $x base-10 number or base-$base number if $base set.
+ * @param int|string|resource $x base-10 number or base-$base number if $base set.
* @param int $base
* @return \phpseclib\Math\BigInteger
* @access public
@@ -658,11 +658,11 @@ class BigInteger
{
$hex = $this->toHex($twos_compliment);
$bits = '';
- for ($i = strlen($hex) - 8, $start = strlen($hex) & 7; $i >= $start; $i-=8) {
- $bits = str_pad(decbin(hexdec(substr($hex, $i, 8))), 32, '0', STR_PAD_LEFT) . $bits;
+ for ($i = strlen($hex) - 6, $start = strlen($hex) % 6; $i >= $start; $i-=6) {
+ $bits = str_pad(decbin(hexdec(substr($hex, $i, 6))), 24, '0', STR_PAD_LEFT) . $bits;
}
if ($start) { // hexdec('') == 0
- $bits = str_pad(decbin(hexdec(substr($hex, 0, $start))), 8, '0', STR_PAD_LEFT) . $bits;
+ $bits = str_pad(decbin(hexdec(substr($hex, 0, $start))), 8 * $start, '0', STR_PAD_LEFT) . $bits;
}
$result = $this->precision > 0 ? substr($bits, -$this->precision) : ltrim($bits, '0');
@@ -1994,7 +1994,7 @@ class BigInteger
*
* @see self::_slidingWindow()
* @access private
- * @param \phpseclib\Math\BigInteger
+ * @param \phpseclib\Math\BigInteger $n
* @return \phpseclib\Math\BigInteger
*/
function _mod2($n)
@@ -2688,7 +2688,7 @@ class BigInteger
* Note how the same comparison operator is used. If you want to test for equality, use $x->equals($y).
*
* @param \phpseclib\Math\BigInteger $y
- * @return int < 0 if $this is less than $y; > 0 if $this is greater than $y, and 0 if they are equal.
+ * @return int that is < 0 if $this is less than $y; > 0 if $this is greater than $y, and 0 if they are equal.
* @access public
* @see self::equals()
* @internal Could return $this->subtract($x), but that's not as fast as what we do do.
@@ -3090,7 +3090,7 @@ class BigInteger
*
* Byte length is equal to $length. Uses \phpseclib\Crypt\Random if it's loaded and mt_rand if it's not.
*
- * @param int $length
+ * @param int $size
* @return \phpseclib\Math\BigInteger
* @access private
*/
@@ -3557,7 +3557,7 @@ class BigInteger
*
* Removes leading zeros and truncates (if necessary) to maintain the appropriate precision
*
- * @param \phpseclib\Math\BigInteger
+ * @param \phpseclib\Math\BigInteger $result
* @return \phpseclib\Math\BigInteger
* @see self::_trim()
* @access private
@@ -3634,8 +3634,8 @@ class BigInteger
/**
* Array Repeat
*
- * @param $input Array
- * @param $multiplier mixed
+ * @param array $input
+ * @param mixed $multiplier
* @return array
* @access private
*/
@@ -3649,8 +3649,8 @@ class BigInteger
*
* Shifts binary strings $shift bits, essentially multiplying by 2**$shift.
*
- * @param $x String
- * @param $shift Integer
+ * @param string $x (by reference)
+ * @param int $shift
* @return string
* @access private
*/
@@ -3678,8 +3678,8 @@ class BigInteger
*
* Shifts binary strings $shift bits, essentially dividing by 2**$shift and returning the remainder.
*
- * @param $x String
- * @param $shift Integer
+ * @param string $x (by referenc)
+ * @param int $shift
* @return string
* @access private
*/
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
index 7c821377b..34741831b 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
@@ -260,6 +260,16 @@ class SFTP extends SSH2
var $requestBuffer = array();
/**
+ * Preserve timestamps on file downloads / uploads
+ *
+ * @see self::get()
+ * @see self::put()
+ * @var bool
+ * @access private
+ */
+ var $preserveTime = false;
+
+ /**
* Default Constructor.
*
* Connects to an SFTP server
@@ -406,7 +416,6 @@ class SFTP extends SSH2
* Login
*
* @param string $username
- * @param string $password
* @return bool
* @access public
*/
@@ -1015,7 +1024,7 @@ class SFTP extends SSH2
uasort($contents, array(&$this, '_comparator'));
}
- return $raw ? $contents : array_keys($contents);
+ return $raw ? $contents : array_map('strval', array_keys($contents));
}
/**
@@ -1217,7 +1226,7 @@ class SFTP extends SSH2
*
* Mainly used by file_exists
*
- * @param string $dir
+ * @param string $path
* @return mixed
* @access private
*/
@@ -1772,6 +1781,8 @@ class SFTP extends SSH2
* Creates a directory.
*
* @param string $dir
+ * @param int $mode
+ * @param bool $recursive
* @return bool
* @access public
*/
@@ -1804,6 +1815,7 @@ class SFTP extends SSH2
* Helper function for directory creation
*
* @param string $dir
+ * @param int $mode
* @return bool
* @access private
*/
@@ -2075,7 +2087,14 @@ class SFTP extends SSH2
}
if ($mode & self::SOURCE_LOCAL_FILE) {
- fclose($fp);
+ if ($this->preserveTime) {
+ $stat = fstat($fp);
+ $this->touch($remote_file, $stat['mtime'], $stat['atime']);
+ }
+
+ if (isset($fp) && is_resource($fp)) {
+ fclose($fp);
+ }
}
return $this->_close_handle($handle);
@@ -2198,7 +2217,7 @@ class SFTP extends SSH2
$res_offset = $stat['size'];
} else {
$res_offset = 0;
- if ($local_file !== false) {
+ if ($local_file !== false && !is_callable($local_file)) {
$fp = fopen($local_file, 'wb');
if (!$fp) {
return false;
@@ -2208,7 +2227,7 @@ class SFTP extends SSH2
}
}
- $fclose_check = $local_file !== false && !is_resource($local_file);
+ $fclose_check = $local_file !== false && !is_callable($local_file) && !is_resource($local_file);
$start = $offset;
$read = 0;
@@ -2229,9 +2248,6 @@ class SFTP extends SSH2
}
$packet = null;
$read+= $packet_size;
- if (is_callable($progressCallback)) {
- call_user_func($progressCallback, $read);
- }
$i++;
}
@@ -2258,9 +2274,14 @@ class SFTP extends SSH2
$offset+= strlen($temp);
if ($local_file === false) {
$content.= $temp;
+ } elseif (is_callable($local_file)) {
+ $local_file($temp);
} else {
fputs($fp, $temp);
}
+ if (is_callable($progressCallback)) {
+ call_user_func($progressCallback, $offset);
+ }
$temp = null;
break;
case NET_SFTP_STATUS:
@@ -2292,6 +2313,11 @@ class SFTP extends SSH2
if ($fclose_check) {
fclose($fp);
+
+ if ($this->preserveTime) {
+ $stat = $this->stat($remote_file);
+ touch($local_file, $stat['mtime'], $stat['atime']);
+ }
}
if (!$this->_close_handle($handle)) {
@@ -2713,6 +2739,7 @@ class SFTP extends SSH2
*
* @param string $path
* @param string $prop
+ * @param mixed $type
* @return mixed
* @access private
*/
@@ -2953,6 +2980,7 @@ class SFTP extends SSH2
*
* @param int $type
* @param string $data
+ * @param int $request_id
* @see self::_get_sftp_packet()
* @see self::_send_channel_packet()
* @return bool
@@ -2960,6 +2988,10 @@ class SFTP extends SSH2
*/
function _send_sftp_packet($type, $data, $request_id = 1)
{
+ // in SSH2.php the timeout is cumulative per function call. eg. exec() will
+ // timeout after 10s. but for SFTP.php it's cumulative per packet
+ $this->curTimeout = $this->timeout;
+
$packet = $this->use_request_id ?
pack('NCNa*', strlen($data) + 5, $type, $request_id, $data) :
pack('NCa*', strlen($data) + 1, $type, $data);
@@ -2972,9 +3004,17 @@ class SFTP extends SSH2
$packet_type = '-> ' . $this->packet_types[$type] .
' (' . round($stop - $start, 4) . 's)';
if (NET_SFTP_LOGGING == self::LOG_REALTIME) {
- echo "<pre>\r\n" . $this->_format_log(array($data), array($packet_type)) . "\r\n</pre>\r\n";
- flush();
- ob_flush();
+ switch (PHP_SAPI) {
+ case 'cli':
+ $start = $stop = "\r\n";
+ break;
+ default:
+ $start = '<pre>';
+ $stop = '</pre>';
+ }
+ echo $start . $this->_format_log(array($data), array($packet_type)) . $stop;
+ @flush();
+ @ob_flush();
} else {
$this->packet_type_log[] = $packet_type;
if (NET_SFTP_LOGGING == self::LOG_COMPLEX) {
@@ -3081,9 +3121,17 @@ class SFTP extends SSH2
$packet_type = '<- ' . $this->packet_types[$this->packet_type] .
' (' . round($stop - $start, 4) . 's)';
if (NET_SFTP_LOGGING == self::LOG_REALTIME) {
- echo "<pre>\r\n" . $this->_format_log(array($packet), array($packet_type)) . "\r\n</pre>\r\n";
- flush();
- ob_flush();
+ switch (PHP_SAPI) {
+ case 'cli':
+ $start = $stop = "\r\n";
+ break;
+ default:
+ $start = '<pre>';
+ $stop = '</pre>';
+ }
+ echo $start . $this->_format_log(array($packet), array($packet_type)) . $stop;
+ @flush();
+ @ob_flush();
} else {
$this->packet_type_log[] = $packet_type;
if (NET_SFTP_LOGGING == self::LOG_COMPLEX) {
@@ -3176,4 +3224,24 @@ class SFTP extends SSH2
$this->pwd = false;
parent::_disconnect($reason);
}
+
+ /**
+ * Enable Date Preservation
+ *
+ * @access public
+ */
+ function enableDatePreservation()
+ {
+ $this->preserveTime = true;
+ }
+
+ /**
+ * Disable Date Preservation
+ *
+ * @access public
+ */
+ function disableDatePreservation()
+ {
+ $this->preserveTime = false;
+ }
}
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php
index d2c4425de..ec9e5841a 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php
@@ -410,7 +410,7 @@ class Stream
{
switch ($whence) {
case SEEK_SET:
- if ($offset >= $this->size || $offset < 0) {
+ if ($offset < 0) {
return false;
}
break;
@@ -447,7 +447,9 @@ class Stream
// and https://github.com/php/php-src/blob/master/main/php_streams.h#L592
switch ($option) {
case 1: // PHP_STREAM_META_TOUCH
- return $this->sftp->touch($path, $var[0], $var[1]);
+ $time = isset($var[0]) ? $var[0] : null;
+ $atime = isset($var[1]) ? $var[1] : null;
+ return $this->sftp->touch($path, $time, $atime);
case 2: // PHP_STREAM_OWNER_NAME
case 3: // PHP_STREAM_GROUP_NAME
return false;
@@ -626,7 +628,6 @@ class Stream
* $options. What does 8 correspond to?
*
* @param string $path
- * @param int $mode
* @param int $options
* @return bool
* @access public
@@ -768,8 +769,8 @@ class Stream
* If NET_SFTP_STREAM_LOGGING is defined all calls will be output on the screen and then (regardless of whether or not
* NET_SFTP_STREAM_LOGGING is enabled) the parameters will be passed through to the appropriate method.
*
- * @param string
- * @param array
+ * @param string $name
+ * @param array $arguments
* @return mixed
* @access public
*/
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php
index ff48d5436..e372b8b92 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php
@@ -812,6 +812,7 @@ class SSH1
* @see self::interactiveRead()
* @see self::interactiveWrite()
* @param string $cmd
+ * @param bool $block
* @return mixed
* @access public
*/
@@ -1385,7 +1386,6 @@ class SSH1
* named constants from it, using the value as the name of the constant and the index as the value of the constant.
* If any of the constants that would be defined already exists, none of the constants will be defined.
*
- * @param array $array
* @access private
*/
function _define_array()
@@ -1584,7 +1584,8 @@ class SSH1
*
* Makes sure that only the last 1MB worth of packets will be logged
*
- * @param string $data
+ * @param int $protocol_flags
+ * @param string $message
* @access private
*/
function _append_log($protocol_flags, $message)
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
index ba83c9d0e..f8f8dcfde 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
@@ -688,6 +688,14 @@ class SSH2
var $curTimeout;
/**
+ * Keep Alive Interval
+ *
+ * @see self::setKeepAlive()
+ * @access private
+ */
+ var $keepAlive;
+
+ /**
* Real-time log file pointer
*
* @see self::_append_log()
@@ -1538,6 +1546,32 @@ class SSH2
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
}
+ $server_host_key_algorithm = $this->_array_intersect_first($server_host_key_algorithms, $this->server_host_key_algorithms);
+ if ($server_host_key_algorithm === false) {
+ user_error('No compatible server host key algorithms found');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ }
+
+ $mac_algorithm_in = $this->_array_intersect_first($s2c_mac_algorithms, $this->mac_algorithms_server_to_client);
+ if ($mac_algorithm_in === false) {
+ user_error('No compatible server to client message authentication algorithms found');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ }
+
+ $compression_algorithm_out = $this->_array_intersect_first($c2s_compression_algorithms, $this->compression_algorithms_client_to_server);
+ if ($compression_algorithm_out === false) {
+ user_error('No compatible client to server compression algorithms found');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ }
+ //$this->decompress = $compression_algorithm_out == 'zlib';
+
+ $compression_algorithm_in = $this->_array_intersect_first($s2c_compression_algorithms, $this->compression_algorithms_client_to_server);
+ if ($compression_algorithm_in === false) {
+ user_error('No compatible server to client compression algorithms found');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ }
+ //$this->compress = $compression_algorithm_in == 'zlib';
+
// Only relevant in diffie-hellman-group-exchange-sha{1,256}, otherwise empty.
$exchange_hash_rfc4419 = '';
@@ -1773,12 +1807,6 @@ class SSH2
$this->session_id = $this->exchange_hash;
}
- $server_host_key_algorithm = $this->_array_intersect_first($server_host_key_algorithms, $this->server_host_key_algorithms);
- if ($server_host_key_algorithm === false) {
- user_error('No compatible server host key algorithms found');
- return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
- }
-
switch ($server_host_key_algorithm) {
case 'ssh-dss':
$expected_key_format = 'ssh-dss';
@@ -1903,14 +1931,14 @@ class SSH2
$this->decrypt->decrypt(str_repeat("\0", 1536));
}
- $mac_algorithm = $this->_array_intersect_first($c2s_mac_algorithms, $this->mac_algorithms_client_to_server);
- if ($mac_algorithm === false) {
+ $mac_algorithm_out = $this->_array_intersect_first($c2s_mac_algorithms, $this->mac_algorithms_client_to_server);
+ if ($mac_algorithm_out === false) {
user_error('No compatible client to server message authentication algorithms found');
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
}
$createKeyLength = 0; // ie. $mac_algorithm == 'none'
- switch ($mac_algorithm) {
+ switch ($mac_algorithm_out) {
case 'hmac-sha2-256':
$this->hmac_create = new Hash('sha256');
$createKeyLength = 32;
@@ -1931,17 +1959,11 @@ class SSH2
$this->hmac_create = new Hash('md5-96');
$createKeyLength = 16;
}
- $this->hmac_create->name = $mac_algorithm;
-
- $mac_algorithm = $this->_array_intersect_first($s2c_mac_algorithms, $this->mac_algorithms_server_to_client);
- if ($mac_algorithm === false) {
- user_error('No compatible server to client message authentication algorithms found');
- return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
- }
+ $this->hmac_create->name = $mac_algorithm_out;
$checkKeyLength = 0;
$this->hmac_size = 0;
- switch ($mac_algorithm) {
+ switch ($mac_algorithm_in) {
case 'hmac-sha2-256':
$this->hmac_check = new Hash('sha256');
$checkKeyLength = 32;
@@ -1967,7 +1989,7 @@ class SSH2
$checkKeyLength = 16;
$this->hmac_size = 12;
}
- $this->hmac_check->name = $mac_algorithm;
+ $this->hmac_check->name = $mac_algorithm_in;
$key = $kexHash->hash($keyBytes . $this->exchange_hash . 'E' . $this->session_id);
while ($createKeyLength > strlen($key)) {
@@ -1981,20 +2003,6 @@ class SSH2
}
$this->hmac_check->setKey(substr($key, 0, $checkKeyLength));
- $compression_algorithm = $this->_array_intersect_first($c2s_compression_algorithms, $this->compression_algorithms_client_to_server);
- if ($compression_algorithm === false) {
- user_error('No compatible client to server compression algorithms found');
- return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
- }
- //$this->decompress = $compression_algorithm == 'zlib';
-
- $compression_algorithm = $this->_array_intersect_first($s2c_compression_algorithms, $this->compression_algorithms_client_to_server);
- if ($compression_algorithm === false) {
- user_error('No compatible server to client compression algorithms found');
- return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
- }
- //$this->compress = $compression_algorithm == 'zlib';
-
return true;
}
@@ -2112,8 +2120,6 @@ class SSH2
* The $password parameter can be a plaintext password, a \phpseclib\Crypt\RSA object or an array
*
* @param string $username
- * @param mixed $password
- * @param mixed $...
* @return bool
* @see self::_login()
* @access public
@@ -2125,11 +2131,13 @@ class SSH2
// try logging with 'none' as an authentication method first since that's what
// PuTTY does
- if ($this->_login($username)) {
- return true;
- }
- if (count($args) == 1) {
- return false;
+ if (substr($this->server_identifier, 0, 13) != 'SSH-2.0-CoreFTP') {
+ if ($this->_login($username)) {
+ return true;
+ }
+ if (count($args) == 1) {
+ return false;
+ }
}
return call_user_func_array(array(&$this, '_login'), $args);
}
@@ -2138,8 +2146,6 @@ class SSH2
* Login Helper
*
* @param string $username
- * @param mixed $password
- * @param mixed $...
* @return bool
* @see self::_login_helper()
* @access private
@@ -2400,7 +2406,6 @@ class SSH2
/**
* Handle the keyboard-interactive requests / responses.
*
- * @param string $responses...
* @return bool
* @access private
*/
@@ -2545,7 +2550,7 @@ class SSH2
* Login with an RSA private key
*
* @param string $username
- * @param \phpseclib\Crypt\RSA $password
+ * @param \phpseclib\Crypt\RSA $privatekey
* @return bool
* @access private
* @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis}
@@ -2629,6 +2634,13 @@ class SSH2
// we'll just take it on faith that the public key blob and the public key algorithm name are as
// they should be
$this->_updateLogHistory('UNKNOWN (60)', 'NET_SSH2_MSG_USERAUTH_PK_OK');
+ break;
+ case NET_SSH2_MSG_USERAUTH_SUCCESS:
+ $this->bitmap |= self::MASK_LOGIN;
+ return true;
+ default:
+ user_error('Unexpected response to publickey authentication pt 1');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
}
$packet = $part1 . chr(1) . $part2;
@@ -2663,7 +2675,8 @@ class SSH2
return true;
}
- return false;
+ user_error('Unexpected response to publickey authentication pt 2');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
}
/**
@@ -2681,6 +2694,19 @@ class SSH2
}
/**
+ * Set Keep Alive
+ *
+ * Sends an SSH2_MSG_IGNORE message every x seconds, if x is a positive non-zero number.
+ *
+ * @param int $interval
+ * @access public
+ */
+ function setKeepAlive($interval)
+ {
+ $this->keepAlive = $interval;
+ }
+
+ /**
* Get the output from stdError
*
* @access public
@@ -2909,28 +2935,6 @@ class SSH2
return false;
}
- $response = $this->_get_binary_packet();
- if ($response === false) {
- $this->bitmap = 0;
- user_error('Connection closed by server');
- return false;
- }
-
- if (!strlen($response)) {
- return false;
- }
- list(, $type) = unpack('C', $this->_string_shift($response, 1));
-
- switch ($type) {
- case NET_SSH2_MSG_CHANNEL_SUCCESS:
- // if a pty can't be opened maybe commands can still be executed
- case NET_SSH2_MSG_CHANNEL_FAILURE:
- break;
- default:
- user_error('Unable to request pseudo-terminal');
- return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
- }
-
$packet = pack(
'CNNa*C',
NET_SSH2_MSG_CHANNEL_REQUEST,
@@ -2943,14 +2947,7 @@ class SSH2
return false;
}
- $this->channel_status[self::CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_REQUEST;
-
- $response = $this->_get_channel_packet(self::CHANNEL_SHELL);
- if ($response === false) {
- return false;
- }
-
- $this->channel_status[self::CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_DATA;
+ $this->channel_status[self::CHANNEL_SHELL] = NET_SSH2_MSG_IGNORE;
$this->bitmap |= self::MASK_SHELL;
@@ -3318,6 +3315,54 @@ class SSH2
*/
function _get_binary_packet($skip_channel_filter = false)
{
+ if ($skip_channel_filter) {
+ $read = array($this->fsock);
+ $write = $except = null;
+
+ if ($this->curTimeout <= 0) {
+ if ($this->keepAlive <= 0) {
+ @stream_select($read, $write, $except, null);
+ } else {
+ if (!@stream_select($read, $write, $except, $this->keepAlive) && !count($read)) {
+ $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_IGNORE, 0));
+ return $this->_get_binary_packet(true);
+ }
+ }
+ } else {
+ if ($this->curTimeout < 0) {
+ $this->is_timeout = true;
+ return true;
+ }
+
+ $read = array($this->fsock);
+ $write = $except = null;
+
+ $start = microtime(true);
+
+ if ($this->keepAlive > 0 && $this->keepAlive < $this->curTimeout) {
+ if (!@stream_select($read, $write, $except, $this->keepAlive) && !count($read)) {
+ $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_IGNORE, 0));
+ $elapsed = microtime(true) - $start;
+ $this->curTimeout-= $elapsed;
+ return $this->_get_binary_packet(true);
+ }
+ $elapsed = microtime(true) - $start;
+ $this->curTimeout-= $elapsed;
+ }
+
+ $sec = floor($this->curTimeout);
+ $usec = 1000000 * ($this->curTimeout - $sec);
+
+ // on windows this returns a "Warning: Invalid CRT parameters detected" error
+ if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) {
+ $this->is_timeout = true;
+ return true;
+ }
+ $elapsed = microtime(true) - $start;
+ $this->curTimeout-= $elapsed;
+ }
+ }
+
if (!is_resource($this->fsock) || feof($this->fsock)) {
$this->bitmap = 0;
user_error('Connection closed prematurely');
@@ -3469,9 +3514,19 @@ class SSH2
// only called when we've already logged in
if (($this->bitmap & self::MASK_CONNECTED) && $this->isAuthenticated()) {
switch (ord($payload[0])) {
+ case NET_SSH2_MSG_CHANNEL_REQUEST:
+ if (strlen($payload) == 31) {
+ extract(unpack('cpacket_type/Nchannel/Nlength', $payload));
+ if (substr($payload, 9, $length) == 'keepalive@openssh.com' && isset($this->server_channels[$channel])) {
+ if (ord(substr($payload, 9 + $length))) { // want reply
+ $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_SUCCESS, $this->server_channels[$channel]));
+ }
+ $payload = $this->_get_binary_packet($skip_channel_filter);
+ }
+ }
+ break;
case NET_SSH2_MSG_CHANNEL_DATA:
case NET_SSH2_MSG_CHANNEL_EXTENDED_DATA:
- case NET_SSH2_MSG_CHANNEL_REQUEST:
case NET_SSH2_MSG_CHANNEL_CLOSE:
case NET_SSH2_MSG_CHANNEL_EOF:
if (!$skip_channel_filter && !empty($this->server_channels)) {
@@ -3651,8 +3706,9 @@ class SSH2
*
* Returns the data as a string if it's available and false if not.
*
- * @param $client_channel
- * @return mixed
+ * @param int $client_channel
+ * @param bool $skip_extended
+ * @return mixed|bool
* @access private
*/
function _get_channel_packet($client_channel, $skip_extended = false)
@@ -3666,36 +3722,13 @@ class SSH2
$response = $this->binary_packet_buffer;
$this->binary_packet_buffer = false;
} else {
- $read = array($this->fsock);
- $write = $except = null;
-
- if (!$this->curTimeout) {
- @stream_select($read, $write, $except, null);
- } else {
- if ($this->curTimeout < 0) {
- $this->is_timeout = true;
- return true;
- }
-
- $read = array($this->fsock);
- $write = $except = null;
-
- $start = microtime(true);
- $sec = floor($this->curTimeout);
- $usec = 1000000 * ($this->curTimeout - $sec);
- // on windows this returns a "Warning: Invalid CRT parameters detected" error
- if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) {
- $this->is_timeout = true;
- if ($client_channel == self::CHANNEL_EXEC && !$this->request_pty) {
- $this->_close_channel($client_channel);
- }
- return true;
+ $response = $this->_get_binary_packet(true);
+ if ($response === true && $this->is_timeout) {
+ if ($client_channel == self::CHANNEL_EXEC && !$this->request_pty) {
+ $this->_close_channel($client_channel);
}
- $elapsed = microtime(true) - $start;
- $this->curTimeout-= $elapsed;
+ return true;
}
-
- $response = $this->_get_binary_packet(true);
if ($response === false) {
$this->bitmap = 0;
user_error('Connection closed by server');
@@ -3843,6 +3876,16 @@ class SSH2
return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
}
break;
+ case NET_SSH2_MSG_IGNORE:
+ switch ($type) {
+ case NET_SSH2_MSG_CHANNEL_SUCCESS:
+ //$this->channel_status[$channel] = NET_SSH2_MSG_CHANNEL_DATA;
+ continue 3;
+ case NET_SSH2_MSG_CHANNEL_FAILURE:
+ user_error('Error opening channel');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
+ }
+ break;
case NET_SSH2_MSG_CHANNEL_REQUEST:
switch ($type) {
case NET_SSH2_MSG_CHANNEL_SUCCESS:
@@ -3862,6 +3905,10 @@ class SSH2
switch ($type) {
case NET_SSH2_MSG_CHANNEL_DATA:
+ //if ($this->channel_status[$channel] == NET_SSH2_MSG_IGNORE) {
+ // $this->channel_status[$channel] = NET_SSH2_MSG_CHANNEL_DATA;
+ //}
+
/*
if ($channel == self::CHANNEL_EXEC) {
// SCP requires null packets, such as this, be sent. further, in the case of the ssh.com SSH server
@@ -3962,7 +4009,7 @@ class SSH2
$packet.= $hmac;
$start = microtime(true);
- $result = strlen($packet) == fputs($this->fsock, $packet);
+ $result = strlen($packet) == @fputs($this->fsock, $packet);
$stop = microtime(true);
if (defined('NET_SSH2_LOGGING')) {
@@ -3982,7 +4029,8 @@ class SSH2
*
* Makes sure that only the last 1MB worth of packets will be logged
*
- * @param string $data
+ * @param string $message_number
+ * @param string $message
* @access private
*/
function _append_log($message_number, $message)
@@ -4187,7 +4235,6 @@ class SSH2
* named constants from it, using the value as the name of the constant and the index as the value of the constant.
* If any of the constants that would be defined already exists, none of the constants will be defined.
*
- * @param array $array
* @access private
*/
function _define_array()
@@ -4603,11 +4650,15 @@ class SSH2
//'none' // OPTIONAL no encryption; NOT RECOMMENDED
);
- $engines = array(
- Base::ENGINE_OPENSSL,
- Base::ENGINE_MCRYPT,
- Base::ENGINE_INTERNAL
- );
+ if ($this->crypto_engine) {
+ $engines = array($this->crypto_engine);
+ } else {
+ $engines = array(
+ Base::ENGINE_OPENSSL,
+ Base::ENGINE_MCRYPT,
+ Base::ENGINE_INTERNAL
+ );
+ }
$ciphers = array();
foreach ($engines as $engine) {
diff --git a/vendor/splitbrain/php-archive/.gitignore b/vendor/splitbrain/php-archive/.gitignore
index e11729e19..be66c59e6 100644
--- a/vendor/splitbrain/php-archive/.gitignore
+++ b/vendor/splitbrain/php-archive/.gitignore
@@ -5,4 +5,5 @@ vendor/
composer.lock
apigen.phar
docs/
-nbproject/ \ No newline at end of file
+nbproject/
+.phpunit.result.cache
diff --git a/vendor/splitbrain/php-archive/README.md b/vendor/splitbrain/php-archive/README.md
index f18764b61..840148c56 100644
--- a/vendor/splitbrain/php-archive/README.md
+++ b/vendor/splitbrain/php-archive/README.md
@@ -6,8 +6,6 @@ needed for compression). It can create new files or extract existing ones.
To keep things simple, the modification (adding or removing files) of existing archives is not supported.
-[![Build Status](https://travis-ci.org/splitbrain/php-archive.svg)](https://travis-ci.org/splitbrain/php-archive)
-
Install
-------
diff --git a/vendor/splitbrain/php-archive/composer.json b/vendor/splitbrain/php-archive/composer.json
index 8102838fb..589ab0df4 100644
--- a/vendor/splitbrain/php-archive/composer.json
+++ b/vendor/splitbrain/php-archive/composer.json
@@ -20,7 +20,7 @@
},
"require-dev": {
- "phpunit/phpunit": "^4.8",
+ "phpunit/phpunit": "^8",
"mikey179/vfsstream": "^1.6",
"ext-zip": "*",
"ext-bz2": "*"
diff --git a/vendor/splitbrain/php-archive/phpunit.xml b/vendor/splitbrain/php-archive/phpunit.xml
index c5e1ad3ce..41c7fb15d 100644
--- a/vendor/splitbrain/php-archive/phpunit.xml
+++ b/vendor/splitbrain/php-archive/phpunit.xml
@@ -7,8 +7,7 @@
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
- stopOnFailure="false"
- syntaxCheck="false">
+ stopOnFailure="false">
<testsuites>
<testsuite name="Test Suite">
<directory suffix=".php">./tests/</directory>
diff --git a/vendor/splitbrain/php-archive/src/Tar.php b/vendor/splitbrain/php-archive/src/Tar.php
index d5bdd612b..c48e80811 100644
--- a/vendor/splitbrain/php-archive/src/Tar.php
+++ b/vendor/splitbrain/php-archive/src/Tar.php
@@ -256,33 +256,36 @@ class Tar extends Archive
throw new ArchiveIOException('Archive has been closed, files can no longer be added');
}
- $fp = @fopen($file, 'rb');
- if (!$fp) {
- throw new ArchiveIOException('Could not open file for reading: '.$file);
- }
-
// create file header
$this->writeFileHeader($fileinfo);
- // write data
- $read = 0;
- while (!feof($fp)) {
- $data = fread($fp, 512);
- $read += strlen($data);
- if ($data === false) {
- break;
+ // write data, but only if we have data to write.
+ // note: on Windows fopen() on a directory will fail, so we prevent
+ // errors on Windows by testing if we have data to write.
+ if (!$fileinfo->getIsdir() && $fileinfo->getSize() > 0) {
+ $read = 0;
+ $fp = @fopen($file, 'rb');
+ if (!$fp) {
+ throw new ArchiveIOException('Could not open file for reading: ' . $file);
}
- if ($data === '') {
- break;
+ while (!feof($fp)) {
+ $data = fread($fp, 512);
+ $read += strlen($data);
+ if ($data === false) {
+ break;
+ }
+ if ($data === '') {
+ break;
+ }
+ $packed = pack("a512", $data);
+ $this->writebytes($packed);
}
- $packed = pack("a512", $data);
- $this->writebytes($packed);
- }
- fclose($fp);
+ fclose($fp);
- if($read != $fileinfo->getSize()) {
- $this->close();
- throw new ArchiveCorruptedException("The size of $file changed while reading, archive corrupted. read $read expected ".$fileinfo->getSize());
+ if ($read != $fileinfo->getSize()) {
+ $this->close();
+ throw new ArchiveCorruptedException("The size of $file changed while reading, archive corrupted. read $read expected ".$fileinfo->getSize());
+ }
}
if(is_callable($this->callback)) {
diff --git a/vendor/splitbrain/php-cli/.gitignore b/vendor/splitbrain/php-cli/.gitignore
index c6277c187..9f150adf9 100644
--- a/vendor/splitbrain/php-cli/.gitignore
+++ b/vendor/splitbrain/php-cli/.gitignore
@@ -5,4 +5,4 @@ vendor/
composer.lock
apigen.phar
docs/
-
+.phpunit.result.cache
diff --git a/vendor/splitbrain/php-cli/README.md b/vendor/splitbrain/php-cli/README.md
index 5e42a55eb..7c68ceaa0 100644
--- a/vendor/splitbrain/php-cli/README.md
+++ b/vendor/splitbrain/php-cli/README.md
@@ -12,8 +12,6 @@ It takes care of
It is lightweight and has **no 3rd party dependencies**. Note: this is for non-interactive scripts only. It has no readline or similar support.
-[![Build Status](https://travis-ci.org/splitbrain/php-cli.svg)](https://travis-ci.org/splitbrain/php-cli)
-
## Installation
Use composer:
diff --git a/vendor/splitbrain/php-cli/composer.json b/vendor/splitbrain/php-cli/composer.json
index 79e2502c4..9e2629007 100644
--- a/vendor/splitbrain/php-cli/composer.json
+++ b/vendor/splitbrain/php-cli/composer.json
@@ -24,7 +24,7 @@
"psr/log": "Allows you to make the CLI available as PSR-3 logger"
},
"require-dev": {
- "phpunit/phpunit": "4.5.*"
+ "phpunit/phpunit": "^8"
},
"autoload": {
"psr-4": {
diff --git a/vendor/splitbrain/php-cli/src/Options.php b/vendor/splitbrain/php-cli/src/Options.php
index 74dae2be4..5ee6b6931 100644
--- a/vendor/splitbrain/php-cli/src/Options.php
+++ b/vendor/splitbrain/php-cli/src/Options.php
@@ -31,6 +31,9 @@ class Options
/** @var Colors for colored help output */
protected $colors;
+ /** @var string newline used for spacing help texts */
+ protected $newline = "\n";
+
/**
* Constructor
*
@@ -49,7 +52,8 @@ class Options
'' => array(
'opts' => array(),
'args' => array(),
- 'help' => ''
+ 'help' => '',
+ 'commandhelp' => 'This tool accepts a command as first parameter as outlined below:'
)
); // default command
@@ -78,6 +82,26 @@ class Options
}
/**
+ * Sets the help text for the tools commands itself
+ *
+ * @param string $help
+ */
+ public function setCommandHelp($help)
+ {
+ $this->setup['']['commandhelp'] = $help;
+ }
+
+ /**
+ * Use a more compact help screen with less new lines
+ *
+ * @param bool $set
+ */
+ public function useCompactHelp($set = true)
+ {
+ $this->newline = $set ? '' : "\n";
+ }
+
+ /**
* Register the names of arguments for help generation and number checking
*
* This has to be called in the order arguments are expected
@@ -342,6 +366,8 @@ class Options
$text = '';
$hascommands = (count($this->setup) > 1);
+ $commandhelp = $this->setup['']["commandhelp"];
+
foreach ($this->setup as $command => $config) {
$hasopts = (bool)$this->setup[$command]['opts'];
$hasargs = (bool)$this->setup[$command]['args'];
@@ -353,7 +379,7 @@ class Options
$text .= ' ' . $this->bin;
$mv = 2;
} else {
- $text .= "\n";
+ $text .= $this->newline;
$text .= $this->colors->wrap(' ' . $command, Colors::C_PURPLE);
$mv = 4;
}
@@ -374,14 +400,14 @@ class Options
}
$text .= ' ' . $out;
}
- $text .= "\n";
+ $text .= $this->newline;
// usage or command intro
if ($this->setup[$command]['help']) {
$text .= "\n";
$text .= $tf->format(
array($mv, '*'),
- array('', $this->setup[$command]['help'] . "\n")
+ array('', $this->setup[$command]['help'] . $this->newline)
);
}
@@ -412,7 +438,7 @@ class Options
array('', $name, $opt['help']),
array('', 'green', '')
);
- $text .= "\n";
+ $text .= $this->newline;
}
}
@@ -422,7 +448,7 @@ class Options
$text .= "\n";
$text .= $this->colors->wrap('ARGUMENTS:', Colors::C_BROWN);
}
- $text .= "\n";
+ $text .= $this->newline;
foreach ($this->setup[$command]['args'] as $arg) {
$name = '<' . $arg['name'] . '>';
@@ -441,9 +467,9 @@ class Options
$text .= "\n";
$text .= $tf->format(
array($mv, '*'),
- array('', 'This tool accepts a command as first parameter as outlined below:')
+ array('', $commandhelp)
);
- $text .= "\n";
+ $text .= $this->newline;
}
}
diff --git a/vendor/splitbrain/slika/README.md b/vendor/splitbrain/slika/README.md
index c5ed69ee8..0b987d442 100644
--- a/vendor/splitbrain/slika/README.md
+++ b/vendor/splitbrain/slika/README.md
@@ -28,7 +28,7 @@ use \splitbrain\slika\Exception;
$options = [
'quality' => 75
-]
+];
try {
Slika::run('input.png', $options)
diff --git a/vendor/splitbrain/slika/src/Adapter.php b/vendor/splitbrain/slika/src/Adapter.php
index 29b9b613f..99d1de1d3 100644
--- a/vendor/splitbrain/slika/src/Adapter.php
+++ b/vendor/splitbrain/slika/src/Adapter.php
@@ -57,8 +57,8 @@ abstract class Adapter
*
* You may omit one of the dimensions to auto calculate it based on the aspect ratio
*
- * @param int $width
- * @param int $height
+ * @param int|string $width in pixels or %
+ * @param int|string $height in pixels or %
* @return Adapter
*/
abstract public function resize($width, $height);
@@ -69,8 +69,8 @@ abstract class Adapter
*
* You may omit one of the dimensions to use a square area
*
- * @param int $width
- * @param int $height
+ * @param int|string $width in pixels or %
+ * @param int|string $height in pixels or %
* @return Adapter
*/
abstract public function crop($width, $height);
diff --git a/vendor/splitbrain/slika/src/GdAdapter.php b/vendor/splitbrain/slika/src/GdAdapter.php
index 0f8db82e7..c55859955 100644
--- a/vendor/splitbrain/slika/src/GdAdapter.php
+++ b/vendor/splitbrain/slika/src/GdAdapter.php
@@ -268,6 +268,9 @@ class GdAdapter extends Adapter
*/
protected function boundingBox($width, $height)
{
+ $width = $this->cleanDimension($width, $this->width);
+ $height = $this->cleanDimension($height, $this->height);
+
if ($width == 0 && $height == 0) {
throw new Exception('You can not resize to 0x0');
}
@@ -289,6 +292,26 @@ class GdAdapter extends Adapter
}
/**
+ * Ensure the given Dimension is a proper pixel value
+ *
+ * When a percentage is given, the value is calculated based on the given original dimension
+ *
+ * @param int|string $dim New Dimension
+ * @param int $orig Original dimension
+ * @return int
+ */
+ protected function cleanDimension($dim, $orig)
+ {
+ if ($dim && substr($dim, -1) == '%') {
+ $dim = round($orig * ((float)$dim / 100));
+ } else {
+ $dim = (int)$dim;
+ }
+
+ return $dim;
+ }
+
+ /**
* Calculates crop position
*
* Given the wanted final size, this calculates which exact area needs to be cut