From 79193d853a4dc0e65906bfb99bfaacc1e3d4bc1d Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Fri, 14 Jun 2024 13:48:54 +0800 Subject: [PATCH 01/85] updated SimpleSAMLphp to 2.2 along with required dependencies [skip ci] --- composer.json | 22 +- composer.lock | 5751 +++++++++++++++++---------------------- installed-packages.json | 268 +- 3 files changed, 2547 insertions(+), 3494 deletions(-) diff --git a/composer.json b/composer.json index d40e19e6..2aa5f782 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "silinternational/ssp-base", "description": "Base image for SimpleSAMLphp", - "type": "library", + "type": "project", "license": "MIT", "authors": [ { @@ -14,30 +14,30 @@ "ext-gmp": "*", "ext-json": "*", "codemix/yii2-streamlog": "^1.3", - "simplesamlphp/simplesamlphp": "^1.19.6", - "simplesamlphp/composer-module-installer": "1.1.8", + "simplesamlphp/simplesamlphp": "^2.0", + "simplesamlphp/composer-module-installer": "^1.0", "rlanvin/php-ip": "^1.0", - "silinternational/ssp-utilities": "^1.1.0", + "silinternational/ssp-utilities": "dev-develop", "silinternational/php-env": "^3.1.0", - "silinternational/psr3-adapters": "^3.1", + "silinternational/psr3-adapters": "dev-develop", "silinternational/yii2-json-log-targets": "^2.0", - "gettext/gettext": "^4.8@dev", "silinternational/idp-id-broker-php-client": "^4.3", "sinergi/browser-detector": "^6.1", "yiisoft/yii2": "~2.0.12", "yiisoft/yii2-gii": "^2.0", "fillup/fake-bower-assets": "^2.0", "google/recaptcha": "^1.1", - "psr/log": "^1.0", - "monolog/monolog": "^1.22", - "aws/aws-sdk-php": "^3.313" + "psr/log": "^3.0", + "monolog/monolog": "^3.0", + "aws/aws-sdk-php": "^3.313", + "yidas/yii2-composer-bower-skip": "^2.0" }, "require-dev": { "behat/behat": "^3.8", - "behat/mink-extension": "^2.3", "dmore/chrome-mink-driver": "^2.8", "phpunit/phpunit": "^7.5.19 || ^8.0", - "roave/security-advisories": "dev-master" + "roave/security-advisories": "dev-master", + "friends-of-behat/mink-extension": "^2.7" }, "autoload": { "files": [ diff --git a/composer.lock b/composer.lock index 41b9cdaf..69f13b2a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "03d85826c06d84fb2d637696e16bc4b8", + "content-hash": "cc899808dc5a01280a0d0dc6162decff", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.313.0", + "version": "3.314.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "2f5f173300888d6f630ce24751a6ee0f1e6d72e8" + "reference": "85207a1f342443f40711ac8fe246120821370f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2f5f173300888d6f630ce24751a6ee0f1e6d72e8", - "reference": "2f5f173300888d6f630ce24751a6ee0f1e6d72e8", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/85207a1f342443f40711ac8fe246120821370f11", + "reference": "85207a1f342443f40711ac8fe246120821370f11", "shasum": "" }, "require": { @@ -151,9 +151,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.313.0" + "source": "https://github.com/aws/aws-sdk-php/tree/3.314.1" }, - "time": "2024-06-11T18:20:58+00:00" + "time": "2024-06-13T18:07:00+00:00" }, { "name": "cebe/markdown", @@ -367,35 +367,28 @@ }, { "name": "gettext/gettext", - "version": "4.x-dev", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/php-gettext/Gettext.git", - "reference": "ed5535a5ae3314adee88fe603e5e730bb373adce" + "reference": "8657e580747bb3baacccdcebe69cac094661e404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/ed5535a5ae3314adee88fe603e5e730bb373adce", - "reference": "ed5535a5ae3314adee88fe603e5e730bb373adce", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/8657e580747bb3baacccdcebe69cac094661e404", + "reference": "8657e580747bb3baacccdcebe69cac094661e404", "shasum": "" }, "require": { "gettext/languages": "^2.3", - "php": ">=5.4.0" + "php": "^7.2|^8.0" }, "require-dev": { - "illuminate/view": "^5.0.x-dev", - "phpunit/phpunit": "^4.8|^5.7|^6.5", - "squizlabs/php_codesniffer": "^3.0", - "symfony/yaml": "~2", - "twig/extensions": "*", - "twig/twig": "^1.31|^2.0" - }, - "suggest": { - "illuminate/view": "Is necessary if you want to use the Blade extractor", - "symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator", - "twig/extensions": "Is necessary if you want to use the Twig extractor", - "twig/twig": "Is necessary if you want to use the Twig extractor" + "brick/varexporter": "^0.3.5", + "friendsofphp/php-cs-fixer": "^3.2", + "oscarotero/php-cs-fixer-config": "^2.0", + "phpunit/phpunit": "^8.0|^9.0", + "squizlabs/php_codesniffer": "^3.0" }, "type": "library", "autoload": { @@ -416,7 +409,7 @@ } ], "description": "PHP gettext manager", - "homepage": "https://github.com/oscarotero/Gettext", + "homepage": "https://github.com/php-gettext/Gettext", "keywords": [ "JS", "gettext", @@ -427,8 +420,8 @@ ], "support": { "email": "oom@oscarotero.com", - "issues": "https://github.com/oscarotero/Gettext/issues", - "source": "https://github.com/php-gettext/Gettext/tree/4.x" + "issues": "https://github.com/php-gettext/Gettext/issues", + "source": "https://github.com/php-gettext/Gettext/tree/v5.7.0" }, "funding": [ { @@ -444,7 +437,7 @@ "type": "patreon" } ], - "time": "2022-12-11T19:37:51+00:00" + "time": "2022-07-27T19:54:55+00:00" }, { "name": "gettext/languages", @@ -520,6 +513,80 @@ ], "time": "2022-10-18T15:00:10+00:00" }, + { + "name": "gettext/translator", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-gettext/Translator.git", + "reference": "a4fa5ed740f304a0ed7b3e169b2b554a195c7570" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-gettext/Translator/zipball/a4fa5ed740f304a0ed7b3e169b2b554a195c7570", + "reference": "a4fa5ed740f304a0ed7b3e169b2b554a195c7570", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.15", + "gettext/gettext": "^5.0.0", + "oscarotero/php-cs-fixer-config": "^1.0", + "phpunit/phpunit": "^8.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "suggest": { + "gettext/gettext": "Is necessary to load and generate array files used by the translator" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "Gettext translator functions", + "homepage": "https://github.com/php-gettext/Translator", + "keywords": [ + "gettext", + "i18n", + "php", + "translator" + ], + "support": { + "email": "oom@oscarotero.com", + "issues": "https://github.com/php-gettext/Translator/issues", + "source": "https://github.com/php-gettext/Translator/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://paypal.me/oscarotero", + "type": "custom" + }, + { + "url": "https://github.com/oscarotero", + "type": "github" + }, + { + "url": "https://www.patreon.com/misteroom", + "type": "patreon" + } + ], + "time": "2023-11-06T15:42:03+00:00" + }, { "name": "google/recaptcha", "version": "1.3.0", @@ -574,26 +641,26 @@ }, { "name": "guzzlehttp/command", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/command.git", - "reference": "3372bcfd79d4b357b6871665bf06155515e8d844" + "reference": "0eebc653784f4902b3272e826fe8e88743d14e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/command/zipball/3372bcfd79d4b357b6871665bf06155515e8d844", - "reference": "3372bcfd79d4b357b6871665bf06155515e8d844", + "url": "https://api.github.com/repos/guzzle/command/zipball/0eebc653784f4902b3272e826fe8e88743d14e77", + "reference": "0eebc653784f4902b3272e826fe8e88743d14e77", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^7.5.1", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/guzzle": "^7.8", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "phpunit/phpunit": "^8.5.19 || ^9.5.8" }, "type": "library", @@ -637,7 +704,7 @@ "description": "Provides the foundation for building command-based web service clients", "support": { "issues": "https://github.com/guzzle/command/issues", - "source": "https://github.com/guzzle/command/tree/1.3.0" + "source": "https://github.com/guzzle/command/tree/1.3.1" }, "funding": [ { @@ -653,26 +720,26 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:15:09+00:00" + "time": "2023-12-03T20:46:20+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -681,11 +748,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -763,7 +830,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -779,31 +846,31 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/guzzle-services", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle-services.git", - "reference": "f4bb1c205152a56741624b88753732e01a60565c" + "reference": "bcab7c0d61672b606510a6fe5af3039d04968c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/f4bb1c205152a56741624b88753732e01a60565c", - "reference": "f4bb1c205152a56741624b88753732e01a60565c", + "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/bcab7c0d61672b606510a6fe5af3039d04968c0f", + "reference": "bcab7c0d61672b606510a6fe5af3039d04968c0f", "shasum": "" }, "require": { - "guzzlehttp/command": "^1.3", - "guzzlehttp/guzzle": "^7.7", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/command": "^1.3.1", + "guzzlehttp/guzzle": "^7.8", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "guzzlehttp/uri-template": "^1.0.1", "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "phpunit/phpunit": "^8.5.19 || ^9.5.8" }, "suggest": { @@ -850,7 +917,7 @@ "description": "Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.", "support": { "issues": "https://github.com/guzzle/guzzle-services/issues", - "source": "https://github.com/guzzle/guzzle-services/tree/1.4.0" + "source": "https://github.com/guzzle/guzzle-services/tree/1.4.1" }, "funding": [ { @@ -866,33 +933,37 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:21:30+00:00" + "time": "2023-12-03T20:48:14+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -929,7 +1000,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -945,20 +1016,20 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { @@ -972,9 +1043,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1045,7 +1116,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -1061,34 +1132,36 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "uri-template/tests": "1.0.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1129,7 +1202,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { @@ -1145,7 +1218,7 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { "name": "mlocati/ip-lib", @@ -1220,51 +1293,66 @@ }, { "name": "monolog/monolog", - "version": "1.27.1", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -1278,11 +1366,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -1290,7 +1378,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { @@ -1302,7 +1390,7 @@ "type": "tidelift" } ], - "time": "2022-06-09T08:53:42+00:00" + "time": "2024-04-12T21:02:21+00:00" }, { "name": "mtdowling/jmespath.php", @@ -1420,94 +1508,18 @@ }, "time": "2020-10-15T08:29:30+00:00" }, - { - "name": "phpfastcache/riak-client", - "version": "3.4.3", - "source": { - "type": "git", - "url": "https://github.com/PHPSocialNetwork/riak-php-client.git", - "reference": "d771f75d16196006604a30bb15adc1c6a9b0fcc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPSocialNetwork/riak-php-client/zipball/d771f75d16196006604a30bb15adc1c6a9b0fcc9", - "reference": "d771f75d16196006604a30bb15adc1c6a9b0fcc9", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=5.4" - }, - "conflict": { - "basho/riak": "*" - }, - "require-dev": { - "apigen/apigen": "4.1.*", - "phpunit/phpunit": "4.8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Basho\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Georges.L", - "email": "contact@geolim4.com", - "homepage": "https://github.com/Geolim4", - "role": "Maintainer" - }, - { - "name": "Christopher Mancini", - "email": "cmancini@basho.com", - "homepage": "https://github.com/christophermancini", - "role": "Former Lead Developer" - }, - { - "name": "Alex Moore", - "email": "amoore@basho.com", - "homepage": "https://github.com/alexmoore", - "role": "Former Developer" - } - ], - "description": "Riak client for PHP (Fork of the official basho/riak due to maintainer significant inactivity)", - "homepage": "https://github.com/PHPSocialNetwork/riak-php-client", - "keywords": [ - "basho", - "client", - "crdt", - "data", - "database", - "datatype", - "driver", - "kv", - "nosql", - "riak" - ], - "support": { - "issues": "https://github.com/PHPSocialNetwork/riak-php-client/issues", - "source": "https://github.com/PHPSocialNetwork/riak-php-client/tree/develop" - }, - "time": "2017-11-23T21:33:15+00:00" - }, { "name": "phpmailer/phpmailer", - "version": "v6.8.0", + "version": "v6.9.1", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "df16b615e371d81fb79e506277faea67a1be18f1" + "reference": "039de174cd9c17a8389754d3b877a2ed22743e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/df16b615e371d81fb79e506277faea67a1be18f1", - "reference": "df16b615e371d81fb79e506277faea67a1be18f1", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/039de174cd9c17a8389754d3b877a2ed22743e18", + "reference": "039de174cd9c17a8389754d3b877a2ed22743e18", "shasum": "" }, "require": { @@ -1517,16 +1529,17 @@ "php": ">=5.5.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", "doctrine/annotations": "^1.2.6 || ^1.13.3", "php-parallel-lint/php-console-highlighter": "^1.0.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcompatibility/php-compatibility": "^9.3.5", "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.7.1", + "squizlabs/php_codesniffer": "^3.7.2", "yoast/phpunit-polyfills": "^1.0.4" }, "suggest": { + "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "ext-openssl": "Needed for secure SMTP sending and DKIM signing", "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", @@ -1566,7 +1579,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.8.0" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.1" }, "funding": [ { @@ -1574,7 +1587,7 @@ "type": "github" } ], - "time": "2023-03-06T14:43:22+00:00" + "time": "2023-11-25T22:23:28+00:00" }, { "name": "phpspec/php-diff", @@ -1619,16 +1632,16 @@ }, { "name": "psr/cache", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { @@ -1662,28 +1675,33 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/2.0.0" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2021-02-03T23:23:37+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/container", - "version": "1.1.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -1710,22 +1728,72 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -1762,26 +1830,26 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -1805,7 +1873,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -1817,9 +1885,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -1876,30 +1944,30 @@ }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1920,9 +1988,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "ralouphie/getallheaders", @@ -2015,61 +2083,74 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "69dafab8a5dffa4d6a4d6dab1ebadf48aca449c7" + "reference": "2e530fa2b00d046ceb5660f3139af583170ea7f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/69dafab8a5dffa4d6a4d6dab1ebadf48aca449c7", - "reference": "69dafab8a5dffa4d6a4d6dab1ebadf48aca449c7", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2e530fa2b00d046ceb5660f3139af583170ea7f9", + "reference": "2e530fa2b00d046ceb5660f3139af583170ea7f9", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.2.10", + "admidio/admidio": "<4.2.13", "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", "aheinze/cockpit": "<2.2", + "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.21|>=2022.04.1,<2022.10.12|>=2023.04.1,<2023.10.14|>=2024.04.1,<2024.04.4", + "aimeos/aimeos-core": "<2024.04.7", "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "airesvsg/acf-to-rest-api": "<=3.1", "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", "alextselegidis/easyappointments": "<1.5", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", + "amphp/http": "<=1.7.2|>=2,<=2.1", "amphp/http-client": ">=4,<4.4", "anchorcms/anchor-cms": "<=0.12.7", "andreapollastri/cipi": "<=3.1.15", "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "apache-solr-for-typo3/solr": "<2.8.3", "apereo/phpcas": "<1.6", "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", "appwrite/server-ce": "<=1.2.1", "arc/web": "<3", "area17/twill": "<1.2.5|>=2,<2.5.3", "artesaos/seotools": "<0.17.2", - "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "asymmetricrypt/asymmetricrypt": "<9.9.99", "athlon1600/php-proxy": "<=5.1", "athlon1600/php-proxy-app": "<=3", - "automad/automad": "<1.8", + "austintoddj/canvas": "<=3.4.2", + "automad/automad": "<=1.10.9", + "automattic/jetpack": "<9.8", "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": ">=3,<3.2.1", + "aws/aws-sdk-php": "<3.288.1", "azuracast/azuracast": "<0.18.3", "backdrop/backdrop": "<1.24.2", "backpack/crud": "<3.4.9", + "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", "badaso/core": "<2.7", - "bagisto/bagisto": "<0.1.5", + "bagisto/bagisto": "<2.1", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<4.7.5", + "baserproject/basercms": "<5.0.9", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", + "bbpress/bbpress": "<2.6.5", + "bcosca/fatfree": "<3.7.2", + "bedita/bedita": "<4", "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<2.8.9", + "billz/raspap-webgui": "<2.9.5", "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", + "blueimp/jquery-file-upload": "==6.4.4", "bmarshall511/wordpress_zero_spam": "<5.2.13", "bolt/bolt": "<3.7.2", "bolt/core": "<=4.2", + "born05/craft-twofactorauthentication": "<3.3.4", "bottelet/flarepoint": "<2.2.1", + "bref/bref": "<2.1.17", "brightlocal/phpwhois": "<=4.2.5", "brotkrueml/codehighlight": "<2.7", "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", @@ -2078,136 +2159,168 @@ "bugsnag/bugsnag-laravel": ">=2,<2.0.2", "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|= 1.3.7|>=4.1,<4.1.4", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", "cardgate/woocommerce": "<=3.1.15", "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "catfan/medoo": "<1.7.5", - "centreon/centreon": "<22.10-beta.1", + "causal/oidc": "<2.1", + "cecil/cecil": "<7.47.1", + "centreon/centreon": "<22.10.15", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", - "cockpit-hq/cockpit": "<2.6", + "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "ckeditor/ckeditor": "<4.24", + "cockpit-hq/cockpit": "<2.7|==2.7", "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<=3.0.6", - "codeigniter4/framework": "<4.3.5", - "codeigniter4/shield": "<1-beta.4|= 1.0.0-beta", + "codeigniter/framework": "<3.1.9", + "codeigniter4/framework": "<4.4.7", + "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5", - "concrete5/concrete5": "<9.2|>= 9.0.0RC1, < 9.1.3", + "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", + "concrete5/concrete5": "<9.2.8", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", - "contao/core": ">=2,<3.5.39", - "contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10|= 4.10.0", - "contao/listing-bundle": ">=4,<4.4.8", + "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", + "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", + "contao/core": "<3.5.39", + "contao/core-bundle": "<4.13.40|>=5,<5.3.4", + "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", "contao/managed-edition": "<=1.5", + "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", - "craftcms/cms": "<=4.4.9|>= 4.0.0-RC1, < 4.4.12|>= 4.0.0-RC1, <= 4.4.5|>= 4.0.0-RC1, <= 4.4.6|>= 4.0.0-RC1, < 4.4.6|>= 4.0.0-RC1, < 4.3.7|>= 4.0.0-RC1, < 4.2.1", - "croogo/croogo": "<3.0.7", + "craftcms/cms": "<4.6.2", + "croogo/croogo": "<4", "cuyz/valinor": "<0.12", "czproject/git-php": "<4.0.3", + "dapphp/securimage": "<3.6.6", "darylldoyle/safe-svg": "<1.9.10", "datadog/dd-trace": ">=0.30,<0.30.2", + "datatables/datatables": "<1.10.10", "david-garcia/phpwhois": "<=4.3.1", "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3-beta", + "dcat/laravel-admin": "<=2.1.3.0-beta", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", - "directmailteam/direct-mail": "<5.2.4", - "doctrine/annotations": ">=1,<1.2.7", + "devgroup/dotplant": "<2020.09.14-dev", + "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "doctrine/annotations": "<1.2.7", "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/common": "<2.4.3|>=2.5,<2.5.1", "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<17.0.1|= 12.0.5|>= 3.3.beta1, < 13.0.2", - "dompdf/dompdf": "<2.0.2|= 2.0.2", - "drupal/core": ">=7,<7.96|>=8,<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8", - "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "doctrine/doctrine-module": "<0.7.2", + "doctrine/mongodb-odm": "<1.0.2", + "doctrine/mongodb-odm-bundle": "<3.0.1", + "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", + "dolibarr/dolibarr": "<19.0.2", + "dompdf/dompdf": "<2.0.4", + "doublethreedigital/guest-entries": "<3.1.2", + "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", - "elefant/cms": "<1.3.13", + "egroupware/egroupware": "<16.1.20170922", + "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", + "elijaa/phpmemcacheadmin": "<=1.3", "encore/laravel-admin": "<=1.8.19", "endroid/qr-code-bundle": "<3.4.2", + "enhavo/enhavo-app": "<=0.13.1", "enshrined/svg-sanitize": "<0.15", "erusev/parsedown": "<1.7.2", "ether/logs": "<3.0.4", + "evolutioncms/evolution": "<=3.2.3", "exceedone/exment": "<4.4.3|>=5,<5.0.3", - "exceedone/laravel-admin": "= 3.0.0|<2.2.3", - "ezsystems/demobundle": ">=5.4,<5.4.6.1", + "exceedone/laravel-admin": "<2.2.3|==3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", - "ezsystems/ezplatform-graphql": ">=1-rc.1,<1.0.13|>=2-beta.1,<2.3.12", - "ezsystems/ezplatform-kernel": "<1.2.5.1|>=1.3,<1.3.26", + "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", + "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2|>=7,<7.5.30", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1|>=2.5,<2.5.15", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.8", + "facturascripts/facturascripts": "<=2022.08", + "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", "filegator/filegator": "<7.8", + "filp/whoops": "<2.1.13", + "fineuploader/php-traditional-server": "<=1.2.2", "firebase/php-jwt": "<6", "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.7", - "flarum/framework": "<=0.1-beta.7.1", + "flarum/core": "<1.8.5", + "flarum/flarum": "<0.1.0.0-beta8", + "flarum/framework": "<1.8.5", "flarum/mentions": "<1.6.3", - "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15", - "flarum/tags": "<=0.1-beta.13", + "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", + "flarum/tags": "<=0.1.0.0-beta13", + "floriangaerber/magnesium": "<0.3.1", "fluidtypo3/vhs": "<5.1.1", - "fof/byobu": ">=0.3-beta.2,<1.1.7", + "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", "fof/upload": "<1.2.3", + "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", "fooman/tcpdf": "<6.2.22", "forkcms/forkcms": "<5.11.1", "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<11", + "francoisjacquet/rosariosis": "<=11.5.1", "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", "friendsofsymfony/oauth2-php": "<1.3", "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "friendsofsymfony/user-bundle": ">=1,<1.3.5", + "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", + "friendsofsymfony1/symfony1": ">=1.1,<1.15.19", "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "froala/wysiwyg-editor": "<3.2.7", - "froxlor/froxlor": "<2.1", + "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3", + "froxlor/froxlor": "<2.1.9", + "frozennode/administrator": "<=5.0.12", "fuel/core": "<1.8.1", "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", - "getgrav/grav": "<=1.7.42.1", - "getkirby/cms": "= 3.8.0|<3.5.8.2|>=3.6,<3.6.6.2|>=3.7,<3.7.5.1", + "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", + "getgrav/grav": "<1.7.46", + "getkirby/cms": "<4.1.1", "getkirby/kirby": "<=2.5.12", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.11.4", + "gilacms/gila": "<=1.15.4", + "gleez/cms": "<=1.3|==2", "globalpayments/php-sdk": "<2", "gogentooss/samlbase": "<1.2.7", "google/protobuf": "<3.15", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6", + "grumpydictator/firefly-iii": "<6.1.7", + "gugoan/economizzer": "<=0.9.0.0-beta1", "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", "harvesthq/chosen": "<1.8.7", - "helloxz/imgurl": "= 2.31|<=2.31", + "helloxz/imgurl": "<=2.31", "hhxsv5/laravel-s": "<3.7.36", "hillelcoren/invoice-ninja": "<5.3.35", "himiklab/yii2-jqgrid-widget": "<1.0.8", @@ -2216,268 +2329,340 @@ "httpsoft/http-message": "<1.0.12", "hyn/multi-tenant": ">=5.6,<5.7.2", "ibexa/admin-ui": ">=4.2,<4.2.3", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", "ibexa/post-install": "<=1.0.4", + "ibexa/solr": ">=4.5,<4.5.4", "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", "idno/known": "<=1.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", + "ilicmiljan/secure-props": ">=1.2,<1.2.2", + "illuminate/auth": "<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", + "imdbphp/imdbphp": "<=5.1.1", "impresscms/impresscms": "<=1.4.5", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.1", + "impresspages/impresspages": "<=1.0.12", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", "in2code/ipandlanguageredirect": "<5.1.2", "in2code/lux": "<17.6.1|>=18,<24.0.2", "innologi/typo3-appointments": "<2.0.6", - "intelliants/subrion": "<=4.2.1", + "intelliants/subrion": "<4.2.2", + "inter-mediator/inter-mediator": "==5.5", "islandora/islandora": ">=2,<2.4.1", "ivankristianto/phpwhois": "<=4.3", "jackalope/jackalope-doctrine-dbal": "<1.7.4", "james-heinrich/getid3": "<1.9.21", + "james-heinrich/phpthumb": "<1.7.12", "jasig/phpcas": "<1.3.3", + "jcbrand/converse.js": "<3.3.3", + "johnbillion/wp-crontrol": "<1.16.2", + "joomla/application": "<1.0.13", "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": ">=2.5.4,<=3.8.12", + "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": ">=3,<3.9.12", + "joomla/joomla-cms": ">=2.5,<3.9.12", "joomla/session": "<1.3.1", "joyqi/hyper-down": "<=2.4.27", "jsdecena/laracom": "<2.0.9", "jsmitty12/phpwhois": "<5.1", + "juzaweb/cms": "<=3.4", "kazist/phpwhois": "<=4.2.6", "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", "khodakhah/nodcms": "<=3", - "kimai/kimai": "<1.1", + "kimai/kimai": "<2.16", "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<1.4.2", + "knplabs/knp-snappy": "<=1.4.2", + "kohana/core": "<3.3.3", "krayin/laravel-crm": "<1.2.2", "kreait/firebase-php": ">=3.2,<3.8.1", + "kumbiaphp/kumbiapp": "<=1.1.1", "la-haute-societe/tcpdf": "<6.2.22", - "laminas/laminas-diactoros": "<2.18.1|>=2.24,<2.24.2|>=2.25,<2.25.2|= 2.23.0|= 2.22.0|= 2.21.0|= 2.20.0|= 2.19.0", + "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", "laminas/laminas-http": "<2.14.2", "laravel/fortify": "<1.11.1", "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "laravel/laravel": ">=5.4,<5.4.22", + "laravel/socialite": ">=1,<2.0.10", "latte/latte": "<2.10.8", - "lavalite/cms": "= 9.0.0|<=9", + "lavalite/cms": "<=9|==10.1", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", "league/commonmark": "<0.18.3", "league/flysystem": "<1.1.4|>=2,<2.1.1", - "league/oauth2-server": ">=8.3.2,<8.5.3", + "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "librenms/librenms": "<22.10", + "libreform/libreform": ">=2,<=2.0.8", + "librenms/librenms": "<2017.08.18", "liftkit/database": "<2.13.2", + "lightsaml/lightsaml": "<1.3.5", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6", + "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": "= 2.4.0|<=2.4", - "magento/magento1ce": "<1.9.4.3", - "magento/magento1ee": ">=1,<1.14.4.3", - "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", + "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch8|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch6|==2.4.7", + "magento/core": "<=1.9.4.5", + "magento/magento1ce": "<1.9.4.3-dev", + "magento/magento1ee": ">=1,<1.14.4.3-dev", + "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", + "magneto/core": "<1.9.4.4-dev", "maikuolan/phpmussel": ">=1,<1.6", - "mantisbt/mantisbt": "<=2.25.5", + "mainwp/mainwp": "<=4.4.3.3", + "mantisbt/mantisbt": "<2.26.2", "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.3|= 2.13.1", - "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", + "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4", + "mdanter/ecc": "<2", + "mediawiki/core": "<1.36.2", "mediawiki/matomo": "<2.4.3", + "mediawiki/semantic-media-wiki": "<4.0.2", "melisplatform/melis-asset-manager": "<5.0.1", "melisplatform/melis-cms": "<5.0.1", "melisplatform/melis-front": "<5.0.1", "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", "mgallegos/laravel-jqgrid": "<=1.3", - "microweber/microweber": "<=1.3.4|= 1.1.18", + "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", + "microsoft/microsoft-graph-beta": "<2.0.1", + "microsoft/microsoft-graph-core": "<2.0.2", + "microweber/microweber": "<=2.0.4", + "mikehaertl/php-shellcommand": "<1.6.1", "miniorange/miniorange-saml": "<1.4.3", "mittwald/typo3_forum": "<1.2.1", "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<2.8|<= 2.8.3-pl", + "modx/revolution": "<=2.8.3.0-patch", "mojo42/jirafeau": "<4.4", + "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.2-rc.2|= 3.4.3|= 3.5|= 3.7|= 3.9|= 3.8|= 4.2.0|= 3.11", + "moodle/moodle": "<4.3.4", + "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", + "movingbytes/social-network": "<=1.2.1", "mpdf/mpdf": "<=7.1.7", + "munkireport/comment": "<4.1", + "munkireport/managedinstalls": "<2.6", + "munkireport/munki_facts": "<1.5", + "munkireport/munkireport": ">=2.5.3,<5.6.3", + "munkireport/reportdata": "<3.5", + "munkireport/softwareupdate": "<1.6", "mustache/mustache": ">=2,<2.14.1", "namshi/jose": "<2.2", "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.4", + "neorazorx/facturascripts": "<2022.04", "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", - "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", + "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/swiftmailer": "<5.4.5", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", "nilsteampassnet/teampass": "<3.0.10", + "nonfiction/nterchange": "<4.1.1", "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", - "nukeviet/nukeviet": "<4.5.2", + "novaksolutions/infusionsoft-php-sdk": "<1", + "nukeviet/nukeviet": "<4.5.02", "nyholm/psr7": "<1.6.1", "nystudio107/craft-seomatic": "<3.4.12", + "nzedb/nzedb": "<0.8", "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", "october/backend": "<1.1.2", - "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469", - "october/october": "<1.0.466|>=2.1,<2.1.12", + "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", + "october/october": "<=3.4.4", "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66", + "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2", + "omeka/omeka-s": "<4.0.3", "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", + "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": "<=3.0.3.7", + "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<19.4.22|>=20,<20.0.19", + "openmage/magento-lts": "<20.5", + "opensolutions/vimbadmin": "<=3.0.15", "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", - "orchid/platform": ">=9,<9.4.4|>=14-alpha.4,<14.5", - "oro/commerce": ">=4.1,<5.0.6", + "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", + "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", + "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", - "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8", + "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", + "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", + "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", + "oxid-esales/oxideshop-ce": "<4.5", + "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", "packbackbooks/lti-1-3-php-library": "<5", "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": ">=0,<3", + "pagarme/pagarme-php": "<3", "pagekit/pagekit": "<=1.0.18", + "paragonie/ecc": "<2.0.1", "paragonie/random_compat": "<2", - "passbolt/passbolt_api": "<2.11", + "passbolt/passbolt_api": "<4.6.2", + "paypal/adaptivepayments-sdk-php": "<=3.9.2", + "paypal/invoice-sdk-php": "<=3.9", "paypal/merchant-sdk-php": "<3.12", + "paypal/permissions-sdk-php": "<=3.9.1", "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", "pear/crypt_gpg": "<1.6.7", "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", "phanan/koel": "<5.1.4", + "phenx/php-svg-lib": "<0.5.2", + "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", "php-mod/curl": "<2.3.2", "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<=3.1.7", + "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", + "phpoffice/common": "<0.2.9", "phpoffice/phpexcel": "<1.8", "phpoffice/phpspreadsheet": "<1.16", - "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19", + "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.2.5", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3", + "phpsysinfo/phpsysinfo": "<3.4.3", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.0.3", - "pimcore/customer-management-framework-bundle": "<3.4.1", + "pimcore/admin-ui-classic-bundle": "<=1.4.2", + "pimcore/customer-management-framework-bundle": "<4.0.6", "pimcore/data-hub": "<1.2.4", + "pimcore/demo": "<10.3", + "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<10.6.4", - "pixelfed/pixelfed": "<=0.11.4", + "pimcore/pimcore": "<11.2.4", + "pixelfed/pixelfed": "<0.11.11", + "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<4.22.3|>=5,<5.2.1|< 4.18.0-ALPHA2|>= 4.0.0-BETA5, < 4.4.2", + "pocketmine/pocketmine-mp": "<5.11.2", + "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/blockreassurance": "<=5.1.3", "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.0.4", + "prestashop/prestashop": "<8.1.6", "prestashop/productcomments": "<5.0.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", "privatebin/privatebin": "<1.4", - "processwire/processwire": "<=3.0.200", - "propel/propel": ">=2-alpha.1,<=2-alpha.7", + "processwire/processwire": "<=3.0.210", + "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.7", + "pterodactyl/panel": "<1.11.6", + "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", + "pubnub/pubnub": "<6.1", "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6-beta", + "pwweb/laravel-core": "<=0.3.6.0-beta", "pyrocms/pyrocms": "<=3.9.1", + "qcubed/qcubed": "<=3.1.1", + "quickapps/cms": "<=2.0.0.0-beta2", + "rainlab/blog-plugin": "<1.4.1", "rainlab/debugbar-plugin": "<3.1", + "rainlab/user-plugin": "<=1.4.5", "rankmath/seo-by-rank-math": "<=1.0.95", "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", - "remdex/livehelperchat": "<3.99", + "redaxo/source": "<=5.15.1", + "remdex/livehelperchat": "<4.29", + "reportico-web/reportico": "<=8.1", + "rhukster/dom-sanitizer": "<1.0.7", "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": "<3.0.4", + "robrichards/xmlseclibs": ">=1,<3.0.4", "roots/soil": "<4.1", "rudloff/alltube": "<3.0.3", "s-cart/core": "<6.9", "s-cart/s-cart": "<6.9", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": "<1.7.11|>=1.8,<1.8.9", - "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", + "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": "<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.4.20", - "shopware/platform": "<=6.4.20", + "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", + "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17", - "shopware/storefront": "<=6.4.8.1", + "shopware/shopware": "<6.2.3", + "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", "shopxo/shopxo": "<2.2.6", "showdoc/showdoc": "<2.10.4", "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.12.7", + "silverstripe/admin": "<1.13.19|>=2,<2.1.8", "silverstripe/assets": ">=1,<1.11.1", "silverstripe/cms": "<4.11.3", - "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", + "silverstripe/comments": ">=1.3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.12.5", - "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3|= 4.0.0-alpha1", + "silverstripe/framework": "<4.13.39|>=5,<5.1.11", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", "silverstripe/subsites": ">=2,<2.6.1", "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3", + "silverstripe/userforms": "<3|>=5,<5.4.2", "silverstripe/versioned-admin": ">=1,<1.11.1", "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", "simplesamlphp/simplesamlphp": "<1.18.6", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", "simplesamlphp/simplesamlphp-module-openid": "<1", "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", + "simplesamlphp/xml-security": "==1.6.11", "simplito/elliptic-php": "<1.0.6", "sitegeist/fluid-components": "<3.5", - "sjbr/sr-freecap": "<=2.5.2", + "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", "slim/slim": "<2.6", - "smarty/smarty": "<3.1.48|>=4,<4.3.1", - "snipe/snipe-it": "<=6.0.14|>= 6.0.0-RC-1, <= 6.0.0-RC-5", + "slub/slub-events": "<3.0.3", + "smarty/smarty": "<4.5.3|>=5,<5.1.1", + "snipe/snipe-it": "<=6.2.2", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", "spatie/browsershot": "<3.57.4", - "spipu/html2pdf": "<5.2.4", + "spatie/image-optimizer": "<1.7.3", + "spipu/html2pdf": "<5.2.8", "spoon/library": "<1.4.1", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<22.2.3", - "statamic/cms": "<4.10", - "stormpath/sdk": ">=0,<9.9.99", + "ssddanbrown/bookstack": "<22.02.3", + "statamic/cms": "<4.46|>=5.3,<5.6.2", + "stormpath/sdk": "<9.9.99", "studio-42/elfinder": "<2.1.62", "subhh/libconnect": "<7.0.8|>=8,<8.1", - "subrion/cms": "<=4.2.1", "sukohi/surpass": "<1", - "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8", + "sulu/form-bundle": ">=2,<2.5.3", + "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13", "sumocoders/framework-user-bundle": "<1.4", + "superbig/craft-audit": "<3.0.2", "swag/paypal": "<5.4.4", - "swiftmailer/swiftmailer": ">=4,<5.4.5", + "swiftmailer/swiftmailer": "<6.2.5", + "swiftyedit/swiftyedit": "<1.2", "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", "sylius/grid-bundle": "<1.10.1", "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", - "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", - "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", + "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2|>=1.12.0.0-alpha1,<1.12.16|>=1.13.0.0-alpha1,<1.13.1", + "symbiote/silverstripe-multivaluefield": ">=3,<3.1", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", "symbiote/silverstripe-seed": "<6.0.3", "symbiote/silverstripe-versionedfiles": "<=2.0.3", @@ -2486,7 +2671,7 @@ "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", @@ -2502,60 +2687,83 @@ "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/translation": ">=2,<2.0.17", + "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/ux-autocomplete": "<2.11.2", "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "t3/dce": ">=2.2,<2.6.2", + "symfony/webhook": ">=6.3,<6.3.8", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", + "symphonycms/symphony-2": "<2.6.4", + "t3/dce": "<0.11.5|>=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", + "t3s/content-consent": "<1.0.3|>=2,<2.0.2", "tastyigniter/tastyigniter": "<3.3", "tcg/voyager": "<=1.4", - "tecnickcom/tcpdf": "<6.2.22", + "tecnickcom/tcpdf": "<=6.7.4", "terminal42/contao-tablelookupwizard": "<3.3.5", "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1-beta.1,<2.1.3", + "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", - "thinkcmf/thinkcmf": "<=5.1.7", - "thorsten/phpmyfaq": "<3.2-beta.2", - "tinymce/tinymce": "<5.10.7|>=6,<6.3.1", + "thinkcmf/thinkcmf": "<6.0.8", + "thorsten/phpmyfaq": "<3.2.2", + "tikiwiki/tiki-manager": "<=17.1", + "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", + "tinymce/tinymce": "<7", "tinymighty/wiki-seo": "<1.2.2", - "titon/framework": ">=0,<9.9.99", - "tobiasbg/tablepress": "<= 2.0-RC1", - "topthink/framework": "<6.0.14", + "titon/framework": "<9.9.99", + "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "topthink/framework": "<6.0.17|>=6.1,<6.1.5|>=8,<8.0.4", "topthink/think": "<=6.1.1", "topthink/thinkphp": "<=3.2.3", + "torrentpier/torrentpier": "<=2.4.1", "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<=9.3.57595", + "tribalsystems/zenario": "<9.5.60602", "truckersmp/phpwhois": "<=4.3.1", "ttskch/pagination-service-provider": "<1", "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", - "typo3/cms": "<2.0.5|>=3,<3.0.3|>=6.2,<=6.2.38|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<8.7.51|>=9,<9.5.42|>=10,<10.4.39|>=11,<11.5.30|>=12,<12.4.4", + "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", + "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", + "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<1.5.1|>=2,<2.1.2", + "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", "ua-parser/uap-php": "<3.8", - "unisharp/laravel-filemanager": "<=2.5.1", + "uasoft-indonesia/badaso": "<=2.9.7", + "unisharp/laravel-filemanager": "<2.6.4", "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "uvdesk/community-skeleton": "<=1.1.1", + "uvdesk/core-framework": "<=1.1.1", "vanilla/safecurl": "<0.9.2", - "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", + "verbb/comments": "<1.5.5", + "verbb/formie": "<2.1.6", + "verbb/image-resizer": "<2.0.9", + "verbb/knock-knock": "<1.2.8", + "verot/class.upload.php": "<=2.1.6", + "villagedefrance/opencart-overclocked": "<=1.11.1", "vova07/yii2-fileapi-widget": "<0.1.9", "vrana/adminer": "<4.8.1", + "vufind/vufind": ">=2,<9.1.1", + "waldhacker/hcaptcha": "<2.1.2", "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<=2.5.4", + "wallabag/wallabag": "<2.6.7", "wanglelecc/laracms": "<=1.0.3", "web-auth/webauthn-framework": ">=3.3,<3.3.4", + "web-feet/coastercms": "==5.5", "webbuilders-group/silverstripe-kapost-bridge": "<0.4", "webcoast/deferred-image-processing": "<1.0.2", "webklex/laravel-imap": "<5.3", @@ -2564,21 +2772,28 @@ "wikibase/wikibase": "<=1.39.3", "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", - "wintercms/winter": "<1.2.3", - "woocommerce/woocommerce": "<6.6", - "wp-cli/wp-cli": "<2.5", + "winter/wn-backend-module": "<1.2.4", + "winter/wn-dusk-plugin": "<2.1", + "winter/wn-system-module": "<1.2.4", + "wintercms/winter": "<=1.2.3", + "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", + "wp-cli/wp-cli": ">=0.12,<2.5", "wp-graphql/wp-graphql": "<=1.14.5", + "wp-premium/gravityforms": "<2.4.21", "wpanel/wpanel4-cms": "<=4.3.1", "wpcloud/wp-stateless": "<3.2", - "wwbn/avideo": "<=12.4", + "wpglobus/wpglobus": "<=1.9.6", + "wwbn/avideo": "<14.3", "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", + "yab/quarx": "<2.4.5", "yeswiki/yeswiki": "<4.1", "yetiforce/yetiforce-crm": "<=6.4", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.27", - "yiisoft/yii2": "<2.0.38", + "yiisoft/yii": "<1.1.29", + "yiisoft/yii2": "<2.0.50", + "yiisoft/yii2-authclient": "<2.2.15", "yiisoft/yii2-bootstrap": "<2.0.4", "yiisoft/yii2-dev": "<2.0.43", "yiisoft/yii2-elasticsearch": "<2.0.5", @@ -2588,12 +2803,13 @@ "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", - "zencart/zencart": "<1.5.8", + "yuan1994/tpadmin": "<=1.3.12", + "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", "zendframework/zend-diactoros": "<1.8.4", "zendframework/zend-feed": "<2.10.3", @@ -2601,22 +2817,30 @@ "zendframework/zend-http": "<2.8.1", "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", "zendframework/zend-validator": ">=2.3,<2.3.6", "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", "zendframework/zendframework": "<=3", "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendopenid": "<2.0.2", + "zendframework/zendrest": "<2.0.2", + "zendframework/zendservice-amazon": "<2.0.3", + "zendframework/zendservice-api": "<1", + "zendframework/zendservice-audioscrobbler": "<2.0.2", + "zendframework/zendservice-nirvanix": "<2.0.2", + "zendframework/zendservice-slideshare": "<2.0.2", + "zendframework/zendservice-technorati": "<2.0.2", + "zendframework/zendservice-windowsazure": "<2.0.2", "zendframework/zendxml": ">=1,<1.0.1", "zenstruck/collection": "<0.2.1", "zetacomponents/mail": "<1.8.2", "zf-commons/zfc-user": "<1.2.2", "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<6.0.22" + "zoujingli/thinkadmin": "<=6.1.53" }, "type": "metapackage", "notification-url": "https://packagist.org/downloads/", @@ -2653,7 +2877,7 @@ "type": "tidelift" } ], - "time": "2023-07-25T19:04:12+00:00" + "time": "2024-06-13T20:04:44+00:00" }, { "name": "robrichards/xmlseclibs", @@ -2795,34 +3019,35 @@ }, { "name": "silinternational/psr3-adapters", - "version": "3.1.0", + "version": "dev-develop", "source": { "type": "git", "url": "https://github.com/silinternational/psr3-adapters.git", - "reference": "3f281e39b2925026e8f4b42625c1122198a8a01d" + "reference": "3c9bf52795e569ae7b08e5d808cb5e179e6c1efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silinternational/psr3-adapters/zipball/3f281e39b2925026e8f4b42625c1122198a8a01d", - "reference": "3f281e39b2925026e8f4b42625c1122198a8a01d", + "url": "https://api.github.com/repos/silinternational/psr3-adapters/zipball/3c9bf52795e569ae7b08e5d808cb5e179e6c1efa", + "reference": "3c9bf52795e569ae7b08e5d808cb5e179e6c1efa", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/log": "^1.0" + "php": "^8.1", + "psr/log": "^3.0" }, "require-dev": { - "monolog/monolog": "^1.22", + "monolog/monolog": "^2.0 | ^3.0", "phpunit/phpunit": "^9.0", "roave/security-advisories": "dev-master", - "simplesamlphp/simplesamlphp": "^1.15.2", + "simplesamlphp/simplesamlphp": "^2.0", "yiisoft/yii2": "^2.0" }, "suggest": { - "monolog/monolog": "^1.22", - "simplesamlphp/simplesamlphp": "^1.15.2", + "monolog/monolog": "^2.0 | ^3.0", + "simplesamlphp/simplesamlphp": "^2.0", "yiisoft/yii2": "^2.0" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -2843,33 +3068,33 @@ "description": "Various PSR3-compatible logging adapters.", "support": { "issues": "https://github.com/silinternational/psr3-adapters/issues", - "source": "https://github.com/silinternational/psr3-adapters/tree/3.1.0" + "source": "https://github.com/silinternational/psr3-adapters/tree/develop" }, - "time": "2022-08-24T14:44:38+00:00" + "time": "2024-06-14T04:45:18+00:00" }, { "name": "silinternational/ssp-utilities", - "version": "1.1.0", + "version": "dev-develop", "source": { "type": "git", "url": "https://github.com/silinternational/ssp-utilities.git", - "reference": "3e257e7bbbcb0f7ef0d95e5d7c292c97c89ce18a" + "reference": "d62cbee61a008d80f4ad758b3ec84cbac76f75bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silinternational/ssp-utilities/zipball/3e257e7bbbcb0f7ef0d95e5d7c292c97c89ce18a", - "reference": "3e257e7bbbcb0f7ef0d95e5d7c292c97c89ce18a", + "url": "https://api.github.com/repos/silinternational/ssp-utilities/zipball/d62cbee61a008d80f4ad758b3ec84cbac76f75bb", + "reference": "d62cbee61a008d80f4ad758b3ec84cbac76f75bb", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "simplesamlphp/simplesamlphp": "~1.18.6 || ~1.19.0" + "php": "^8.1", + "simplesamlphp/simplesamlphp": "^2.2" }, "require-dev": { "phpunit/phpunit": ">=7.0", - "roave/security-advisories": "dev-master", - "satooshi/php-coveralls": "^1.0.1" + "roave/security-advisories": "dev-master" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -2880,18 +3105,12 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Phillip Shipley", - "email": "phillip.shipley@gmail.com" - } - ], "description": "SimpleSAMLphp related utility classes", "support": { "issues": "https://github.com/silinternational/ssp-utilities/issues", - "source": "https://github.com/silinternational/ssp-utilities/tree/1.1.0" + "source": "https://github.com/silinternational/ssp-utilities/tree/develop" }, - "time": "2022-08-24T20:12:45+00:00" + "time": "2024-06-14T04:45:01+00:00" }, { "name": "silinternational/yii2-json-log-targets", @@ -2950,34 +3169,33 @@ }, { "name": "simplesamlphp/assert", - "version": "v0.0.13", + "version": "v1.1.8", "source": { "type": "git", "url": "https://github.com/simplesamlphp/assert.git", - "reference": "5429921b320ca4f9d1844225884ac52f649ea1e3" + "reference": "0a5ffa660849db748872bbf017569b4365a39fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/5429921b320ca4f9d1844225884ac52f649ea1e3", - "reference": "5429921b320ca4f9d1844225884ac52f649ea1e3", + "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/0a5ffa660849db748872bbf017569b4365a39fac", + "reference": "0a5ffa660849db748872bbf017569b4365a39fac", "shasum": "" }, "require": { + "ext-date": "*", + "ext-filter": "*", + "ext-pcre": "*", "ext-spl": "*", - "php": "^7.1 || ^8.0", - "webmozart/assert": "^1.9" + "php": "^8.1", + "webmozart/assert": "^1.11" }, "require-dev": { - "phpunit/phpunit": "^8.5", - "sensiolabs/security-checker": "~6.0", - "simplesamlphp/simplesamlphp-test-framework": "^0.2.7", - "squizlabs/php_codesniffer": "~3.5", - "vimeo/psalm": "~3.13" + "simplesamlphp/simplesamlphp-test-framework": "^1.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "v0.0.x-dev" + "dev-master": "v1.1.x-dev" } }, "autoload": { @@ -3002,35 +3220,40 @@ "description": "A wrapper around webmozart/assert to make it useful beyond checking method arguments", "support": { "issues": "https://github.com/simplesamlphp/assert/issues", - "source": "https://github.com/simplesamlphp/assert/tree/master" + "source": "https://github.com/simplesamlphp/assert/tree/v1.1.8" }, - "time": "2020-08-17T20:40:49+00:00" + "time": "2024-05-21T10:35:09+00:00" }, { "name": "simplesamlphp/composer-module-installer", - "version": "v1.1.8", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/simplesamlphp/composer-module-installer.git", - "reference": "45161b5406f3e9c82459d0f9a5a1dba064953cfa" + "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/45161b5406f3e9c82459d0f9a5a1dba064953cfa", - "reference": "45161b5406f3e9c82459d0f9a5a1dba064953cfa", + "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/36508ed9580a30c4d5ab0bb3c25c00d0b5d42946", + "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1|^2.0", - "simplesamlphp/simplesamlphp": "*" + "composer-plugin-api": "^1.1 || ^2.0", + "php": "^7.4 || ^8.0", + "simplesamlphp/assert": "^0.8.0 || ^1.0" + }, + "require-dev": { + "composer/composer": "^2.4", + "simplesamlphp/simplesamlphp-test-framework": "^1.2.1" }, "type": "composer-plugin", "extra": { - "class": "SimpleSamlPhp\\Composer\\ModuleInstallerPlugin" + "class": "SimpleSAML\\Composer\\ModuleInstallerPlugin" }, "autoload": { - "psr-0": { - "SimpleSamlPhp\\Composer": "src/" + "psr-4": { + "SimpleSAML\\Composer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3040,22 +3263,22 @@ "description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.", "support": { "issues": "https://github.com/simplesamlphp/composer-module-installer/issues", - "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.1.8" + "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.3.4" }, - "time": "2020-08-25T19:04:33+00:00" + "time": "2023-03-08T20:58:22+00:00" }, { "name": "simplesamlphp/saml2", - "version": "v4.6.10", + "version": "v4.6.12", "source": { "type": "git", "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "a6c46e8134df2686da9ad44bc9b8f85443c03440" + "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/a6c46e8134df2686da9ad44bc9b8f85443c03440", - "reference": "a6c46e8134df2686da9ad44bc9b8f85443c03440", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/9545abd0d9d48388f2fa00469c5c1e0294f0303e", + "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e", "shasum": "" }, "require": { @@ -3098,22 +3321,22 @@ "description": "SAML2 PHP library from SimpleSAMLphp", "support": { "issues": "https://github.com/simplesamlphp/saml2/issues", - "source": "https://github.com/simplesamlphp/saml2/tree/v4.6.10" + "source": "https://github.com/simplesamlphp/saml2/tree/v4.6.12" }, - "time": "2023-05-31T16:03:51+00:00" + "time": "2024-04-25T14:10:08+00:00" }, { "name": "simplesamlphp/simplesamlphp", - "version": "1.19.8", + "version": "v2.2.2", "source": { "type": "git", "url": "https://github.com/simplesamlphp/simplesamlphp.git", - "reference": "a69141a45ad41b3b48f55535bafc9cd538a35b74" + "reference": "2339859b9c05a59d930585baec9fdbe0a77e947d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp/zipball/a69141a45ad41b3b48f55535bafc9cd538a35b74", - "reference": "a69141a45ad41b3b48f55535bafc9cd538a35b74", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp/zipball/2339859b9c05a59d930585baec9fdbe0a77e947d", + "reference": "2339859b9c05a59d930585baec9fdbe0a77e947d", "shasum": "" }, "require": { @@ -3124,80 +3347,77 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-pcre": "*", + "ext-session": "*", + "ext-simplexml": "*", "ext-spl": "*", "ext-zlib": "*", - "gettext/gettext": "^4.8.7", - "php": ">=7.1|^8", - "phpmailer/phpmailer": "^6.1", - "robrichards/xmlseclibs": "^3.1", - "simplesamlphp/assert": "^0.0.13", - "simplesamlphp/saml2": "^4.5", - "simplesamlphp/simplesamlphp-module-adfs": "^1.0", - "simplesamlphp/simplesamlphp-module-authcrypt": "^0.9", - "simplesamlphp/simplesamlphp-module-authfacebook": "^0.9", - "simplesamlphp/simplesamlphp-module-authorize": "^0.9", - "simplesamlphp/simplesamlphp-module-authtwitter": "^0.9", - "simplesamlphp/simplesamlphp-module-authwindowslive": "^0.9", - "simplesamlphp/simplesamlphp-module-authx509": "^0.9", - "simplesamlphp/simplesamlphp-module-authyubikey": "^0.9", - "simplesamlphp/simplesamlphp-module-cas": "^0.9", - "simplesamlphp/simplesamlphp-module-cdc": "^0.9", - "simplesamlphp/simplesamlphp-module-consent": "^0.9", - "simplesamlphp/simplesamlphp-module-consentadmin": "^0.9", - "simplesamlphp/simplesamlphp-module-discopower": "^0.10", - "simplesamlphp/simplesamlphp-module-exampleattributeserver": "^1.0", - "simplesamlphp/simplesamlphp-module-expirycheck": "^0.9", - "simplesamlphp/simplesamlphp-module-ldap": "^0.9 | ^1.0", - "simplesamlphp/simplesamlphp-module-memcachemonitor": "^0.9", - "simplesamlphp/simplesamlphp-module-memcookie": "^1.2", - "simplesamlphp/simplesamlphp-module-metarefresh": "^0.10", - "simplesamlphp/simplesamlphp-module-negotiate": "^0.9", - "simplesamlphp/simplesamlphp-module-oauth": "^0.9.3", - "simplesamlphp/simplesamlphp-module-preprodwarning": "^0.9", - "simplesamlphp/simplesamlphp-module-radius": "^0.9", - "simplesamlphp/simplesamlphp-module-riak": "^0.9", - "simplesamlphp/simplesamlphp-module-sanitycheck": "^0.9", - "simplesamlphp/simplesamlphp-module-smartattributes": "^0.9", - "simplesamlphp/simplesamlphp-module-sqlauth": "^0.9", - "simplesamlphp/simplesamlphp-module-statistics": "^0.9", - "simplesamlphp/twig-configurable-i18n": "~2.3.3", - "symfony/cache": "^4.4 || ^5.0", - "symfony/config": "^4.4 || ^5.0", - "symfony/console": "^4.4 || ^5.0", - "symfony/dependency-injection": "^4.4 || ^5.0", - "symfony/finder": "^4.4 || ^5.0", - "symfony/framework-bundle": "^4.4 || ^5.0", - "symfony/http-foundation": "^4.4 || ^5.0", - "symfony/http-kernel": "^4.4 || ^5.0", - "symfony/routing": "^4.4 || ^5.0", - "symfony/var-exporter": "^4.4 || ^5.0", - "symfony/yaml": "^4.4 || ^5.0", - "twig/twig": "^2.15.3" + "gettext/gettext": "^5.7", + "gettext/translator": "^1.1", + "php": "^8.1", + "phpmailer/phpmailer": "^6.8", + "psr/log": "^3.0", + "simplesamlphp/assert": "^1.0.0", + "simplesamlphp/composer-module-installer": "^1.3", + "simplesamlphp/saml2": "^4.6", + "simplesamlphp/simplesamlphp-assets-base": "~2.2", + "symfony/cache": "^6.4", + "symfony/config": "^6.4", + "symfony/console": "^6.4", + "symfony/dependency-injection": "^6.4", + "symfony/filesystem": "^6.4", + "symfony/finder": "^6.4", + "symfony/framework-bundle": "^6.4", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.4", + "symfony/intl": "^6.4", + "symfony/polyfill-intl-icu": "^1.28", + "symfony/routing": "^6.4", + "symfony/translation-contracts": "^3.0", + "symfony/twig-bridge": "^6.4", + "symfony/var-exporter": "^6.4", + "symfony/yaml": "^6.4", + "twig/intl-extra": "^3.7", + "twig/twig": "^3.5" }, "require-dev": { "ext-curl": "*", + "ext-pdo_sqlite": "*", + "gettext/php-scanner": "1.3.1", "mikey179/vfsstream": "~1.6", - "phpunit/phpunit": "^7.5", - "simplesamlphp/simplesamlphp-test-framework": "^0.1.2", - "vimeo/psalm": "~3.14" + "predis/predis": "^2.2", + "simplesamlphp/simplesamlphp-module-adfs": "^2.1", + "simplesamlphp/simplesamlphp-test-framework": "^1.5.4", + "simplesamlphp/xml-security": "^1.6.0", + "symfony/translation": "^6.4" }, "suggest": { "ext-curl": "Needed in order to check for updates automatically", + "ext-intl": "Needed if translations for non-English languages are required.", "ext-ldap": "Needed if an LDAP backend is used", "ext-memcache": "Needed if a Memcache server is used to store session information", "ext-mysql": "Needed if a MySQL backend is used, either for authentication or to store session information", "ext-pdo": "Needed if a database backend is used, either for authentication or to store session information", "ext-pgsql": "Needed if a PostgreSQL backend is used, either for authentication or to store session information", - "ext-radius": "Needed if a Radius backend is used", "predis/predis": "Needed if a Redis server is used to store session information" }, "type": "project", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, "autoload": { "files": [ - "lib/_autoload_modules.php" + "src/_autoload_modules.php" ], "psr-4": { - "SimpleSAML\\": "lib/SimpleSAML" + "SimpleSAML\\": "src/SimpleSAML", + "SimpleSAML\\Module\\core\\": "modules/core/src", + "SimpleSAML\\Module\\cron\\": "modules/cron/src", + "SimpleSAML\\Module\\saml\\": "modules/saml/src", + "SimpleSAML\\Module\\admin\\": "modules/admin/src", + "SimpleSAML\\Module\\multiauth\\": "modules/multiauth/src", + "SimpleSAML\\Module\\exampleauth\\": "modules/exampleauth/src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3218,8 +3438,8 @@ "email": "jaime.perez@uninett.no" } ], - "description": "A PHP implementation of a SAML 2.0 service provider and identity provider, also compatible with Shibboleth 1.3 and 2.0.", - "homepage": "http://simplesamlphp.org", + "description": "A PHP implementation of a SAML 2.0 service provider and identity provider.", + "homepage": "https://simplesamlphp.org", "keywords": [ "SAML2", "idp", @@ -3232,37 +3452,27 @@ "issues": "https://github.com/simplesamlphp/simplesamlphp/issues", "source": "https://github.com/simplesamlphp/simplesamlphp" }, - "time": "2023-03-02T11:44:45+00:00" + "time": "2024-04-30T16:38:57+00:00" }, { - "name": "simplesamlphp/simplesamlphp-module-adfs", - "version": "v1.0.9", + "name": "simplesamlphp/simplesamlphp-assets-base", + "version": "v2.2.1", "source": { "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-adfs.git", - "reference": "c47daabc262b7e14a76879015fd9db85319752ec" + "url": "https://github.com/simplesamlphp/simplesamlphp-assets-base.git", + "reference": "405e13a9856f3c1f314fcdb032575c2cc16afac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-adfs/zipball/c47daabc262b7e14a76879015fd9db85319752ec", - "reference": "c47daabc262b7e14a76879015fd9db85319752ec", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/405e13a9856f3c1f314fcdb032575c2cc16afac5", + "reference": "405e13a9856f3c1f314fcdb032575c2cc16afac5", "shasum": "" }, "require": { - "php": ">=7.1", - "simplesamlphp/assert": "^0.0.13", - "simplesamlphp/composer-module-installer": "^1.1.7" - }, - "require-dev": { - "simplesamlphp/simplesamlphp": "^1.18", - "simplesamlphp/simplesamlphp-test-framework": "^0.1.2" + "php": "^8.1", + "simplesamlphp/composer-module-installer": "^1.3.4" }, "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\adfs\\": "lib/" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-2.1-or-later" @@ -3273,1500 +3483,278 @@ "email": "tvdijen@gmail.com" } ], - "description": "A module that implements the WS-federation IDP", - "keywords": [ - "adfs", - "simplesamlphp" - ], + "description": "Assets for the SimpleSAMLphp main repository", "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-adfs/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-adfs" + "issues": "https://github.com/simplesamlphp/simplesamlphp-assets-base/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.2.1" }, - "time": "2022-04-11T10:24:25+00:00" + "time": "2024-06-12T21:08:27+00:00" }, { - "name": "simplesamlphp/simplesamlphp-module-authcrypt", - "version": "v0.9.4", + "name": "sinergi/browser-detector", + "version": "6.1.4", "source": { "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authcrypt.git", - "reference": "62555123e61b11463be3cd7adb708562023cff28" + "url": "https://github.com/sinergi/php-browser-detector.git", + "reference": "4927f7c2bedc48b68f183bd420aa3549c59e133b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authcrypt/zipball/62555123e61b11463be3cd7adb708562023cff28", - "reference": "62555123e61b11463be3cd7adb708562023cff28", + "url": "https://api.github.com/repos/sinergi/php-browser-detector/zipball/4927f7c2bedc48b68f183bd420aa3549c59e133b", + "reference": "4927f7c2bedc48b68f183bd420aa3549c59e133b", "shasum": "" }, "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "webmozart/assert": "~1.4", - "whitehat101/apr1-md5": "~1.0" + "php": ">=7.2" }, "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" + "phpunit/phpunit": "^8.0 || ^9.4" }, - "type": "simplesamlphp-module", + "type": "library", "autoload": { "psr-4": { - "SimpleSAML\\Module\\authcrypt\\": "lib/" + "Sinergi\\BrowserDetector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-or-later" + "MIT" ], "authors": [ { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" + "name": "Gabriel Bull", + "email": "me@gabrielbull.com" + }, + { + "name": "Chris Schuld" } ], - "description": "This module provides authentication against password hashes or .htpasswd files", + "description": "Detecting the user's browser, operating system and language.", "keywords": [ - "authcrypt", - "simplesamlphp" + "browser", + "detection", + "language", + "operating system", + "os" ], "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-authcrypt/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-authcrypt" + "issues": "https://github.com/sinergi/php-browser-detector/issues", + "source": "https://github.com/sinergi/php-browser-detector/tree/6.1.4" }, - "time": "2022-01-03T20:50:47+00:00" + "abandoned": true, + "time": "2021-09-23T13:51:44+00:00" }, { - "name": "simplesamlphp/simplesamlphp-module-authfacebook", - "version": "v0.9.3", + "name": "symfony/cache", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook.git", - "reference": "9152731e939ad4a49e0f06da5f0009ebde0d2b5c" + "url": "https://github.com/symfony/cache.git", + "reference": "287142df5579ce223c485b3872df3efae8390984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authfacebook/zipball/9152731e939ad4a49e0f06da5f0009ebde0d2b5c", - "reference": "9152731e939ad4a49e0f06da5f0009ebde0d2b5c", + "url": "https://api.github.com/repos/symfony/cache/zipball/287142df5579ce223c485b3872df3efae8390984", + "reference": "287142df5579ce223c485b3872df3efae8390984", "shasum": "" }, "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.3.6|^7.0" + }, + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" + }, + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" }, "require-dev": { - "simplesamlphp/simplesamlphp": "^1.17", - "simplesamlphp/simplesamlphp-test-framework": "^0.0.10" + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "type": "simplesamlphp-module", + "type": "library", "autoload": { "psr-4": { - "SimpleSAML\\Module\\authfacebook\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Andjelko Horvat", - "email": "comel@vingd.com" - }, - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able to authenticate against Facebook", - "keywords": [ - "facebook", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook" - }, - "abandoned": true, - "time": "2020-03-13T11:29:21+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authorize", - "version": "v0.9.4", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authorize.git", - "reference": "4c7ce4eaa54fc301f131c62e803fc843e4d88056" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authorize/zipball/4c7ce4eaa54fc301f131c62e803fc843e4d88056", - "reference": "4c7ce4eaa54fc301f131c62e803fc843e4d88056", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\authorize\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Ernesto Revilla", - "email": "erny@yaco.es" - } - ], - "description": "This module provides a user authorization filter based on attribute matching", - "keywords": [ - "authorize", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-authorize/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-authorize" - }, - "time": "2022-01-03T20:56:53+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authtwitter", - "version": "v0.9.3", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authtwitter.git", - "reference": "6e178e7aae7827a64dc462b5bb2f28d6eddc4381" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authtwitter/zipball/6e178e7aae7827a64dc462b5bb2f28d6eddc4381", - "reference": "6e178e7aae7827a64dc462b5bb2f28d6eddc4381", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "simplesamlphp/composer-module-installer": "~1.0", - "simplesamlphp/simplesamlphp-module-oauth": "^0.9" - }, - "require-dev": { - "phpunit/phpunit": "~4.8.35", - "simplesamlphp/simplesamlphp": "^1.17", - "webmozart/assert": "<1.7" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\authtwitter\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - }, - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able to perform authentication against Twitter", - "keywords": [ - "simplesamlphp", - "twitter" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-authtwitter/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-authtwitter" - }, - "time": "2022-01-03T23:01:48+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authwindowslive", - "version": "v0.9.1", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authwindowslive.git", - "reference": "f40aecec6c0adaedb6693309840c98cec783876e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authwindowslive/zipball/f40aecec6c0adaedb6693309840c98cec783876e", - "reference": "f40aecec6c0adaedb6693309840c98cec783876e", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\authwindowslive\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - }, - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able to perform authentication against Windows Live", - "keywords": [ - "live", - "simplesamlphp", - "windows", - "windowslive" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-authwindowslive/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-authwindowslive" - }, - "abandoned": true, - "time": "2019-12-03T09:01:13+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authx509", - "version": "v0.9.9", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authX509.git", - "reference": "b138f41b2bc725371f42abb63b5a39ac11b5432a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authX509/zipball/b138f41b2bc725371f42abb63b5a39ac11b5432a", - "reference": "b138f41b2bc725371f42abb63b5a39ac11b5432a", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "simplesamlphp/composer-module-installer": "~1.1", - "simplesamlphp/simplesamlphp-module-ldap": "^0.9" - }, - "require-dev": { - "simplesamlphp/simplesamlphp": "^1.17", - "simplesamlphp/simplesamlphp-test-framework": "^0.0.15" - }, - "type": "simplesamlphp-module", - "extra": { - "ssp-mixedcase-module-name": "authX509" - }, - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\authX509\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Joost van Dijk", - "email": "Joost.vanDijk@surfnet.nl" - }, - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able to authenticate users based on X509 client certificates", - "keywords": [ - "simplesamlphp", - "x509" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-authx509/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-authx509" - }, - "time": "2022-01-06T19:02:38+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authyubikey", - "version": "v0.9.3", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-authyubikey.git", - "reference": "414e2a73da4adfee6d97ba66e852ec7c85369913" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-authyubikey/zipball/414e2a73da4adfee6d97ba66e852ec7c85369913", - "reference": "414e2a73da4adfee6d97ba66e852ec7c85369913", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "webmozart/assert": "~1.4" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "extra": { - "ssp-mixedcase-module-name": "authYubiKey" - }, - "autoload": { - "psr-4": { - "SimpleSAML\\modules\\yubikey\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able to authenticate against YubiKey", - "keywords": [ - "authyubikey", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-authyubikey/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-authyubikey" - }, - "time": "2022-01-06T19:07:32+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-cas", - "version": "v0.9.1", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-cas.git", - "reference": "63b72e4600550c507cdfc32fdd208ad59a64321e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-cas/zipball/63b72e4600550c507cdfc32fdd208ad59a64321e", - "reference": "63b72e4600550c507cdfc32fdd208ad59a64321e", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "simplesamlphp/simplesamlphp-module-ldap": "^0.9", - "webmozart/assert": "~1.4" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\cas\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - } - ], - "description": "A module that provides CAS authentication", - "keywords": [ - "cas", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-cas/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-cas" - }, - "time": "2019-12-03T09:03:06+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-cdc", - "version": "v0.9.2", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-cdc.git", - "reference": "92498fc3004c02849d96da29ca472d99ed23af73" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-cdc/zipball/92498fc3004c02849d96da29ca472d99ed23af73", - "reference": "92498fc3004c02849d96da29ca472d99ed23af73", - "shasum": "" - }, - "require": { - "simplesamlphp/composer-module-installer": ">=1.1.6" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17", - "webmozart/assert": "<1.7" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\cdc\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olav.morken@uninett.no" - }, - { - "name": "Jaime Perez Crespo", - "email": "jaime.perez@uninett.no" - } - ], - "description": "A SimpleSAMLphp module that allows integration with CDC", - "homepage": "https://simplesamlphp.org/", - "keywords": [ - "cdc", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-cdc/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-cdc/" - }, - "time": "2022-01-06T19:27:16+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-consent", - "version": "v0.9.8", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-consent.git", - "reference": "8466b0b7c6207b15ca5e265f436299ff2dec85da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-consent/zipball/8466b0b7c6207b15ca5e265f436299ff2dec85da", - "reference": "8466b0b7c6207b15ca5e265f436299ff2dec85da", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17", - "webmozart/assert": "<1.6" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\consent\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "lavmrk@gmail.com" - } - ], - "description": "A module that will ask for user consent before releasing attributes", - "keywords": [ - "consent", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-consent/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-consent" - }, - "time": "2022-01-06T19:17:22+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-consentadmin", - "version": "v0.9.2", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-consentadmin.git", - "reference": "62dc5e9d5b1a12a73549c80140b7224d7f7d1c2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-consentadmin/zipball/62dc5e9d5b1a12a73549c80140b7224d7f7d1c2e", - "reference": "62dc5e9d5b1a12a73549c80140b7224d7f7d1c2e", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "simplesamlphp/simplesamlphp-module-consent": "^0.9", - "webmozart/assert": "~1.4" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "extra": { - "ssp-mixedcase-module-name": "consentAdmin" - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Jacob Christiansen", - "email": "jach@wayf.dk" - }, - { - "name": "Olav Morken", - "email": "olav.morken@uninett.no" - } - ], - "description": "A module that allows users to manage their consent", - "keywords": [ - "consentadmin", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-consentadmin/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-consentadmin" - }, - "time": "2022-01-06T19:19:38+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-discopower", - "version": "v0.10.1", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-discopower.git", - "reference": "4cb6b7c648b455586903b8932a171397375b50b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/4cb6b7c648b455586903b8932a171397375b50b0", - "reference": "4cb6b7c648b455586903b8932a171397375b50b0", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "simplesamlphp/simplesamlphp": "^1.19", - "simplesamlphp/simplesamlphp-test-framework": "^0.1.2" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\modules\\discopower\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - } - ], - "description": "Fancy tabbed discovery service with filtering capabilities where SPs can have different sets of metadata listed", - "keywords": [ - "discopower", - "discovery", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-discopower/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-discopower" - }, - "time": "2021-08-17T14:29:22+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-exampleattributeserver.git", - "reference": "63e0323e81c32bc3c9eaa01ea45194bb10153708" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-exampleattributeserver/zipball/63e0323e81c32bc3c9eaa01ea45194bb10153708", - "reference": "63e0323e81c32bc3c9eaa01ea45194bb10153708", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\exampleattributeserver\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - } - ], - "description": "An example for SAML attributes queries", - "keywords": [ - "exampleattributeserver", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-exampleattributeserver/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-exampleattributeserver" - }, - "time": "2019-05-28T12:37:15+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-expirycheck", - "version": "v0.9.4", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-expirycheck.git", - "reference": "02101497281031befba93c48c96ee9133f57241d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-expirycheck/zipball/02101497281031befba93c48c96ee9133f57241d", - "reference": "02101497281031befba93c48c96ee9133f57241d", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\expirycheck\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Alex Mihičinac", - "email": "alexm@arnes.si" - } - ], - "description": "The expirycheck module validates user's expiry date", - "keywords": [ - "expirycheck", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-expirycheck/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-expirycheck" - }, - "time": "2022-01-06T21:16:01+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-ldap", - "version": "v0.9.17", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-ldap.git", - "reference": "40f1bfe0c4ac2f91cf8e52d22fa6ec2fe1c03066" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-ldap/zipball/40f1bfe0c4ac2f91cf8e52d22fa6ec2fe1c03066", - "reference": "40f1bfe0c4ac2f91cf8e52d22fa6ec2fe1c03066", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "suggest": { - "ext-ldap": "Needed when using LDAP authentication in SimpleSAMLphp" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\ldap\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - }, - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that provides authentication against LDAP stores", - "keywords": [ - "ldap", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-ldap/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-ldap" - }, - "time": "2022-01-11T12:50:47+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-memcachemonitor", - "version": "v0.9.3", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-memcachemonitor.git", - "reference": "8d25463ac56b4e2294f59f622a6658e0c67086f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-memcachemonitor/zipball/8d25463ac56b4e2294f59f622a6658e0c67086f4", - "reference": "8d25463ac56b4e2294f59f622a6658e0c67086f4", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "simplesamlphp/simplesamlphp": "^1.17", - "simplesamlphp/simplesamlphp-test-framework": "~0.0.6" - }, - "type": "simplesamlphp-module", - "extra": { - "ssp-mixedcase-module-name": "memcacheMonitor" - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - }, - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able display usage statistics of a memcache(d) store", - "keywords": [ - "memcachemonitor", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-memcachemonitor/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-memcachemonitor" - }, - "time": "2022-01-06T22:37:15+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-memcookie", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie.git", - "reference": "39535304e8d464b7baa1e82cb441fa432947ff57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-memcookie/zipball/39535304e8d464b7baa1e82cb441fa432947ff57", - "reference": "39535304e8d464b7baa1e82cb441fa432947ff57", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": ">=1.1.6" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17", - "simplesamlphp/simplesamlphp-test-framework": "^0.0.6" - }, - "type": "simplesamlphp-module", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olav.morken@uninett.no" - }, - { - "name": "Jaime Perez Crespo", - "email": "jaime.perez@uninett.no" - } - ], - "description": "A SimpleSAMLphp module that allows integration with Auth MemCookie, allowing web applications written in other languages than PHP to integrate with SimpleSAMLphp.", - "homepage": "https://simplesamlphp.org/", - "keywords": [ - "Auth MemCookie", - "apache", - "cookies", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie/" - }, - "time": "2019-08-08T18:33:47+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-metarefresh", - "version": "v0.10.0", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-metarefresh.git", - "reference": "488d7809857c274befac89facfa03520a05bc1ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-metarefresh/zipball/488d7809857c274befac89facfa03520a05bc1ba", - "reference": "488d7809857c274befac89facfa03520a05bc1ba", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.18" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\metarefresh\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - } - ], - "description": "The metarefresh module will download and parse metadata documents and store them locally", - "keywords": [ - "metarefresh", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-metarefresh/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-metarefresh" - }, - "time": "2022-05-03T08:57:30+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-negotiate", - "version": "v0.9.12", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-negotiate.git", - "reference": "48752cea80e81a60ebb522cc10789589ac16df50" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-negotiate/zipball/48752cea80e81a60ebb522cc10789589ac16df50", - "reference": "48752cea80e81a60ebb522cc10789589ac16df50", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "simplesamlphp/simplesamlphp-module-ldap": "^0.9", - "webmozart/assert": "~1.4" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "sensiolabs/security-checker": "^5.0.3", - "simplesamlphp/simplesamlphp": "dev-testing-1.18", - "simplesamlphp/simplesamlphp-test-framework": "^0.0.14", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-krb5": "Needed in case the SimpleSAMLphp negotiate module is used" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\negotiate\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - } - ], - "description": "The Negotiate module implements Microsofts Kerberos SPNEGO mechanism", - "keywords": [ - "negotiate", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-negotiate/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-negotiate" - }, - "time": "2022-01-03T23:18:27+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-oauth", - "version": "v0.9.3", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-oauth.git", - "reference": "2a2433144dca408315e4ee163f9ab73a6110b2b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-oauth/zipball/2a2433144dca408315e4ee163f9ab73a6110b2b1", - "reference": "2a2433144dca408315e4ee163f9ab73a6110b2b1", - "shasum": "" - }, - "require": { - "simplesamlphp/composer-module-installer": ">=1.1.6" - }, - "require-dev": { - "phpunit/phpunit": "~4.8.36", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\oauth\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olav.morken@uninett.no" - }, - { - "name": "Jaime Perez Crespo", - "email": "jaime.perez@uninett.no" - } - ], - "description": "A SimpleSAMLphp module that allows integration with OAuth1,", - "homepage": "https://simplesamlphp.org/", - "keywords": [ - "oauth1", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-oauth/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-oauth/" - }, - "abandoned": true, - "time": "2021-08-31T18:55:00+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-preprodwarning", - "version": "v0.9.3", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-preprodwarning.git", - "reference": "b3c6d9d41d009e340f4843ce5c24b4118a38e4c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-preprodwarning/zipball/b3c6d9d41d009e340f4843ce5c24b4118a38e4c3", - "reference": "b3c6d9d41d009e340f4843ce5c24b4118a38e4c3", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "dev-simplesamlphp-1.19", - "webmozart/assert": "^1.4" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\preprodwarning\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - } - ], - "description": "Display a warning when using a pre-production environment", - "keywords": [ - "preprodwarning", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-preprodwarning/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-preprodwarning" - }, - "time": "2022-01-06T23:21:17+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-radius", - "version": "v0.9.4", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-radius.git", - "reference": "dbe2976ba27f5131faeca368a5665f8baeaae8b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-radius/zipball/dbe2976ba27f5131faeca368a5665f8baeaae8b6", - "reference": "dbe2976ba27f5131faeca368a5665f8baeaae8b6", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17", - "simplesamlphp/simplesamlphp-test-framework": "^0.0.7" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\radius\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" - } - ], - "description": "A module that is able perform authentication against a RADIUS server", - "keywords": [ - "radius", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-radius/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-radius" - }, - "time": "2022-01-06T23:23:28+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-riak", - "version": "v0.9.1", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-riak.git", - "reference": "c1a9d9545cb4e05b9205b34624850bb777aca991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-riak/zipball/c1a9d9545cb4e05b9205b34624850bb777aca991", - "reference": "c1a9d9545cb4e05b9205b34624850bb777aca991", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "phpfastcache/riak-client": "^3.4", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\riak\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that is able to store key/value pairs in a Riak store", - "keywords": [ - "riak", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-riak/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-riak" - }, - "abandoned": true, - "time": "2019-12-03T08:28:45+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-sanitycheck", - "version": "v0.9.1", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-sanitycheck.git", - "reference": "15d6664eae73a233c3c4c72fd8a5c2be72b6ed2a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-sanitycheck/zipball/15d6664eae73a233c3c4c72fd8a5c2be72b6ed2a", - "reference": "15d6664eae73a233c3c4c72fd8a5c2be72b6ed2a", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "webmozart/assert": "~1.4" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\sanitycheck\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - } - ], - "description": "Perform sanity checks on configuration", - "keywords": [ - "sanitycheck", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-sanitycheck/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-sanitycheck" - }, - "time": "2020-05-07T11:34:29+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-smartattributes", - "version": "v0.9.2", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-smartattributes.git", - "reference": "ba6a32fa287db0f8d767104471176f70fad7f0e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-smartattributes/zipball/ba6a32fa287db0f8d767104471176f70fad7f0e1", - "reference": "ba6a32fa287db0f8d767104471176f70fad7f0e1", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\smartattributes\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - } - ], - "description": "The SmartAttributes module provides additional authentication processing filters to manipulate attributes.", - "keywords": [ - "simplesamlphp", - "smartattributes" - ], - "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-smartattributes/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-smartattributes" - }, - "time": "2022-01-06T23:42:07+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-sqlauth", - "version": "v0.9.4", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-sqlauth.git", - "reference": "8a28f9a9726bab1dbc8fd3734daa08882dd0a25b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-sqlauth/zipball/8a28f9a9726bab1dbc8fd3734daa08882dd0a25b", - "reference": "8a28f9a9726bab1dbc8fd3734daa08882dd0a25b", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17", - "webmozart/assert": "^1.4 <1.7" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\sqlauth\\": "lib/" - } + "Symfony\\Component\\Cache\\": "" + }, + "classmap": [ + "Traits/ValueWrapper.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-or-later" + "MIT" ], "authors": [ { - "name": "Olav Morken", - "email": "olavmrk@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "This is a authentication module for authenticating a user against a SQL database", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", "keywords": [ - "simplesamlphp", - "sqlauth" + "caching", + "psr6" ], "support": { - "issues": "https://github.com/tvdijen/simplesamlphp-module-sqlauth/issues", - "source": "https://github.com/tvdijen/simplesamlphp-module-sqlauth" - }, - "time": "2022-01-06T23:50:52+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-statistics", - "version": "v0.9.6", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-statistics.git", - "reference": "03fb6bdbbf5ce0a0cb257208db79aacac227ac10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-statistics/zipball/03fb6bdbbf5ce0a0cb257208db79aacac227ac10", - "reference": "03fb6bdbbf5ce0a0cb257208db79aacac227ac10", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "simplesamlphp/composer-module-installer": "~1.1", - "webmozart/assert": "^1.4" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "simplesamlphp/simplesamlphp": "^1.17", - "simplesamlphp/simplesamlphp-test-framework": "^0.0.12" - }, - "type": "simplesamlphp-module", - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\statistics\\": "lib/" - } + "source": "https://github.com/symfony/cache/tree/v6.4.8" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ + "funding": [ { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "The SimpleSAMLphp statistics module", - "keywords": [ - "simplesamlphp", - "statistics" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-statistics/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-statistics" - }, - "time": "2021-01-25T15:15:26+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "simplesamlphp/twig-configurable-i18n", - "version": "v2.3.5", + "name": "symfony/cache-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/simplesamlphp/twig-configurable-i18n.git", - "reference": "1dc0ff69ec1dfb4cab6a30c583b59faf0efc27d6" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/twig-configurable-i18n/zipball/1dc0ff69ec1dfb4cab6a30c583b59faf0efc27d6", - "reference": "1dc0ff69ec1dfb4cab6a30c583b59faf0efc27d6", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { - "php": ">=7.1", - "twig/extensions": "@dev" + "php": ">=8.1", + "psr/cache": "^3.0" }, - "require-dev": { - "phpunit/phpunit": "^7.5", - "sensiolabs/security-checker": "~6.0.3", - "simplesamlphp/simplesamlphp-test-framework": "~0.1.2", - "squizlabs/php_codesniffer": "^3.5", - "twig/twig": "^2.15.3" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } }, - "type": "project", "autoload": { "psr-4": { - "SimpleSAML\\TwigConfigurableI18n\\": "src/" + "Symfony\\Contracts\\Cache\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1" + "MIT" ], "authors": [ { - "name": "Jaime Perez", - "email": "jaime.perez@uninett.no" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "This is an extension on top of Twig's i18n extension, allowing you to customize which functions to use for translations.", + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", "keywords": [ - "extension", - "gettext", - "i18n", - "internationalization", - "translation", - "twig" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/simplesamlphp/twig-configurable-i18n/issues", - "source": "https://github.com/simplesamlphp/twig-configurable-i18n" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, - "abandoned": true, - "time": "2022-11-28T16:34:29+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "sinergi/browser-detector", - "version": "6.1.4", + "name": "symfony/config", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/sinergi/php-browser-detector.git", - "reference": "4927f7c2bedc48b68f183bd420aa3549c59e133b" + "url": "https://github.com/symfony/config.git", + "reference": "12e7e52515ce37191b193cf3365903c4f3951e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sinergi/php-browser-detector/zipball/4927f7c2bedc48b68f183bd420aa3549c59e133b", - "reference": "4927f7c2bedc48b68f183bd420aa3549c59e133b", + "url": "https://api.github.com/repos/symfony/config/zipball/12e7e52515ce37191b193cf3365903c4f3951e35", + "reference": "12e7e52515ce37191b193cf3365903c4f3951e35", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { - "phpunit/phpunit": "^8.0 || ^9.4" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Sinergi\\BrowserDetector\\": "src" - } + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4774,81 +3762,83 @@ ], "authors": [ { - "name": "Gabriel Bull", - "email": "me@gabrielbull.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Chris Schuld" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Detecting the user's browser, operating system and language.", - "keywords": [ - "browser", - "detection", - "language", - "operating system", - "os" - ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sinergi/php-browser-detector/issues", - "source": "https://github.com/sinergi/php-browser-detector/tree/6.1.4" + "source": "https://github.com/symfony/config/tree/v6.4.8" }, - "abandoned": true, - "time": "2021-09-23T13:51:44+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/cache", - "version": "v5.4.25", + "name": "symfony/console", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "e2013521c0f07473ae69a01fce0af78fc3ec0f23" + "url": "https://github.com/symfony/console.git", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/e2013521c0f07473ae69a01fce0af78fc3ec0f23", - "reference": "e2013521c0f07473ae69a01fce0af78fc3ec0f23", + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Cache\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4860,22 +3850,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "keywords": [ - "caching", - "psr6" + "cli", + "command-line", + "console", + "terminal" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -4891,43 +3883,53 @@ "type": "tidelift" } ], - "time": "2023-06-22T08:06:06+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/cache-contracts", - "version": "v2.5.2", + "name": "symfony/dependency-injection", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d3b618176e8c3a9e5772151c51eba0c52a0c771c", + "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10|^7.0" }, - "suggest": { - "symfony/cache-implementation": "" + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "symfony/config": "^6.1|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4935,26 +3937,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to caching", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.8" }, "funding": [ { @@ -4970,49 +3964,38 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/config", - "version": "v4.4.44", + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658", - "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "php": ">=8.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" }, - "exclude-from-classmap": [ - "/Tests/" + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5021,18 +4004,18 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v4.4.44" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -5048,58 +4031,43 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/console", - "version": "v4.4.49", + "name": "symfony/error-handler", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + "url": "https://github.com/symfony/error-handler.git", + "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc", + "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\ErrorHandler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5119,10 +4087,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.49" + "source": "https://github.com/symfony/error-handler/tree/v6.4.8" }, "funding": [ { @@ -5138,36 +4106,48 @@ "type": "tidelift" } ], - "time": "2022-11-05T17:10:16+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.44", + "name": "symfony/event-dispatcher", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5187,10 +4167,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" }, "funding": [ { @@ -5206,59 +4186,40 @@ "type": "tidelift" } ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v4.4.49", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "9065fe97dbd38a897e95ea254eb5ddfe1310f734" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/9065fe97dbd38a897e95ea254eb5ddfe1310f734", - "reference": "9065fe97dbd38a897e95ea254eb5ddfe1310f734", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<4.4.26" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4.26|^5.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5266,18 +4227,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.49" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -5293,38 +4262,37 @@ "type": "tidelift" } ], - "time": "2022-11-16T16:18:09+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "name": "symfony/filesystem", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "url": "https://github.com/symfony/filesystem.git", + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3", + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" }, + "type": "library", "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5333,18 +4301,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.8" }, "funding": [ { @@ -5360,36 +4328,32 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/error-handler", - "version": "v4.4.44", + "name": "symfony/finder", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + "url": "https://github.com/symfony/finder.git", + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "php": ">=8.1" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5409,10 +4373,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to manage errors and ease debugging PHP code", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + "source": "https://github.com/symfony/finder/tree/v6.4.8" }, "funding": [ { @@ -5428,52 +4392,116 @@ "type": "tidelift" } ], - "time": "2022-07-28T16:29:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "name": "symfony/framework-bundle", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "7c7739f87f1a8be1c2f5e7d28addfe763a917acb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/7c7739f87f1a8be1c2f5e7d28addfe763a917acb", + "reference": "7c7739f87f1a8be1c2f5e7d28addfe763a917acb", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/polyfill-php80": "^1.16" + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.1|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "doctrine/annotations": "<1.13.1", + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/asset": "<5.4", + "symfony/asset-mapper": "<6.4", + "symfony/clock": "<6.3", + "symfony/console": "<5.4|>=7.0", + "symfony/dom-crawler": "<6.4", + "symfony/dotenv": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<6.3", + "symfony/lock": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4", + "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", + "symfony/security-core": "<5.4", + "symfony/security-csrf": "<5.4", + "symfony/serializer": "<6.4", + "symfony/stopwatch": "<5.4", + "symfony/translation": "<6.4", + "symfony/twig-bridge": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "doctrine/annotations": "^1.13.1|^2", + "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/console": "^5.4.9|^6.0.9|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.3|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/notifier": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/scheduler": "^6.4.4|^7.0.4", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/semaphore": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", + "twig/twig": "^2.10|^3.0.4" }, - "type": "library", + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Bundle\\FrameworkBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5493,10 +4521,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.8" }, "funding": [ { @@ -5512,43 +4540,49 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "name": "symfony/http-foundation", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "27de8cc95e11db7a50b027e71caaab9024545947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947", + "reference": "27de8cc95e11db7a50b027e71caaab9024545947", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "conflict": { + "symfony/cache": "<6.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5556,26 +4590,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.8" }, "funding": [ { @@ -5591,32 +4617,82 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.4.25", + "name": "symfony/http-kernel", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1", + "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5636,10 +4712,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides basic utilities for the filesystem", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.8" }, "funding": [ { @@ -5655,34 +4731,38 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2024-06-02T16:06:25+00:00" }, { - "name": "symfony/finder", - "version": "v5.4.27", + "name": "symfony/intl", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "url": "https://github.com/symfony/intl.git", + "reference": "50265cdcf5a44bec3fcf487b5d0015aece91d1eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/intl/zipball/50265cdcf5a44bec3fcf487b5d0015aece91d1eb", + "reference": "50265cdcf5a44bec3fcf487b5d0015aece91d1eb", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\Intl\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/data/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5691,18 +4771,34 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Provides access to the localization data of the ICU library", "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/intl/tree/v6.4.8" }, "funding": [ { @@ -5718,118 +4814,45 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/framework-bundle", - "version": "v4.4.49", + "name": "symfony/polyfill-ctype", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "d8cf2558249004a29b8e27b1f6eae52337ff471b" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/d8cf2558249004a29b8e27b1f6eae52337ff471b", - "reference": "d8cf2558249004a29b8e27b1f6eae52337ff471b", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { - "ext-xml": "*", - "php": ">=7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4.11|~5.0.11|^5.1.3", - "symfony/dependency-injection": "^4.4.38|^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4.12|^5.1.4" - }, - "conflict": { - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.4.21", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", - "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" + "php": ">=7.1" }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "doctrine/persistence": "^1.3|^2|^3", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.4.42|^5.4.9", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.4|^5.2", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "provide": { + "ext-ctype": "*" }, "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, - "type": "symfony-bundle", "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5837,18 +4860,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v4.4.49" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5864,41 +4893,41 @@ "type": "tidelift" } ], - "time": "2022-11-05T15:42:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.1" }, "suggest": { - "symfony/http-client-implementation": "" + "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -5915,18 +4944,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to HTTP clients", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -5942,45 +4971,45 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/http-foundation", - "version": "v5.4.26", + "name": "symfony/polyfill-intl-icu", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "e7793151e99dc2ac1352ff3735d100fb3b3bfc08" + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e7793151e99dc2ac1352ff3735d100fb3b3bfc08", - "reference": "e7793151e99dc2ac1352ff3735d100fb3b3bfc08", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "php": ">=7.1" }, "suggest": { - "symfony/mime": "To use the file extension guesser" + "ext-intl": "For best performance and support of other locales than \"en\"" }, "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Polyfill\\Intl\\Icu\\": "" }, + "classmap": [ + "Resources/stubs" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -5991,18 +5020,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Symfony polyfill for intl's ICU-related data and classes", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.26" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" }, "funding": [ { @@ -6018,75 +5055,44 @@ "type": "tidelift" } ], - "time": "2023-07-21T11:30:15+00:00" + "time": "2024-01-29T20:12:16+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.4.50", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aa6df6c045f034aa13ac752fc234bb300b9488ef", - "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "php": ">=7.1" }, "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6095,18 +5101,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.50" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -6122,36 +5136,33 @@ "type": "tidelift" } ], - "time": "2023-02-01T08:01:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { "php": ">=7.1" }, "provide": { - "ext-ctype": "*" + "ext-mbstring": "*" }, "suggest": { - "ext-ctype": "For best performance" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6162,7 +5173,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -6171,24 +5182,25 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "mbstring", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -6204,36 +5216,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "name": "symfony/polyfill-php80", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { "php": ">=7.1" }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6244,14 +5247,21 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -6261,17 +5271,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -6287,30 +5296,28 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "name": "symfony/polyfill-php83", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6321,8 +5328,11 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6338,7 +5348,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -6347,7 +5357,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -6363,44 +5373,48 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "name": "symfony/routing", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "url": "https://github.com/symfony/routing.git", + "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58", + "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Component\\Routing\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6409,24 +5423,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/routing/tree/v6.4.8" }, "funding": [ { @@ -6442,41 +5456,46 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "name": "symfony/service-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Contracts\\Service\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6484,10 +5503,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -6497,16 +5512,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -6522,44 +5539,49 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "name": "symfony/string", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "url": "https://github.com/symfony/string.git", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, + "type": "library", "autoload": { "files": [ - "bootstrap.php" + "Resources/functions.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Component\\String\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6576,16 +5598,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -6601,54 +5625,41 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.44", + "name": "symfony/translation-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "php": ">=8.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Contracts\\Translation\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6657,24 +5668,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Generic abstractions related to translation", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -6690,47 +5703,81 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.5.2", + "name": "symfony/twig-bridge", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "57de1b7d7499053a2c5beb9344751e8bfd332649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/57de1b7d7499053a2c5beb9344751e8bfd332649", + "reference": "57de1b7d7499053a2c5beb9344751e8bfd332649", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/translation-contracts": "^2.5|^3", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.4", + "symfony/form": "<6.3", + "symfony/http-foundation": "<5.4", + "symfony/http-kernel": "<6.4", + "symfony/mime": "<6.2", + "symfony/serializer": "<6.4", + "symfony/translation": "<5.4", + "symfony/workflow": "<5.4" }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.3|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^5.4|^6.0|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/security-http": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.1|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" + }, + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6738,26 +5785,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to writing services", + "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.8" }, "funding": [ { @@ -6773,43 +5812,39 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.26", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e706c99b4a6f4d9383b52b80dd8c74880501e314" + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e706c99b4a6f4d9383b52b80dd8c74880501e314", - "reference": "e706c99b4a6f4d9383b52b80dd8c74880501e314", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -6846,7 +5881,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.26" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" }, "funding": [ { @@ -6862,28 +5897,30 @@ "type": "tidelift" } ], - "time": "2023-07-13T07:32:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.4.26", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "11401fe94f960249b3c63a488c63ba73091c1e4a" + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/11401fe94f960249b3c63a488c63ba73091c1e4a", - "reference": "11401fe94f960249b3c63a488c63ba73091c1e4a", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/792ca836f99b340f2e9ca9497c7953948c49a504", + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6916,10 +5953,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.26" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.8" }, "funding": [ { @@ -6935,41 +5974,37 @@ "type": "tidelift" } ], - "time": "2023-07-20T07:21:16+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/yaml", - "version": "v5.0.11", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d" + "reference": "52903de178d542850f6f341ba92995d3d63e60c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/29b60e88ff11a45b708115004fdeacab1ee3dd5d", - "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9", + "reference": "52903de178d542850f6f341ba92995d3d63e60c9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0|^7.0" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -6992,10 +6027,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/5.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.8" }, "funding": [ { @@ -7011,45 +6046,38 @@ "type": "tidelift" } ], - "time": "2020-05-20T17:38:26+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "twig/extensions", - "version": "v1.5.4", + "name": "twig/intl-extra", + "version": "v3.10.0", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig-extensions.git", - "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" + "url": "https://github.com/twigphp/intl-extra.git", + "reference": "693f6beb8ca91fc6323e01b3addf983812f65c93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", - "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/693f6beb8ca91fc6323e01b3addf983812f65c93", + "reference": "693f6beb8ca91fc6323e01b3addf983812f65c93", "shasum": "" }, "require": { - "twig/twig": "^1.27|^2.0" + "php": ">=7.2.5", + "symfony/intl": "^5.4|^6.4|^7.0", + "twig/twig": "^3.10" }, "require-dev": { - "symfony/phpunit-bridge": "^3.4", - "symfony/translation": "^2.7|^3.4" - }, - "suggest": { - "symfony/translation": "Allow the time_diff output to be translated" + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { - "psr-0": { - "Twig_Extensions_": "lib/" - }, "psr-4": { - "Twig\\Extensions\\": "src/" - } + "Twig\\Extra\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7058,55 +6086,65 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" } ], - "description": "Common additional features for Twig that do not directly belong in core", + "description": "A Twig extension for Intl", + "homepage": "https://twig.symfony.com", "keywords": [ - "i18n", - "text" + "intl", + "twig" ], "support": { - "issues": "https://github.com/twigphp/Twig-extensions/issues", - "source": "https://github.com/twigphp/Twig-extensions/tree/master" + "source": "https://github.com/twigphp/intl-extra/tree/v3.10.0" }, - "abandoned": true, - "time": "2018-12-05T18:34:18+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2024-05-11T07:35:57+00:00" }, { "name": "twig/twig", - "version": "v2.15.5", + "version": "v3.10.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e" + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", - "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.8" + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.15-dev" - } - }, "autoload": { - "psr-0": { - "Twig_": "lib/" - }, + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], "psr-4": { "Twig\\": "src/" } @@ -7139,7 +6177,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.15.5" + "source": "https://github.com/twigphp/Twig/tree/v3.10.3" }, "funding": [ { @@ -7151,7 +6189,7 @@ "type": "tidelift" } ], - "time": "2023-05-03T17:49:41+00:00" + "time": "2024-05-16T10:04:27+00:00" }, { "name": "webmozart/assert", @@ -7212,79 +6250,71 @@ "time": "2022-06-03T18:03:27+00:00" }, { - "name": "whitehat101/apr1-md5", - "version": "v1.0.0", + "name": "yidas/yii2-composer-bower-skip", + "version": "2.0.13", "source": { "type": "git", - "url": "https://github.com/whitehat101/apr1-md5.git", - "reference": "8b261c9fc0481b4e9fa9d01c6ca70867b5d5e819" + "url": "https://github.com/yidas/yii2-composer-bower-skip.git", + "reference": "1156ed4dc2ddca811bd2582d09e8885585fbd0cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/whitehat101/apr1-md5/zipball/8b261c9fc0481b4e9fa9d01c6ca70867b5d5e819", - "reference": "8b261c9fc0481b4e9fa9d01c6ca70867b5d5e819", + "url": "https://api.github.com/repos/yidas/yii2-composer-bower-skip/zipball/1156ed4dc2ddca811bd2582d09e8885585fbd0cb", + "reference": "1156ed4dc2ddca811bd2582d09e8885585fbd0cb", "shasum": "" }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "4.0.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "WhiteHat101\\Crypt\\": "src" - } + "provide": { + "bower-asset/bootstrap": "*", + "bower-asset/inputmask": "*", + "bower-asset/jquery": "*", + "bower-asset/punycode": "*", + "bower-asset/typeahead.js": "*", + "bower-asset/yii2-pjax": "*" }, + "type": "yii2-extension", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Jeremy Ebler", - "email": "jebler@gmail.com" - } - ], - "description": "Apache's APR1-MD5 algorithm in pure PHP", - "homepage": "https://github.com/whitehat101/apr1-md5", + "description": "A Composer package that allows you to install or update Yii2 without Bower-Asset", "keywords": [ - "MD5", - "apr1" + "bower", + "bower asset", + "framework", + "yii2" ], "support": { - "issues": "https://github.com/whitehat101/apr1-md5/issues", - "source": "https://github.com/whitehat101/apr1-md5/tree/master" + "issues": "https://github.com/yidas/yii2-composer-bower-skip/issues?state=open", + "source": "https://github.com/yidas/yii2-composer-bower-skip" }, - "time": "2015-02-11T11:06:42+00:00" + "time": "2017-11-03T06:28:14+00:00" }, { "name": "yiisoft/yii2", - "version": "2.0.49.3", + "version": "2.0.50", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "783f65c9a743dfd7484b6026f1aa6f25e37159d9" + "reference": "a90b6638cce84e78ed8f681a5cad4a14c76464b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/783f65c9a743dfd7484b6026f1aa6f25e37159d9", - "reference": "783f65c9a743dfd7484b6026f1aa6f25e37159d9", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/a90b6638cce84e78ed8f681a5cad4a14c76464b4", + "reference": "a90b6638cce84e78ed8f681a5cad4a14c76464b4", "shasum": "" }, "require": { - "bower-asset/inputmask": "~3.2.2 | ~3.3.5", + "bower-asset/inputmask": "^5.0.8 ", "bower-asset/jquery": "3.7.*@stable | 3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", - "bower-asset/punycode": "1.3.*", + "bower-asset/punycode": "^2.2", "bower-asset/yii2-pjax": "~2.0.1", "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0", "ext-ctype": "*", "ext-mbstring": "*", - "ezyang/htmlpurifier": "^4.6", + "ezyang/htmlpurifier": "^4.17", "lib-pcre": "*", "paragonie/random_compat": ">=1", - "php": ">=5.4.0", + "php": ">=7.3.0", "yiisoft/yii2-composer": "~2.0.4" }, "bin": [ @@ -7379,7 +6409,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T15:39:08+00:00" + "time": "2024-05-30T17:23:31+00:00" }, { "name": "yiisoft/yii2-composer", @@ -7762,69 +6792,6 @@ }, "time": "2023-12-09T11:23:23+00:00" }, - { - "name": "behat/mink-extension", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/Behat/MinkExtension.git", - "reference": "80f7849ba53867181b7e412df9210e12fba50177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", - "reference": "80f7849ba53867181b7e412df9210e12fba50177", - "shasum": "" - }, - "require": { - "behat/behat": "^3.0.5", - "behat/mink": "^1.5", - "php": ">=5.3.2", - "symfony/config": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "behat/mink-goutte-driver": "^1.1", - "phpspec/phpspec": "^2.0" - }, - "type": "behat-extension", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\MinkExtension": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com" - } - ], - "description": "Mink extension for Behat", - "homepage": "http://extensions.behat.org/mink", - "keywords": [ - "browser", - "gui", - "test", - "web" - ], - "support": { - "issues": "https://github.com/Behat/MinkExtension/issues", - "source": "https://github.com/Behat/MinkExtension/tree/master" - }, - "time": "2018-02-06T15:36:30+00:00" - }, { "name": "behat/transliterator", "version": "v1.5.0", @@ -7876,16 +6843,16 @@ }, { "name": "dmore/chrome-mink-driver", - "version": "2.9.2", + "version": "2.9.3", "source": { "type": "git", - "url": "git@gitlab.com:behat-chrome/chrome-mink-driver.git", - "reference": "a91b61c809c2e834c5f94f6df3af4d4117735e70" + "url": "https://gitlab.com/behat-chrome/chrome-mink-driver.git", + "reference": "4dc18d3b4668e749ab7bef5a6796c13711c93e61" }, "dist": { "type": "zip", - "url": "https://gitlab.com/api/v4/projects/behat-chrome%2Fchrome-mink-driver/repository/archive.zip?sha=a91b61c809c2e834c5f94f6df3af4d4117735e70", - "reference": "a91b61c809c2e834c5f94f6df3af4d4117735e70", + "url": "https://gitlab.com/api/v4/projects/behat-chrome%2Fchrome-mink-driver/repository/archive.zip?sha=4dc18d3b4668e749ab7bef5a6796c13711c93e61", + "reference": "4dc18d3b4668e749ab7bef5a6796c13711c93e61", "shasum": "" }, "require": { @@ -7893,7 +6860,7 @@ "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "textalk/websocket": "^1.2.0" + "phrity/websocket": "^1.7.0" }, "require-dev": { "mink/driver-testsuite": "dev-master", @@ -7919,9 +6886,10 @@ "description": "Mink driver for controlling chrome without selenium", "homepage": "https://gitlab.com/behat-chrome/chrome-mink-driver", "support": { - "issues": "https://gitlab.com/behat-chrome/chrome-mink-driver/-/issues" + "issues": "https://gitlab.com/behat-chrome/chrome-mink-driver/-/issues", + "source": "https://gitlab.com/behat-chrome/chrome-mink-driver/-/tree/2.9.3" }, - "time": "2023-04-03T10:37:34+00:00" + "time": "2024-05-17T12:26:55+00:00" }, { "name": "doctrine/instantiator", @@ -7987,24 +6955,90 @@ "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:15:36+00:00" + }, + { + "name": "friends-of-behat/mink-extension", + "version": "v2.7.5", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfBehat/MinkExtension.git", + "reference": "854336030e11983f580f49faad1b49a1238f9846" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfBehat/MinkExtension/zipball/854336030e11983f580f49faad1b49a1238f9846", + "reference": "854336030e11983f580f49faad1b49a1238f9846", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.5", + "behat/mink": "^1.5", + "php": ">=7.4", + "symfony/config": "^4.4 || ^5.0 || ^6.0 || ^7.0" + }, + "replace": { + "behat/mink-extension": "self.version" + }, + "require-dev": { + "behat/mink-goutte-driver": "^1.1 || ^2.0", + "phpspec/phpspec": "^6.0 || ^7.0 || 7.1.x-dev" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + }, + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" } ], - "time": "2022-12-30T00:15:36+00:00" + "description": "Mink extension for Behat", + "homepage": "http://extensions.behat.org/mink", + "keywords": [ + "browser", + "gui", + "test", + "web" + ], + "support": { + "issues": "https://github.com/FriendsOfBehat/MinkExtension/issues", + "source": "https://github.com/FriendsOfBehat/MinkExtension/tree/v2.7.5" + }, + "time": "2024-01-11T09:12:02+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -8012,11 +7046,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -8042,7 +7077,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -8050,24 +7085,25 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -8108,9 +7144,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -8165,16 +7207,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "7.0.15", + "version": "7.0.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "reference": "40a4ed114a4aea5afd6df8d0f0c9cd3033097f66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/40a4ed114a4aea5afd6df8d0f0c9cd3033097f66", + "reference": "40a4ed114a4aea5afd6df8d0f0c9cd3033097f66", "shasum": "" }, "require": { @@ -8226,7 +7268,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.17" }, "funding": [ { @@ -8234,20 +7276,20 @@ "type": "github" } ], - "time": "2021-07-26T12:20:09+00:00" + "time": "2024-03-02T06:09:37+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "69deeb8664f611f156a924154985fbd4911eb36b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/69deeb8664f611f156a924154985fbd4911eb36b", + "reference": "69deeb8664f611f156a924154985fbd4911eb36b", "shasum": "" }, "require": { @@ -8286,7 +7328,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.6" }, "funding": [ { @@ -8294,7 +7336,7 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2024-03-01T13:39:50+00:00" }, { "name": "phpunit/php-text-template", @@ -8343,16 +7385,16 @@ }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a691211e94ff39a34811abd521c31bd5b305b0bb", + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb", "shasum": "" }, "require": { @@ -8368,207 +7410,435 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-01T13:42:41+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3", + "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "abandoned": true, + "time": "2020-08-04T08:28:15+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "8.5.38", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "1ecad678646c817a29e55a32c930f3601c3f5a8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1ecad678646c817a29e55a32c930f3601c3f5a8c", + "reference": "1ecad678646c817a29e55a32c930f3601c3f5a8c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.0", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.2", + "phpunit/php-code-coverage": "^7.0.12", + "phpunit/php-file-iterator": "^2.0.4", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.5", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.3", + "sebastian/exporter": "^3.1.5", + "sebastian/global-state": "^3.0.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", + "sebastian/version": "^2.0.1" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage", + "phpunit/php-invoker": "To allow enforcing time limits" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.38" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-04-05T04:31:23+00:00" + }, + { + "name": "phrity/net-stream", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sirn-se/phrity-net-stream.git", + "reference": "9105931b65ad90c75f4885a40b268b0f65802e3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sirn-se/phrity-net-stream/zipball/9105931b65ad90c75f4885a40b268b0f65802e3e", + "reference": "9105931b65ad90c75f4885a40b268b0f65802e3e", + "shasum": "" + }, + "require": { + "php": "^7.4 | ^8.0", + "phrity/util-errorhandler": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 | ^2.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^9.0 | ^10.0", + "phrity/net-uri": "^1.1", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Phrity\\Net\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sören Jensen", + "email": "sirn@sirn.se", + "homepage": "https://phrity.sirn.se" + } + ], + "description": "Socket stream classes implementing PSR-7 Stream and PSR-17 StreamFactory", + "homepage": "https://phrity.sirn.se/net-stream", + "keywords": [ + "Socket", + "client", + "psr-17", + "psr-7", + "server", + "stream", + "stream factory" + ], + "support": { + "issues": "https://github.com/sirn-se/phrity-net-stream/issues", + "source": "https://github.com/sirn-se/phrity-net-stream/tree/1.3.0" + }, + "time": "2023-10-22T10:47:03+00:00" + }, + { + "name": "phrity/net-uri", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sirn-se/phrity-net-uri.git", + "reference": "3f458e0c4d1ddc0e218d7a5b9420127c63925f43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sirn-se/phrity-net-uri/zipball/3f458e0c4d1ddc0e218d7a5b9420127c63925f43", + "reference": "3f458e0c4d1ddc0e218d7a5b9420127c63925f43", + "shasum": "" + }, + "require": { + "php": "^7.4 | ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 | ^2.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^9.0 | ^10.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Phrity\\Net\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Sören Jensen", + "email": "sirn@sirn.se", + "homepage": "https://phrity.sirn.se" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "PSR-7 Uri and PSR-17 UriFactory implementation", + "homepage": "https://phrity.sirn.se/net-uri", "keywords": [ - "timer" + "psr-17", + "psr-7", + "uri", + "uri factory" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "issues": "https://github.com/sirn-se/phrity-net-uri/issues", + "source": "https://github.com/sirn-se/phrity-net-uri/tree/1.3.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T08:20:02+00:00" + "time": "2023-08-21T10:33:06+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "4.0.4", + "name": "phrity/util-errorhandler", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3" + "url": "https://github.com/sirn-se/phrity-util-errorhandler.git", + "reference": "4016d9f9615a4c602f525b0542e4835e316a42e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3", - "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3", + "url": "https://api.github.com/repos/sirn-se/phrity-util-errorhandler/zipball/4016d9f9615a4c602f525b0542e4835e316a42e4", + "reference": "4016d9f9615a4c602f525b0542e4835e316a42e4", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": "^7.3 || ^8.0" + "php": "^7.4 | ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^9.0 | ^10.0 | ^11.0", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Phrity\\Util\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Sören Jensen", + "email": "sirn@sirn.se", + "homepage": "https://phrity.sirn.se" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Inline error handler; catch and resolve errors for code block.", + "homepage": "https://phrity.sirn.se/util-errorhandler", "keywords": [ - "tokenizer" + "error", + "warning" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" + "issues": "https://github.com/sirn-se/phrity-util-errorhandler/issues", + "source": "https://github.com/sirn-se/phrity-util-errorhandler/tree/1.1.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "abandoned": true, - "time": "2020-08-04T08:28:15+00:00" + "time": "2024-03-05T19:32:14+00:00" }, { - "name": "phpunit/phpunit", - "version": "8.5.33", + "name": "phrity/websocket", + "version": "1.7.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e" + "url": "https://github.com/sirn-se/websocket-php.git", + "reference": "8a525da4457b599ab1960f24183f25626c96ce3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e", - "reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e", + "url": "https://api.github.com/repos/sirn-se/websocket-php/zipball/8a525da4457b599ab1960f24183f25626c96ce3c", + "reference": "8a525da4457b599ab1960f24183f25626c96ce3c", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.0", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.5", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.5", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "php": "^7.4 | ^8.0", + "phrity/net-stream": "^1.2", + "phrity/net-uri": "^1.2", + "phrity/util-errorhandler": "^1.0", + "psr/http-message": "^1.1 | ^2.0", + "psr/log": "^1.0 | ^2.0 | ^3.0" }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "require-dev": { + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^9.0 | ^10.0", + "phrity/net-mock": "^1.3", + "squizlabs/php_codesniffer": "^3.5" }, - "bin": [ - "phpunit" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.5-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "WebSocket\\": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "ISC" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fredrik Liljegren" + }, + { + "name": "Sören Jensen", + "email": "sirn@sirn.se", + "homepage": "https://phrity.sirn.se" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "WebSocket client and server", + "homepage": "https://phrity.sirn.se/websocket", "keywords": [ - "phpunit", - "testing", - "xunit" + "client", + "server", + "websocket" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.33" + "issues": "https://github.com/sirn-se/websocket-php/issues", + "source": "https://github.com/sirn-se/websocket-php/tree/1.7.3" }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2023-02-27T13:04:50+00:00" + "time": "2024-05-31T13:43:32+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", "shasum": "" }, "require": { @@ -8602,7 +7872,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.3" }, "funding": [ { @@ -8610,7 +7880,7 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2024-03-01T13:45:45+00:00" }, { "name": "sebastian/comparator", @@ -8688,16 +7958,16 @@ }, { "name": "sebastian/diff", - "version": "3.0.4", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae" + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6296a0c086dd0117c1b78b059374d7fcbe7545ae", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98ff311ca519c3aa73ccd3de053bdb377171d7b6", + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6", "shasum": "" }, "require": { @@ -8742,7 +8012,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.6" }, "funding": [ { @@ -8750,20 +8020,20 @@ "type": "github" } ], - "time": "2023-05-07T05:30:20+00:00" + "time": "2024-03-02T06:16:36+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "4.2.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "56932f6049a0482853056ffd617c91ffcc754205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/56932f6049a0482853056ffd617c91ffcc754205", + "reference": "56932f6049a0482853056ffd617c91ffcc754205", "shasum": "" }, "require": { @@ -8805,7 +8075,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.5" }, "funding": [ { @@ -8813,24 +8083,24 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2024-03-01T13:49:59+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "3.1.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1939bc8fd1d39adcfa88c5b35335910869214c56", + "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56", "shasum": "" }, "require": { - "php": ">=7.0", + "php": ">=7.2", "sebastian/recursion-context": "^3.0" }, "require-dev": { @@ -8882,7 +8152,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.6" }, "funding": [ { @@ -8890,20 +8160,20 @@ "type": "github" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2024-03-02T06:21:38+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.2", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" + "reference": "91c7c47047a971f02de57ed6f040087ef110c5d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/91c7c47047a971f02de57ed6f040087ef110c5d9", + "reference": "91c7c47047a971f02de57ed6f040087ef110c5d9", "shasum": "" }, "require": { @@ -8946,7 +8216,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.5" }, "funding": [ { @@ -8954,20 +8224,20 @@ "type": "github" } ], - "time": "2022-02-10T06:55:38+00:00" + "time": "2024-03-02T06:13:16+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "reference": "ac5b293dba925751b808e02923399fb44ff0d541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ac5b293dba925751b808e02923399fb44ff0d541", + "reference": "ac5b293dba925751b808e02923399fb44ff0d541", "shasum": "" }, "require": { @@ -9003,7 +8273,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.5" }, "funding": [ { @@ -9011,20 +8281,20 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2024-03-01T13:54:02+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/1d439c229e61f244ff1f211e5c99737f90c67def", + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def", "shasum": "" }, "require": { @@ -9058,7 +8328,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.3" }, "funding": [ { @@ -9066,20 +8336,20 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2024-03-01T13:56:04+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/9bfd3c6f1f08c026f542032dfb42813544f7d64c", + "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c", "shasum": "" }, "require": { @@ -9121,7 +8391,7 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.2" }, "funding": [ { @@ -9129,20 +8399,20 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2024-03-01T14:07:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/72a7f7674d053d548003b16ff5a106e7e0e06eee", + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee", "shasum": "" }, "require": { @@ -9172,8 +8442,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.3" }, "funding": [ { @@ -9181,20 +8450,20 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2024-03-01T13:59:09+00:00" }, { "name": "sebastian/type", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "reference": "18f071c3a29892b037d35e6b20ddf3ea39b42874" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/18f071c3a29892b037d35e6b20ddf3ea39b42874", + "reference": "18f071c3a29892b037d35e6b20ddf3ea39b42874", "shasum": "" }, "require": { @@ -9229,7 +8498,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/sebastianbergmann/type/tree/1.1.5" }, "funding": [ { @@ -9237,7 +8506,7 @@ "type": "github" } ], - "time": "2020-11-30T07:25:11+00:00" + "time": "2024-03-01T14:04:07+00:00" }, { "name": "sebastian/version", @@ -9288,16 +8557,16 @@ }, { "name": "symfony/css-selector", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "1c5d5c2103c3762aff27a27e1e2409e30a79083b" + "reference": "4b61b02fe15db48e3687ce1c45ea385d1780fe08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c5d5c2103c3762aff27a27e1e2409e30a79083b", - "reference": "1c5d5c2103c3762aff27a27e1e2409e30a79083b", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4b61b02fe15db48e3687ce1c45ea385d1780fe08", + "reference": "4b61b02fe15db48e3687ce1c45ea385d1780fe08", "shasum": "" }, "require": { @@ -9333,7 +8602,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.7" + "source": "https://github.com/symfony/css-selector/tree/v6.4.8" }, "funding": [ { @@ -9349,55 +8618,61 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/translation", - "version": "v4.4.47", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94" + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/45036b1d53accc48fe9bab71ccd86d57eba0dd94", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94", + "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a", + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -9422,85 +8697,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.47" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-10-03T15:15:11+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/translation/tree/v6.4.8" }, "funding": [ { @@ -9516,69 +8713,20 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" - }, - { - "name": "textalk/websocket", - "version": "1.5.8", - "source": { - "type": "git", - "url": "https://github.com/Textalk/websocket-php.git", - "reference": "d05dbaa97500176447ffb1f1800573f23085ab13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/d05dbaa97500176447ffb1f1800573f23085ab13", - "reference": "d05dbaa97500176447ffb1f1800573f23085ab13", - "shasum": "" - }, - "require": { - "php": "^7.2 | ^8.0", - "psr/log": "^1 | ^2 | ^3" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.0", - "phpunit/phpunit": "^8.0|^9.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "WebSocket\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Fredrik Liljegren" - }, - { - "name": "Sören Jensen", - "email": "soren@abicart.se" - } - ], - "description": "WebSocket client and server", - "support": { - "issues": "https://github.com/Textalk/websocket-php/issues", - "source": "https://github.com/Textalk/websocket-php/tree/1.5.8" - }, - "time": "2022-04-26T06:28:24+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -9607,7 +8755,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -9615,13 +8763,14 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { - "gettext/gettext": 20, + "silinternational/ssp-utilities": 20, + "silinternational/psr3-adapters": 20, "roave/security-advisories": 20 }, "prefer-stable": false, diff --git a/installed-packages.json b/installed-packages.json index 7347d5ab..8f9c735e 100644 --- a/installed-packages.json +++ b/installed-packages.json @@ -5,7 +5,7 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.313.0" + "version": "3.314.1" }, { "name": "cebe/markdown", @@ -25,39 +25,43 @@ }, { "name": "gettext/gettext", - "version": "4.x-dev ed5535a" + "version": "v5.7.0" }, { "name": "gettext/languages", "version": "2.10.0" }, + { + "name": "gettext/translator", + "version": "v1.2.0" + }, { "name": "google/recaptcha", "version": "1.3.0" }, { "name": "guzzlehttp/command", - "version": "1.3.0" + "version": "1.3.1" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0" + "version": "7.8.1" }, { "name": "guzzlehttp/guzzle-services", - "version": "1.4.0" + "version": "1.4.1" }, { "name": "guzzlehttp/promises", - "version": "1.5.3" + "version": "2.0.2" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0" + "version": "2.6.2" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1" + "version": "v1.0.3" }, { "name": "mlocati/ip-lib", @@ -65,7 +69,7 @@ }, { "name": "monolog/monolog", - "version": "1.27.1" + "version": "3.6.0" }, { "name": "mtdowling/jmespath.php", @@ -75,13 +79,9 @@ "name": "paragonie/random_compat", "version": "v9.99.100" }, - { - "name": "phpfastcache/riak-client", - "version": "3.4.3" - }, { "name": "phpmailer/phpmailer", - "version": "v6.8.0" + "version": "v6.9.1" }, { "name": "phpspec/php-diff", @@ -89,19 +89,23 @@ }, { "name": "psr/cache", - "version": "2.0.0" + "version": "3.0.0" }, { "name": "psr/container", - "version": "1.1.2" + "version": "2.0.2" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0" }, { "name": "psr/http-client", - "version": "1.0.2" + "version": "1.0.3" }, { "name": "psr/http-factory", - "version": "1.0.2" + "version": "1.1.0" }, { "name": "psr/http-message", @@ -109,7 +113,7 @@ }, { "name": "psr/log", - "version": "1.1.4" + "version": "3.0.0" }, { "name": "ralouphie/getallheaders", @@ -121,7 +125,7 @@ }, { "name": "roave/security-advisories", - "version": "dev-master 69dafab" + "version": "dev-master 2e530fa" }, { "name": "robrichards/xmlseclibs", @@ -137,11 +141,11 @@ }, { "name": "silinternational/psr3-adapters", - "version": "3.1.0" + "version": "dev-develop 3c9bf52" }, { "name": "silinternational/ssp-utilities", - "version": "1.1.0" + "version": "dev-develop d62cbee" }, { "name": "silinternational/yii2-json-log-targets", @@ -149,135 +153,23 @@ }, { "name": "simplesamlphp/assert", - "version": "v0.0.13" + "version": "v1.1.8" }, { "name": "simplesamlphp/composer-module-installer", - "version": "v1.1.8" + "version": "v1.3.4" }, { "name": "simplesamlphp/saml2", - "version": "v4.6.10" + "version": "v4.6.12" }, { "name": "simplesamlphp/simplesamlphp", - "version": "1.19.8" - }, - { - "name": "simplesamlphp/simplesamlphp-module-adfs", - "version": "v1.0.9" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authcrypt", - "version": "v0.9.4" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authfacebook", - "version": "v0.9.3" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authorize", - "version": "v0.9.4" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authtwitter", - "version": "v0.9.3" + "version": "v2.2.2" }, { - "name": "simplesamlphp/simplesamlphp-module-authwindowslive", - "version": "v0.9.1" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authx509", - "version": "v0.9.9" - }, - { - "name": "simplesamlphp/simplesamlphp-module-authyubikey", - "version": "v0.9.3" - }, - { - "name": "simplesamlphp/simplesamlphp-module-cas", - "version": "v0.9.1" - }, - { - "name": "simplesamlphp/simplesamlphp-module-cdc", - "version": "v0.9.2" - }, - { - "name": "simplesamlphp/simplesamlphp-module-consent", - "version": "v0.9.8" - }, - { - "name": "simplesamlphp/simplesamlphp-module-consentadmin", - "version": "v0.9.2" - }, - { - "name": "simplesamlphp/simplesamlphp-module-discopower", - "version": "v0.10.1" - }, - { - "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver", - "version": "v1.0.0" - }, - { - "name": "simplesamlphp/simplesamlphp-module-expirycheck", - "version": "v0.9.4" - }, - { - "name": "simplesamlphp/simplesamlphp-module-ldap", - "version": "v0.9.17" - }, - { - "name": "simplesamlphp/simplesamlphp-module-memcachemonitor", - "version": "v0.9.3" - }, - { - "name": "simplesamlphp/simplesamlphp-module-memcookie", - "version": "v1.2.2" - }, - { - "name": "simplesamlphp/simplesamlphp-module-metarefresh", - "version": "v0.10.0" - }, - { - "name": "simplesamlphp/simplesamlphp-module-negotiate", - "version": "v0.9.12" - }, - { - "name": "simplesamlphp/simplesamlphp-module-oauth", - "version": "v0.9.3" - }, - { - "name": "simplesamlphp/simplesamlphp-module-preprodwarning", - "version": "v0.9.3" - }, - { - "name": "simplesamlphp/simplesamlphp-module-radius", - "version": "v0.9.4" - }, - { - "name": "simplesamlphp/simplesamlphp-module-riak", - "version": "v0.9.1" - }, - { - "name": "simplesamlphp/simplesamlphp-module-sanitycheck", - "version": "v0.9.1" - }, - { - "name": "simplesamlphp/simplesamlphp-module-smartattributes", - "version": "v0.9.2" - }, - { - "name": "simplesamlphp/simplesamlphp-module-sqlauth", - "version": "v0.9.4" - }, - { - "name": "simplesamlphp/simplesamlphp-module-statistics", - "version": "v0.9.6" - }, - { - "name": "simplesamlphp/twig-configurable-i18n", - "version": "v2.3.5" + "name": "simplesamlphp/simplesamlphp-assets-base", + "version": "v2.2.1" }, { "name": "sinergi/browser-detector", @@ -285,131 +177,143 @@ }, { "name": "symfony/cache", - "version": "v5.4.25" + "version": "v6.4.8" }, { "name": "symfony/cache-contracts", - "version": "v2.5.2" + "version": "v3.5.0" }, { "name": "symfony/config", - "version": "v4.4.44" + "version": "v6.4.8" }, { "name": "symfony/console", - "version": "v4.4.49" - }, - { - "name": "symfony/debug", - "version": "v4.4.44" + "version": "v6.4.8" }, { "name": "symfony/dependency-injection", - "version": "v4.4.49" + "version": "v6.4.8" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0" + "version": "v3.5.0" }, { "name": "symfony/error-handler", - "version": "v4.4.44" + "version": "v6.4.8" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.44" + "version": "v6.4.8" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13" + "version": "v3.5.0" }, { "name": "symfony/filesystem", - "version": "v5.4.25" + "version": "v6.4.8" }, { "name": "symfony/finder", - "version": "v5.4.27" + "version": "v6.4.8" }, { "name": "symfony/framework-bundle", - "version": "v4.4.49" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.2" + "version": "v6.4.8" }, { "name": "symfony/http-foundation", - "version": "v5.4.26" + "version": "v6.4.8" }, { "name": "symfony/http-kernel", - "version": "v4.4.50" + "version": "v6.4.8" + }, + { + "name": "symfony/intl", + "version": "v6.4.8" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0" + "version": "v1.29.0" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0" + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.29.0" }, { - "name": "symfony/polyfill-php72", - "version": "v1.27.0" + "name": "symfony/polyfill-intl-icu", + "version": "v1.29.0" }, { - "name": "symfony/polyfill-php73", - "version": "v1.27.0" + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.29.0" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0" }, { "name": "symfony/polyfill-php80", "version": "v1.29.0" }, { - "name": "symfony/polyfill-php81", - "version": "v1.27.0" + "name": "symfony/polyfill-php83", + "version": "v1.29.0" }, { "name": "symfony/routing", - "version": "v4.4.44" + "version": "v6.4.8" }, { "name": "symfony/service-contracts", - "version": "v2.5.2" + "version": "v3.5.0" + }, + { + "name": "symfony/string", + "version": "v6.4.8" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.0" + }, + { + "name": "symfony/twig-bridge", + "version": "v6.4.8" }, { "name": "symfony/var-dumper", - "version": "v5.4.26" + "version": "v6.4.8" }, { "name": "symfony/var-exporter", - "version": "v5.4.26" + "version": "v6.4.8" }, { "name": "symfony/yaml", - "version": "v5.0.11" + "version": "v6.4.8" }, { - "name": "twig/extensions", - "version": "v1.5.4" + "name": "twig/intl-extra", + "version": "v3.10.0" }, { "name": "twig/twig", - "version": "v2.15.5" + "version": "v3.10.3" }, { "name": "webmozart/assert", "version": "1.11.0" }, { - "name": "whitehat101/apr1-md5", - "version": "v1.0.0" + "name": "yidas/yii2-composer-bower-skip", + "version": "2.0.13" }, { "name": "yiisoft/yii2", - "version": "2.0.49.3" + "version": "2.0.50" }, { "name": "yiisoft/yii2-composer", From fa02f673c7b2b13b6988f08d56f4c7c651171d32 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Fri, 14 Jun 2024 14:23:11 +0800 Subject: [PATCH 02/85] remove fillup/fake-bower-assets (replaced by yidas/yii2-composer-bower-skip) --- composer.json | 1 - composer.lock | 44 +------------------------------------------- 2 files changed, 1 insertion(+), 44 deletions(-) diff --git a/composer.json b/composer.json index 2aa5f782..fbddf88b 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,6 @@ "sinergi/browser-detector": "^6.1", "yiisoft/yii2": "~2.0.12", "yiisoft/yii2-gii": "^2.0", - "fillup/fake-bower-assets": "^2.0", "google/recaptcha": "^1.1", "psr/log": "^3.0", "monolog/monolog": "^3.0", diff --git a/composer.lock b/composer.lock index 69f13b2a..b59659f6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cc899808dc5a01280a0d0dc6162decff", + "content-hash": "0f83d8f3f828482ea5f55c186a325c8a", "packages": [ { "name": "aws/aws-crt-php", @@ -323,48 +323,6 @@ }, "time": "2023-11-17T15:01:25+00:00" }, - { - "name": "fillup/fake-bower-assets", - "version": "2.0.13", - "source": { - "type": "git", - "url": "https://github.com/fillup/fake-bower-assets.git", - "reference": "05ca2ac45757cee3906d6056c9623585c1eea68b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fillup/fake-bower-assets/zipball/05ca2ac45757cee3906d6056c9623585c1eea68b", - "reference": "05ca2ac45757cee3906d6056c9623585c1eea68b", - "shasum": "" - }, - "replace": { - "bower-asset/bootstrap": "3.3.6", - "bower-asset/inputmask": "3.2.2", - "bower-asset/jquery": "2.2.2", - "bower-asset/jquery.inputmask": "3.2.2", - "bower-asset/punycode": "1.3.1", - "bower-asset/typeahead.js": "0.11.1", - "bower-asset/yii2-pjax": "2.0.1", - "yiisoft/yii2-bootstrap": "2.0.6" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Phillip Shipley", - "email": "phillip.shipley@gmail.com" - } - ], - "description": "Use Composer \"replace\" to fake out installing bower-asset dependencies that aren't really needed", - "support": { - "issues": "https://github.com/fillup/fake-bower-assets/issues", - "source": "https://github.com/fillup/fake-bower-assets/tree/master" - }, - "time": "2018-05-08T17:44:00+00:00" - }, { "name": "gettext/gettext", "version": "v5.7.0", From 213247dae205c0dddd274e53d68b0c9c4f56ec18 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Fri, 14 Jun 2024 13:54:59 +0800 Subject: [PATCH 03/85] rename lib -> src --- Dockerfile | 2 +- actions-services.yml | 6 +++--- docker-compose.yml | 6 +++--- dockerbuild/run-idp.sh | 4 ++-- docs/the_hub.md | 4 ++-- .../expirychecker/{lib => src}/Auth/Process/ExpiryDate.php | 0 modules/expirychecker/{lib => src}/Utilities.php | 0 modules/expirychecker/{lib => src}/Validator.php | 0 modules/mfa/{lib => src}/Assert.php | 0 modules/mfa/{lib => src}/Auth/Process/Mfa.php | 0 modules/mfa/{lib => src}/LoggerFactory.php | 0 modules/mfa/{lib => src}/LoginBrowser.php | 0 modules/profilereview/{lib => src}/Assert.php | 0 .../{lib => src}/Auth/Process/ProfileReview.php | 0 modules/profilereview/{lib => src}/LoggerFactory.php | 0 modules/silauth/{lib => src}/Auth/Source/SilAuth.php | 0 modules/silauth/{lib => src}/Auth/Source/auth/AuthError.php | 0 .../silauth/{lib => src}/Auth/Source/auth/Authenticator.php | 0 modules/silauth/{lib => src}/Auth/Source/auth/IdBroker.php | 0 .../Auth/Source/behaviors/CreatedAtUtcBehavior.php | 0 .../silauth/{lib => src}/Auth/Source/captcha/Captcha.php | 0 .../{lib => src}/Auth/Source/config/ConfigManager.php | 0 .../silauth/{lib => src}/Auth/Source/config/ssp-config.php | 0 .../silauth/{lib => src}/Auth/Source/config/yii2-config.php | 0 .../silauth/{lib => src}/Auth/Source/csrf/CsrfProtector.php | 0 modules/silauth/{lib => src}/Auth/Source/http/Request.php | 0 .../Auth/Source/models/FailedLoginIpAddress.php | 0 .../Auth/Source/models/FailedLoginIpAddressBase.php | 0 .../{lib => src}/Auth/Source/models/FailedLoginUsername.php | 0 .../Auth/Source/models/FailedLoginUsernameBase.php | 0 .../silauth/{lib => src}/Auth/Source/rebuildbasemodels.sh | 0 modules/silauth/{lib => src}/Auth/Source/saml/User.php | 0 modules/silauth/{lib => src}/Auth/Source/system/System.php | 0 .../silauth/{lib => src}/Auth/Source/tests/bootstrap.php | 0 .../Auth/Source/tests/fakes/FakeFailedIdBroker.php | 0 .../{lib => src}/Auth/Source/tests/fakes/FakeIdBroker.php | 0 .../Auth/Source/tests/fakes/FakeInvalidIdBroker.php | 0 .../Auth/Source/tests/fakes/FakeSuccessfulIdBroker.php | 0 modules/silauth/{lib => src}/Auth/Source/tests/phpunit.xml | 0 .../Auth/Source/tests/unit/auth/AuthenticatorTest.php | 0 .../Auth/Source/tests/unit/captcha/DummyFailedCaptcha.php | 0 .../Source/tests/unit/captcha/DummySuccessfulCaptcha.php | 0 .../Auth/Source/tests/unit/config/ConfigManagerTest.php | 0 .../Auth/Source/tests/unit/csrf/CsrfProtectorTest.php | 0 .../Auth/Source/tests/unit/csrf/FakeSession.php | 0 .../Auth/Source/tests/unit/http/DummyRequest.php | 0 .../Auth/Source/tests/unit/http/RequestTest.php | 0 .../Source/tests/unit/models/FailedLoginIpAddressTest.php | 0 .../Source/tests/unit/models/FailedLoginUsernameTest.php | 0 .../{lib => src}/Auth/Source/tests/unit/text/TextTest.php | 0 .../Auth/Source/tests/unit/time/UtcTimeTest.php | 0 .../Auth/Source/tests/unit/time/WaitTimeTest.php | 0 modules/silauth/{lib => src}/Auth/Source/text/Text.php | 0 modules/silauth/{lib => src}/Auth/Source/time/UtcTime.php | 0 modules/silauth/{lib => src}/Auth/Source/time/WaitTime.php | 0 .../{lib => src}/Auth/Source/traits/LoggerAwareTrait.php | 0 modules/silauth/{lib => src}/Auth/Source/yii | 0 .../sildisco/{lib => src}/Auth/Process/AddIdp2NameId.php | 0 modules/sildisco/{lib => src}/Auth/Process/LogUser.php | 0 modules/sildisco/{lib => src}/Auth/Process/TagGroup.php | 0 modules/sildisco/{lib => src}/Auth/Process/TrackIdps.php | 0 modules/sildisco/{lib => src}/Auth/Source/SP.php | 2 +- modules/sildisco/{lib => src}/IdP/SAML2.php | 2 +- modules/sildisco/{lib => src}/IdPDisco.php | 0 modules/sildisco/{lib => src}/SSOService.php | 0 tests/IdpDiscoTest.php | 2 +- 66 files changed, 14 insertions(+), 14 deletions(-) rename modules/expirychecker/{lib => src}/Auth/Process/ExpiryDate.php (100%) rename modules/expirychecker/{lib => src}/Utilities.php (100%) rename modules/expirychecker/{lib => src}/Validator.php (100%) rename modules/mfa/{lib => src}/Assert.php (100%) rename modules/mfa/{lib => src}/Auth/Process/Mfa.php (100%) rename modules/mfa/{lib => src}/LoggerFactory.php (100%) rename modules/mfa/{lib => src}/LoginBrowser.php (100%) rename modules/profilereview/{lib => src}/Assert.php (100%) rename modules/profilereview/{lib => src}/Auth/Process/ProfileReview.php (100%) rename modules/profilereview/{lib => src}/LoggerFactory.php (100%) rename modules/silauth/{lib => src}/Auth/Source/SilAuth.php (100%) rename modules/silauth/{lib => src}/Auth/Source/auth/AuthError.php (100%) rename modules/silauth/{lib => src}/Auth/Source/auth/Authenticator.php (100%) rename modules/silauth/{lib => src}/Auth/Source/auth/IdBroker.php (100%) rename modules/silauth/{lib => src}/Auth/Source/behaviors/CreatedAtUtcBehavior.php (100%) rename modules/silauth/{lib => src}/Auth/Source/captcha/Captcha.php (100%) rename modules/silauth/{lib => src}/Auth/Source/config/ConfigManager.php (100%) rename modules/silauth/{lib => src}/Auth/Source/config/ssp-config.php (100%) rename modules/silauth/{lib => src}/Auth/Source/config/yii2-config.php (100%) rename modules/silauth/{lib => src}/Auth/Source/csrf/CsrfProtector.php (100%) rename modules/silauth/{lib => src}/Auth/Source/http/Request.php (100%) rename modules/silauth/{lib => src}/Auth/Source/models/FailedLoginIpAddress.php (100%) rename modules/silauth/{lib => src}/Auth/Source/models/FailedLoginIpAddressBase.php (100%) rename modules/silauth/{lib => src}/Auth/Source/models/FailedLoginUsername.php (100%) rename modules/silauth/{lib => src}/Auth/Source/models/FailedLoginUsernameBase.php (100%) rename modules/silauth/{lib => src}/Auth/Source/rebuildbasemodels.sh (100%) rename modules/silauth/{lib => src}/Auth/Source/saml/User.php (100%) rename modules/silauth/{lib => src}/Auth/Source/system/System.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/bootstrap.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/fakes/FakeFailedIdBroker.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/fakes/FakeIdBroker.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/fakes/FakeInvalidIdBroker.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/fakes/FakeSuccessfulIdBroker.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/phpunit.xml (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/auth/AuthenticatorTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/captcha/DummyFailedCaptcha.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/captcha/DummySuccessfulCaptcha.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/config/ConfigManagerTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/csrf/CsrfProtectorTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/csrf/FakeSession.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/http/DummyRequest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/http/RequestTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/models/FailedLoginIpAddressTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/models/FailedLoginUsernameTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/text/TextTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/time/UtcTimeTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/tests/unit/time/WaitTimeTest.php (100%) rename modules/silauth/{lib => src}/Auth/Source/text/Text.php (100%) rename modules/silauth/{lib => src}/Auth/Source/time/UtcTime.php (100%) rename modules/silauth/{lib => src}/Auth/Source/time/WaitTime.php (100%) rename modules/silauth/{lib => src}/Auth/Source/traits/LoggerAwareTrait.php (100%) rename modules/silauth/{lib => src}/Auth/Source/yii (100%) rename modules/sildisco/{lib => src}/Auth/Process/AddIdp2NameId.php (100%) rename modules/sildisco/{lib => src}/Auth/Process/LogUser.php (100%) rename modules/sildisco/{lib => src}/Auth/Process/TagGroup.php (100%) rename modules/sildisco/{lib => src}/Auth/Process/TrackIdps.php (100%) rename modules/sildisco/{lib => src}/Auth/Source/SP.php (99%) rename modules/sildisco/{lib => src}/IdP/SAML2.php (99%) rename modules/sildisco/{lib => src}/IdPDisco.php (100%) rename modules/sildisco/{lib => src}/SSOService.php (100%) diff --git a/Dockerfile b/Dockerfile index 08d8c8ef..6252fee4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,7 +61,7 @@ COPY dockerbuild/ssp-overrides/id.php $SSP_PATH/www/id.php COPY dockerbuild/ssp-overrides/announcement.php $SSP_PATH/announcement/announcement.php COPY tests /data/tests -RUN cp $SSP_PATH/modules/sildisco/lib/SSOService.php $SSP_PATH/www/saml2/idp/ +RUN cp $SSP_PATH/modules/sildisco/src/SSOService.php $SSP_PATH/www/saml2/idp/ RUN chmod a+x /data/run.sh /data/run-tests.sh ADD https://github.com/silinternational/config-shim/releases/latest/download/config-shim.gz config-shim.gz diff --git a/actions-services.yml b/actions-services.yml index 1f06cfdf..2c0a2c5c 100644 --- a/actions-services.yml +++ b/actions-services.yml @@ -92,7 +92,7 @@ services: - ./development/idp-local/metadata/saml20-sp-remote.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-sp-remote.php # Customized SSP code -- TODO: make a better solution that doesn't require hacking SSP code - - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/lib/Auth/Source/UserPass.php + - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/src/Auth/Source/UserPass.php # Enable checking our test metadata - ./dockerbuild/run-metadata-tests.sh:/data/run-metadata-tests.sh @@ -100,7 +100,7 @@ services: # Include the features folder (for the FakeIdBrokerClient class) - ./features:/data/features command: > - bash -c "whenavail db 3306 60 /data/vendor/simplesamlphp/simplesamlphp/modules/silauth/lib/Auth/Source/yii migrate --interactive=0 && + bash -c "whenavail db 3306 60 /data/vendor/simplesamlphp/simplesamlphp/modules/silauth/src/Auth/Source/yii migrate --interactive=0 && /data/run.sh" environment: ADMIN_PASS: "a" @@ -138,7 +138,7 @@ services: - ./development/idp2-local/metadata/saml20-sp-remote.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-sp-remote.php # Customized SSP code -- TODO: make a better solution that doesn't require hacking SSP code - - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/lib/Auth/Source/UserPass.php + - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/src/Auth/Source/UserPass.php environment: ADMIN_PASS: "b" diff --git a/docker-compose.yml b/docker-compose.yml index 6f121120..c41bf2d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -146,7 +146,7 @@ services: - ./development/idp-local/metadata/saml20-sp-remote.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-sp-remote.php # Customized SSP code -- TODO: make a better solution that doesn't require hacking SSP code - - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/lib/Auth/Source/UserPass.php + - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/src/Auth/Source/UserPass.php # Enable checking our test metadata - ./dockerbuild/run-metadata-tests.sh:/data/run-metadata-tests.sh @@ -162,7 +162,7 @@ services: - ./modules/sildisco:/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco - ./modules/material:/data/vendor/simplesamlphp/simplesamlphp/modules/material command: > - bash -c "whenavail db 3306 60 /data/vendor/simplesamlphp/simplesamlphp/modules/silauth/lib/Auth/Source/yii migrate --interactive=0 && + bash -c "whenavail db 3306 60 /data/vendor/simplesamlphp/simplesamlphp/modules/silauth/src/Auth/Source/yii migrate --interactive=0 && /data/run.sh" ports: - "8085:80" @@ -203,7 +203,7 @@ services: - ./development/idp2-local/metadata/saml20-sp-remote.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-sp-remote.php # Customized SSP code -- TODO: make a better solution that doesn't require hacking SSP code - - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/lib/Auth/Source/UserPass.php + - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/src/Auth/Source/UserPass.php # Local modules - ./modules/mfa:/data/vendor/simplesamlphp/simplesamlphp/modules/mfa diff --git a/dockerbuild/run-idp.sh b/dockerbuild/run-idp.sh index 2f65d0f0..ab6d1ed2 100755 --- a/dockerbuild/run-idp.sh +++ b/dockerbuild/run-idp.sh @@ -8,9 +8,9 @@ set -e # Try to run database migrations cd /data/vendor/simplesamlphp/simplesamlphp -chmod a+x ./modules/silauth/lib/Auth/Source/yii +chmod a+x ./modules/silauth/src/Auth/Source/yii -./modules/silauth/lib/Auth/Source/yii migrate --interactive=0 +./modules/silauth/src/Auth/Source/yii migrate --interactive=0 cd /data ./run.sh diff --git a/docs/the_hub.md b/docs/the_hub.md index 266826f7..a27f6192 100644 --- a/docs/the_hub.md +++ b/docs/the_hub.md @@ -1,7 +1,7 @@ The hub will need its certs, `config.php` and `authsources.php` files as a normal simplesamlphp installation. Examples of these can be found in the `./development/hub` folder. (Note the `discoURL` entry in the `authsources.php` file.) Other files it will need are as follows ... -* The files in the `./lib` folder will need to go into `/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco/lib` +* The files in the `./src` folder will need to go into `/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco/src` * The files in the `./www` folder will need to go into `/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco/www` * The `./sspoverrides/www_saml2_idp/SSOService.php` file will need overwrite the same out-of-the-box file in `/data/vendor/simplesamlphp/simplesamlphp/www/saml2/idp/` @@ -35,6 +35,6 @@ In order to limit access to an IdP to only certain SP's, add an `'SPList'` array If you want to require SP's to list a certain IdP in their IDPList entry in order to be able to access it, add `excludeByDefault => true` to that IdP's metadata. ### Forced IdP discovery -The `.../lib/IdP/SAML2.php` file ensures that if an SP is allowed to access more than one IdP, then the user will be forced back to the IdP discovery page, even if they are already authenticated through one of those IdP's. +The `.../src/IdP/SAML2.php` file ensures that if an SP is allowed to access more than one IdP, then the user will be forced back to the IdP discovery page, even if they are already authenticated through one of those IdP's. The reason for this is to ensure that the user has a chance to decide which of their identities is used for that SP. diff --git a/modules/expirychecker/lib/Auth/Process/ExpiryDate.php b/modules/expirychecker/src/Auth/Process/ExpiryDate.php similarity index 100% rename from modules/expirychecker/lib/Auth/Process/ExpiryDate.php rename to modules/expirychecker/src/Auth/Process/ExpiryDate.php diff --git a/modules/expirychecker/lib/Utilities.php b/modules/expirychecker/src/Utilities.php similarity index 100% rename from modules/expirychecker/lib/Utilities.php rename to modules/expirychecker/src/Utilities.php diff --git a/modules/expirychecker/lib/Validator.php b/modules/expirychecker/src/Validator.php similarity index 100% rename from modules/expirychecker/lib/Validator.php rename to modules/expirychecker/src/Validator.php diff --git a/modules/mfa/lib/Assert.php b/modules/mfa/src/Assert.php similarity index 100% rename from modules/mfa/lib/Assert.php rename to modules/mfa/src/Assert.php diff --git a/modules/mfa/lib/Auth/Process/Mfa.php b/modules/mfa/src/Auth/Process/Mfa.php similarity index 100% rename from modules/mfa/lib/Auth/Process/Mfa.php rename to modules/mfa/src/Auth/Process/Mfa.php diff --git a/modules/mfa/lib/LoggerFactory.php b/modules/mfa/src/LoggerFactory.php similarity index 100% rename from modules/mfa/lib/LoggerFactory.php rename to modules/mfa/src/LoggerFactory.php diff --git a/modules/mfa/lib/LoginBrowser.php b/modules/mfa/src/LoginBrowser.php similarity index 100% rename from modules/mfa/lib/LoginBrowser.php rename to modules/mfa/src/LoginBrowser.php diff --git a/modules/profilereview/lib/Assert.php b/modules/profilereview/src/Assert.php similarity index 100% rename from modules/profilereview/lib/Assert.php rename to modules/profilereview/src/Assert.php diff --git a/modules/profilereview/lib/Auth/Process/ProfileReview.php b/modules/profilereview/src/Auth/Process/ProfileReview.php similarity index 100% rename from modules/profilereview/lib/Auth/Process/ProfileReview.php rename to modules/profilereview/src/Auth/Process/ProfileReview.php diff --git a/modules/profilereview/lib/LoggerFactory.php b/modules/profilereview/src/LoggerFactory.php similarity index 100% rename from modules/profilereview/lib/LoggerFactory.php rename to modules/profilereview/src/LoggerFactory.php diff --git a/modules/silauth/lib/Auth/Source/SilAuth.php b/modules/silauth/src/Auth/Source/SilAuth.php similarity index 100% rename from modules/silauth/lib/Auth/Source/SilAuth.php rename to modules/silauth/src/Auth/Source/SilAuth.php diff --git a/modules/silauth/lib/Auth/Source/auth/AuthError.php b/modules/silauth/src/Auth/Source/auth/AuthError.php similarity index 100% rename from modules/silauth/lib/Auth/Source/auth/AuthError.php rename to modules/silauth/src/Auth/Source/auth/AuthError.php diff --git a/modules/silauth/lib/Auth/Source/auth/Authenticator.php b/modules/silauth/src/Auth/Source/auth/Authenticator.php similarity index 100% rename from modules/silauth/lib/Auth/Source/auth/Authenticator.php rename to modules/silauth/src/Auth/Source/auth/Authenticator.php diff --git a/modules/silauth/lib/Auth/Source/auth/IdBroker.php b/modules/silauth/src/Auth/Source/auth/IdBroker.php similarity index 100% rename from modules/silauth/lib/Auth/Source/auth/IdBroker.php rename to modules/silauth/src/Auth/Source/auth/IdBroker.php diff --git a/modules/silauth/lib/Auth/Source/behaviors/CreatedAtUtcBehavior.php b/modules/silauth/src/Auth/Source/behaviors/CreatedAtUtcBehavior.php similarity index 100% rename from modules/silauth/lib/Auth/Source/behaviors/CreatedAtUtcBehavior.php rename to modules/silauth/src/Auth/Source/behaviors/CreatedAtUtcBehavior.php diff --git a/modules/silauth/lib/Auth/Source/captcha/Captcha.php b/modules/silauth/src/Auth/Source/captcha/Captcha.php similarity index 100% rename from modules/silauth/lib/Auth/Source/captcha/Captcha.php rename to modules/silauth/src/Auth/Source/captcha/Captcha.php diff --git a/modules/silauth/lib/Auth/Source/config/ConfigManager.php b/modules/silauth/src/Auth/Source/config/ConfigManager.php similarity index 100% rename from modules/silauth/lib/Auth/Source/config/ConfigManager.php rename to modules/silauth/src/Auth/Source/config/ConfigManager.php diff --git a/modules/silauth/lib/Auth/Source/config/ssp-config.php b/modules/silauth/src/Auth/Source/config/ssp-config.php similarity index 100% rename from modules/silauth/lib/Auth/Source/config/ssp-config.php rename to modules/silauth/src/Auth/Source/config/ssp-config.php diff --git a/modules/silauth/lib/Auth/Source/config/yii2-config.php b/modules/silauth/src/Auth/Source/config/yii2-config.php similarity index 100% rename from modules/silauth/lib/Auth/Source/config/yii2-config.php rename to modules/silauth/src/Auth/Source/config/yii2-config.php diff --git a/modules/silauth/lib/Auth/Source/csrf/CsrfProtector.php b/modules/silauth/src/Auth/Source/csrf/CsrfProtector.php similarity index 100% rename from modules/silauth/lib/Auth/Source/csrf/CsrfProtector.php rename to modules/silauth/src/Auth/Source/csrf/CsrfProtector.php diff --git a/modules/silauth/lib/Auth/Source/http/Request.php b/modules/silauth/src/Auth/Source/http/Request.php similarity index 100% rename from modules/silauth/lib/Auth/Source/http/Request.php rename to modules/silauth/src/Auth/Source/http/Request.php diff --git a/modules/silauth/lib/Auth/Source/models/FailedLoginIpAddress.php b/modules/silauth/src/Auth/Source/models/FailedLoginIpAddress.php similarity index 100% rename from modules/silauth/lib/Auth/Source/models/FailedLoginIpAddress.php rename to modules/silauth/src/Auth/Source/models/FailedLoginIpAddress.php diff --git a/modules/silauth/lib/Auth/Source/models/FailedLoginIpAddressBase.php b/modules/silauth/src/Auth/Source/models/FailedLoginIpAddressBase.php similarity index 100% rename from modules/silauth/lib/Auth/Source/models/FailedLoginIpAddressBase.php rename to modules/silauth/src/Auth/Source/models/FailedLoginIpAddressBase.php diff --git a/modules/silauth/lib/Auth/Source/models/FailedLoginUsername.php b/modules/silauth/src/Auth/Source/models/FailedLoginUsername.php similarity index 100% rename from modules/silauth/lib/Auth/Source/models/FailedLoginUsername.php rename to modules/silauth/src/Auth/Source/models/FailedLoginUsername.php diff --git a/modules/silauth/lib/Auth/Source/models/FailedLoginUsernameBase.php b/modules/silauth/src/Auth/Source/models/FailedLoginUsernameBase.php similarity index 100% rename from modules/silauth/lib/Auth/Source/models/FailedLoginUsernameBase.php rename to modules/silauth/src/Auth/Source/models/FailedLoginUsernameBase.php diff --git a/modules/silauth/lib/Auth/Source/rebuildbasemodels.sh b/modules/silauth/src/Auth/Source/rebuildbasemodels.sh similarity index 100% rename from modules/silauth/lib/Auth/Source/rebuildbasemodels.sh rename to modules/silauth/src/Auth/Source/rebuildbasemodels.sh diff --git a/modules/silauth/lib/Auth/Source/saml/User.php b/modules/silauth/src/Auth/Source/saml/User.php similarity index 100% rename from modules/silauth/lib/Auth/Source/saml/User.php rename to modules/silauth/src/Auth/Source/saml/User.php diff --git a/modules/silauth/lib/Auth/Source/system/System.php b/modules/silauth/src/Auth/Source/system/System.php similarity index 100% rename from modules/silauth/lib/Auth/Source/system/System.php rename to modules/silauth/src/Auth/Source/system/System.php diff --git a/modules/silauth/lib/Auth/Source/tests/bootstrap.php b/modules/silauth/src/Auth/Source/tests/bootstrap.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/bootstrap.php rename to modules/silauth/src/Auth/Source/tests/bootstrap.php diff --git a/modules/silauth/lib/Auth/Source/tests/fakes/FakeFailedIdBroker.php b/modules/silauth/src/Auth/Source/tests/fakes/FakeFailedIdBroker.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/fakes/FakeFailedIdBroker.php rename to modules/silauth/src/Auth/Source/tests/fakes/FakeFailedIdBroker.php diff --git a/modules/silauth/lib/Auth/Source/tests/fakes/FakeIdBroker.php b/modules/silauth/src/Auth/Source/tests/fakes/FakeIdBroker.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/fakes/FakeIdBroker.php rename to modules/silauth/src/Auth/Source/tests/fakes/FakeIdBroker.php diff --git a/modules/silauth/lib/Auth/Source/tests/fakes/FakeInvalidIdBroker.php b/modules/silauth/src/Auth/Source/tests/fakes/FakeInvalidIdBroker.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/fakes/FakeInvalidIdBroker.php rename to modules/silauth/src/Auth/Source/tests/fakes/FakeInvalidIdBroker.php diff --git a/modules/silauth/lib/Auth/Source/tests/fakes/FakeSuccessfulIdBroker.php b/modules/silauth/src/Auth/Source/tests/fakes/FakeSuccessfulIdBroker.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/fakes/FakeSuccessfulIdBroker.php rename to modules/silauth/src/Auth/Source/tests/fakes/FakeSuccessfulIdBroker.php diff --git a/modules/silauth/lib/Auth/Source/tests/phpunit.xml b/modules/silauth/src/Auth/Source/tests/phpunit.xml similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/phpunit.xml rename to modules/silauth/src/Auth/Source/tests/phpunit.xml diff --git a/modules/silauth/lib/Auth/Source/tests/unit/auth/AuthenticatorTest.php b/modules/silauth/src/Auth/Source/tests/unit/auth/AuthenticatorTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/auth/AuthenticatorTest.php rename to modules/silauth/src/Auth/Source/tests/unit/auth/AuthenticatorTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/captcha/DummyFailedCaptcha.php b/modules/silauth/src/Auth/Source/tests/unit/captcha/DummyFailedCaptcha.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/captcha/DummyFailedCaptcha.php rename to modules/silauth/src/Auth/Source/tests/unit/captcha/DummyFailedCaptcha.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/captcha/DummySuccessfulCaptcha.php b/modules/silauth/src/Auth/Source/tests/unit/captcha/DummySuccessfulCaptcha.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/captcha/DummySuccessfulCaptcha.php rename to modules/silauth/src/Auth/Source/tests/unit/captcha/DummySuccessfulCaptcha.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/config/ConfigManagerTest.php b/modules/silauth/src/Auth/Source/tests/unit/config/ConfigManagerTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/config/ConfigManagerTest.php rename to modules/silauth/src/Auth/Source/tests/unit/config/ConfigManagerTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/csrf/CsrfProtectorTest.php b/modules/silauth/src/Auth/Source/tests/unit/csrf/CsrfProtectorTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/csrf/CsrfProtectorTest.php rename to modules/silauth/src/Auth/Source/tests/unit/csrf/CsrfProtectorTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/csrf/FakeSession.php b/modules/silauth/src/Auth/Source/tests/unit/csrf/FakeSession.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/csrf/FakeSession.php rename to modules/silauth/src/Auth/Source/tests/unit/csrf/FakeSession.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/http/DummyRequest.php b/modules/silauth/src/Auth/Source/tests/unit/http/DummyRequest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/http/DummyRequest.php rename to modules/silauth/src/Auth/Source/tests/unit/http/DummyRequest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/http/RequestTest.php b/modules/silauth/src/Auth/Source/tests/unit/http/RequestTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/http/RequestTest.php rename to modules/silauth/src/Auth/Source/tests/unit/http/RequestTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/models/FailedLoginIpAddressTest.php b/modules/silauth/src/Auth/Source/tests/unit/models/FailedLoginIpAddressTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/models/FailedLoginIpAddressTest.php rename to modules/silauth/src/Auth/Source/tests/unit/models/FailedLoginIpAddressTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/models/FailedLoginUsernameTest.php b/modules/silauth/src/Auth/Source/tests/unit/models/FailedLoginUsernameTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/models/FailedLoginUsernameTest.php rename to modules/silauth/src/Auth/Source/tests/unit/models/FailedLoginUsernameTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/text/TextTest.php b/modules/silauth/src/Auth/Source/tests/unit/text/TextTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/text/TextTest.php rename to modules/silauth/src/Auth/Source/tests/unit/text/TextTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/time/UtcTimeTest.php b/modules/silauth/src/Auth/Source/tests/unit/time/UtcTimeTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/time/UtcTimeTest.php rename to modules/silauth/src/Auth/Source/tests/unit/time/UtcTimeTest.php diff --git a/modules/silauth/lib/Auth/Source/tests/unit/time/WaitTimeTest.php b/modules/silauth/src/Auth/Source/tests/unit/time/WaitTimeTest.php similarity index 100% rename from modules/silauth/lib/Auth/Source/tests/unit/time/WaitTimeTest.php rename to modules/silauth/src/Auth/Source/tests/unit/time/WaitTimeTest.php diff --git a/modules/silauth/lib/Auth/Source/text/Text.php b/modules/silauth/src/Auth/Source/text/Text.php similarity index 100% rename from modules/silauth/lib/Auth/Source/text/Text.php rename to modules/silauth/src/Auth/Source/text/Text.php diff --git a/modules/silauth/lib/Auth/Source/time/UtcTime.php b/modules/silauth/src/Auth/Source/time/UtcTime.php similarity index 100% rename from modules/silauth/lib/Auth/Source/time/UtcTime.php rename to modules/silauth/src/Auth/Source/time/UtcTime.php diff --git a/modules/silauth/lib/Auth/Source/time/WaitTime.php b/modules/silauth/src/Auth/Source/time/WaitTime.php similarity index 100% rename from modules/silauth/lib/Auth/Source/time/WaitTime.php rename to modules/silauth/src/Auth/Source/time/WaitTime.php diff --git a/modules/silauth/lib/Auth/Source/traits/LoggerAwareTrait.php b/modules/silauth/src/Auth/Source/traits/LoggerAwareTrait.php similarity index 100% rename from modules/silauth/lib/Auth/Source/traits/LoggerAwareTrait.php rename to modules/silauth/src/Auth/Source/traits/LoggerAwareTrait.php diff --git a/modules/silauth/lib/Auth/Source/yii b/modules/silauth/src/Auth/Source/yii similarity index 100% rename from modules/silauth/lib/Auth/Source/yii rename to modules/silauth/src/Auth/Source/yii diff --git a/modules/sildisco/lib/Auth/Process/AddIdp2NameId.php b/modules/sildisco/src/Auth/Process/AddIdp2NameId.php similarity index 100% rename from modules/sildisco/lib/Auth/Process/AddIdp2NameId.php rename to modules/sildisco/src/Auth/Process/AddIdp2NameId.php diff --git a/modules/sildisco/lib/Auth/Process/LogUser.php b/modules/sildisco/src/Auth/Process/LogUser.php similarity index 100% rename from modules/sildisco/lib/Auth/Process/LogUser.php rename to modules/sildisco/src/Auth/Process/LogUser.php diff --git a/modules/sildisco/lib/Auth/Process/TagGroup.php b/modules/sildisco/src/Auth/Process/TagGroup.php similarity index 100% rename from modules/sildisco/lib/Auth/Process/TagGroup.php rename to modules/sildisco/src/Auth/Process/TagGroup.php diff --git a/modules/sildisco/lib/Auth/Process/TrackIdps.php b/modules/sildisco/src/Auth/Process/TrackIdps.php similarity index 100% rename from modules/sildisco/lib/Auth/Process/TrackIdps.php rename to modules/sildisco/src/Auth/Process/TrackIdps.php diff --git a/modules/sildisco/lib/Auth/Source/SP.php b/modules/sildisco/src/Auth/Source/SP.php similarity index 99% rename from modules/sildisco/lib/Auth/Source/SP.php rename to modules/sildisco/src/Auth/Source/SP.php index 6cf2863b..f5023267 100644 --- a/modules/sildisco/lib/Auth/Source/SP.php +++ b/modules/sildisco/src/Auth/Source/SP.php @@ -1,7 +1,7 @@ Date: Fri, 14 Jun 2024 14:08:18 +0800 Subject: [PATCH 04/85] rename www -> public [skip ci] --- Dockerfile | 12 ++++++------ Makefile | 4 ++-- README.md | 2 +- dockerbuild/run.sh | 2 +- dockerbuild/vhost.conf | 4 ++-- docs/the_hub.md | 4 ++-- .../expirychecker/{www => public}/about2expire.php | 0 modules/expirychecker/{www => public}/expired.php | 0 .../material/{www => public}/bowser.1.9.4.min.js | 0 .../material/{www => public}/default-favicon.ico | Bin .../material/{www => public}/default-favicon.png | Bin modules/material/{www => public}/default-logo.png | Bin modules/material/{www => public}/email.svg | 0 .../material/{www => public}/material-icons.woff | Bin .../material/{www => public}/material-icons.woff2 | Bin .../material/{www => public}/material.1.2.1.min.js | 0 .../material.blue_grey-teal.1.2.1.min.css | 0 .../material.brown-orange.1.2.1.min.css | 0 .../material.indigo-purple.1.2.1.min.css | 0 .../material.orange-light_blue.1.2.1.min.css | 0 .../{www => public}/material.red-teal.1.2.1.min.css | 0 .../material.teal-blue.1.2.1.min.css | 0 modules/material/{www => public}/mfa-backupcode.svg | 0 modules/material/{www => public}/mfa-manager.svg | 0 modules/material/{www => public}/mfa-totp.svg | 0 modules/material/{www => public}/mfa-u2f-api.js | 0 modules/material/{www => public}/mfa-u2f.svg | 0 modules/material/{www => public}/mfa-webauthn.svg | 0 modules/material/{www => public}/shield.svg | 0 modules/material/{www => public}/styles.2.3.6.css | 0 modules/mfa/{www => public}/low-on-backup-codes.php | 0 modules/mfa/{www => public}/must-set-up-mfa.php | 0 modules/mfa/{www => public}/new-backup-codes.php | 0 modules/mfa/{www => public}/out-of-backup-codes.php | 0 modules/mfa/{www => public}/prompt-for-mfa.php | 0 modules/mfa/{www => public}/send-manager-mfa.php | 0 .../mfa/{www => public}/simplewebauthn/LICENSE.md | 0 .../mfa/{www => public}/simplewebauthn/browser.js | 0 modules/profilereview/{www => public}/nag.php | 0 modules/profilereview/{www => public}/review.php | 0 modules/silauth/{www => public}/loginuserpass.php | 0 modules/silauth/{www => public}/status.php | 0 modules/sildisco/{www => public}/betatest.php | 0 modules/sildisco/{www => public}/disco.php | 2 +- modules/sildisco/{www => public}/metadata.php | 4 ++-- modules/sildisco/{www => public}/sp/discoresp.php | 2 +- modules/sildisco/{www => public}/sp/saml2-acs.php | 2 +- .../sildisco/{www => public}/sp/saml2-logout.php | 2 +- modules/sildisco/src/SSOService.php | 2 +- 49 files changed, 21 insertions(+), 21 deletions(-) rename modules/expirychecker/{www => public}/about2expire.php (100%) rename modules/expirychecker/{www => public}/expired.php (100%) rename modules/material/{www => public}/bowser.1.9.4.min.js (100%) rename modules/material/{www => public}/default-favicon.ico (100%) rename modules/material/{www => public}/default-favicon.png (100%) rename modules/material/{www => public}/default-logo.png (100%) rename modules/material/{www => public}/email.svg (100%) rename modules/material/{www => public}/material-icons.woff (100%) rename modules/material/{www => public}/material-icons.woff2 (100%) rename modules/material/{www => public}/material.1.2.1.min.js (100%) rename modules/material/{www => public}/material.blue_grey-teal.1.2.1.min.css (100%) rename modules/material/{www => public}/material.brown-orange.1.2.1.min.css (100%) rename modules/material/{www => public}/material.indigo-purple.1.2.1.min.css (100%) rename modules/material/{www => public}/material.orange-light_blue.1.2.1.min.css (100%) rename modules/material/{www => public}/material.red-teal.1.2.1.min.css (100%) rename modules/material/{www => public}/material.teal-blue.1.2.1.min.css (100%) rename modules/material/{www => public}/mfa-backupcode.svg (100%) rename modules/material/{www => public}/mfa-manager.svg (100%) rename modules/material/{www => public}/mfa-totp.svg (100%) rename modules/material/{www => public}/mfa-u2f-api.js (100%) rename modules/material/{www => public}/mfa-u2f.svg (100%) rename modules/material/{www => public}/mfa-webauthn.svg (100%) rename modules/material/{www => public}/shield.svg (100%) rename modules/material/{www => public}/styles.2.3.6.css (100%) rename modules/mfa/{www => public}/low-on-backup-codes.php (100%) rename modules/mfa/{www => public}/must-set-up-mfa.php (100%) rename modules/mfa/{www => public}/new-backup-codes.php (100%) rename modules/mfa/{www => public}/out-of-backup-codes.php (100%) rename modules/mfa/{www => public}/prompt-for-mfa.php (100%) rename modules/mfa/{www => public}/send-manager-mfa.php (100%) rename modules/mfa/{www => public}/simplewebauthn/LICENSE.md (100%) rename modules/mfa/{www => public}/simplewebauthn/browser.js (100%) rename modules/profilereview/{www => public}/nag.php (100%) rename modules/profilereview/{www => public}/review.php (100%) rename modules/silauth/{www => public}/loginuserpass.php (100%) rename modules/silauth/{www => public}/status.php (100%) rename modules/sildisco/{www => public}/betatest.php (100%) rename modules/sildisco/{www => public}/disco.php (90%) rename modules/sildisco/{www => public}/metadata.php (98%) rename modules/sildisco/{www => public}/sp/discoresp.php (94%) rename modules/sildisco/{www => public}/sp/saml2-acs.php (99%) rename modules/sildisco/{www => public}/sp/saml2-logout.php (99%) diff --git a/Dockerfile b/Dockerfile index 6252fee4..55a5688c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -50,18 +50,18 @@ COPY modules/material/themes/material/mfa/* $SSP_PATH/modules/mfa/templates/ COPY modules/material/themes/material/profilereview/* $SSP_PATH/modules/profilereview/templates/ # Copy in SSP override files -RUN mv $SSP_PATH/www/index.php $SSP_PATH/www/ssp-index.php -COPY dockerbuild/ssp-overrides/index.php $SSP_PATH/www/index.php -RUN mv $SSP_PATH/www/saml2/idp/SingleLogoutService.php $SSP_PATH/www/saml2/idp/ssp-SingleLogoutService.php -COPY dockerbuild/ssp-overrides/SingleLogoutService.php $SSP_PATH/www/saml2/idp/SingleLogoutService.php +RUN mv $SSP_PATH/public/index.php $SSP_PATH/public/ssp-index.php +COPY dockerbuild/ssp-overrides/index.php $SSP_PATH/public/index.php +RUN mv $SSP_PATH/public/saml2/idp/SingleLogoutService.php $SSP_PATH/public/saml2/idp/ssp-SingleLogoutService.php +COPY dockerbuild/ssp-overrides/SingleLogoutService.php $SSP_PATH/public/saml2/idp/SingleLogoutService.php COPY dockerbuild/ssp-overrides/saml20-idp-remote.php $SSP_PATH/metadata/saml20-idp-remote.php COPY dockerbuild/ssp-overrides/saml20-sp-remote.php $SSP_PATH/metadata/saml20-sp-remote.php COPY dockerbuild/config/* $SSP_PATH/config/ -COPY dockerbuild/ssp-overrides/id.php $SSP_PATH/www/id.php +COPY dockerbuild/ssp-overrides/id.php $SSP_PATH/public/id.php COPY dockerbuild/ssp-overrides/announcement.php $SSP_PATH/announcement/announcement.php COPY tests /data/tests -RUN cp $SSP_PATH/modules/sildisco/src/SSOService.php $SSP_PATH/www/saml2/idp/ +RUN cp $SSP_PATH/modules/sildisco/src/SSOService.php $SSP_PATH/public/saml2/idp/ RUN chmod a+x /data/run.sh /data/run-tests.sh ADD https://github.com/silinternational/config-shim/releases/latest/download/config-shim.gz config-shim.gz diff --git a/Makefile b/Makefile index 76024d52..50292e2b 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,8 @@ test-integration: docker compose run --rm test ./run-integration-tests.sh copyJsLib: - cp ./node_modules/@simplewebauthn/browser/dist/bundle/index.umd.min.js ./modules/mfa/www/simplewebauthn/browser.js - cp ./node_modules/@simplewebauthn/browser/LICENSE.md ./modules/mfa/www/simplewebauthn/LICENSE.md + cp ./node_modules/@simplewebauthn/browser/dist/bundle/index.umd.min.js ./modules/mfa/public/simplewebauthn/browser.js + cp ./node_modules/@simplewebauthn/browser/LICENSE.md ./modules/mfa/public/simplewebauthn/LICENSE.md deps: docker compose run --rm node npm install --ignore-scripts diff --git a/README.md b/README.md index a32fc312..e9b314ff 100644 --- a/README.md +++ b/README.md @@ -229,7 +229,7 @@ Update `/simplesamlphp/config/config.php`: 'theme.color-scheme' => ['indigo-purple'|'blue_grey-teal'|'red-teal'|'orange-light_blue'|'brown-orange'|'teal-blue'] ``` -The login page looks for `/simplesamlphp/www/logo.png` which is **NOT** provided by default. +The login page looks for `/simplesamlphp/public/logo.png` which is **NOT** provided by default. ##### Analytics diff --git a/dockerbuild/run.sh b/dockerbuild/run.sh index 4d7ff730..f55cd465 100755 --- a/dockerbuild/run.sh +++ b/dockerbuild/run.sh @@ -7,7 +7,7 @@ set -x set -e # This is a temporary fix (bug workaround) until ssp 2.0 is in use -sed -i 's_\(\\SimpleSAML\\Error\\Assertion::installHandler()\)_// \1 _' /data/vendor/simplesamlphp/simplesamlphp/www/_include.php +sed -i 's_\(\\SimpleSAML\\Error\\Assertion::installHandler()\)_// \1 _' /data/vendor/simplesamlphp/simplesamlphp/public/_include.php # establish a signal handler to catch the SIGTERM from a 'docker stop' # reference: https://medium.com/@gchudnov/trapping-signals-in-docker-containers-7a57fdda7d86 diff --git a/dockerbuild/vhost.conf b/dockerbuild/vhost.conf index f2638b82..c2ea9893 100644 --- a/dockerbuild/vhost.conf +++ b/dockerbuild/vhost.conf @@ -1,9 +1,9 @@ - DocumentRoot /data/vendor/simplesamlphp/simplesamlphp/www/ + DocumentRoot /data/vendor/simplesamlphp/simplesamlphp/public/ RewriteEngine On DirectoryIndex index.php - + Options FollowSymLinks AllowOverride All Require all granted diff --git a/docs/the_hub.md b/docs/the_hub.md index a27f6192..e366f45d 100644 --- a/docs/the_hub.md +++ b/docs/the_hub.md @@ -2,8 +2,8 @@ The hub will need its certs, `config.php` and `authsources.php` files as a norma Other files it will need are as follows ... * The files in the `./src` folder will need to go into `/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco/src` -* The files in the `./www` folder will need to go into `/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco/www` -* The `./sspoverrides/www_saml2_idp/SSOService.php` file will need overwrite the same out-of-the-box file in `/data/vendor/simplesamlphp/simplesamlphp/www/saml2/idp/` +* The files in the `./public` folder will need to go into `/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco/public` +* The `./sspoverrides/www_saml2_idp/SSOService.php` file will need overwrite the same out-of-the-box file in `/data/vendor/simplesamlphp/simplesamlphp/public/saml2/idp/` ### Metadata files The hub should use the `saml20-*-remote.php` files from [ssp-base](https://github.com/silinternational/ssp-base) in `/data/vendor/simplesamlphp/simplesamlphp/metadata/`. These pull in metadata from all the files named `idp-*.php` and `sp-*.php` respectively, including those in sub-folders. diff --git a/modules/expirychecker/www/about2expire.php b/modules/expirychecker/public/about2expire.php similarity index 100% rename from modules/expirychecker/www/about2expire.php rename to modules/expirychecker/public/about2expire.php diff --git a/modules/expirychecker/www/expired.php b/modules/expirychecker/public/expired.php similarity index 100% rename from modules/expirychecker/www/expired.php rename to modules/expirychecker/public/expired.php diff --git a/modules/material/www/bowser.1.9.4.min.js b/modules/material/public/bowser.1.9.4.min.js similarity index 100% rename from modules/material/www/bowser.1.9.4.min.js rename to modules/material/public/bowser.1.9.4.min.js diff --git a/modules/material/www/default-favicon.ico b/modules/material/public/default-favicon.ico similarity index 100% rename from modules/material/www/default-favicon.ico rename to modules/material/public/default-favicon.ico diff --git a/modules/material/www/default-favicon.png b/modules/material/public/default-favicon.png similarity index 100% rename from modules/material/www/default-favicon.png rename to modules/material/public/default-favicon.png diff --git a/modules/material/www/default-logo.png b/modules/material/public/default-logo.png similarity index 100% rename from modules/material/www/default-logo.png rename to modules/material/public/default-logo.png diff --git a/modules/material/www/email.svg b/modules/material/public/email.svg similarity index 100% rename from modules/material/www/email.svg rename to modules/material/public/email.svg diff --git a/modules/material/www/material-icons.woff b/modules/material/public/material-icons.woff similarity index 100% rename from modules/material/www/material-icons.woff rename to modules/material/public/material-icons.woff diff --git a/modules/material/www/material-icons.woff2 b/modules/material/public/material-icons.woff2 similarity index 100% rename from modules/material/www/material-icons.woff2 rename to modules/material/public/material-icons.woff2 diff --git a/modules/material/www/material.1.2.1.min.js b/modules/material/public/material.1.2.1.min.js similarity index 100% rename from modules/material/www/material.1.2.1.min.js rename to modules/material/public/material.1.2.1.min.js diff --git a/modules/material/www/material.blue_grey-teal.1.2.1.min.css b/modules/material/public/material.blue_grey-teal.1.2.1.min.css similarity index 100% rename from modules/material/www/material.blue_grey-teal.1.2.1.min.css rename to modules/material/public/material.blue_grey-teal.1.2.1.min.css diff --git a/modules/material/www/material.brown-orange.1.2.1.min.css b/modules/material/public/material.brown-orange.1.2.1.min.css similarity index 100% rename from modules/material/www/material.brown-orange.1.2.1.min.css rename to modules/material/public/material.brown-orange.1.2.1.min.css diff --git a/modules/material/www/material.indigo-purple.1.2.1.min.css b/modules/material/public/material.indigo-purple.1.2.1.min.css similarity index 100% rename from modules/material/www/material.indigo-purple.1.2.1.min.css rename to modules/material/public/material.indigo-purple.1.2.1.min.css diff --git a/modules/material/www/material.orange-light_blue.1.2.1.min.css b/modules/material/public/material.orange-light_blue.1.2.1.min.css similarity index 100% rename from modules/material/www/material.orange-light_blue.1.2.1.min.css rename to modules/material/public/material.orange-light_blue.1.2.1.min.css diff --git a/modules/material/www/material.red-teal.1.2.1.min.css b/modules/material/public/material.red-teal.1.2.1.min.css similarity index 100% rename from modules/material/www/material.red-teal.1.2.1.min.css rename to modules/material/public/material.red-teal.1.2.1.min.css diff --git a/modules/material/www/material.teal-blue.1.2.1.min.css b/modules/material/public/material.teal-blue.1.2.1.min.css similarity index 100% rename from modules/material/www/material.teal-blue.1.2.1.min.css rename to modules/material/public/material.teal-blue.1.2.1.min.css diff --git a/modules/material/www/mfa-backupcode.svg b/modules/material/public/mfa-backupcode.svg similarity index 100% rename from modules/material/www/mfa-backupcode.svg rename to modules/material/public/mfa-backupcode.svg diff --git a/modules/material/www/mfa-manager.svg b/modules/material/public/mfa-manager.svg similarity index 100% rename from modules/material/www/mfa-manager.svg rename to modules/material/public/mfa-manager.svg diff --git a/modules/material/www/mfa-totp.svg b/modules/material/public/mfa-totp.svg similarity index 100% rename from modules/material/www/mfa-totp.svg rename to modules/material/public/mfa-totp.svg diff --git a/modules/material/www/mfa-u2f-api.js b/modules/material/public/mfa-u2f-api.js similarity index 100% rename from modules/material/www/mfa-u2f-api.js rename to modules/material/public/mfa-u2f-api.js diff --git a/modules/material/www/mfa-u2f.svg b/modules/material/public/mfa-u2f.svg similarity index 100% rename from modules/material/www/mfa-u2f.svg rename to modules/material/public/mfa-u2f.svg diff --git a/modules/material/www/mfa-webauthn.svg b/modules/material/public/mfa-webauthn.svg similarity index 100% rename from modules/material/www/mfa-webauthn.svg rename to modules/material/public/mfa-webauthn.svg diff --git a/modules/material/www/shield.svg b/modules/material/public/shield.svg similarity index 100% rename from modules/material/www/shield.svg rename to modules/material/public/shield.svg diff --git a/modules/material/www/styles.2.3.6.css b/modules/material/public/styles.2.3.6.css similarity index 100% rename from modules/material/www/styles.2.3.6.css rename to modules/material/public/styles.2.3.6.css diff --git a/modules/mfa/www/low-on-backup-codes.php b/modules/mfa/public/low-on-backup-codes.php similarity index 100% rename from modules/mfa/www/low-on-backup-codes.php rename to modules/mfa/public/low-on-backup-codes.php diff --git a/modules/mfa/www/must-set-up-mfa.php b/modules/mfa/public/must-set-up-mfa.php similarity index 100% rename from modules/mfa/www/must-set-up-mfa.php rename to modules/mfa/public/must-set-up-mfa.php diff --git a/modules/mfa/www/new-backup-codes.php b/modules/mfa/public/new-backup-codes.php similarity index 100% rename from modules/mfa/www/new-backup-codes.php rename to modules/mfa/public/new-backup-codes.php diff --git a/modules/mfa/www/out-of-backup-codes.php b/modules/mfa/public/out-of-backup-codes.php similarity index 100% rename from modules/mfa/www/out-of-backup-codes.php rename to modules/mfa/public/out-of-backup-codes.php diff --git a/modules/mfa/www/prompt-for-mfa.php b/modules/mfa/public/prompt-for-mfa.php similarity index 100% rename from modules/mfa/www/prompt-for-mfa.php rename to modules/mfa/public/prompt-for-mfa.php diff --git a/modules/mfa/www/send-manager-mfa.php b/modules/mfa/public/send-manager-mfa.php similarity index 100% rename from modules/mfa/www/send-manager-mfa.php rename to modules/mfa/public/send-manager-mfa.php diff --git a/modules/mfa/www/simplewebauthn/LICENSE.md b/modules/mfa/public/simplewebauthn/LICENSE.md similarity index 100% rename from modules/mfa/www/simplewebauthn/LICENSE.md rename to modules/mfa/public/simplewebauthn/LICENSE.md diff --git a/modules/mfa/www/simplewebauthn/browser.js b/modules/mfa/public/simplewebauthn/browser.js similarity index 100% rename from modules/mfa/www/simplewebauthn/browser.js rename to modules/mfa/public/simplewebauthn/browser.js diff --git a/modules/profilereview/www/nag.php b/modules/profilereview/public/nag.php similarity index 100% rename from modules/profilereview/www/nag.php rename to modules/profilereview/public/nag.php diff --git a/modules/profilereview/www/review.php b/modules/profilereview/public/review.php similarity index 100% rename from modules/profilereview/www/review.php rename to modules/profilereview/public/review.php diff --git a/modules/silauth/www/loginuserpass.php b/modules/silauth/public/loginuserpass.php similarity index 100% rename from modules/silauth/www/loginuserpass.php rename to modules/silauth/public/loginuserpass.php diff --git a/modules/silauth/www/status.php b/modules/silauth/public/status.php similarity index 100% rename from modules/silauth/www/status.php rename to modules/silauth/public/status.php diff --git a/modules/sildisco/www/betatest.php b/modules/sildisco/public/betatest.php similarity index 100% rename from modules/sildisco/www/betatest.php rename to modules/sildisco/public/betatest.php diff --git a/modules/sildisco/www/disco.php b/modules/sildisco/public/disco.php similarity index 90% rename from modules/sildisco/www/disco.php rename to modules/sildisco/public/disco.php index e6b87f69..bc2b8321 100644 --- a/modules/sildisco/www/disco.php +++ b/modules/sildisco/public/disco.php @@ -1,7 +1,7 @@ Date: Fri, 14 Jun 2024 15:03:56 +0800 Subject: [PATCH 05/85] update process() typehinting in Auth\ProcessingFilter inherited classes --- modules/expirychecker/src/Auth/Process/ExpiryDate.php | 6 ++---- modules/mfa/src/Auth/Process/Mfa.php | 10 +++------- .../profilereview/src/Auth/Process/ProfileReview.php | 8 ++------ modules/sildisco/src/Auth/Process/AddIdp2NameId.php | 6 ++---- modules/sildisco/src/Auth/Process/LogUser.php | 4 ++-- modules/sildisco/src/Auth/Process/TagGroup.php | 5 +++-- modules/sildisco/src/Auth/Process/TrackIdps.php | 5 +++-- 7 files changed, 17 insertions(+), 27 deletions(-) diff --git a/modules/expirychecker/src/Auth/Process/ExpiryDate.php b/modules/expirychecker/src/Auth/Process/ExpiryDate.php index 30322af4..567b31fa 100644 --- a/modules/expirychecker/src/Auth/Process/ExpiryDate.php +++ b/modules/expirychecker/src/Auth/Process/ExpiryDate.php @@ -298,11 +298,9 @@ public function redirect2PasswordChange( } /** - * Apply this AuthProc Filter. - * - * @param array &$state The current state. + * @inheritDoc */ - public function process(&$state): void + public function process(array &$state): void { $employeeId = $this->getAttribute($this->employeeIdAttr, $state); diff --git a/modules/mfa/src/Auth/Process/Mfa.php b/modules/mfa/src/Auth/Process/Mfa.php index f4a23bb5..363df9a5 100644 --- a/modules/mfa/src/Auth/Process/Mfa.php +++ b/modules/mfa/src/Auth/Process/Mfa.php @@ -566,15 +566,11 @@ public static function redirectToMfaSetup(array &$state): void HTTP::redirectTrustedURL($mfaSetupUrl); } - + /** - * Apply this AuthProc Filter. It will either return (indicating that it - * has completed) or it will redirect the user, in which case it will - * later call `SimpleSAML\Auth\ProcessingChain::resumeProcessing($state)`. - * - * @param array &$state The current state. + * @inheritDoc */ - public function process(&$state): void + public function process(array &$state): void { // Get the necessary info from the state data. $employeeId = $this->getAttribute($this->employeeIdAttr, $state); diff --git a/modules/profilereview/src/Auth/Process/ProfileReview.php b/modules/profilereview/src/Auth/Process/ProfileReview.php index 789f6838..56ed70f5 100644 --- a/modules/profilereview/src/Auth/Process/ProfileReview.php +++ b/modules/profilereview/src/Auth/Process/ProfileReview.php @@ -211,13 +211,9 @@ public static function redirectToProfile(&$state) } /** - * Apply this AuthProc Filter. It will either return (indicating that it - * has completed) or it will redirect the user, in which case it will - * later call `SimpleSAML\Auth\ProcessingChain::resumeProcessing($state)`. - * - * @param array &$state The current state. + * @inheritDoc */ - public function process(&$state) + public function process(array &$state): void { // Get the necessary info from the state data. $employeeId = $this->getAttribute($this->employeeIdAttr, $state); diff --git a/modules/sildisco/src/Auth/Process/AddIdp2NameId.php b/modules/sildisco/src/Auth/Process/AddIdp2NameId.php index e3c8408e..3516881d 100644 --- a/modules/sildisco/src/Auth/Process/AddIdp2NameId.php +++ b/modules/sildisco/src/Auth/Process/AddIdp2NameId.php @@ -110,11 +110,9 @@ public function appendIdp(NameID $nameId, string $IDPNamespace): void /** - * Apply filter to copy attributes. - * - * @param array &$state The current state array + * @inheritDoc */ - public function process(&$state): void + public function process(array &$state): void { assert('is_array($state)'); diff --git a/modules/sildisco/src/Auth/Process/LogUser.php b/modules/sildisco/src/Auth/Process/LogUser.php index 835ed287..86ae4171 100644 --- a/modules/sildisco/src/Auth/Process/LogUser.php +++ b/modules/sildisco/src/Auth/Process/LogUser.php @@ -65,9 +65,9 @@ public function __construct(array $config, mixed $reserved) /** * Log info for a user's login to Dynamodb * - * @param array &$state The current state array + * @inheritDoc */ - public function process(&$state): void + public function process(array &$state): void { if (! $this->configsAreValid()) { return; diff --git a/modules/sildisco/src/Auth/Process/TagGroup.php b/modules/sildisco/src/Auth/Process/TagGroup.php index 5d8ccf68..abfbdd12 100644 --- a/modules/sildisco/src/Auth/Process/TagGroup.php +++ b/modules/sildisco/src/Auth/Process/TagGroup.php @@ -31,9 +31,10 @@ public function prependIdp2Groups(array $attributes, string $attributeLabel, str /** * Apply filter to copy attributes. * - * @param array &$state The current request + * @inheritDoc */ - public function process(&$state) { + public function process(array &$state): void + { assert('is_array($request)'); assert('array_key_exists("Attributes", $request)'); diff --git a/modules/sildisco/src/Auth/Process/TrackIdps.php b/modules/sildisco/src/Auth/Process/TrackIdps.php index 4a84d1d9..7d574845 100644 --- a/modules/sildisco/src/Auth/Process/TrackIdps.php +++ b/modules/sildisco/src/Auth/Process/TrackIdps.php @@ -11,9 +11,10 @@ class TrackIdps extends \SimpleSAML\Auth\ProcessingFilter { /** * Apply filter to save IDPs to session. * - * @param array &$request The current request + * @inheritDoc */ - public function process(&$request) { + public function process(array &$state): void + { // get the authenticating Idp and add it to the list of previous ones $session = \SimpleSAML\Session::getSessionFromRequest(); $sessionDataType = "sildisco:authentication"; From f7be2a92be515dbf83e2c42bfd50293b98d28223 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Fri, 14 Jun 2024 15:20:32 +0800 Subject: [PATCH 06/85] update login() and authenticated() method types in SilAuth --- modules/silauth/src/Auth/Source/SilAuth.php | 14 +++----------- .../silauth/src/Auth/Source/auth/Authenticator.php | 2 +- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/modules/silauth/src/Auth/Source/SilAuth.php b/modules/silauth/src/Auth/Source/SilAuth.php index f7c0624f..3f8d05ed 100644 --- a/modules/silauth/src/Auth/Source/SilAuth.php +++ b/modules/silauth/src/Auth/Source/SilAuth.php @@ -59,15 +59,7 @@ public function __construct(array $info, array $config) ]]]); } - /** - * Initialize login. - * - * This function saves the information about the login, and redirects to a - * login page. - * - * @param array &$state Information about the current authentication. - */ - public function authenticate(&$state): void + public function authenticate(array &$state): void { assert('is_array($state)'); @@ -107,8 +99,8 @@ protected function getTrustedIpAddresses(): array } return $trustedIpAddresses; } - - protected function login($username, $password): ?array + + protected function login(string $username, string $password): array { $logger = new Psr3StdOutLogger(); $captcha = new Captcha($this->recaptchaConfig['secret'] ?? null); diff --git a/modules/silauth/src/Auth/Source/auth/Authenticator.php b/modules/silauth/src/Auth/Source/auth/Authenticator.php index dc8d10ca..0d917f4a 100644 --- a/modules/silauth/src/Auth/Source/auth/Authenticator.php +++ b/modules/silauth/src/Auth/Source/auth/Authenticator.php @@ -213,7 +213,7 @@ public static function getSecondsUntilUnblocked( * * @throws \Exception */ - public function getUserAttributes(): ?array + public function getUserAttributes(): array { if ($this->userAttributes === null) { throw new \Exception( From 158c2405b820c3a313ea84a2d0c47f55a402c1be Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Fri, 14 Jun 2024 15:23:06 +0800 Subject: [PATCH 07/85] update log() and validateIdP() method types in IdPDisco --- modules/sildisco/src/IdPDisco.php | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/modules/sildisco/src/IdPDisco.php b/modules/sildisco/src/IdPDisco.php index 4808a8ff..c17cff9a 100644 --- a/modules/sildisco/src/IdPDisco.php +++ b/modules/sildisco/src/IdPDisco.php @@ -38,13 +38,9 @@ class IdPDisco extends \SimpleSAML\XHTML\IdPDisco /** - * Log a message. - * - * This is an helper function for logging messages. It will prefix the messages with our discovery service type. - * - * @param string $message The message which should be logged. + * @inheritDoc */ - protected function log($message): void + protected function log(string $message): void { \SimpleSAML\Logger::info('SildiscoIdPDisco.'.$this->instance.': '.$message); } @@ -72,9 +68,7 @@ private function getSPEntityIDAndReducedIdpList(): array } /** - * Handles a request to this discovery service. - * - * The IdP disco parameters should be set before calling this function. + * @inheritDoc */ public function handleRequest(): void { @@ -160,16 +154,9 @@ public static function enableBetaEnabled(array $idpList, ?bool $isBetaTester=nul } /** - * Validates the given IdP entity id. - * - * Takes a string with the IdP entity id, and returns the entity id if it is valid, or - * null if not. Ensures that the selected IdP is allowed for the current SP - * - * @param string|null $idp The entity id we want to validate. This can be null, in which case we will return null. - * - * @return string|null The entity id if it is valid, null if not. + * @inheritDoc */ - protected function validateIdP($idp): ?string + protected function validateIdP(?string $idp): ?string { if ($idp === null) { return null; From 4e045f0a403757f8223dfd06bd8095e3751ef976 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Fri, 14 Jun 2024 15:31:35 +0800 Subject: [PATCH 08/85] add types to FakeSession class inherited from SimpleSAML\Session [skip ci] --- .../Source/tests/unit/csrf/FakeSession.php | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/modules/silauth/src/Auth/Source/tests/unit/csrf/FakeSession.php b/modules/silauth/src/Auth/Source/tests/unit/csrf/FakeSession.php index 41d1fa48..08b329e3 100644 --- a/modules/silauth/src/Auth/Source/tests/unit/csrf/FakeSession.php +++ b/modules/silauth/src/Auth/Source/tests/unit/csrf/FakeSession.php @@ -2,35 +2,32 @@ namespace SimpleSAML\Module\silauth\Auth\Source\tests\unit\csrf; +use SimpleSAML\Session; + /** * Class to mimic the bare basics of the SimpleSAML\Session class in order to * allow good testing of the CsrfProtector class. */ -class FakeSession extends \SimpleSAML\Session +class FakeSession extends Session { - private $inMemoryDataStore; + private array $inMemoryDataStore; - private function __construct($transient = false) + private function __construct(bool $transient = false) { $this->inMemoryDataStore = []; } - /** - * @param string $type - * @param string|null $id - * @return mixed - */ - public function getData($type, $id) + public function getData(string $type, ?string $id): mixed { return $this->inMemoryDataStore[$type][$id] ?? null; } - public static function getSessionFromRequest($sessionId = null) + public static function getSessionFromRequest(): Session { return new self(); } - public function setData($type, $id, $data, $timeout = null) + public function setData(string $type, string $id, mixed $data, int|string|null $timeout = null): void { // Make sure an array exists for that type of data. $this->inMemoryDataStore[$type] = $this->inMemoryDataStore[$type] ?? []; From c1d9b92dad4898c40a1dfa47217f652662d6ac91 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Mon, 17 Jun 2024 12:47:56 +0800 Subject: [PATCH 09/85] update config.php for SSP 2 --- Dockerfile | 4 + dockerbuild/config/config.php | 354 +++++++++++++++++++++------------- 2 files changed, 225 insertions(+), 133 deletions(-) diff --git a/Dockerfile b/Dockerfile index 55a5688c..4735262d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,6 +67,10 @@ RUN chmod a+x /data/run.sh /data/run-tests.sh ADD https://github.com/silinternational/config-shim/releases/latest/download/config-shim.gz config-shim.gz RUN gzip -d config-shim.gz && chmod 755 config-shim && mv config-shim /usr/local/bin +# Set permissions for cache directory. Corresponds to the `cachedir` setting in config.php. +RUN mkdir /data/cache +RUN chown -R www-data:www-data /data/cache + EXPOSE 80 ENTRYPOINT ["/usr/local/bin/s3-expand"] CMD ["/data/run.sh"] diff --git a/dockerbuild/config/config.php b/dockerbuild/config/config.php index aaa8383e..f37be4e2 100644 --- a/dockerbuild/config/config.php +++ b/dockerbuild/config/config.php @@ -2,12 +2,15 @@ /* * The configuration of SimpleSAMLphp * - * 2020-04-17 -- Updated to simplesamlphp/config-templates/config.php 1.18.6 + * 2024-06-14 -- Updated to simplesamlphp/config/config.php.dist 2.2.2 * */ + use Sil\PhpEnv\Env; use Sil\PhpEnv\EnvVarNotFoundException; +$httpUtils = new \SimpleSAML\Utils\HTTP(); + /* * Get config settings from ENV vars or set defaults */ @@ -44,7 +47,6 @@ $BASE_URL_PATH = Env::get('BASE_URL_PATH', '/'); $ADMIN_EMAIL = Env::get('ADMIN_EMAIL', 'na@example.org'); $ADMIN_NAME = Env::get('ADMIN_NAME', 'SAML Admin'); -$ADMIN_PROTECT_INDEX_PAGE = Env::get('ADMIN_PROTECT_INDEX_PAGE', true); $SHOW_SAML_ERRORS = Env::get('SHOW_SAML_ERRORS', false); $ENABLE_DEBUG = Env::get('ENABLE_DEBUG', false); $LOGGING_LEVEL = Env::get('LOGGING_LEVEL', 'NOTICE'); @@ -110,6 +112,8 @@ * * The full url format is useful if your SimpleSAMLphp setup is hosted behind * a reverse proxy. In that case you can specify the external url here. + * Specifying the full URL including https: will let SimpleSAMLphp know + * that it runs on HTTPS even if the backend server is plain HTTP. * * Please note that SimpleSAMLphp will then redirect all queries to the * external url, no matter where you come from (direct access or via the @@ -142,18 +146,69 @@ /* * The following settings are *filesystem paths* which define where * SimpleSAMLphp can find or write the following things: - * - 'certdir': The base directory for certificate and key material. - * - 'loggingdir': Where to write logs. + * - 'cachedir': Where SimpleSAMLphp can write its cache. + * - 'loggingdir': Where to write logs. MUST be set to NULL when using a logging + * handler other than `file`. * - 'datadir': Storage of general data. * - 'tempdir': Saving temporary files. SimpleSAMLphp will attempt to create - * this directory if it doesn't exist. + * this directory if it doesn't exist. DEPRECATED - replaced by cachedir. * When specified as a relative path, this is relative to the SimpleSAMLphp * root directory. */ + 'cachedir' => '/data/cache/simplesamlphp', + //'loggingdir' => '/var/log/', + //'datadir' => '/var/data/', + //'tempdir' => '/tmp/simplesamlphp', + + /* + * Certificate and key material can be loaded from different possible + * locations. Currently two locations are supported, the local filesystem + * and the database via pdo using the global database configuration. Locations + * are specified by a URL-link prefix before the file name/path or database + * identifier. + */ + + /* To load a certificate or key from the filesystem, it should be specified + * as 'file://' where is either a relative filename or a fully + * qualified path to a file containing the certificate or key in PEM + * format, such as 'cert.pem' or '/path/to/cert.pem'. If the path is + * relative, it will be searched for in the directory defined by the + * 'certdir' parameter below. When 'certdir' is specified as a relative + * path, it will be interpreted as relative to the SimpleSAMLphp root + * directory. Note that locations with no prefix included will be treated + * as file locations. + */ 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - 'tempdir' => '/tmp/simplesaml', + + /* To load a certificate or key from the database, it should be specified + * as 'pdo://' where is the identifier in the database table that + * should be matched. While the certificate and key tables are expected to + * be in the simplesaml database, they are not created or managed by + * simplesaml. The following parameters control how the pdo location + * attempts to retrieve certificates and keys from the database: + * + * - 'cert.pdo.table': name of table where certificates are stored + * - 'cert.pdo.keytable': name of table where keys are stored + * - 'cert.pdo.apply_prefix': whether or not to prepend the database.prefix + * parameter to the table names; if you are using + * database.prefix to separate multiple SSP instances + * in the same database but want to share certificate/key + * data between them, set this to false + * - 'cert.pdo.id_column': name of column to use as identifier + * - 'cert.pdo.data_column': name of column where PEM data is stored + * + * Basically, the query executed will be: + * + * SELECT cert.pdo.data_column FROM cert.pdo.table WHERE cert.pdo.id_column = :id + * + * Defaults are shown below, to change them, uncomment the line and update as + * needed + */ + //'cert.pdo.table' => 'certificates', + //'cert.pdo.keytable' => 'private_keys', + //'cert.pdo.apply_prefix' => true, + //'cert.pdo.id_column' => 'id', + //'cert.pdo.data_column' => 'data', /* * Some information about the technical persons running this installation. @@ -175,18 +230,23 @@ * Set the transport options for the transport method specified. The valid settings are relative to the * selected transport method. */ - // // smtp mail transport options - // 'mail.transport.options' => [ - // 'host' => 'mail.example.org', // required - // 'port' => 25, // optional - // 'username' => 'user@example.org', // optional: if set, enables smtp authentication - // 'password' => 'password', // optional: if set, enables smtp authentication - // 'security' => 'tls', // optional: defaults to no smtp security - // ], - // // sendmail mail transport options - // 'mail.transport.options' => [ - // 'path' => '/usr/sbin/sendmail' // optional: defaults to php.ini path - // ], + /* + 'mail.transport.options' => [ + 'host' => 'mail.example.org', // required + 'port' => 25, // optional + 'username' => 'user@example.org', // optional: if set, enables smtp authentication + 'password' => 'password', // optional: if set, enables smtp authentication + 'security' => 'tls', // optional: defaults to no smtp security + 'smtpOptions' => [], // optional: passed to stream_context_create when connecting via SMTP + ], + */ + + // sendmail mail transport options + /* + 'mail.transport.options' => [ + 'path' => '/usr/sbin/sendmail' // optional: defaults to php.ini path + ], + */ /* * The envelope from address for outgoing emails. @@ -216,7 +276,7 @@ * 'secretsalt' can be any valid string of any length. * * A possible way to generate a random salt is by running the following command from a unix shell: - * LC_CTYPE=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo + * LC_ALL=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo */ 'secretsalt' => $SECRET_SALT, @@ -229,10 +289,8 @@ 'auth.adminpassword' => $ADMIN_PASS, /* - * Set this options to true if you want to require administrator password to access the web interface - * or the metadata pages, respectively. + * Set this option to true if you want to require administrator password to access the metadata. */ - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, 'admin.protectmetadata' => true, /* @@ -292,7 +350,7 @@ /* * Set the allowed clock skew between encrypting/decrypting assertions * - * If you have an server that is constantly out of sync, this option + * If you have a server that is constantly out of sync, this option * allows you to adjust the allowed clock-skew. * * Allowed range: 180 - 300 @@ -300,6 +358,21 @@ */ 'assertion.allowed_clock_skew' => 180, + /* + * Set custom security headers. The defaults can be found in \SimpleSAML\Configuration::DEFAULT_SECURITY_HEADERS + * + * NOTE: When a header is already set on the response we will NOT overrule it and leave it untouched. + * + * Whenever you change any of these headers, make sure to validate your config by running your + * hostname through a security-test like https://en.internet.nl + 'headers.security' => [ + 'Content-Security-Policy' => "default-src 'none'; frame-ancestors 'self'; object-src 'none'; script-src 'self'; style-src 'self'; font-src 'self'; connect-src 'self'; img-src 'self' data:; base-uri 'none'", + 'X-Frame-Options' => 'SAMEORIGIN', + 'X-Content-Type-Options' => 'nosniff', + 'Referrer-Policy' => 'origin-when-cross-origin', + ], + */ + /************************ | ERRORS AND DEBUGGING | @@ -354,14 +427,13 @@ /* * Custom error show function called from SimpleSAML\Error\Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. + * See docs/simplesamlphp-errorhandling.md for function code example. * * Example: * 'errors.show_function' => ['SimpleSAML\Module\example\Error', 'show'], */ - /************************** | LOGGING AND STATISTICS | **************************/ @@ -378,6 +450,9 @@ * * Options: [syslog,file,errorlog,stderr] * + * If you set the handler to 'file', the directory specified in loggingdir above + * must exist and be writable for SimpleSAMLphp. If set to something else, set + * loggingdir above to 'null'. */ 'logging.level' => $logLevels[$LOGGING_LEVEL], 'logging.handler' => $LOGGING_HANDLER, @@ -388,7 +463,7 @@ * are: * * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard + * of the date() function for more information on the format. If the brackets are omitted, the standard * format is applied. This can be useful if you just want to control the placement of the date, but don't care * about the format. * @@ -408,7 +483,7 @@ * - %msg: the message to be logged. * */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', + //'logging.format' => '%date{M j H:i:s} %process %level %stat[%trackid] %msg', /* * Choose which facility should be used when logging with syslog. @@ -438,7 +513,8 @@ * This is an array of outputs. Each output has at least a 'class' option, which * selects the output. */ - 'statistics.out' => [// Log statistics to the normal log. + 'statistics.out' => [ + // Log statistics to the normal log. /* [ 'class' => 'core:Log', @@ -517,19 +593,19 @@ //'database.persistent' => false, /* - * Database slave configuration is optional as well. If you are only + * Database secondary configuration is optional as well. If you are only * running a single database server, leave this blank. If you have - * a master/slave configuration, you can define as many slave servers - * as you want here. Slaves will be picked at random to be queried from. + * a primary/secondary configuration, you can define as many secondary servers + * as you want here. Secondaries will be picked at random to be queried from. * - * Configuration options in the slave array are exactly the same as the - * options for the master (shown above) with the exception of the table + * Configuration options in the secondary array are exactly the same as the + * options for the primary (shown above) with the exception of the table * prefix and driver options. */ - //'database.slaves' => [ + //'database.secondaries' => [ // /* // [ - // 'dsn' => 'mysql:host=myslave;dbname=saml', + // 'dsn' => 'mysql:host=mysecondary;dbname=saml', // 'username' => 'simplesamlphp', // 'password' => 'secret', // 'persistent' => false, @@ -547,23 +623,10 @@ * Which functionality in SimpleSAMLphp do you want to enable. Normally you would enable only * one of the functionalities below, but in some cases you could run multiple functionalities. * In example when you are setting up a federation bridge. - * - * Note that shib13-idp has been deprecated and will be removed in SimpleSAMLphp 2.0. */ 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, 'enable.adfs-idp' => false, - /* - * Whether SimpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - /*********** @@ -571,22 +634,22 @@ ***********/ /* - * Configuration to override module enabling/disabling. + * Configuration for enabling/disabling modules. By default the 'core', 'admin' and 'saml' modules are enabled. * * Example: * * 'module.enable' => [ - * 'exampleauth' => true, // Setting to TRUE enables. - * 'consent' => false, // Setting to FALSE disables. - * 'core' => null, // Unset or NULL uses default. + * 'exampleauth' => true, // Setting to TRUE enables. + * 'consent' => false, // Setting to FALSE disables. + * 'core' => null, // Unset or NULL uses default. * ], * */ 'module.enable' => [ - 'saml' => true, 'core' => true, 'admin' => true, + 'saml' => true, 'expirychecker' => true, 'material' => true, 'mfa' => true, @@ -596,7 +659,6 @@ ], - /************************* | SESSION CONFIGURATION | *************************/ @@ -652,7 +714,7 @@ * Example: * 'session.cookie.domain' => '.example.org', */ - 'session.cookie.domain' => null, + 'session.cookie.domain' => '', /* * Set the secure flag in the cookie. @@ -660,6 +722,8 @@ * Set this to TRUE if the user only accesses your service * through https. If the user can access the service through * both http and https, this must be set to FALSE. + * + * If unset, SimpleSAMLphp will try to automatically determine the right value */ 'session.cookie.secure' => $SECURE_COOKIE, @@ -713,7 +777,7 @@ /* * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. + * See docs/simplesamlphp-advancedfeatures.md for function code example. * * Example: * 'session.check_function' => ['\SimpleSAML\Module\example\Util', 'checkSession'], @@ -849,48 +913,13 @@ | LANGUAGE AND INTERNATIONALIZATION | *************************************/ - /* - * Language-related options. - */ - 'language' => [ - /* - * An array in the form 'language' => . - * - * Each key in the array is the ISO 639 two-letter code for a language, - * and its value is an array with a list of alternative languages that - * can be used if the given language is not available at some point. - * Each alternative language is also specified by its ISO 639 code. - * - * For example, for the "no" language code (Norwegian), we would have: - * - * 'priorities' => [ - * 'no' => ['nb', 'nn', 'en', 'se'], - * ... - * ], - * - * establishing that if a translation for the "no" language code is - * not available, we look for translations in "nb", - * and so on, in that order. - */ - 'priorities' => [ - 'no' => ['nb', 'nn', 'en', 'se'], - 'nb' => ['no', 'nn', 'en', 'se'], - 'nn' => ['no', 'nb', 'en', 'se'], - 'se' => ['nb', 'no', 'nn', 'en'], - 'nr' => ['zu', 'en'], - 'nd' => ['zu', 'en'], - 'tw' => ['st', 'en'], - 'nso' => ['st', 'en'], - ], - ], - /* * Languages available, RTL languages, and what language is the default. */ 'language.available' => [ 'en', 'no', 'nn', 'se', 'da', 'de', 'sv', 'fi', 'es', 'ca', 'fr', 'it', 'nl', 'lb', - 'cs', 'sl', 'lt', 'hr', 'hu', 'pl', 'pt', 'pt-br', 'tr', 'ja', 'zh', 'zh-tw', 'ru', - 'et', 'he', 'id', 'sr', 'lv', 'ro', 'eu', 'el', 'af', 'zu', 'xh', 'st', + 'cs', 'sk', 'sl', 'lt', 'hr', 'hu', 'pl', 'pt', 'pt-br', 'tr', 'ja', 'zh', 'zh-tw', + 'ru', 'et', 'he', 'id', 'sr', 'lv', 'ro', 'eu', 'el', 'af', 'zu', 'xh', 'st', ], 'language.rtl' => ['ar', 'dv', 'fa', 'ur', 'he'], 'language.default' => 'en', @@ -905,12 +934,12 @@ * Options to override the default settings for the language cookie */ 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, + 'language.cookie.domain' => '', 'language.cookie.path' => '/', 'language.cookie.secure' => true, 'language.cookie.httponly' => false, 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - 'language.cookie.samesite' => \SimpleSAML\Utils\HTTP::canSetSameSiteNone() ? 'None' : null, + 'language.cookie.samesite' => $httpUtils->canSetSameSiteNone() ? 'None' : null, /** * Custom getLanguage function called from SimpleSAML\Locale\Language::getLanguage(). @@ -924,34 +953,6 @@ * 'language.get_language_function' => ['\SimpleSAML\Module\example\Template', 'getLanguage'], */ - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - - /************** | APPEARANCE | **************/ @@ -965,7 +966,7 @@ * Set this option to the text you would like to appear at the header of each page. Set to false if you don't want * any text to appear in the header. */ - //'theme.header' => 'SimpleSAMLphp' + //'theme.header' => 'SimpleSAMLphp', /** * A template controller, if any. @@ -1031,14 +1032,19 @@ ], ], + /** + * Set to a full URL if you want to redirect users that land on SimpleSAMLphp's + * front page to somewhere more useful. If left unset, a basic welcome message + * is shown. + */ + //'frontpage.redirect' => 'https://example.com/', + /* * color scheme to use for the material theme * Options: https://github.com/silinternational/simplesamlphp-module-material/blob/develop/README.md#branding */ 'theme.color-scheme' => $THEME_COLOR_SCHEME, - - /********************* | DISCOVERY SERVICE | *********************/ @@ -1058,7 +1064,7 @@ /* * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box + * Whether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box * gives the best use experience. * * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. @@ -1069,13 +1075,13 @@ 'idpdisco.layout' => 'links', + /************************************* | AUTHENTICATION PROCESSING FILTERS | *************************************/ /* * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 */ 'authproc.idp' => [ /* Enable the authproc filter below to add URN prefixes to all attributes @@ -1118,6 +1124,12 @@ // 49 => *** WARNING: For Hubs this entry is added at the end of this file + + /* When called without parameters, it will fallback to filter attributes 'the old way' + * by checking the 'attributes' parameter in metadata on IdP hosted and SP remote. + */ +// 50 => 'core:AttributeLimit', + // If no attributes are requested in the SP metadata, then these will be sent through 50 => [ 'class' => 'core:AttributeLimit', @@ -1175,7 +1187,6 @@ /* * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 */ 'authproc.sp' => [ /* @@ -1244,7 +1255,7 @@ * The MDQ metadata handler defines the following options: * - 'type': This is always 'mdq'. * - 'server': Base URL of the MDQ server. Mandatory. - * - 'validateFingerprint': The fingerprint of the certificate used to sign the metadata. You don't need this + * - 'validateCertificate': The certificates file that may be used to sign the metadata. You don't need this * option if you don't want to validate the signature on the metadata. Optional. * - 'cachedir': Directory where metadata can be cached. Optional. * - 'cachelength': Maximum time metadata can be cached, in seconds. Defaults to 24 @@ -1280,6 +1291,10 @@ * [ * 'type' => 'mdq', * 'server' => 'http://mdq.server.com:8080', + * 'validateCertificate' => [ + * '/var/simplesamlphp/cert/metadata-key.new.crt', + * '/var/simplesamlphp/cert/metadata-key.old.crt' + * ], * 'cachedir' => '/var/simplesamlphp/mdq-cache', * 'cachelength' => 86400 * ] @@ -1320,6 +1335,7 @@ 'metadata.sign.privatekey' => 'saml.pem', 'metadata.sign.privatekey_pass' => null, 'metadata.sign.certificate' => 'saml.crt', + 'metadata.sign.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', /**************************** @@ -1357,16 +1373,88 @@ */ //'store.sql.prefix' => 'SimpleSAMLphp', + /* + * The driver-options we should pass to the PDO-constructor. + */ + 'store.sql.options' => [], + /* * The hostname and port of the Redis datastore instance. */ //'store.redis.host' => 'localhost', //'store.redis.port' => 6379, + /* + * The credentials to use when connecting to Redis. + * + * If your Redis server is using the legacy password protection (config + * directive "requirepass" in redis.conf) then you should only provide + * a password. + * + * If your Redis server is using ACL's (which are recommended as of + * Redis 6+) then you should provide both a username and a password. + * See https://redis.io/docs/manual/security/acl/ + */ +// 'store.redis.username' => '', +// 'store.redis.password' => '', + + /* + * Communicate with Redis over a secure connection instead of plain TCP. + * + * This setting affects both single host connections as + * well as Sentinel mode. + */ +// 'store.redis.tls' => false, + + /* + * Verify the Redis server certificate. + */ +// 'store.redis.insecure' => false, + + /* + * Files related to secure communication with Redis. + * + * Files are searched in the 'certdir' when using relative paths. + */ +// 'store.redis.ca_certificate' => null, +// 'store.redis.certificate' => null, +// 'store.redis.privatekey' => null, + /* * The prefix we should use on our Redis datastore. */ - //'store.redis.prefix' => 'SimpleSAMLphp', +// 'store.redis.prefix' => 'SimpleSAMLphp', + + /* + * The master group to use for Redis Sentinel. + */ + 'store.redis.mastergroup' => 'mymaster', + + /* + * The Redis Sentinel hosts. + * Example: + * 'store.redis.sentinels' => [ + * 'tcp://[yoursentinel1]:[port]', + * 'tcp://[yoursentinel2]:[port]', + * 'tcp://[yoursentinel3]:[port] + * ], + * + * Use 'tls' instead of 'tcp' in order to make use of the additional + * TLS settings. + */ + 'store.redis.sentinels' => [], + + /********************* + | IdP/SP PROXY MODE | + *********************/ + + /* + * If the IdP in front of SimpleSAMLphp in IdP/SP proxy mode sends + * AuthnContextClassRef, decide whether the AuthnContextClassRef will be + * processed by the IdP/SP proxy or if it will be passed to the SP behind + * the IdP/SP proxy. + */ + 'proxymode.passAuthnContextClassRef' => false, ]; if ($HUB_MODE) { From d3112dc7d3effe01870cd4597ddc2b2ccbae8367 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Mon, 17 Jun 2024 16:28:42 +0800 Subject: [PATCH 10/85] use the same config file in all IdP containers --- actions-services.yml | 7 +- development/enable-exampleauth.sh | 3 + development/idp-local/config/config.php | 1366 ---------------------- development/idp2-local/config/config.php | 1366 ---------------------- development/idp3-local/config/config.php | 810 ------------- docker-compose.yml | 7 +- 6 files changed, 11 insertions(+), 3548 deletions(-) create mode 100755 development/enable-exampleauth.sh delete mode 100644 development/idp-local/config/config.php delete mode 100644 development/idp2-local/config/config.php delete mode 100644 development/idp3-local/config/config.php diff --git a/actions-services.yml b/actions-services.yml index 2c0a2c5c..83d0d5c1 100644 --- a/actions-services.yml +++ b/actions-services.yml @@ -84,8 +84,8 @@ services: # Utilize custom configs - ./development/idp-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php - - ./development/idp-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/announcement.php:/data/vendor/simplesamlphp/simplesamlphp/announcement/announcement.php + - ./development/enable-exampleauth.sh:/data/enable-exampleauth.sh # Utilize custom metadata - ./development/idp-local/metadata/saml20-idp-hosted.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-hosted.php @@ -101,6 +101,7 @@ services: - ./features:/data/features command: > bash -c "whenavail db 3306 60 /data/vendor/simplesamlphp/simplesamlphp/modules/silauth/src/Auth/Source/yii migrate --interactive=0 && + /data/enable-exampleauth.sh && /data/run.sh" environment: ADMIN_PASS: "a" @@ -131,7 +132,7 @@ services: # Utilize custom configs - ./development/idp2-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php - - ./development/idp2-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php + - ./development/enable-exampleauth.sh:/data/enable-exampleauth.sh # Utilize custom metadata - ./development/idp2-local/metadata/saml20-idp-hosted.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-hosted.php @@ -140,6 +141,7 @@ services: # Customized SSP code -- TODO: make a better solution that doesn't require hacking SSP code - ./development/UserPass.php:/data/vendor/simplesamlphp/simplesamlphp/modules/exampleauth/src/Auth/Source/UserPass.php + command: bash -c "/data/enable-exampleauth.sh && /data/run.sh" environment: ADMIN_PASS: "b" SECRET_SALT: "h57fjemb&dn^nsJFGNjweJ" @@ -155,7 +157,6 @@ services: # Utilize custom configs - ./development/idp3-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php - - ./development/idp3-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php # Utilize custom metadata - ./development/idp3-local/metadata/saml20-idp-hosted.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-hosted.php diff --git a/development/enable-exampleauth.sh b/development/enable-exampleauth.sh new file mode 100755 index 00000000..df47b6c9 --- /dev/null +++ b/development/enable-exampleauth.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +sed -i 's@^\( *'\''module\.enable'\'' => \[\)@\1'\''\n exampleauth'\'' => true,@' vendor/simplesamlphp/simplesamlphp/config/config.php diff --git a/development/idp-local/config/config.php b/development/idp-local/config/config.php deleted file mode 100644 index 1c87b7ee..00000000 --- a/development/idp-local/config/config.php +++ /dev/null @@ -1,1366 +0,0 @@ - SimpleSAML\Logger::ERR, // No statistics, only errors - 'WARNING' => SimpleSAML\Logger::WARNING, // No statistics, only warnings/errors - 'NOTICE' => SimpleSAML\Logger::NOTICE, // Statistics and errors - 'INFO' => SimpleSAML\Logger::INFO, // Verbose logs - 'DEBUG' => SimpleSAML\Logger::DEBUG, // Full debug logs - not recommended for production -]; - -try { - // Required to be defined in environment variables - $ADMIN_PASS = Env::requireEnv('ADMIN_PASS'); - $SECRET_SALT = Env::requireEnv('SECRET_SALT'); - $IDP_NAME = Env::requireEnv('IDP_NAME'); -} catch (EnvVarNotFoundException $e) { - - // Return error response code/message to HTTP request. - header('Content-Type: application/json'); - http_response_code(500); - $responseContent = json_encode([ - 'name' => 'Internal Server Error', - 'message' => $e->getMessage(), - 'status' => 500, - ]); - fwrite(fopen('php://stderr', 'w'), $responseContent . PHP_EOL); - exit($responseContent); -} - -// Defaults provided if not defined in environment -$IDP_DISPLAY_NAME = Env::get('IDP_DISPLAY_NAME', $IDP_NAME); -$BASE_URL_PATH = Env::get('BASE_URL_PATH', '/'); -$ADMIN_EMAIL = Env::get('ADMIN_EMAIL', 'na@example.org'); -$ADMIN_NAME = Env::get('ADMIN_NAME', 'SAML Admin'); -$ADMIN_PROTECT_INDEX_PAGE = Env::get('ADMIN_PROTECT_INDEX_PAGE', true); -$SHOW_SAML_ERRORS = Env::get('SHOW_SAML_ERRORS', false); -$ENABLE_DEBUG = Env::get('ENABLE_DEBUG', false); -$LOGGING_LEVEL = Env::get('LOGGING_LEVEL', 'NOTICE'); -$LOGGING_HANDLER = Env::get('LOGGING_HANDLER', 'stderr'); - -// Options: https://github.com/silinternational/simplesamlphp-module-material/blob/develop/README.md#branding -$THEME_COLOR_SCHEME = Env::get('THEME_COLOR_SCHEME', null); - -$SECURE_COOKIE = Env::get('SECURE_COOKIE', true); -$SESSION_DURATION = (int)(Env::get('SESSION_DURATION', (60 * 60 * 10))); // 10 hours. -$SESSION_STORE_TYPE = Env::get('SESSION_STORE_TYPE', 'phpsession'); -$MYSQL_HOST = Env::get('MYSQL_HOST', ''); -$MYSQL_DATABASE = Env::get('MYSQL_DATABASE', ''); -$MYSQL_USER = Env::get('MYSQL_USER', ''); -$MYSQL_PASSWORD = Env::get('MYSQL_PASSWORD', ''); - -$SAML20_IDP_ENABLE = Env::get('SAML20_IDP_ENABLE', true); -$HUB_MODE = Env::get('HUB_MODE', false); -$ANALYTICS_ID = Env::get('ANALYTICS_ID', null); -$PASSWORD_CHANGE_URL = Env::get('PASSWORD_CHANGE_URL'); -$PASSWORD_FORGOT_URL = Env::get('PASSWORD_FORGOT_URL'); -$HELP_CENTER_URL = Env::get('HELP_CENTER_URL'); - -$config = [ - - /* - * Whether this instance should act as a hub/proxy/bridge using sildisco - */ - 'hubmode' => $HUB_MODE, - - /* - * Name of this IdP - */ - 'idp_name' => $IDP_NAME, - - /* - * Name of this IdP to display to the user - */ - 'idp_display_name' => $IDP_DISPLAY_NAME, - - /* - * The tracking Id for Google Analytics or some other similar service - */ - 'analytics.trackingId' => $ANALYTICS_ID, - - 'passwordChangeUrl' => $PASSWORD_CHANGE_URL, - 'passwordForgotUrl' => $PASSWORD_FORGOT_URL, - 'helpCenterUrl' => $HELP_CENTER_URL, - - /******************************* - | BASIC CONFIGURATION OPTIONS | - *******************************/ - - /* - * Setup the following parameters to match your installation. - * See the user manual for more details. - */ - - /* - * baseurlpath is a *URL path* (not a filesystem path). - * A valid format for 'baseurlpath' is: - * [(http|https)://(hostname|fqdn)[:port]]/[path/to/simplesaml/] - * - * The full url format is useful if your SimpleSAMLphp setup is hosted behind - * a reverse proxy. In that case you can specify the external url here. - * - * Please note that SimpleSAMLphp will then redirect all queries to the - * external url, no matter where you come from (direct access or via the - * reverse proxy). - */ - 'baseurlpath' => $BASE_URL_PATH, - - /* - * The 'application' configuration array groups a set configuration options - * relative to an application protected by SimpleSAMLphp. - */ - //'application' => [ - /* - * The 'baseURL' configuration option allows you to specify a protocol, - * host and optionally a port that serves as the canonical base for all - * your application's URLs. This is useful when the environment - * observed in the server differs from the one observed by end users, - * for example, when using a load balancer to offload TLS. - * - * Note that this configuration option does not allow setting a path as - * part of the URL. If your setup involves URL rewriting or any other - * tricks that would result in SimpleSAMLphp observing a URL for your - * application's scripts different than the canonical one, you will - * need to compute the right URLs yourself and pass them dynamically - * to SimpleSAMLphp's API. - */ - //'baseURL' => 'https://example.com', - //], - - /* - * The following settings are *filesystem paths* which define where - * SimpleSAMLphp can find or write the following things: - * - 'certdir': The base directory for certificate and key material. - * - 'loggingdir': Where to write logs. - * - 'datadir': Storage of general data. - * - 'tempdir': Saving temporary files. SimpleSAMLphp will attempt to create - * this directory if it doesn't exist. - * When specified as a relative path, this is relative to the SimpleSAMLphp - * root directory. - */ - 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - 'tempdir' => '/tmp/simplesaml', - - /* - * Some information about the technical persons running this installation. - * The email address will be used as the recipient address for error reports, and - * also as the technical contact in generated metadata. - */ - 'technicalcontact_name' => $ADMIN_NAME, - 'technicalcontact_email' => $ADMIN_EMAIL, - - /* - * (Optional) The method by which email is delivered. Defaults to mail which utilizes the - * PHP mail() function. - * - * Valid options are: mail, sendmail and smtp. - */ - //'mail.transport.method' => 'smtp', - - /* - * Set the transport options for the transport method specified. The valid settings are relative to the - * selected transport method. - */ - // // smtp mail transport options - // 'mail.transport.options' => [ - // 'host' => 'mail.example.org', // required - // 'port' => 25, // optional - // 'username' => 'user@example.org', // optional: if set, enables smtp authentication - // 'password' => 'password', // optional: if set, enables smtp authentication - // 'security' => 'tls', // optional: defaults to no smtp security - // ], - // // sendmail mail transport options - // 'mail.transport.options' => [ - // 'path' => '/usr/sbin/sendmail' // optional: defaults to php.ini path - // ], - - /* - * The envelope from address for outgoing emails. - * This should be in a domain that has your application's IP addresses in its SPF record - * to prevent it from being rejected by mail filters. - */ - //'sendmail_from' => 'no-reply@example.org', - - /* - * The timezone of the server. This option should be set to the timezone you want - * SimpleSAMLphp to report the time in. The default is to guess the timezone based - * on your system timezone. - * - * See this page for a list of valid timezones: http://php.net/manual/en/timezones.php - */ - 'timezone' => 'GMT', - - - - /********************************** - | SECURITY CONFIGURATION OPTIONS | - **********************************/ - - /* - * This is a secret salt used by SimpleSAMLphp when it needs to generate a secure hash - * of a value. It must be changed from its default value to a secret value. The value of - * 'secretsalt' can be any valid string of any length. - * - * A possible way to generate a random salt is by running the following command from a unix shell: - * LC_CTYPE=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo - */ - 'secretsalt' => $SECRET_SALT, - - /* - * This password must be kept secret, and modified from the default value 123. - * This password will give access to the installation page of SimpleSAMLphp with - * metadata listing and diagnostics pages. - * You can also put a hash here; run "bin/pwgen.php" to generate one. - */ - 'auth.adminpassword' => $ADMIN_PASS, - - /* - * Set this options to true if you want to require administrator password to access the web interface - * or the metadata pages, respectively. - */ - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, - 'admin.protectmetadata' => true, - - /* - * Set this option to false if you don't want SimpleSAMLphp to check for new stable releases when - * visiting the configuration tab in the web interface. - */ - 'admin.checkforupdates' => false, - - /* - * Array of domains that are allowed when generating links or redirects - * to URLs. SimpleSAMLphp will use this option to determine whether to - * to consider a given URL valid or not, but you should always validate - * URLs obtained from the input on your own (i.e. ReturnTo or RelayState - * parameters obtained from the $_REQUEST array). - * - * SimpleSAMLphp will automatically add your own domain (either by checking - * it dynamically, or by using the domain defined in the 'baseurlpath' - * directive, the latter having precedence) to the list of trusted domains, - * in case this option is NOT set to NULL. In that case, you are explicitly - * telling SimpleSAMLphp to verify URLs. - * - * Set to an empty array to disallow ALL redirects or links pointing to - * an external URL other than your own domain. This is the default behaviour. - * - * Set to NULL to disable checking of URLs. DO NOT DO THIS UNLESS YOU KNOW - * WHAT YOU ARE DOING! - * - * Example: - * 'trusted.url.domains' => ['sp.example.com', 'app.example.com'], - */ - 'trusted.url.domains' => null, - - /* - * Enable regular expression matching of trusted.url.domains. - * - * Set to true to treat the values in trusted.url.domains as regular - * expressions. Set to false to do exact string matching. - * - * If enabled, the start and end delimiters ('^' and '$') will be added to - * all regular expressions in trusted.url.domains. - */ - 'trusted.url.regex' => false, - - /* - * Enable secure POST from HTTPS to HTTP. - * - * If you have some SP's on HTTP and IdP is normally on HTTPS, this option - * enables secure POSTing to HTTP endpoint without warning from browser. - * - * For this to work, module.php/core/postredirect.php must be accessible - * also via HTTP on IdP, e.g. if your IdP is on - * https://idp.example.org/ssp/, then - * http://idp.example.org/ssp/module.php/core/postredirect.php must be accessible. - */ - 'enable.http_post' => false, - - /* - * Set the allowed clock skew between encrypting/decrypting assertions - * - * If you have an server that is constantly out of sync, this option - * allows you to adjust the allowed clock-skew. - * - * Allowed range: 180 - 300 - * Defaults to 180. - */ - 'assertion.allowed_clock_skew' => 180, - - - /************************ - | ERRORS AND DEBUGGING | - ************************/ - - /* - * The 'debug' option allows you to control how SimpleSAMLphp behaves in certain - * situations where further action may be taken - * - * It can be left unset, in which case, debugging is switched off for all actions. - * If set, it MUST be an array containing the actions that you want to enable, or - * alternatively a hashed array where the keys are the actions and their - * corresponding values are booleans enabling or disabling each particular action. - * - * SimpleSAMLphp provides some pre-defined actions, though modules could add new - * actions here. Refer to the documentation of every module to learn if they - * allow you to set any more debugging actions. - * - * The pre-defined actions are: - * - * - 'saml': this action controls the logging of SAML messages exchanged with other - * entities. When enabled ('saml' is present in this option, or set to true), all - * SAML messages will be logged, including plaintext versions of encrypted - * messages. - * - * - 'backtraces': this action controls the logging of error backtraces. If you - * want to log backtraces so that you can debug any possible errors happening in - * SimpleSAMLphp, enable this action (add it to the array or set it to true). - * - * - 'validatexml': this action allows you to validate SAML documents against all - * the relevant XML schemas. SAML 1.1 messages or SAML metadata parsed with - * the XML to SimpleSAMLphp metadata converter or the metaedit module will - * validate the SAML documents if this option is enabled. - * - * If you want to disable debugging completely, unset this option or set it to an - * empty array. - */ - 'debug' => [ - 'saml' => $ENABLE_DEBUG, - 'backtraces' => true, - 'validatexml' => $ENABLE_DEBUG, - ], - - /* - * When 'showerrors' is enabled, all error messages and stack traces will be output - * to the browser. - * - * When 'errorreporting' is enabled, a form will be presented for the user to report - * the error to 'technicalcontact_email'. - */ - 'showerrors' => $SHOW_SAML_ERRORS, - 'errorreporting' => false, - - /* - * Custom error show function called from SimpleSAML\Error\Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. - * - * Example: - * 'errors.show_function' => ['SimpleSAML\Module\example\Error', 'show'], - */ - - - - /************************** - | LOGGING AND STATISTICS | - **************************/ - - /* - * Define the minimum log level to log. Available levels: - * - SimpleSAML\Logger::ERR No statistics, only errors - * - SimpleSAML\Logger::WARNING No statistics, only warnings/errors - * - SimpleSAML\Logger::NOTICE Statistics and errors - * - SimpleSAML\Logger::INFO Verbose logs - * - SimpleSAML\Logger::DEBUG Full debug logs - not recommended for production - * - * Choose logging handler. - * - * Options: [syslog,file,errorlog,stderr] - * - */ - 'logging.level' => $logLevels[$LOGGING_LEVEL], - 'logging.handler' => $LOGGING_HANDLER, - - /* - * Specify the format of the logs. Its use varies depending on the log handler used (for instance, you cannot - * control here how dates are displayed when using the syslog or errorlog handlers), but in general the options - * are: - * - * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard - * format is applied. This can be useful if you just want to control the placement of the date, but don't care - * about the format. - * - * - %process: the name of the SimpleSAMLphp process. Remember you can configure this in the 'logging.processname' - * option below. - * - * - %level: the log level (name or number depending on the handler used). - * - * - %stat: if the log entry is intended for statistical purposes, it will print the string 'STAT ' (bear in mind - * the trailing space). - * - * - %trackid: the track ID, an identifier that allows you to track a single session. - * - * - %srcip: the IP address of the client. If you are behind a proxy, make sure to modify the - * $_SERVER['REMOTE_ADDR'] variable on your code accordingly to the X-Forwarded-For header. - * - * - %msg: the message to be logged. - * - */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', - - /* - * Choose which facility should be used when logging with syslog. - * - * These can be used for filtering the syslog output from SimpleSAMLphp into its - * own file by configuring the syslog daemon. - * - * See the documentation for openlog (http://php.net/manual/en/function.openlog.php) for available - * facilities. Note that only LOG_USER is valid on windows. - * - * The default is to use LOG_LOCAL5 if available, and fall back to LOG_USER if not. - */ - 'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, - - /* - * The process name that should be used when logging to syslog. - * The value is also written out by the other logging handlers. - */ - 'logging.processname' => 'simplesamlphp', - - /* - * Logging: file - Logfilename in the loggingdir from above. - */ - 'logging.logfile' => 'simplesamlphp.log', - - /* - * This is an array of outputs. Each output has at least a 'class' option, which - * selects the output. - */ - 'statistics.out' => [// Log statistics to the normal log. - /* - [ - 'class' => 'core:Log', - 'level' => 'notice', - ], - */ - // Log statistics to files in a directory. One file per day. - /* - [ - 'class' => 'core:File', - 'directory' => '/var/log/stats', - ], - */ - ], - - - - /*********************** - | PROXY CONFIGURATION | - ***********************/ - - /* - * Proxy to use for retrieving URLs. - * - * Example: - * 'proxy' => 'tcp://proxy.example.com:5100' - */ - 'proxy' => null, - - /* - * Username/password authentication to proxy (Proxy-Authorization: Basic) - * Example: - * 'proxy.auth' = 'myuser:password' - */ - //'proxy.auth' => 'myuser:password', - - - - /************************** - | DATABASE CONFIGURATION | - **************************/ - - /* - * This database configuration is optional. If you are not using - * core functionality or modules that require a database, you can - * skip this configuration. - */ - - /* - * Database connection string. - * Ensure that you have the required PDO database driver installed - * for your connection string. - */ - //'database.dsn' => 'mysql:host=localhost;dbname=saml', - - /* - * SQL database credentials - */ - //'database.username' => 'simplesamlphp', - //'database.password' => 'secret', - //'database.options' => [], - - /* - * (Optional) Table prefix - */ - //'database.prefix' => '', - - /* - * (Optional) Driver options - */ - //'database.driver_options' => [], - - /* - * True or false if you would like a persistent database connection - */ - //'database.persistent' => false, - - /* - * Database slave configuration is optional as well. If you are only - * running a single database server, leave this blank. If you have - * a master/slave configuration, you can define as many slave servers - * as you want here. Slaves will be picked at random to be queried from. - * - * Configuration options in the slave array are exactly the same as the - * options for the master (shown above) with the exception of the table - * prefix and driver options. - */ - //'database.slaves' => [ - // /* - // [ - // 'dsn' => 'mysql:host=myslave;dbname=saml', - // 'username' => 'simplesamlphp', - // 'password' => 'secret', - // 'persistent' => false, - // ], - // */ - //], - - - - /************* - | PROTOCOLS | - *************/ - - /* - * Which functionality in SimpleSAMLphp do you want to enable. Normally you would enable only - * one of the functionalities below, but in some cases you could run multiple functionalities. - * In example when you are setting up a federation bridge. - */ - 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, - 'enable.adfs-idp' => false, - - /* - * Whether SimpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - - - - /*********** - | MODULES | - ***********/ - - /* - * Configuration to override module enabling/disabling. - * - * Example: - * - * 'module.enable' => [ - * 'exampleauth' => true, // Setting to TRUE enables. - * 'consent' => false, // Setting to FALSE disables. - * 'core' => null, // Unset or NULL uses default. - * ], - * - */ - - 'module.enable' => [ - 'saml' => true, - 'core' => true, - 'admin' => true, - 'expirychecker' => true, - 'material' => true, - 'mfa' => true, - 'profilereview' => true, - 'silauth' => true, - 'sildisco' => true, - 'exampleauth' => true, - ], - - - - /************************* - | SESSION CONFIGURATION | - *************************/ - - /* - * This value is the duration of the session in seconds. Make sure that the time duration of - * cookies both at the SP and the IdP exceeds this duration. - */ - 'session.duration' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, data should be stored in the datastore. As the data store is used for - * login and logout requests, this option will control the maximum time these operations can take. - * The default is 4 hours (4*60*60) seconds, which should be more than enough for these operations. - */ - 'session.datastore.timeout' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, auth state should be stored. - */ - 'session.state.timeout' => $SESSION_DURATION, - - /* - * Option to override the default settings for the session cookie name - */ - 'session.cookie.name' => 'SSPSESSID', - - /* - * Expiration time for the session cookie, in seconds. - * - * Defaults to 0, which means that the cookie expires when the browser is closed. - * - * Example: - * 'session.cookie.lifetime' => 30*60, - */ - 'session.cookie.lifetime' => 0, - - /* - * Limit the path of the cookies. - * - * Can be used to limit the path of the cookies to a specific subdirectory. - * - * Example: - * 'session.cookie.path' => '/simplesaml/', - */ - 'session.cookie.path' => '/', - - /* - * Cookie domain. - * - * Can be used to make the session cookie available to several domains. - * - * Example: - * 'session.cookie.domain' => '.example.org', - */ - 'session.cookie.domain' => null, - - /* - * Set the secure flag in the cookie. - * - * Set this to TRUE if the user only accesses your service - * through https. If the user can access the service through - * both http and https, this must be set to FALSE. - */ - 'session.cookie.secure' => $SECURE_COOKIE, - - /* - * Set the SameSite attribute in the cookie. - * - * You can set this to the strings 'None', 'Lax', or 'Strict' to support - * the RFC6265bis SameSite cookie attribute. If set to null, no SameSite - * attribute will be sent. - * - * Example: - * 'session.cookie.samesite' => 'None', - */ - 'session.cookie.samesite' => null, - - /* - * Options to override the default settings for php sessions. - */ - 'session.phpsession.cookiename' => 'SimpleSAML', - 'session.phpsession.savepath' => null, - 'session.phpsession.httponly' => true, - - /* - * Option to override the default settings for the auth token cookie - */ - 'session.authtoken.cookiename' => 'SSPAUTHTOKEN', - - /* - * Options for remember me feature for IdP sessions. Remember me feature - * has to be also implemented in authentication source used. - * - * Option 'session.cookie.lifetime' should be set to zero (0), i.e. cookie - * expires on browser session if remember me is not checked. - * - * Session duration ('session.duration' option) should be set according to - * 'session.rememberme.lifetime' option. - * - * It's advised to use remember me feature with session checking function - * defined with 'session.check_function' option. - */ - 'session.rememberme.enable' => false, - 'session.rememberme.checked' => false, - 'session.rememberme.lifetime' => (14 * 86400), // 14 days - - /* - * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. - * - * Example: - * 'session.check_function' => ['\SimpleSAML\Module\example\Util', 'checkSession'], - */ - - - - /************************** - | MEMCACHE CONFIGURATION | - **************************/ - - /* - * Configuration for the 'memcache' session store. This allows you to store - * multiple redundant copies of sessions on different memcache servers. - * - * 'memcache_store.servers' is an array of server groups. Every data - * item will be mirrored in every server group. - * - * Each server group is an array of servers. The data items will be - * load-balanced between all servers in each server group. - * - * Each server is an array of parameters for the server. The following - * options are available: - * - 'hostname': This is the hostname or ip address where the - * memcache server runs. This is the only required option. - * - 'port': This is the port number of the memcache server. If this - * option isn't set, then we will use the 'memcache.default_port' - * ini setting. This is 11211 by default. - * - * When using the "memcache" extension, the following options are also - * supported: - * - 'weight': This sets the weight of this server in this server - * group. http://php.net/manual/en/function.Memcache-addServer.php - * contains more information about the weight option. - * - 'timeout': The timeout for this server. By default, the timeout - * is 3 seconds. - * - * Example of redundant configuration with load balancing: - * This configuration makes it possible to lose both servers in the - * a-group or both servers in the b-group without losing any sessions. - * Note that sessions will be lost if one server is lost from both the - * a-group and the b-group. - * - * 'memcache_store.servers' => [ - * [ - * ['hostname' => 'mc_a1'], - * ['hostname' => 'mc_a2'], - * ], - * [ - * ['hostname' => 'mc_b1'], - * ['hostname' => 'mc_b2'], - * ], - * ], - * - * Example of simple configuration with only one memcache server, - * running on the same computer as the web server: - * Note that all sessions will be lost if the memcache server crashes. - * - * 'memcache_store.servers' => [ - * [ - * ['hostname' => 'localhost'], - * ], - * ], - * - * Additionally, when using the "memcached" extension, unique keys must - * be provided for each group of servers if persistent connections are - * desired. Each server group can also have an "options" indexed array - * with the options desired for the given group: - * - * 'memcache_store.servers' => [ - * 'memcache_group_1' => [ - * 'options' => [ - * \Memcached::OPT_BINARY_PROTOCOL => true, - * \Memcached::OPT_NO_BLOCK => true, - * \Memcached::OPT_TCP_NODELAY => true, - * \Memcached::OPT_LIBKETAMA_COMPATIBLE => true, - * ], - * ['hostname' => '127.0.0.1', 'port' => 11211], - * ['hostname' => '127.0.0.2', 'port' => 11211], - * ], - * - * 'memcache_group_2' => [ - * 'options' => [ - * \Memcached::OPT_BINARY_PROTOCOL => true, - * \Memcached::OPT_NO_BLOCK => true, - * \Memcached::OPT_TCP_NODELAY => true, - * \Memcached::OPT_LIBKETAMA_COMPATIBLE => true, - * ], - * ['hostname' => '127.0.0.3', 'port' => 11211], - * ['hostname' => '127.0.0.4', 'port' => 11211], - * ], - * ], - * - */ -// 'memcache_store.servers' => [ -// [ -// [ -// 'hostname' => 'localhost', -// ], -// ], -// ], - - /* - * This value allows you to set a prefix for memcache-keys. The default - * for this value is 'simpleSAMLphp', which is fine in most cases. - * - * When running multiple instances of SSP on the same host, and more - * than one instance is using memcache, you probably want to assign - * a unique value per instance to this setting to avoid data collision. - */ -// 'memcache_store.prefix' => '', - - /* - * This value is the duration data should be stored in memcache. Data - * will be dropped from the memcache servers when this time expires. - * The time will be reset every time the data is written to the - * memcache servers. - * - * This value should always be larger than the 'session.duration' - * option. Not doing this may result in the session being deleted from - * the memcache servers while it is still in use. - * - * Set this value to 0 if you don't want data to expire. - * - * Note: The oldest data will always be deleted if the memcache server - * runs out of storage space. - */ -// 'memcache_store.expires' => 36 * (60 * 60), // 36 hours. - - - - /************************************* - | LANGUAGE AND INTERNATIONALIZATION | - *************************************/ - - /* - * Language-related options. - */ - 'language' => [ - /* - * An array in the form 'language' => . - * - * Each key in the array is the ISO 639 two-letter code for a language, - * and its value is an array with a list of alternative languages that - * can be used if the given language is not available at some point. - * Each alternative language is also specified by its ISO 639 code. - * - * For example, for the "no" language code (Norwegian), we would have: - * - * 'priorities' => [ - * 'no' => ['nb', 'nn', 'en', 'se'], - * ... - * ], - * - * establishing that if a translation for the "no" language code is - * not available, we look for translations in "nb" (Norwegian Bokmål), - * and so on, in that order. - */ - 'priorities' => [ - 'no' => ['nb', 'nn', 'en', 'se'], - 'nb' => ['no', 'nn', 'en', 'se'], - 'nn' => ['no', 'nb', 'en', 'se'], - 'se' => ['nb', 'no', 'nn', 'en'], - 'nr' => ['zu', 'en'], - 'nd' => ['zu', 'en'], - ], - ], - - /* - * Languages available, RTL languages, and what language is the default. - */ - 'language.available' => [ - 'en', 'no', 'nn', 'se', 'da', 'de', 'sv', 'fi', 'es', 'ca', 'fr', 'it', 'nl', 'lb', - 'cs', 'sl', 'lt', 'hr', 'hu', 'pl', 'pt', 'pt-br', 'tr', 'ja', 'zh', 'zh-tw', 'ru', - 'et', 'he', 'id', 'sr', 'lv', 'ro', 'eu', 'el', 'af', 'zu', 'xh', - ], - 'language.rtl' => ['ar', 'dv', 'fa', 'ur', 'he'], - 'language.default' => 'en', - - /* - * Options to override the default settings for the language parameter - */ - 'language.parameter.name' => 'language', - 'language.parameter.setcookie' => true, - - /* - * Options to override the default settings for the language cookie - */ - 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, - 'language.cookie.path' => '/', - 'language.cookie.secure' => false, - 'language.cookie.httponly' => false, - 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - 'language.cookie.samesite' => null, - - /** - * Custom getLanguage function called from SimpleSAML\Locale\Language::getLanguage(). - * Function should return language code of one of the available languages or NULL. - * See SimpleSAML\Locale\Language::getLanguage() source code for more info. - * - * This option can be used to implement a custom function for determining - * the default language for the user. - * - * Example: - * 'language.get_language_function' => ['\SimpleSAML\Module\example\Template', 'getLanguage'], - */ - - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - - - /************** - | APPEARANCE | - **************/ - - /* - * Which theme directory should be used? - */ - 'theme.use' => 'material:material', - - /* - * Set this option to the text you would like to appear at the header of each page. Set to false if you don't want - * any text to appear in the header. - */ - //'theme.header' => 'SimpleSAMLphp' - - /** - * A template controller, if any. - * - * Used to intercept certain parts of the template handling, while keeping away unwanted/unexpected hooks. Set - * the 'theme.controller' configuration option to a class that implements the - * \SimpleSAML\XHTML\TemplateControllerInterface interface to use it. - */ - //'theme.controller' => '', - - /* - * Templating options - * - * By default, twig templates are not cached. To turn on template caching: - * Set 'template.cache' to an absolute path pointing to a directory that - * SimpleSAMLphp has read and write permissions to. - */ - //'template.cache' => '', - - /* - * Set the 'template.auto_reload' to true if you would like SimpleSAMLphp to - * recompile the templates (when using the template cache) if the templates - * change. If you don't want to check the source templates for every request, - * set it to false. - */ - 'template.auto_reload' => false, - - /* - * Set this option to true to indicate that your installation of SimpleSAMLphp - * is running in a production environment. This will affect the way resources - * are used, offering an optimized version when running in production, and an - * easy-to-debug one when not. Set it to false when you are testing or - * developing the software, in which case a banner will be displayed to remind - * users that they're dealing with a non-production instance. - * - * Defaults to true. - */ - 'production' => true, - - /* - * SimpleSAMLphp modules can host static resources which are served through PHP. - * The serving of the resources can be configured through these settings. - */ - 'assets' => [ - /* - * These settings adjust the caching headers that are sent - * when serving static resources. - */ - 'caching' => [ - /* - * Amount of seconds before the resource should be fetched again - */ - 'max_age' => 86400, - /* - * Calculate a checksum of every file and send it to the browser - * This allows the browser to avoid downloading assets again in situations - * where the Last-Modified header cannot be trusted, - * for example in cluster setups - * - * Defaults false - */ - 'etag' => false, - ], - ], - - /* - * If using the material theme, which color scheme to use - * Options: https://github.com/silinternational/simplesamlphp-module-material/blob/develop/README.md#branding - */ - 'theme.color-scheme' => $THEME_COLOR_SCHEME, - - - - /********************* - | DISCOVERY SERVICE | - *********************/ - - /* - * Whether the discovery service should allow the user to save his choice of IdP. - */ - 'idpdisco.enableremember' => true, - 'idpdisco.rememberchecked' => true, - - /* - * The disco service only accepts entities it knows. - */ - 'idpdisco.validate' => true, - - 'idpdisco.extDiscoveryStorage' => null, - - /* - * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box - * gives the best use experience. - * - * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. - * This makes it easier for the user to choose the IdP - * - * Options: [links,dropdown] - */ - 'idpdisco.layout' => 'links', - - - /************************************* - | AUTHENTICATION PROCESSING FILTERS | - *************************************/ - - /* - * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.idp' => [ - /* Enable the authproc filter below to add URN prefixes to all attributes - 10 => [ - 'class' => 'core:AttributeMap', 'addurnprefix' - ], - */ - /* Enable the authproc filter below to automatically generated eduPersonTargetedID. - 20 => 'core:TargetedID', - */ - - // Adopts language from attribute to use in UI - 30 => 'core:LanguageAdaptor', - - 35 => [ - 'class' => 'core:StatisticsWithAttribute', - 'attributename' => 'realm', - 'type' => 'saml20-idp-SSO', - ], - - /* - * Copy friendly names attribute keys to oids ... - */ - 40 => [ - 'class' => 'core:AttributeMap', - 'name2oid', - '%duplicate', - ], - - /* - * Copy oid attribute keys to friendly names - */ - 41 => [ - 'class' => 'core:AttributeMap', - 'oid2name', - '%duplicate', - ], - - // 48 => *** WARNING: For Hubs this entry is added at the end of this file - - - // If no attributes are requested in the SP metadata, then these will be sent through - 50 => [ - 'class' => 'core:AttributeLimit', - 'default' => true, - 'cn', - 'eduPersonPrincipalName', - 'eduPersonTargetID', - 'sn', - 'givenName', - 'mail', - 'employeeNumber', - 'urn:oid:2.5.4.3', // cn - 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', // eduPersonPrincipalName - 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', // eduPersonTargetID - 'urn:oid:2.5.4.4', // sn - 'urn:oid:2.5.4.42', // givenName - 'urn:oid:0.9.2342.19200300.100.1.3', // mail - 'urn:oid:2.16.840.1.113730.3.1.3', // employeeNumber - ], - - // Use the uid value to populate the nameid entry - // 60 => [ - // 'class' => 'saml:AttributeNameID', - // 'attribute' => 'uid', - // 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', - // ], - - /* - * Search attribute "distinguishedName" for pattern and replaces if found - */ - /* - 70 => [ - 'class' => 'core:AttributeAlter', - 'pattern' => '/OU=studerende/', - 'replacement' => 'Student', - 'subject' => 'distinguishedName', - '%replace', - ], - */ - - /* - * Consent module is enabled (with no permanent storage, using cookies). - */ - /* - 90 => [ - 'class' => 'consent:Consent', - 'store' => 'consent:Cookie', - 'focus' => 'yes', - 'checked' => true - ], - */ - // If language is set in Consent module it will be added as an attribute. - 99 => 'core:LanguageAdaptor', - ], - - /* - * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.sp' => [ - /* - 10 => [ - 'class' => 'core:AttributeMap', 'removeurnprefix' - ], - */ - - /* - * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => [ - 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ], - */ - /* - * All users will be members of 'users' and 'members' - */ - /* - 61 => [ - 'class' => 'core:AttributeAdd', 'groups' => ['users', 'members'] - ], - */ - - // Adopts language from attribute to use in UI - 90 => 'core:LanguageAdaptor', - ], - - - - /************************** - | METADATA CONFIGURATION | - **************************/ - - /* - * This option allows you to specify a directory for your metadata outside of the standard metadata directory - * included in the standard distribution of the software. - */ - //'metadatadir' => 'metadata', - - /* - * This option configures the metadata sources. The metadata sources is given as an array with - * different metadata sources. When searching for metadata, SimpleSAMLphp will search through - * the array from start to end. - * - * Each element in the array is an associative array which configures the metadata source. - * The type of the metadata source is given by the 'type' element. For each type we have - * different configuration options. - * - * Flat file metadata handler: - * - 'type': This is always 'flatfile'. - * - 'directory': The directory we will load the metadata files from. The default value for - * this option is the value of the 'metadatadir' configuration option, or - * 'metadata/' if that option is unset. - * - * XML metadata handler: - * This metadata handler parses an XML file with either an EntityDescriptor element or an - * EntitiesDescriptor element. The XML file may be stored locally, or (for debugging) on a remote - * web server. - * The XML metadata handler defines the following options: - * - 'type': This is always 'xml'. - * - 'file': Path to the XML file with the metadata. - * - 'url': The URL to fetch metadata from. THIS IS ONLY FOR DEBUGGING - THERE IS NO CACHING OF THE RESPONSE. - * - * MDQ metadata handler: - * This metadata handler looks up for the metadata of an entity at the given MDQ server. - * The MDQ metadata handler defines the following options: - * - 'type': This is always 'mdq'. - * - 'server': Base URL of the MDQ server. Mandatory. - * - 'validateFingerprint': The fingerprint of the certificate used to sign the metadata. You don't need this - * option if you don't want to validate the signature on the metadata. Optional. - * - 'cachedir': Directory where metadata can be cached. Optional. - * - 'cachelength': Maximum time metadata can be cached, in seconds. Defaults to 24 - * hours (86400 seconds). Optional. - * - * PDO metadata handler: - * This metadata handler looks up metadata of an entity stored in a database. - * - * Note: If you are using the PDO metadata handler, you must configure the database - * options in this configuration file. - * - * The PDO metadata handler defines the following options: - * - 'type': This is always 'pdo'. - * - * Examples: - * - * This example defines two flatfile sources. One is the default metadata directory, the other - * is a metadata directory with auto-generated metadata files. - * - * 'metadata.sources' => [ - * ['type' => 'flatfile'], - * ['type' => 'flatfile', 'directory' => 'metadata-generated'], - * ], - * - * This example defines a flatfile source and an XML source. - * 'metadata.sources' => [ - * ['type' => 'flatfile'], - * ['type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'], - * ], - * - * This example defines an mdq source. - * 'metadata.sources' => [ - * [ - * 'type' => 'mdq', - * 'server' => 'http://mdq.server.com:8080', - * 'cachedir' => '/var/simplesamlphp/mdq-cache', - * 'cachelength' => 86400 - * ] - * ], - * - * This example defines an pdo source. - * 'metadata.sources' => [ - * ['type' => 'pdo'] - * ], - * - * Default: - * 'metadata.sources' => [ - * ['type' => 'flatfile'] - * ], - */ - 'metadata.sources' => [ - ['type' => 'flatfile'], - ], - - /* - * Should signing of generated metadata be enabled by default. - * - * Metadata signing can also be enabled for a individual SP or IdP by setting the - * same option in the metadata for the SP or IdP. - */ - 'metadata.sign.enable' => true, - - /* - * The default key & certificate which should be used to sign generated metadata. These - * are files stored in the cert dir. - * These values can be overridden by the options with the same names in the SP or - * IdP metadata. - * - * If these aren't specified here or in the metadata for the SP or IdP, then - * the 'certificate' and 'privatekey' option in the metadata will be used. - * if those aren't set, signing of metadata will fail. - */ - 'metadata.sign.privatekey' => 'saml.pem', - 'metadata.sign.privatekey_pass' => null, - 'metadata.sign.certificate' => 'saml.crt', - - - /**************************** - | DATA STORE CONFIGURATION | - ****************************/ - - /* - * Configure the data store for SimpleSAMLphp. - * - * - 'phpsession': Limited datastore, which uses the PHP session. - * - 'memcache': Key-value datastore, based on memcache. - * - 'sql': SQL datastore, using PDO. - * - 'redis': Key-value datastore, based on redis. - * - * The default datastore is 'phpsession'. - */ - 'store.type' => $SESSION_STORE_TYPE, - - /* - * The DSN the sql datastore should connect to. - * - * See http://www.php.net/manual/en/pdo.drivers.php for the various - * syntaxes. - */ - 'store.sql.dsn' => sprintf('mysql:host=%s;dbname=%s', $MYSQL_HOST, $MYSQL_DATABASE), - - /* - * The username and password to use when connecting to the database. - */ - 'store.sql.username' => $MYSQL_USER, - 'store.sql.password' => $MYSQL_PASSWORD, - - /* - * The prefix we should use on our tables. - */ - //'store.sql.prefix' => 'SimpleSAMLphp', - - /* - * The hostname and port of the Redis datastore instance. - */ - //'store.redis.host' => 'localhost', - //'store.redis.port' => 6379, - - /* - * The prefix we should use on our Redis datastore. - */ - //'store.redis.prefix' => 'SimpleSAMLphp', -]; - -if ($HUB_MODE) { - // prefix the 'member' (urn:oid:2.5.4.31) attribute elements with idp.idp_name. - $config['authproc.idp'][48] = 'sildisco:TagGroup'; - $config['authproc.idp'][49] = 'sildisco:AddIdp2NameId'; -} diff --git a/development/idp2-local/config/config.php b/development/idp2-local/config/config.php deleted file mode 100644 index 1c87b7ee..00000000 --- a/development/idp2-local/config/config.php +++ /dev/null @@ -1,1366 +0,0 @@ - SimpleSAML\Logger::ERR, // No statistics, only errors - 'WARNING' => SimpleSAML\Logger::WARNING, // No statistics, only warnings/errors - 'NOTICE' => SimpleSAML\Logger::NOTICE, // Statistics and errors - 'INFO' => SimpleSAML\Logger::INFO, // Verbose logs - 'DEBUG' => SimpleSAML\Logger::DEBUG, // Full debug logs - not recommended for production -]; - -try { - // Required to be defined in environment variables - $ADMIN_PASS = Env::requireEnv('ADMIN_PASS'); - $SECRET_SALT = Env::requireEnv('SECRET_SALT'); - $IDP_NAME = Env::requireEnv('IDP_NAME'); -} catch (EnvVarNotFoundException $e) { - - // Return error response code/message to HTTP request. - header('Content-Type: application/json'); - http_response_code(500); - $responseContent = json_encode([ - 'name' => 'Internal Server Error', - 'message' => $e->getMessage(), - 'status' => 500, - ]); - fwrite(fopen('php://stderr', 'w'), $responseContent . PHP_EOL); - exit($responseContent); -} - -// Defaults provided if not defined in environment -$IDP_DISPLAY_NAME = Env::get('IDP_DISPLAY_NAME', $IDP_NAME); -$BASE_URL_PATH = Env::get('BASE_URL_PATH', '/'); -$ADMIN_EMAIL = Env::get('ADMIN_EMAIL', 'na@example.org'); -$ADMIN_NAME = Env::get('ADMIN_NAME', 'SAML Admin'); -$ADMIN_PROTECT_INDEX_PAGE = Env::get('ADMIN_PROTECT_INDEX_PAGE', true); -$SHOW_SAML_ERRORS = Env::get('SHOW_SAML_ERRORS', false); -$ENABLE_DEBUG = Env::get('ENABLE_DEBUG', false); -$LOGGING_LEVEL = Env::get('LOGGING_LEVEL', 'NOTICE'); -$LOGGING_HANDLER = Env::get('LOGGING_HANDLER', 'stderr'); - -// Options: https://github.com/silinternational/simplesamlphp-module-material/blob/develop/README.md#branding -$THEME_COLOR_SCHEME = Env::get('THEME_COLOR_SCHEME', null); - -$SECURE_COOKIE = Env::get('SECURE_COOKIE', true); -$SESSION_DURATION = (int)(Env::get('SESSION_DURATION', (60 * 60 * 10))); // 10 hours. -$SESSION_STORE_TYPE = Env::get('SESSION_STORE_TYPE', 'phpsession'); -$MYSQL_HOST = Env::get('MYSQL_HOST', ''); -$MYSQL_DATABASE = Env::get('MYSQL_DATABASE', ''); -$MYSQL_USER = Env::get('MYSQL_USER', ''); -$MYSQL_PASSWORD = Env::get('MYSQL_PASSWORD', ''); - -$SAML20_IDP_ENABLE = Env::get('SAML20_IDP_ENABLE', true); -$HUB_MODE = Env::get('HUB_MODE', false); -$ANALYTICS_ID = Env::get('ANALYTICS_ID', null); -$PASSWORD_CHANGE_URL = Env::get('PASSWORD_CHANGE_URL'); -$PASSWORD_FORGOT_URL = Env::get('PASSWORD_FORGOT_URL'); -$HELP_CENTER_URL = Env::get('HELP_CENTER_URL'); - -$config = [ - - /* - * Whether this instance should act as a hub/proxy/bridge using sildisco - */ - 'hubmode' => $HUB_MODE, - - /* - * Name of this IdP - */ - 'idp_name' => $IDP_NAME, - - /* - * Name of this IdP to display to the user - */ - 'idp_display_name' => $IDP_DISPLAY_NAME, - - /* - * The tracking Id for Google Analytics or some other similar service - */ - 'analytics.trackingId' => $ANALYTICS_ID, - - 'passwordChangeUrl' => $PASSWORD_CHANGE_URL, - 'passwordForgotUrl' => $PASSWORD_FORGOT_URL, - 'helpCenterUrl' => $HELP_CENTER_URL, - - /******************************* - | BASIC CONFIGURATION OPTIONS | - *******************************/ - - /* - * Setup the following parameters to match your installation. - * See the user manual for more details. - */ - - /* - * baseurlpath is a *URL path* (not a filesystem path). - * A valid format for 'baseurlpath' is: - * [(http|https)://(hostname|fqdn)[:port]]/[path/to/simplesaml/] - * - * The full url format is useful if your SimpleSAMLphp setup is hosted behind - * a reverse proxy. In that case you can specify the external url here. - * - * Please note that SimpleSAMLphp will then redirect all queries to the - * external url, no matter where you come from (direct access or via the - * reverse proxy). - */ - 'baseurlpath' => $BASE_URL_PATH, - - /* - * The 'application' configuration array groups a set configuration options - * relative to an application protected by SimpleSAMLphp. - */ - //'application' => [ - /* - * The 'baseURL' configuration option allows you to specify a protocol, - * host and optionally a port that serves as the canonical base for all - * your application's URLs. This is useful when the environment - * observed in the server differs from the one observed by end users, - * for example, when using a load balancer to offload TLS. - * - * Note that this configuration option does not allow setting a path as - * part of the URL. If your setup involves URL rewriting or any other - * tricks that would result in SimpleSAMLphp observing a URL for your - * application's scripts different than the canonical one, you will - * need to compute the right URLs yourself and pass them dynamically - * to SimpleSAMLphp's API. - */ - //'baseURL' => 'https://example.com', - //], - - /* - * The following settings are *filesystem paths* which define where - * SimpleSAMLphp can find or write the following things: - * - 'certdir': The base directory for certificate and key material. - * - 'loggingdir': Where to write logs. - * - 'datadir': Storage of general data. - * - 'tempdir': Saving temporary files. SimpleSAMLphp will attempt to create - * this directory if it doesn't exist. - * When specified as a relative path, this is relative to the SimpleSAMLphp - * root directory. - */ - 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - 'tempdir' => '/tmp/simplesaml', - - /* - * Some information about the technical persons running this installation. - * The email address will be used as the recipient address for error reports, and - * also as the technical contact in generated metadata. - */ - 'technicalcontact_name' => $ADMIN_NAME, - 'technicalcontact_email' => $ADMIN_EMAIL, - - /* - * (Optional) The method by which email is delivered. Defaults to mail which utilizes the - * PHP mail() function. - * - * Valid options are: mail, sendmail and smtp. - */ - //'mail.transport.method' => 'smtp', - - /* - * Set the transport options for the transport method specified. The valid settings are relative to the - * selected transport method. - */ - // // smtp mail transport options - // 'mail.transport.options' => [ - // 'host' => 'mail.example.org', // required - // 'port' => 25, // optional - // 'username' => 'user@example.org', // optional: if set, enables smtp authentication - // 'password' => 'password', // optional: if set, enables smtp authentication - // 'security' => 'tls', // optional: defaults to no smtp security - // ], - // // sendmail mail transport options - // 'mail.transport.options' => [ - // 'path' => '/usr/sbin/sendmail' // optional: defaults to php.ini path - // ], - - /* - * The envelope from address for outgoing emails. - * This should be in a domain that has your application's IP addresses in its SPF record - * to prevent it from being rejected by mail filters. - */ - //'sendmail_from' => 'no-reply@example.org', - - /* - * The timezone of the server. This option should be set to the timezone you want - * SimpleSAMLphp to report the time in. The default is to guess the timezone based - * on your system timezone. - * - * See this page for a list of valid timezones: http://php.net/manual/en/timezones.php - */ - 'timezone' => 'GMT', - - - - /********************************** - | SECURITY CONFIGURATION OPTIONS | - **********************************/ - - /* - * This is a secret salt used by SimpleSAMLphp when it needs to generate a secure hash - * of a value. It must be changed from its default value to a secret value. The value of - * 'secretsalt' can be any valid string of any length. - * - * A possible way to generate a random salt is by running the following command from a unix shell: - * LC_CTYPE=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo - */ - 'secretsalt' => $SECRET_SALT, - - /* - * This password must be kept secret, and modified from the default value 123. - * This password will give access to the installation page of SimpleSAMLphp with - * metadata listing and diagnostics pages. - * You can also put a hash here; run "bin/pwgen.php" to generate one. - */ - 'auth.adminpassword' => $ADMIN_PASS, - - /* - * Set this options to true if you want to require administrator password to access the web interface - * or the metadata pages, respectively. - */ - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, - 'admin.protectmetadata' => true, - - /* - * Set this option to false if you don't want SimpleSAMLphp to check for new stable releases when - * visiting the configuration tab in the web interface. - */ - 'admin.checkforupdates' => false, - - /* - * Array of domains that are allowed when generating links or redirects - * to URLs. SimpleSAMLphp will use this option to determine whether to - * to consider a given URL valid or not, but you should always validate - * URLs obtained from the input on your own (i.e. ReturnTo or RelayState - * parameters obtained from the $_REQUEST array). - * - * SimpleSAMLphp will automatically add your own domain (either by checking - * it dynamically, or by using the domain defined in the 'baseurlpath' - * directive, the latter having precedence) to the list of trusted domains, - * in case this option is NOT set to NULL. In that case, you are explicitly - * telling SimpleSAMLphp to verify URLs. - * - * Set to an empty array to disallow ALL redirects or links pointing to - * an external URL other than your own domain. This is the default behaviour. - * - * Set to NULL to disable checking of URLs. DO NOT DO THIS UNLESS YOU KNOW - * WHAT YOU ARE DOING! - * - * Example: - * 'trusted.url.domains' => ['sp.example.com', 'app.example.com'], - */ - 'trusted.url.domains' => null, - - /* - * Enable regular expression matching of trusted.url.domains. - * - * Set to true to treat the values in trusted.url.domains as regular - * expressions. Set to false to do exact string matching. - * - * If enabled, the start and end delimiters ('^' and '$') will be added to - * all regular expressions in trusted.url.domains. - */ - 'trusted.url.regex' => false, - - /* - * Enable secure POST from HTTPS to HTTP. - * - * If you have some SP's on HTTP and IdP is normally on HTTPS, this option - * enables secure POSTing to HTTP endpoint without warning from browser. - * - * For this to work, module.php/core/postredirect.php must be accessible - * also via HTTP on IdP, e.g. if your IdP is on - * https://idp.example.org/ssp/, then - * http://idp.example.org/ssp/module.php/core/postredirect.php must be accessible. - */ - 'enable.http_post' => false, - - /* - * Set the allowed clock skew between encrypting/decrypting assertions - * - * If you have an server that is constantly out of sync, this option - * allows you to adjust the allowed clock-skew. - * - * Allowed range: 180 - 300 - * Defaults to 180. - */ - 'assertion.allowed_clock_skew' => 180, - - - /************************ - | ERRORS AND DEBUGGING | - ************************/ - - /* - * The 'debug' option allows you to control how SimpleSAMLphp behaves in certain - * situations where further action may be taken - * - * It can be left unset, in which case, debugging is switched off for all actions. - * If set, it MUST be an array containing the actions that you want to enable, or - * alternatively a hashed array where the keys are the actions and their - * corresponding values are booleans enabling or disabling each particular action. - * - * SimpleSAMLphp provides some pre-defined actions, though modules could add new - * actions here. Refer to the documentation of every module to learn if they - * allow you to set any more debugging actions. - * - * The pre-defined actions are: - * - * - 'saml': this action controls the logging of SAML messages exchanged with other - * entities. When enabled ('saml' is present in this option, or set to true), all - * SAML messages will be logged, including plaintext versions of encrypted - * messages. - * - * - 'backtraces': this action controls the logging of error backtraces. If you - * want to log backtraces so that you can debug any possible errors happening in - * SimpleSAMLphp, enable this action (add it to the array or set it to true). - * - * - 'validatexml': this action allows you to validate SAML documents against all - * the relevant XML schemas. SAML 1.1 messages or SAML metadata parsed with - * the XML to SimpleSAMLphp metadata converter or the metaedit module will - * validate the SAML documents if this option is enabled. - * - * If you want to disable debugging completely, unset this option or set it to an - * empty array. - */ - 'debug' => [ - 'saml' => $ENABLE_DEBUG, - 'backtraces' => true, - 'validatexml' => $ENABLE_DEBUG, - ], - - /* - * When 'showerrors' is enabled, all error messages and stack traces will be output - * to the browser. - * - * When 'errorreporting' is enabled, a form will be presented for the user to report - * the error to 'technicalcontact_email'. - */ - 'showerrors' => $SHOW_SAML_ERRORS, - 'errorreporting' => false, - - /* - * Custom error show function called from SimpleSAML\Error\Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. - * - * Example: - * 'errors.show_function' => ['SimpleSAML\Module\example\Error', 'show'], - */ - - - - /************************** - | LOGGING AND STATISTICS | - **************************/ - - /* - * Define the minimum log level to log. Available levels: - * - SimpleSAML\Logger::ERR No statistics, only errors - * - SimpleSAML\Logger::WARNING No statistics, only warnings/errors - * - SimpleSAML\Logger::NOTICE Statistics and errors - * - SimpleSAML\Logger::INFO Verbose logs - * - SimpleSAML\Logger::DEBUG Full debug logs - not recommended for production - * - * Choose logging handler. - * - * Options: [syslog,file,errorlog,stderr] - * - */ - 'logging.level' => $logLevels[$LOGGING_LEVEL], - 'logging.handler' => $LOGGING_HANDLER, - - /* - * Specify the format of the logs. Its use varies depending on the log handler used (for instance, you cannot - * control here how dates are displayed when using the syslog or errorlog handlers), but in general the options - * are: - * - * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard - * format is applied. This can be useful if you just want to control the placement of the date, but don't care - * about the format. - * - * - %process: the name of the SimpleSAMLphp process. Remember you can configure this in the 'logging.processname' - * option below. - * - * - %level: the log level (name or number depending on the handler used). - * - * - %stat: if the log entry is intended for statistical purposes, it will print the string 'STAT ' (bear in mind - * the trailing space). - * - * - %trackid: the track ID, an identifier that allows you to track a single session. - * - * - %srcip: the IP address of the client. If you are behind a proxy, make sure to modify the - * $_SERVER['REMOTE_ADDR'] variable on your code accordingly to the X-Forwarded-For header. - * - * - %msg: the message to be logged. - * - */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', - - /* - * Choose which facility should be used when logging with syslog. - * - * These can be used for filtering the syslog output from SimpleSAMLphp into its - * own file by configuring the syslog daemon. - * - * See the documentation for openlog (http://php.net/manual/en/function.openlog.php) for available - * facilities. Note that only LOG_USER is valid on windows. - * - * The default is to use LOG_LOCAL5 if available, and fall back to LOG_USER if not. - */ - 'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, - - /* - * The process name that should be used when logging to syslog. - * The value is also written out by the other logging handlers. - */ - 'logging.processname' => 'simplesamlphp', - - /* - * Logging: file - Logfilename in the loggingdir from above. - */ - 'logging.logfile' => 'simplesamlphp.log', - - /* - * This is an array of outputs. Each output has at least a 'class' option, which - * selects the output. - */ - 'statistics.out' => [// Log statistics to the normal log. - /* - [ - 'class' => 'core:Log', - 'level' => 'notice', - ], - */ - // Log statistics to files in a directory. One file per day. - /* - [ - 'class' => 'core:File', - 'directory' => '/var/log/stats', - ], - */ - ], - - - - /*********************** - | PROXY CONFIGURATION | - ***********************/ - - /* - * Proxy to use for retrieving URLs. - * - * Example: - * 'proxy' => 'tcp://proxy.example.com:5100' - */ - 'proxy' => null, - - /* - * Username/password authentication to proxy (Proxy-Authorization: Basic) - * Example: - * 'proxy.auth' = 'myuser:password' - */ - //'proxy.auth' => 'myuser:password', - - - - /************************** - | DATABASE CONFIGURATION | - **************************/ - - /* - * This database configuration is optional. If you are not using - * core functionality or modules that require a database, you can - * skip this configuration. - */ - - /* - * Database connection string. - * Ensure that you have the required PDO database driver installed - * for your connection string. - */ - //'database.dsn' => 'mysql:host=localhost;dbname=saml', - - /* - * SQL database credentials - */ - //'database.username' => 'simplesamlphp', - //'database.password' => 'secret', - //'database.options' => [], - - /* - * (Optional) Table prefix - */ - //'database.prefix' => '', - - /* - * (Optional) Driver options - */ - //'database.driver_options' => [], - - /* - * True or false if you would like a persistent database connection - */ - //'database.persistent' => false, - - /* - * Database slave configuration is optional as well. If you are only - * running a single database server, leave this blank. If you have - * a master/slave configuration, you can define as many slave servers - * as you want here. Slaves will be picked at random to be queried from. - * - * Configuration options in the slave array are exactly the same as the - * options for the master (shown above) with the exception of the table - * prefix and driver options. - */ - //'database.slaves' => [ - // /* - // [ - // 'dsn' => 'mysql:host=myslave;dbname=saml', - // 'username' => 'simplesamlphp', - // 'password' => 'secret', - // 'persistent' => false, - // ], - // */ - //], - - - - /************* - | PROTOCOLS | - *************/ - - /* - * Which functionality in SimpleSAMLphp do you want to enable. Normally you would enable only - * one of the functionalities below, but in some cases you could run multiple functionalities. - * In example when you are setting up a federation bridge. - */ - 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, - 'enable.adfs-idp' => false, - - /* - * Whether SimpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - - - - /*********** - | MODULES | - ***********/ - - /* - * Configuration to override module enabling/disabling. - * - * Example: - * - * 'module.enable' => [ - * 'exampleauth' => true, // Setting to TRUE enables. - * 'consent' => false, // Setting to FALSE disables. - * 'core' => null, // Unset or NULL uses default. - * ], - * - */ - - 'module.enable' => [ - 'saml' => true, - 'core' => true, - 'admin' => true, - 'expirychecker' => true, - 'material' => true, - 'mfa' => true, - 'profilereview' => true, - 'silauth' => true, - 'sildisco' => true, - 'exampleauth' => true, - ], - - - - /************************* - | SESSION CONFIGURATION | - *************************/ - - /* - * This value is the duration of the session in seconds. Make sure that the time duration of - * cookies both at the SP and the IdP exceeds this duration. - */ - 'session.duration' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, data should be stored in the datastore. As the data store is used for - * login and logout requests, this option will control the maximum time these operations can take. - * The default is 4 hours (4*60*60) seconds, which should be more than enough for these operations. - */ - 'session.datastore.timeout' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, auth state should be stored. - */ - 'session.state.timeout' => $SESSION_DURATION, - - /* - * Option to override the default settings for the session cookie name - */ - 'session.cookie.name' => 'SSPSESSID', - - /* - * Expiration time for the session cookie, in seconds. - * - * Defaults to 0, which means that the cookie expires when the browser is closed. - * - * Example: - * 'session.cookie.lifetime' => 30*60, - */ - 'session.cookie.lifetime' => 0, - - /* - * Limit the path of the cookies. - * - * Can be used to limit the path of the cookies to a specific subdirectory. - * - * Example: - * 'session.cookie.path' => '/simplesaml/', - */ - 'session.cookie.path' => '/', - - /* - * Cookie domain. - * - * Can be used to make the session cookie available to several domains. - * - * Example: - * 'session.cookie.domain' => '.example.org', - */ - 'session.cookie.domain' => null, - - /* - * Set the secure flag in the cookie. - * - * Set this to TRUE if the user only accesses your service - * through https. If the user can access the service through - * both http and https, this must be set to FALSE. - */ - 'session.cookie.secure' => $SECURE_COOKIE, - - /* - * Set the SameSite attribute in the cookie. - * - * You can set this to the strings 'None', 'Lax', or 'Strict' to support - * the RFC6265bis SameSite cookie attribute. If set to null, no SameSite - * attribute will be sent. - * - * Example: - * 'session.cookie.samesite' => 'None', - */ - 'session.cookie.samesite' => null, - - /* - * Options to override the default settings for php sessions. - */ - 'session.phpsession.cookiename' => 'SimpleSAML', - 'session.phpsession.savepath' => null, - 'session.phpsession.httponly' => true, - - /* - * Option to override the default settings for the auth token cookie - */ - 'session.authtoken.cookiename' => 'SSPAUTHTOKEN', - - /* - * Options for remember me feature for IdP sessions. Remember me feature - * has to be also implemented in authentication source used. - * - * Option 'session.cookie.lifetime' should be set to zero (0), i.e. cookie - * expires on browser session if remember me is not checked. - * - * Session duration ('session.duration' option) should be set according to - * 'session.rememberme.lifetime' option. - * - * It's advised to use remember me feature with session checking function - * defined with 'session.check_function' option. - */ - 'session.rememberme.enable' => false, - 'session.rememberme.checked' => false, - 'session.rememberme.lifetime' => (14 * 86400), // 14 days - - /* - * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. - * - * Example: - * 'session.check_function' => ['\SimpleSAML\Module\example\Util', 'checkSession'], - */ - - - - /************************** - | MEMCACHE CONFIGURATION | - **************************/ - - /* - * Configuration for the 'memcache' session store. This allows you to store - * multiple redundant copies of sessions on different memcache servers. - * - * 'memcache_store.servers' is an array of server groups. Every data - * item will be mirrored in every server group. - * - * Each server group is an array of servers. The data items will be - * load-balanced between all servers in each server group. - * - * Each server is an array of parameters for the server. The following - * options are available: - * - 'hostname': This is the hostname or ip address where the - * memcache server runs. This is the only required option. - * - 'port': This is the port number of the memcache server. If this - * option isn't set, then we will use the 'memcache.default_port' - * ini setting. This is 11211 by default. - * - * When using the "memcache" extension, the following options are also - * supported: - * - 'weight': This sets the weight of this server in this server - * group. http://php.net/manual/en/function.Memcache-addServer.php - * contains more information about the weight option. - * - 'timeout': The timeout for this server. By default, the timeout - * is 3 seconds. - * - * Example of redundant configuration with load balancing: - * This configuration makes it possible to lose both servers in the - * a-group or both servers in the b-group without losing any sessions. - * Note that sessions will be lost if one server is lost from both the - * a-group and the b-group. - * - * 'memcache_store.servers' => [ - * [ - * ['hostname' => 'mc_a1'], - * ['hostname' => 'mc_a2'], - * ], - * [ - * ['hostname' => 'mc_b1'], - * ['hostname' => 'mc_b2'], - * ], - * ], - * - * Example of simple configuration with only one memcache server, - * running on the same computer as the web server: - * Note that all sessions will be lost if the memcache server crashes. - * - * 'memcache_store.servers' => [ - * [ - * ['hostname' => 'localhost'], - * ], - * ], - * - * Additionally, when using the "memcached" extension, unique keys must - * be provided for each group of servers if persistent connections are - * desired. Each server group can also have an "options" indexed array - * with the options desired for the given group: - * - * 'memcache_store.servers' => [ - * 'memcache_group_1' => [ - * 'options' => [ - * \Memcached::OPT_BINARY_PROTOCOL => true, - * \Memcached::OPT_NO_BLOCK => true, - * \Memcached::OPT_TCP_NODELAY => true, - * \Memcached::OPT_LIBKETAMA_COMPATIBLE => true, - * ], - * ['hostname' => '127.0.0.1', 'port' => 11211], - * ['hostname' => '127.0.0.2', 'port' => 11211], - * ], - * - * 'memcache_group_2' => [ - * 'options' => [ - * \Memcached::OPT_BINARY_PROTOCOL => true, - * \Memcached::OPT_NO_BLOCK => true, - * \Memcached::OPT_TCP_NODELAY => true, - * \Memcached::OPT_LIBKETAMA_COMPATIBLE => true, - * ], - * ['hostname' => '127.0.0.3', 'port' => 11211], - * ['hostname' => '127.0.0.4', 'port' => 11211], - * ], - * ], - * - */ -// 'memcache_store.servers' => [ -// [ -// [ -// 'hostname' => 'localhost', -// ], -// ], -// ], - - /* - * This value allows you to set a prefix for memcache-keys. The default - * for this value is 'simpleSAMLphp', which is fine in most cases. - * - * When running multiple instances of SSP on the same host, and more - * than one instance is using memcache, you probably want to assign - * a unique value per instance to this setting to avoid data collision. - */ -// 'memcache_store.prefix' => '', - - /* - * This value is the duration data should be stored in memcache. Data - * will be dropped from the memcache servers when this time expires. - * The time will be reset every time the data is written to the - * memcache servers. - * - * This value should always be larger than the 'session.duration' - * option. Not doing this may result in the session being deleted from - * the memcache servers while it is still in use. - * - * Set this value to 0 if you don't want data to expire. - * - * Note: The oldest data will always be deleted if the memcache server - * runs out of storage space. - */ -// 'memcache_store.expires' => 36 * (60 * 60), // 36 hours. - - - - /************************************* - | LANGUAGE AND INTERNATIONALIZATION | - *************************************/ - - /* - * Language-related options. - */ - 'language' => [ - /* - * An array in the form 'language' => . - * - * Each key in the array is the ISO 639 two-letter code for a language, - * and its value is an array with a list of alternative languages that - * can be used if the given language is not available at some point. - * Each alternative language is also specified by its ISO 639 code. - * - * For example, for the "no" language code (Norwegian), we would have: - * - * 'priorities' => [ - * 'no' => ['nb', 'nn', 'en', 'se'], - * ... - * ], - * - * establishing that if a translation for the "no" language code is - * not available, we look for translations in "nb" (Norwegian Bokmål), - * and so on, in that order. - */ - 'priorities' => [ - 'no' => ['nb', 'nn', 'en', 'se'], - 'nb' => ['no', 'nn', 'en', 'se'], - 'nn' => ['no', 'nb', 'en', 'se'], - 'se' => ['nb', 'no', 'nn', 'en'], - 'nr' => ['zu', 'en'], - 'nd' => ['zu', 'en'], - ], - ], - - /* - * Languages available, RTL languages, and what language is the default. - */ - 'language.available' => [ - 'en', 'no', 'nn', 'se', 'da', 'de', 'sv', 'fi', 'es', 'ca', 'fr', 'it', 'nl', 'lb', - 'cs', 'sl', 'lt', 'hr', 'hu', 'pl', 'pt', 'pt-br', 'tr', 'ja', 'zh', 'zh-tw', 'ru', - 'et', 'he', 'id', 'sr', 'lv', 'ro', 'eu', 'el', 'af', 'zu', 'xh', - ], - 'language.rtl' => ['ar', 'dv', 'fa', 'ur', 'he'], - 'language.default' => 'en', - - /* - * Options to override the default settings for the language parameter - */ - 'language.parameter.name' => 'language', - 'language.parameter.setcookie' => true, - - /* - * Options to override the default settings for the language cookie - */ - 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, - 'language.cookie.path' => '/', - 'language.cookie.secure' => false, - 'language.cookie.httponly' => false, - 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - 'language.cookie.samesite' => null, - - /** - * Custom getLanguage function called from SimpleSAML\Locale\Language::getLanguage(). - * Function should return language code of one of the available languages or NULL. - * See SimpleSAML\Locale\Language::getLanguage() source code for more info. - * - * This option can be used to implement a custom function for determining - * the default language for the user. - * - * Example: - * 'language.get_language_function' => ['\SimpleSAML\Module\example\Template', 'getLanguage'], - */ - - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - - - /************** - | APPEARANCE | - **************/ - - /* - * Which theme directory should be used? - */ - 'theme.use' => 'material:material', - - /* - * Set this option to the text you would like to appear at the header of each page. Set to false if you don't want - * any text to appear in the header. - */ - //'theme.header' => 'SimpleSAMLphp' - - /** - * A template controller, if any. - * - * Used to intercept certain parts of the template handling, while keeping away unwanted/unexpected hooks. Set - * the 'theme.controller' configuration option to a class that implements the - * \SimpleSAML\XHTML\TemplateControllerInterface interface to use it. - */ - //'theme.controller' => '', - - /* - * Templating options - * - * By default, twig templates are not cached. To turn on template caching: - * Set 'template.cache' to an absolute path pointing to a directory that - * SimpleSAMLphp has read and write permissions to. - */ - //'template.cache' => '', - - /* - * Set the 'template.auto_reload' to true if you would like SimpleSAMLphp to - * recompile the templates (when using the template cache) if the templates - * change. If you don't want to check the source templates for every request, - * set it to false. - */ - 'template.auto_reload' => false, - - /* - * Set this option to true to indicate that your installation of SimpleSAMLphp - * is running in a production environment. This will affect the way resources - * are used, offering an optimized version when running in production, and an - * easy-to-debug one when not. Set it to false when you are testing or - * developing the software, in which case a banner will be displayed to remind - * users that they're dealing with a non-production instance. - * - * Defaults to true. - */ - 'production' => true, - - /* - * SimpleSAMLphp modules can host static resources which are served through PHP. - * The serving of the resources can be configured through these settings. - */ - 'assets' => [ - /* - * These settings adjust the caching headers that are sent - * when serving static resources. - */ - 'caching' => [ - /* - * Amount of seconds before the resource should be fetched again - */ - 'max_age' => 86400, - /* - * Calculate a checksum of every file and send it to the browser - * This allows the browser to avoid downloading assets again in situations - * where the Last-Modified header cannot be trusted, - * for example in cluster setups - * - * Defaults false - */ - 'etag' => false, - ], - ], - - /* - * If using the material theme, which color scheme to use - * Options: https://github.com/silinternational/simplesamlphp-module-material/blob/develop/README.md#branding - */ - 'theme.color-scheme' => $THEME_COLOR_SCHEME, - - - - /********************* - | DISCOVERY SERVICE | - *********************/ - - /* - * Whether the discovery service should allow the user to save his choice of IdP. - */ - 'idpdisco.enableremember' => true, - 'idpdisco.rememberchecked' => true, - - /* - * The disco service only accepts entities it knows. - */ - 'idpdisco.validate' => true, - - 'idpdisco.extDiscoveryStorage' => null, - - /* - * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box - * gives the best use experience. - * - * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. - * This makes it easier for the user to choose the IdP - * - * Options: [links,dropdown] - */ - 'idpdisco.layout' => 'links', - - - /************************************* - | AUTHENTICATION PROCESSING FILTERS | - *************************************/ - - /* - * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.idp' => [ - /* Enable the authproc filter below to add URN prefixes to all attributes - 10 => [ - 'class' => 'core:AttributeMap', 'addurnprefix' - ], - */ - /* Enable the authproc filter below to automatically generated eduPersonTargetedID. - 20 => 'core:TargetedID', - */ - - // Adopts language from attribute to use in UI - 30 => 'core:LanguageAdaptor', - - 35 => [ - 'class' => 'core:StatisticsWithAttribute', - 'attributename' => 'realm', - 'type' => 'saml20-idp-SSO', - ], - - /* - * Copy friendly names attribute keys to oids ... - */ - 40 => [ - 'class' => 'core:AttributeMap', - 'name2oid', - '%duplicate', - ], - - /* - * Copy oid attribute keys to friendly names - */ - 41 => [ - 'class' => 'core:AttributeMap', - 'oid2name', - '%duplicate', - ], - - // 48 => *** WARNING: For Hubs this entry is added at the end of this file - - - // If no attributes are requested in the SP metadata, then these will be sent through - 50 => [ - 'class' => 'core:AttributeLimit', - 'default' => true, - 'cn', - 'eduPersonPrincipalName', - 'eduPersonTargetID', - 'sn', - 'givenName', - 'mail', - 'employeeNumber', - 'urn:oid:2.5.4.3', // cn - 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', // eduPersonPrincipalName - 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', // eduPersonTargetID - 'urn:oid:2.5.4.4', // sn - 'urn:oid:2.5.4.42', // givenName - 'urn:oid:0.9.2342.19200300.100.1.3', // mail - 'urn:oid:2.16.840.1.113730.3.1.3', // employeeNumber - ], - - // Use the uid value to populate the nameid entry - // 60 => [ - // 'class' => 'saml:AttributeNameID', - // 'attribute' => 'uid', - // 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', - // ], - - /* - * Search attribute "distinguishedName" for pattern and replaces if found - */ - /* - 70 => [ - 'class' => 'core:AttributeAlter', - 'pattern' => '/OU=studerende/', - 'replacement' => 'Student', - 'subject' => 'distinguishedName', - '%replace', - ], - */ - - /* - * Consent module is enabled (with no permanent storage, using cookies). - */ - /* - 90 => [ - 'class' => 'consent:Consent', - 'store' => 'consent:Cookie', - 'focus' => 'yes', - 'checked' => true - ], - */ - // If language is set in Consent module it will be added as an attribute. - 99 => 'core:LanguageAdaptor', - ], - - /* - * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.sp' => [ - /* - 10 => [ - 'class' => 'core:AttributeMap', 'removeurnprefix' - ], - */ - - /* - * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => [ - 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ], - */ - /* - * All users will be members of 'users' and 'members' - */ - /* - 61 => [ - 'class' => 'core:AttributeAdd', 'groups' => ['users', 'members'] - ], - */ - - // Adopts language from attribute to use in UI - 90 => 'core:LanguageAdaptor', - ], - - - - /************************** - | METADATA CONFIGURATION | - **************************/ - - /* - * This option allows you to specify a directory for your metadata outside of the standard metadata directory - * included in the standard distribution of the software. - */ - //'metadatadir' => 'metadata', - - /* - * This option configures the metadata sources. The metadata sources is given as an array with - * different metadata sources. When searching for metadata, SimpleSAMLphp will search through - * the array from start to end. - * - * Each element in the array is an associative array which configures the metadata source. - * The type of the metadata source is given by the 'type' element. For each type we have - * different configuration options. - * - * Flat file metadata handler: - * - 'type': This is always 'flatfile'. - * - 'directory': The directory we will load the metadata files from. The default value for - * this option is the value of the 'metadatadir' configuration option, or - * 'metadata/' if that option is unset. - * - * XML metadata handler: - * This metadata handler parses an XML file with either an EntityDescriptor element or an - * EntitiesDescriptor element. The XML file may be stored locally, or (for debugging) on a remote - * web server. - * The XML metadata handler defines the following options: - * - 'type': This is always 'xml'. - * - 'file': Path to the XML file with the metadata. - * - 'url': The URL to fetch metadata from. THIS IS ONLY FOR DEBUGGING - THERE IS NO CACHING OF THE RESPONSE. - * - * MDQ metadata handler: - * This metadata handler looks up for the metadata of an entity at the given MDQ server. - * The MDQ metadata handler defines the following options: - * - 'type': This is always 'mdq'. - * - 'server': Base URL of the MDQ server. Mandatory. - * - 'validateFingerprint': The fingerprint of the certificate used to sign the metadata. You don't need this - * option if you don't want to validate the signature on the metadata. Optional. - * - 'cachedir': Directory where metadata can be cached. Optional. - * - 'cachelength': Maximum time metadata can be cached, in seconds. Defaults to 24 - * hours (86400 seconds). Optional. - * - * PDO metadata handler: - * This metadata handler looks up metadata of an entity stored in a database. - * - * Note: If you are using the PDO metadata handler, you must configure the database - * options in this configuration file. - * - * The PDO metadata handler defines the following options: - * - 'type': This is always 'pdo'. - * - * Examples: - * - * This example defines two flatfile sources. One is the default metadata directory, the other - * is a metadata directory with auto-generated metadata files. - * - * 'metadata.sources' => [ - * ['type' => 'flatfile'], - * ['type' => 'flatfile', 'directory' => 'metadata-generated'], - * ], - * - * This example defines a flatfile source and an XML source. - * 'metadata.sources' => [ - * ['type' => 'flatfile'], - * ['type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'], - * ], - * - * This example defines an mdq source. - * 'metadata.sources' => [ - * [ - * 'type' => 'mdq', - * 'server' => 'http://mdq.server.com:8080', - * 'cachedir' => '/var/simplesamlphp/mdq-cache', - * 'cachelength' => 86400 - * ] - * ], - * - * This example defines an pdo source. - * 'metadata.sources' => [ - * ['type' => 'pdo'] - * ], - * - * Default: - * 'metadata.sources' => [ - * ['type' => 'flatfile'] - * ], - */ - 'metadata.sources' => [ - ['type' => 'flatfile'], - ], - - /* - * Should signing of generated metadata be enabled by default. - * - * Metadata signing can also be enabled for a individual SP or IdP by setting the - * same option in the metadata for the SP or IdP. - */ - 'metadata.sign.enable' => true, - - /* - * The default key & certificate which should be used to sign generated metadata. These - * are files stored in the cert dir. - * These values can be overridden by the options with the same names in the SP or - * IdP metadata. - * - * If these aren't specified here or in the metadata for the SP or IdP, then - * the 'certificate' and 'privatekey' option in the metadata will be used. - * if those aren't set, signing of metadata will fail. - */ - 'metadata.sign.privatekey' => 'saml.pem', - 'metadata.sign.privatekey_pass' => null, - 'metadata.sign.certificate' => 'saml.crt', - - - /**************************** - | DATA STORE CONFIGURATION | - ****************************/ - - /* - * Configure the data store for SimpleSAMLphp. - * - * - 'phpsession': Limited datastore, which uses the PHP session. - * - 'memcache': Key-value datastore, based on memcache. - * - 'sql': SQL datastore, using PDO. - * - 'redis': Key-value datastore, based on redis. - * - * The default datastore is 'phpsession'. - */ - 'store.type' => $SESSION_STORE_TYPE, - - /* - * The DSN the sql datastore should connect to. - * - * See http://www.php.net/manual/en/pdo.drivers.php for the various - * syntaxes. - */ - 'store.sql.dsn' => sprintf('mysql:host=%s;dbname=%s', $MYSQL_HOST, $MYSQL_DATABASE), - - /* - * The username and password to use when connecting to the database. - */ - 'store.sql.username' => $MYSQL_USER, - 'store.sql.password' => $MYSQL_PASSWORD, - - /* - * The prefix we should use on our tables. - */ - //'store.sql.prefix' => 'SimpleSAMLphp', - - /* - * The hostname and port of the Redis datastore instance. - */ - //'store.redis.host' => 'localhost', - //'store.redis.port' => 6379, - - /* - * The prefix we should use on our Redis datastore. - */ - //'store.redis.prefix' => 'SimpleSAMLphp', -]; - -if ($HUB_MODE) { - // prefix the 'member' (urn:oid:2.5.4.31) attribute elements with idp.idp_name. - $config['authproc.idp'][48] = 'sildisco:TagGroup'; - $config['authproc.idp'][49] = 'sildisco:AddIdp2NameId'; -} diff --git a/development/idp3-local/config/config.php b/development/idp3-local/config/config.php deleted file mode 100644 index 0082751d..00000000 --- a/development/idp3-local/config/config.php +++ /dev/null @@ -1,810 +0,0 @@ - $BASE_URL_PATH, - 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - - /* - * A directory where simpleSAMLphp can save temporary files. - * - * SimpleSAMLphp will attempt to create this directory if it doesn't exist. - */ - 'tempdir' => '/tmp/simplesaml', - - - /* - * If you enable this option, simpleSAMLphp will log all sent and received messages - * to the log file. - * - * This option also enables logging of the messages that are encrypted and decrypted. - * - * Note: The messages are logged with the DEBUG log level, so you also need to set - * the 'logging.level' option to LOG_DEBUG. - */ - 'debug' => false, - - /* - * When showerrors is enabled, all error messages and stack traces will be output - * to the browser. - * - * When errorreporting is enabled, a form will be presented for the user to report - * the error to technicalcontact_email. - */ - 'showerrors' => $SHOW_SAML_ERRORS, - 'errorreporting' => false, - - /* - * Custom error show function called from \SimpleSAML\Error\Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. - * - * Example: - * 'errors.show_function' => array('\SimpleSAML\Module\example\Error\Show', 'show'), - */ - - /* - * This option allows you to enable validation of XML data against its - * schemas. A warning will be written to the log if validation fails. - */ - 'debug.validatexml' => false, - - /* - * This password must be kept secret, and modified from the default value 123. - * This password will give access to the installation page of simpleSAMLphp with - * metadata listing and diagnostics pages. - * You can also put a hash here; run "bin/pwgen.php" to generate one. - */ - 'auth.adminpassword' => $ADMIN_PASS, - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, - 'admin.protectmetadata' => true, - - /* - * This is a secret salt used by simpleSAMLphp when it needs to generate a secure hash - * of a value. It must be changed from its default value to a secret value. The value of - * 'secretsalt' can be any valid string of any length. - * - * A possible way to generate a random salt is by running the following command from a unix shell: - * tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo - */ - 'secretsalt' => $SECRET_SALT, - - /* - * Some information about the technical persons running this installation. - * The email address will be used as the recipient address for error reports, and - * also as the technical contact in generated metadata. - */ - 'technicalcontact_name' => $ADMIN_NAME, - 'technicalcontact_email' => $ADMIN_EMAIL, - - /* - * The timezone of the server. This option should be set to the timezone you want - * simpleSAMLphp to report the time in. The default is to guess the timezone based - * on your system timezone. - * - * See this page for a list of valid timezones: http://php.net/manual/en/timezones.php - */ - 'timezone' => 'GMT', - - /* - * Logging. - * - * define the minimum log level to log - * \SimpleSAML\Logger::ERR No statistics, only errors - * \SimpleSAML\Logger::WARNING No statistics, only warnings/errors - * \SimpleSAML\Logger::NOTICE Statistics and errors - * \SimpleSAML\Logger::INFO Verbose logs - * \SimpleSAML\Logger::DEBUG Full debug logs - not reccomended for production - * - * Choose logging handler. - * - * Options: [syslog,file,errorlog] - * - */ - 'logging.level' => \SimpleSAML\Logger::NOTICE, - 'logging.handler' => $LOGGING_HANDLER, - - /* - * Specify the format of the logs. Its use varies depending on the log handler used (for instance, you cannot - * control here how dates are displayed when using the syslog or errorlog handlers), but in general the options - * are: - * - * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard - * format is applied. This can be useful if you just want to control the placement of the date, but don't care - * about the format. - * - * - %process: the name of the SimpleSAMLphp process. Remember you can configure this in the 'logging.processname' - * option below. - * - * - %level: the log level (name or number depending on the handler used). - * - * - %stat: if the log entry is intended for statistical purposes, it will print the string 'STAT ' (bear in mind - * the trailing space). - * - * - %trackid: the track ID, an identifier that allows you to track a single session. - * - * - %srcip: the IP address of the client. If you are behind a proxy, make sure to modify the - * $_SERVER['REMOTE_ADDR'] variable on your code accordingly to the X-Forwarded-For header. - * - * - %msg: the message to be logged. - * - */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', - - /* - * Choose which facility should be used when logging with syslog. - * - * These can be used for filtering the syslog output from simpleSAMLphp into its - * own file by configuring the syslog daemon. - * - * See the documentation for openlog (http://php.net/manual/en/function.openlog.php) for available - * facilities. Note that only LOG_USER is valid on windows. - * - * The default is to use LOG_LOCAL5 if available, and fall back to LOG_USER if not. - */ - 'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, - - /* - * The process name that should be used when logging to syslog. - * The value is also written out by the other logging handlers. - */ - 'logging.processname' => 'simplesamlphp', - - /* Logging: file - Logfilename in the loggingdir from above. - */ - 'logging.logfile' => 'simplesamlphp.log', - - /* (New) statistics output configuration. - * - * This is an array of outputs. Each output has at least a 'class' option, which - * selects the output. - */ - 'statistics.out' => [// Log statistics to the normal log. - /* - [ - 'class' => 'core:Log', - 'level' => 'notice', - ], - */ - // Log statistics to files in a directory. One file per day. - /* - [ - 'class' => 'core:File', - 'directory' => '/var/log/stats', - ], - */ - ], - - - /* - * Enable - * - * Which functionality in simpleSAMLphp do you want to enable. Normally you would enable only - * one of the functionalities below, but in some cases you could run multiple functionalities. - * In example when you are setting up a federation bridge. - */ - 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, - 'enable.adfs-idp' => false, - 'enable.wsfed-sp' => false, - 'enable.authmemcookie' => false, - - - /* - * Module enable configuration - * - * Configuration to override module enabling/disabling. - * - * Example: - * - * 'module.enable' => array( - * // Setting to TRUE enables. - * 'exampleauth' => true, - * // Setting to FALSE disables. - * 'saml' => false, - * // Unset or NULL uses default. - * 'core' => NULL, - * ), - * - */ - - 'module.enable' => [ - 'saml' => true, - 'core' => true, - 'admin' => true, - ], - - /* - * This value is the duration of the session in seconds. Make sure that the time duration of - * cookies both at the SP and the IdP exceeds this duration. - */ - 'session.duration' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, data should be stored in the datastore. As the datastore is used for - * login and logout requests, thid option will control the maximum time these operations can take. - * The default is 4 hours (4*60*60) seconds, which should be more than enough for these operations. - */ - 'session.datastore.timeout' => $SESSION_DATASTORE_TIMEOUT, - - /* - * Sets the duration, in seconds, auth state should be stored. - */ - 'session.state.timeout' => $SESSION_STATE_TIMEOUT, - - /* - * Option to override the default settings for the session cookie name - */ - 'session.cookie.name' => 'SSPSESSID', - - /* - * Expiration time for the session cookie, in seconds. - * - * Defaults to 0, which means that the cookie expires when the browser is closed. - * - * Example: - * 'session.cookie.lifetime' => 30*60, - */ - 'session.cookie.lifetime' => $SESSION_COOKIE_LIFETIME, - - /* - * Limit the path of the cookies. - * - * Can be used to limit the path of the cookies to a specific subdirectory. - * - * Example: - * 'session.cookie.path' => '/simplesaml/', - */ - 'session.cookie.path' => '/', - - /* - * Cookie domain. - * - * Can be used to make the session cookie available to several domains. - * - * Example: - * 'session.cookie.domain' => '.example.org', - */ - 'session.cookie.domain' => null, - - /* - * Set the secure flag in the cookie. - * - * Set this to TRUE if the user only accesses your service - * through https. If the user can access the service through - * both http and https, this must be set to FALSE. - */ - 'session.cookie.secure' => $SECURE_COOKIE, - - /* - * When set to FALSE fallback to transient session on session initialization - * failure, throw exception otherwise. - */ - 'session.disable_fallback' => false, - - /* - * Enable secure POST from HTTPS to HTTP. - * - * If you have some SP's on HTTP and IdP is normally on HTTPS, this option - * enables secure POSTing to HTTP endpoint without warning from browser. - * - * For this to work, module.php/core/postredirect.php must be accessible - * also via HTTP on IdP, e.g. if your IdP is on - * https://idp.example.org/ssp/, then - * http://idp.example.org/ssp/module.php/core/postredirect.php must be accessible. - */ - 'enable.http_post' => false, - - /* - * Options to override the default settings for php sessions. - */ - 'session.phpsession.cookiename' => null, - 'session.phpsession.savepath' => null, - 'session.phpsession.httponly' => true, - - /* - * Option to override the default settings for the auth token cookie - */ - 'session.authtoken.cookiename' => 'SSPAUTHTOKEN', - - /* - * Options for remember me feature for IdP sessions. Remember me feature - * has to be also implemented in authentication source used. - * - * Option 'session.cookie.lifetime' should be set to zero (0), i.e. cookie - * expires on browser session if remember me is not checked. - * - * Session duration ('session.duration' option) should be set according to - * 'session.rememberme.lifetime' option. - * - * It's advised to use remember me feature with session checking function - * defined with 'session.check_function' option. - */ - 'session.rememberme.enable' => false, - 'session.rememberme.checked' => false, - 'session.rememberme.lifetime' => $SESSION_REMEMBERME_LIFETIME, - - /** - * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. - * - * Example: - * 'session.check_function' => array('\SimpleSAML\Module\example\Util', 'checkSession'), - */ - - /* - * Languages available, RTL languages, and what language is default - */ - 'language.available' => array( - 'en', 'es', 'fr', 'pt', - ), - 'language.rtl' => array('ar', 'dv', 'fa', 'ur', 'he'), - 'language.default' => 'en', - - /* - * Options to override the default settings for the language parameter - */ - 'language.parameter.name' => 'language', - 'language.parameter.setcookie' => true, - - /* - * Options to override the default settings for the language cookie - */ - 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, - 'language.cookie.path' => '/', - 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - - /** - * Custom getLanguage function called from \SimpleSAML\XHTML\Template::getLanguage(). - * Function should return language code of one of the available languages or NULL. - * See \SimpleSAML\XHTML\Template::getLanguage() source code for more info. - * - * This option can be used to implement a custom function for determining - * the default language for the user. - * - * Example: - * 'language.get_language_function' => array('\SimpleSAML\Module\example\Template', 'getLanguage'), - */ - - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - /* - * Which theme directory should be used? - */ - 'theme.use' => 'material:material', - - - /* - * Default IdP for WS-Fed. - */ - // 'default-wsfed-idp' => 'urn:federation:pingfederate:localhost', - - /* - * Whether the discovery service should allow the user to save his choice of IdP. - */ - 'idpdisco.enableremember' => true, - 'idpdisco.rememberchecked' => true, - - // Disco service only accepts entities it knows. - 'idpdisco.validate' => true, - - 'idpdisco.extDiscoveryStorage' => null, - - /* - * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box - * gives the best use experience. - * - * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. - * This makes it easier for the user to choose the IdP - * - * Options: [links,dropdown] - * - */ - 'idpdisco.layout' => 'links', - - /* - * Whether simpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - - - /* - * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.idp' => [ - /* Enable the authproc filter below to add URN Prefixces to all attributes - 10 => array( - 'class' => 'core:AttributeMap', 'addurnprefix' - ), */ - /* Enable the authproc filter below to automatically generated eduPersonTargetedID. - 20 => 'core:TargetedID', - */ - - // Adopts language from attribute to use in UI - 30 => 'core:LanguageAdaptor', - - /* Add a realm attribute from edupersonprincipalname - 40 => 'core:AttributeRealm', - */ - 45 => [ - 'class' => 'core:StatisticsWithAttribute', - 'attributename' => 'realm', - 'type' => 'saml20-idp-SSO', - ], - - // Add one to help with testing - 50 => [ - 'class' => 'core:AttributeAdd', - 'eduPersonPrincipalName' => 'TEST_ADMIN', - 'urn:oid:0.9.2342.19200300.100.1.3' => 'test_admin@idp3.org', - 'uid' => '333366', - ], - - // Use the uid value to populate the nameid entry - 60 => [ - 'class' => 'saml:AttributeNameID', - 'attribute' => 'uid', - 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', - ], - - /* - * Search attribute "distinguishedName" for pattern and replaces if found - - 70 => array( - 'class' => 'core:AttributeAlter', - 'pattern' => '/OU=studerende/', - 'replacement' => 'Student', - 'subject' => 'distinguishedName', - '%replace', - ), - */ - - /* - * Consent module is enabled (with no permanent storage, using cookies). - - 90 => array( - 'class' => 'consent:Consent', - 'store' => 'consent:Cookie', - 'focus' => 'yes', - 'checked' => true - ), - */ - - - // If language is set in Consent module it will be added as an attribute. - 99 => 'core:LanguageAdaptor', - ], - /* - * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.sp' => [ - /* - 10 => array( - 'class' => 'core:AttributeMap', 'removeurnprefix' - ), - */ - - /* - * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => array( - 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ), - */ - /* - * All users will be members of 'users' and 'members' - 61 => array( - 'class' => 'core:AttributeAdd', 'groups' => array('users', 'members') - ), - */ - - // Adopts language from attribute to use in UI - 90 => 'core:LanguageAdaptor', - - ], - - - /* - * This option configures the metadata sources. The metadata sources is given as an array with - * different metadata sources. When searching for metadata, simpleSAMPphp will search through - * the array from start to end. - * - * Each element in the array is an associative array which configures the metadata source. - * The type of the metadata source is given by the 'type' element. For each type we have - * different configuration options. - * - * Flat file metadata handler: - * - 'type': This is always 'flatfile'. - * - 'directory': The directory we will load the metadata files from. The default value for - * this option is the value of the 'metadatadir' configuration option, or - * 'metadata/' if that option is unset. - * - * XML metadata handler: - * This metadata handler parses an XML file with either an EntityDescriptor element or an - * EntitiesDescriptor element. The XML file may be stored locally, or (for debugging) on a remote - * web server. - * The XML hetadata handler defines the following options: - * - 'type': This is always 'xml'. - * - 'file': Path to the XML file with the metadata. - * - 'url': The URL to fetch metadata from. THIS IS ONLY FOR DEBUGGING - THERE IS NO CACHING OF THE RESPONSE. - * - * - * Examples: - * - * This example defines two flatfile sources. One is the default metadata directory, the other - * is a metadata directory with autogenerated metadata files. - * - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'flatfile', 'directory' => 'metadata-generated'), - * ), - * - * This example defines a flatfile source and an XML source. - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'), - * ), - * - * - * Default: - * 'metadata.sources' => array( - * array('type' => 'flatfile') - * ), - */ - 'metadata.sources' => [ - ['type' => 'flatfile'], - ], - - - /* - * Configure the datastore for simpleSAMLphp. - * - * - 'phpsession': Limited datastore, which uses the PHP session. - * - 'memcache': Key-value datastore, based on memcache. - * - 'sql': SQL datastore, using PDO. - * - * The default datastore is 'phpsession'. - * - * (This option replaces the old 'session.handler'-option.) - */ - 'store.type' => 'phpsession', - - - /* - * The DSN the sql datastore should connect to. - * - * See http://www.php.net/manual/en/pdo.drivers.php for the various - * syntaxes. - */ - 'store.sql.dsn' => 'sqlite:/path/to/sqlitedatabase.sq3', - - /* - * The username and password to use when connecting to the database. - */ - 'store.sql.username' => null, - 'store.sql.password' => null, - - /* - * The prefix we should use on our tables. - */ - 'store.sql.prefix' => 'simpleSAMLphp', - - - /* - * Configuration for the MemcacheStore class. This allows you to store - * multiple redudant copies of sessions on different memcache servers. - * - * 'memcache_store.servers' is an array of server groups. Every data - * item will be mirrored in every server group. - * - * Each server group is an array of servers. The data items will be - * load-balanced between all servers in each server group. - * - * Each server is an array of parameters for the server. The following - * options are available: - * - 'hostname': This is the hostname or ip address where the - * memcache server runs. This is the only required option. - * - 'port': This is the port number of the memcache server. If this - * option isn't set, then we will use the 'memcache.default_port' - * ini setting. This is 11211 by default. - * - 'weight': This sets the weight of this server in this server - * group. http://php.net/manual/en/function.Memcache-addServer.php - * contains more information about the weight option. - * - 'timeout': The timeout for this server. By default, the timeout - * is 3 seconds. - * - * Example of redudant configuration with load balancing: - * This configuration makes it possible to lose both servers in the - * a-group or both servers in the b-group without losing any sessions. - * Note that sessions will be lost if one server is lost from both the - * a-group and the b-group. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'mc_a1'), - * array('hostname' => 'mc_a2'), - * ), - * array( - * array('hostname' => 'mc_b1'), - * array('hostname' => 'mc_b2'), - * ), - * ), - * - * Example of simple configuration with only one memcache server, - * running on the same computer as the web server: - * Note that all sessions will be lost if the memcache server crashes. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'localhost'), - * ), - * ), - * - */ -// 'memcache_store.servers' => [ -// [ -// ['hostname' => 'localhost'], -// ], -// ], - - /* - * This value allows you to set a prefix for memcache-keys. The default - * for this value is 'simpleSAMLphp', which is fine in most cases. - * - * When running multiple instances of SSP on the same host, and more - * than one instance is using memcache, you probably want to assign - * a unique value per instance to this setting to avoid data collision. - */ -// 'memcache_store.prefix' => '', - - /* - * This value is the duration data should be stored in memcache. Data - * will be dropped from the memcache servers when this time expires. - * The time will be reset every time the data is written to the - * memcache servers. - * - * This value should always be larger than the 'session.duration' - * option. Not doing this may result in the session being deleted from - * the memcache servers while it is still in use. - * - * Set this value to 0 if you don't want data to expire. - * - * Note: The oldest data will always be deleted if the memcache server - * runs out of storage space. - */ -// 'memcache_store.expires' => 36 * (60 * 60), // 36 hours. - - - /* - * Should signing of generated metadata be enabled by default. - * - * Metadata signing can also be enabled for a individual SP or IdP by setting the - * same option in the metadata for the SP or IdP. - */ - 'metadata.sign.enable' => true, - - /* - * The default key & certificate which should be used to sign generated metadata. These - * are files stored in the cert dir. - * These values can be overridden by the options with the same names in the SP or - * IdP metadata. - * - * If these aren't specified here or in the metadata for the SP or IdP, then - * the 'certificate' and 'privatekey' option in the metadata will be used. - * if those aren't set, signing of metadata will fail. - */ - 'metadata.sign.privatekey' => 'ssp-hub.pem', - 'metadata.sign.privatekey_pass' => null, - 'metadata.sign.certificate' => 'ssp-hub.crt', - - - /* - * Proxy to use for retrieving URLs. - * - * Example: - * 'proxy' => 'tcp://proxy.example.com:5100' - */ - 'proxy' => null, - - /* - * Array of domains that are allowed when generating links or redirections - * to URLs. simpleSAMLphp will use this option to determine whether to - * to consider a given URL valid or not, but you should always validate - * URLs obtained from the input on your own (i.e. ReturnTo or RelayState - * parameters obtained from the $_REQUEST array). - * - * Set to NULL to disable checking of URLs. - * - * simpleSAMLphp will automatically add your own domain (either by checking - * it dinamically, or by using the domain defined in the 'baseurlpath' - * directive, the latter having precedence) to the list of trusted domains, - * in case this option is NOT set to NULL. In that case, you are explicitly - * telling simpleSAMLphp to verify URLs. - * - * Set to an empty array to disallow ALL redirections or links pointing to - * an external URL other than your own domain. - * - * Example: - * 'trusted.url.domains' => array('sp.example.com', 'app.example.com'), - */ - 'trusted.url.domains' => null, - -]; diff --git a/docker-compose.yml b/docker-compose.yml index c41bf2d2..b4c6d66c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -138,8 +138,8 @@ services: # Utilize custom configs - ./development/idp-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php - - ./development/idp-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/announcement.php:/data/vendor/simplesamlphp/simplesamlphp/announcement/announcement.php + - ./development/enable-exampleauth.sh:/data/enable-exampleauth.sh # Utilize custom metadata - ./development/idp-local/metadata/saml20-idp-hosted.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-hosted.php @@ -163,6 +163,7 @@ services: - ./modules/material:/data/vendor/simplesamlphp/simplesamlphp/modules/material command: > bash -c "whenavail db 3306 60 /data/vendor/simplesamlphp/simplesamlphp/modules/silauth/src/Auth/Source/yii migrate --interactive=0 && + /data/enable-exampleauth.sh && /data/run.sh" ports: - "8085:80" @@ -196,7 +197,7 @@ services: # Utilize custom configs - ./development/idp2-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php - - ./development/idp2-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php + - ./development/enable-exampleauth.sh:/data/enable-exampleauth.sh # Utilize custom metadata - ./development/idp2-local/metadata/saml20-idp-hosted.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-hosted.php @@ -212,6 +213,7 @@ services: - ./modules/silauth:/data/vendor/simplesamlphp/simplesamlphp/modules/silauth - ./modules/sildisco:/data/vendor/simplesamlphp/simplesamlphp/modules/sildisco - ./modules/material:/data/vendor/simplesamlphp/simplesamlphp/modules/material + command: bash -c "/data/enable-exampleauth.sh && /data/run.sh" ports: - "8086:80" environment: @@ -229,7 +231,6 @@ services: # Utilize custom configs - ./development/idp3-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php - - ./development/idp3-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php # Utilize custom metadata - ./development/idp3-local/metadata/saml20-idp-hosted.php:/data/vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-hosted.php From 45785f278a6c349709b0b52549e22b641525d6b9 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Mon, 17 Jun 2024 16:37:01 +0800 Subject: [PATCH 11/85] use default config.php for SP containers also --- actions-services.yml | 6 +- development/sp-local/config/config.php | 836 ------------------------ development/sp2-local/config/config.php | 836 ------------------------ development/sp3-local/config/config.php | 836 ------------------------ docker-compose.yml | 6 +- 5 files changed, 6 insertions(+), 2514 deletions(-) delete mode 100644 development/sp-local/config/config.php delete mode 100644 development/sp2-local/config/config.php delete mode 100644 development/sp3-local/config/config.php diff --git a/actions-services.yml b/actions-services.yml index 83d0d5c1..43b28976 100644 --- a/actions-services.yml +++ b/actions-services.yml @@ -176,7 +176,6 @@ services: - ./development/sp-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - - ./development/sp-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/sp-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php # Utilize custom metadata @@ -186,6 +185,7 @@ services: - ./dockerbuild/run-metadata-tests.sh:/data/run-metadata-tests.sh environment: ADMIN_PASS: "sp1" + IDP_NAME: "NA" SECRET_SALT: "not-secret-h57fjemb&dn^nsJFGNjweJz1" SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" @@ -199,7 +199,6 @@ services: - ./development/sp2-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - - ./development/sp2-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/sp2-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php # Utilize custom metadata @@ -207,6 +206,7 @@ services: environment: ADMIN_PASS: sp2 + IDP_NAME: "NA" SECRET_SALT: h57fjemb&dn^nsJFGNjweJz2 SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" @@ -220,7 +220,6 @@ services: - ./development/sp3-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - - ./development/sp3-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/sp3-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php # Utilize custom metadata @@ -228,6 +227,7 @@ services: environment: ADMIN_PASS: sp3 + IDP_NAME: "NA" SECRET_SALT: h57fjemb&dn^nsJFGNjweJz3 SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" diff --git a/development/sp-local/config/config.php b/development/sp-local/config/config.php deleted file mode 100644 index 451af8ee..00000000 --- a/development/sp-local/config/config.php +++ /dev/null @@ -1,836 +0,0 @@ - SimpleSAML\Logger::ERR, // No statistics, only errors - 'WARNING' => SimpleSAML\Logger::WARNING, // No statistics, only warnings/errors - 'NOTICE' => SimpleSAML\Logger::NOTICE, // Statistics and errors - 'INFO' => SimpleSAML\Logger::INFO, // Verbose logs - 'DEBUG' => SimpleSAML\Logger::DEBUG, // Full debug logs - not recommended for production -]; - -/* - * Get config settings from ENV vars or set defaults - */ - -// Required to be defined in environment -$ADMIN_EMAIL = Env::get('ADMIN_EMAIL'); -$ADMIN_PASS = Env::get('ADMIN_PASS'); -$SECRET_SALT = Env::get('SECRET_SALT'); - -// Defaults provided if not defined in environment -$BASE_URL_PATH = Env::get('BASE_URL_PATH', '/'); -$ADMIN_NAME = Env::get('ADMIN_NAME', 'SAML Admin'); -$ADMIN_PROTECT_INDEX_PAGE = Env::get('ADMIN_PROTECT_INDEX_PAGE', true); -$SHOW_SAML_ERRORS = Env::get('SHOW_SAML_ERRORS', false); -$ENABLE_DEBUG = Env::get('ENABLE_DEBUG', false); -$LOGGING_LEVEL = Env::get('LOGGING_LEVEL', 'NOTICE'); -$LOGGING_HANDLER = Env::get('LOGGING_HANDLER', 'stderr'); -$SESSION_DURATION = (int)(Env::get('SESSION_DURATION', 540)); -$SESSION_DATASTORE_TIMEOUT = (int)(Env::get('SESSION_DATASTORE_TIMEOUT', (4 * 60 * 60))); // 4 hours -$SESSION_STATE_TIMEOUT = (int)(Env::get('SESSION_STATE_TIMEOUT', (60 * 60))); // 1 hour -$SESSION_COOKIE_LIFETIME = (int)(Env::get('SESSION_COOKIE_LIFETIME', 0)); -$SESSION_REMEMBERME_LIFETIME = (int)(Env::get('SESSION_REMEMBERME_LIFETIME', (14 * 86400))); // 14 days -$SECURE_COOKIE = Env::get('SECURE_COOKIE', true); -$SAML20_IDP_ENABLE = Env::get('SAML20_IDP_ENABLE', true); - -$config = [ - - /* - * Setup the following parameters to match the directory of your installation. - * See the user manual for more details. - * - * Valid format for baseurlpath is: - * [(http|https)://(hostname|fqdn)[:port]]/[path/to/simplesaml/] - * (note that it must end with a '/') - * - * The full url format is useful if your simpleSAMLphp setup is hosted behind - * a reverse proxy. In that case you can specify the external url here. - * - * Please note that simpleSAMLphp will then redirect all queries to the - * external url, no matter where you come from (direct access or via the - * reverse proxy). - */ - 'baseurlpath' => $BASE_URL_PATH, - 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - - /* - * A directory where simpleSAMLphp can save temporary files. - * - * SimpleSAMLphp will attempt to create this directory if it doesn't exist. - */ - 'tempdir' => '/tmp/simplesaml', - - - /* - * The 'debug' option allows you to control how SimpleSAMLphp behaves in certain - * situations where further action may be taken - * - * It can be left unset, in which case, debugging is switched off for all actions. - * If set, it MUST be an array containing the actions that you want to enable, or - * alternatively a hashed array where the keys are the actions and their - * corresponding values are booleans enabling or disabling each particular action. - * - * SimpleSAMLphp provides some pre-defined actions, though modules could add new - * actions here. Refer to the documentation of every module to learn if they - * allow you to set any more debugging actions. - * - * The pre-defined actions are: - * - * - 'saml': this action controls the logging of SAML messages exchanged with other - * entities. When enabled ('saml' is present in this option, or set to true), all - * SAML messages will be logged, including plaintext versions of encrypted - * messages. - * - * - 'backtraces': this action controls the logging of error backtraces. If you - * want to log backtraces so that you can debug any possible errors happening in - * SimpleSAMLphp, enable this action (add it to the array or set it to true). - * - * - 'validatexml': this action allows you to validate SAML documents against all - * the relevant XML schemas. SAML 1.1 messages or SAML metadata parsed with - * the XML to SimpleSAMLphp metadata converter or the metaedit module will - * validate the SAML documents if this option is enabled. - * - * If you want to disable debugging completely, unset this option or set it to an - * empty array. - */ - 'debug' => [ - 'saml' => $ENABLE_DEBUG, - 'backtraces' => true, - 'validatexml' => $ENABLE_DEBUG, - ], - - /* - * When showerrors is enabled, all error messages and stack traces will be output - * to the browser. - * - * When errorreporting is enabled, a form will be presented for the user to report - * the error to technicalcontact_email. - */ - 'showerrors' => $SHOW_SAML_ERRORS, - 'errorreporting' => false, - - /* - * Custom error show function called from SimpleSAML_Error_Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. - * - * Example: - * 'errors.show_function' => array('sspmod_example_Error_Show', 'show'), - */ - - /* - * This option allows you to enable validation of XML data against its - * schemas. A warning will be written to the log if validation fails. - */ - 'debug.validatexml' => false, - - /* - * This password must be kept secret, and modified from the default value 123. - * This password will give access to the installation page of simpleSAMLphp with - * metadata listing and diagnostics pages. - * You can also put a hash here; run "bin/pwgen.php" to generate one. - */ - 'auth.adminpassword' => $ADMIN_PASS, - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, - 'admin.protectmetadata' => true, - - /* - * This is a secret salt used by simpleSAMLphp when it needs to generate a secure hash - * of a value. It must be changed from its default value to a secret value. The value of - * 'secretsalt' can be any valid string of any length. - * - * A possible way to generate a random salt is by running the following command from a unix shell: - * tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo - */ - 'secretsalt' => $SECRET_SALT, - - /* - * Some information about the technical persons running this installation. - * The email address will be used as the recipient address for error reports, and - * also as the technical contact in generated metadata. - */ - 'technicalcontact_name' => $ADMIN_NAME, - 'technicalcontact_email' => $ADMIN_EMAIL, - - /* - * The timezone of the server. This option should be set to the timezone you want - * simpleSAMLphp to report the time in. The default is to guess the timezone based - * on your system timezone. - * - * See this page for a list of valid timezones: http://php.net/manual/en/timezones.php - */ - 'timezone' => 'GMT', - - /* - * Logging. - * - * define the minimum log level to log - * SimpleSAML\Logger::ERR No statistics, only errors - * SimpleSAML\Logger::WARNING No statistics, only warnings/errors - * SimpleSAML\Logger::NOTICE Statistics and errors - * SimpleSAML\Logger::INFO Verbose logs - * SimpleSAML\Logger::DEBUG Full debug logs - not reccomended for production - * - * Choose logging handler. - * - * Options: [syslog,file,errorlog,stderr] - * - */ - 'logging.level' => $logLevels[$LOGGING_LEVEL], - 'logging.handler' => $LOGGING_HANDLER, - - /* - * Specify the format of the logs. Its use varies depending on the log handler used (for instance, you cannot - * control here how dates are displayed when using the syslog or errorlog handlers), but in general the options - * are: - * - * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard - * format is applied. This can be useful if you just want to control the placement of the date, but don't care - * about the format. - * - * - %process: the name of the SimpleSAMLphp process. Remember you can configure this in the 'logging.processname' - * option below. - * - * - %level: the log level (name or number depending on the handler used). - * - * - %stat: if the log entry is intended for statistical purposes, it will print the string 'STAT ' (bear in mind - * the trailing space). - * - * - %trackid: the track ID, an identifier that allows you to track a single session. - * - * - %srcip: the IP address of the client. If you are behind a proxy, make sure to modify the - * $_SERVER['REMOTE_ADDR'] variable on your code accordingly to the X-Forwarded-For header. - * - * - %msg: the message to be logged. - * - */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', - - /* - * Choose which facility should be used when logging with syslog. - * - * These can be used for filtering the syslog output from simpleSAMLphp into its - * own file by configuring the syslog daemon. - * - * See the documentation for openlog (http://php.net/manual/en/function.openlog.php) for available - * facilities. Note that only LOG_USER is valid on windows. - * - * The default is to use LOG_LOCAL5 if available, and fall back to LOG_USER if not. - */ - 'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, - - /* - * The process name that should be used when logging to syslog. - * The value is also written out by the other logging handlers. - */ - 'logging.processname' => 'simplesamlphp', - - /* Logging: file - Logfilename in the loggingdir from above. - */ - 'logging.logfile' => 'simplesamlphp.log', - - /* (New) statistics output configuration. - * - * This is an array of outputs. Each output has at least a 'class' option, which - * selects the output. - */ - 'statistics.out' => [// Log statistics to the normal log. - /* - [ - 'class' => 'core:Log', - 'level' => 'notice', - ], - */ - // Log statistics to files in a directory. One file per day. - /* - [ - 'class' => 'core:File', - 'directory' => '/var/log/stats', - ], - */ - ], - - - /* - * Enable - * - * Which functionality in simpleSAMLphp do you want to enable. Normally you would enable only - * one of the functionalities below, but in some cases you could run multiple functionalities. - * In example when you are setting up a federation bridge. - */ - 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, - 'enable.adfs-idp' => false, - 'enable.wsfed-sp' => false, - 'enable.authmemcookie' => false, - - - /* - * Module enable configuration - * - * Configuration to override module enabling/disabling. - * - * Example: - * - * 'module.enable' => array( - * // Setting to TRUE enables. - * 'exampleauth' => TRUE, - * // Setting to FALSE disables. - * 'saml' => FALSE, - * // Unset or NULL uses default. - * 'core' => NULL, - * ), - * - */ - - 'module.enable' => [ - 'saml' => true, - 'core' => true, - 'admin' => true, - ], - - /* - * This value is the duration of the session in seconds. Make sure that the time duration of - * cookies both at the SP and the IdP exceeds this duration. - */ - 'session.duration' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, data should be stored in the datastore. As the datastore is used for - * login and logout requests, thid option will control the maximum time these operations can take. - * The default is 4 hours (4*60*60) seconds, which should be more than enough for these operations. - */ - 'session.datastore.timeout' => $SESSION_DATASTORE_TIMEOUT, - - /* - * Sets the duration, in seconds, auth state should be stored. - */ - 'session.state.timeout' => $SESSION_STATE_TIMEOUT, - - /* - * Option to override the default settings for the session cookie name - */ - 'session.cookie.name' => 'SSPSESSID', - - /* - * Expiration time for the session cookie, in seconds. - * - * Defaults to 0, which means that the cookie expires when the browser is closed. - * - * Example: - * 'session.cookie.lifetime' => 30*60, - */ - 'session.cookie.lifetime' => $SESSION_COOKIE_LIFETIME, - - /* - * Limit the path of the cookies. - * - * Can be used to limit the path of the cookies to a specific subdirectory. - * - * Example: - * 'session.cookie.path' => '/simplesaml/', - */ - 'session.cookie.path' => '/', - - /* - * Cookie domain. - * - * Can be used to make the session cookie available to several domains. - * - * Example: - * 'session.cookie.domain' => '.example.org', - */ - 'session.cookie.domain' => null, - - /* - * Set the secure flag in the cookie. - * - * Set this to TRUE if the user only accesses your service - * through https. If the user can access the service through - * both http and https, this must be set to FALSE. - */ - 'session.cookie.secure' => $SECURE_COOKIE, - - /* - * When set to FALSE fallback to transient session on session initialization - * failure, throw exception otherwise. - */ - 'session.disable_fallback' => false, - - /* - * Enable secure POST from HTTPS to HTTP. - * - * If you have some SP's on HTTP and IdP is normally on HTTPS, this option - * enables secure POSTing to HTTP endpoint without warning from browser. - * - * For this to work, module.php/core/postredirect.php must be accessible - * also via HTTP on IdP, e.g. if your IdP is on - * https://idp.example.org/ssp/, then - * http://idp.example.org/ssp/module.php/core/postredirect.php must be accessible. - */ - 'enable.http_post' => false, - - /* - * Options to override the default settings for php sessions. - */ - 'session.phpsession.cookiename' => null, - 'session.phpsession.savepath' => null, - 'session.phpsession.httponly' => true, - - /* - * Option to override the default settings for the auth token cookie - */ - 'session.authtoken.cookiename' => 'SSPAUTHTOKEN', - - /* - * Options for remember me feature for IdP sessions. Remember me feature - * has to be also implemented in authentication source used. - * - * Option 'session.cookie.lifetime' should be set to zero (0), i.e. cookie - * expires on browser session if remember me is not checked. - * - * Session duration ('session.duration' option) should be set according to - * 'session.rememberme.lifetime' option. - * - * It's advised to use remember me feature with session checking function - * defined with 'session.check_function' option. - */ - 'session.rememberme.enable' => false, - 'session.rememberme.checked' => false, - 'session.rememberme.lifetime' => $SESSION_REMEMBERME_LIFETIME, - - /** - * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. - * - * Example: - * 'session.check_function' => array('sspmod_example_Util', 'checkSession'), - */ - - /* - * Languages available, RTL languages, and what language is default - */ - 'language.available' => array( - 'en', 'es', 'fr', 'pt', - ), - 'language.rtl' => array('ar', 'dv', 'fa', 'ur', 'he'), - 'language.default' => 'en', - - /* - * Options to override the default settings for the language parameter - */ - 'language.parameter.name' => 'language', - 'language.parameter.setcookie' => true, - - /* - * Options to override the default settings for the language cookie - */ - 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, - 'language.cookie.path' => '/', - 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - - /** - * Custom getLanguage function called from SimpleSAML_XHTML_Template::getLanguage(). - * Function should return language code of one of the available languages or NULL. - * See SimpleSAML_XHTML_Template::getLanguage() source code for more info. - * - * This option can be used to implement a custom function for determining - * the default language for the user. - * - * Example: - * 'language.get_language_function' => array('sspmod_example_Template', 'getLanguage'), - */ - - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - /* - * Which theme directory should be used? - */ - 'theme.use' => 'material:material', - - - /* - * Default IdP for WS-Fed. - */ - // 'default-wsfed-idp' => 'urn:federation:pingfederate:localhost', - - /* - * Whether the discovery service should allow the user to save his choice of IdP. - */ - 'idpdisco.enableremember' => true, - 'idpdisco.rememberchecked' => true, - - // Disco service only accepts entities it knows. - 'idpdisco.validate' => true, - - 'idpdisco.extDiscoveryStorage' => null, - - /* - * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box - * gives the best use experience. - * - * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. - * This makes it easier for the user to choose the IdP - * - * Options: [links,dropdown] - * - */ - 'idpdisco.layout' => 'links', - - /* - * Whether simpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - - - /* - * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.idp' => [ - /* Enable the authproc filter below to add URN Prefixces to all attributes - 10 => array( - 'class' => 'core:AttributeMap', 'addurnprefix' - ), */ - /* Enable the authproc filter below to automatically generated eduPersonTargetedID. - 20 => 'core:TargetedID', - */ - - // Adopts language from attribute to use in UI - 30 => 'core:LanguageAdaptor', - - /* Add a realm attribute from edupersonprincipalname - 40 => 'core:AttributeRealm', - */ - 45 => [ - 'class' => 'core:StatisticsWithAttribute', - 'attributename' => 'realm', - 'type' => 'saml20-idp-SSO', - ], - - // If no attributes are requested in the SP metadata, then these will be sent through - 50 => [ - 'class' => 'core:AttributeLimit', - 'default' => true, - 'eduPersonPrincipalName', 'sn', 'givenName', 'mail', - ], - - // Use the uid value to populate the nameid entry - // 60 => [ - // 'class' => 'saml:AttributeNameID', - // 'attribute' => 'uid', - // 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient', - // ], - - /* - * Search attribute "distinguishedName" for pattern and replaces if found - - 70 => array( - 'class' => 'core:AttributeAlter', - 'pattern' => '/OU=studerende/', - 'replacement' => 'Student', - 'subject' => 'distinguishedName', - '%replace', - ), - */ - - /* - * Consent module is enabled (with no permanent storage, using cookies). - - 90 => array( - 'class' => 'consent:Consent', - 'store' => 'consent:Cookie', - 'focus' => 'yes', - 'checked' => TRUE - ), - */ - - - // If language is set in Consent module it will be added as an attribute. - 99 => 'core:LanguageAdaptor', - ], - /* - * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.sp' => [ - /* - 10 => array( - 'class' => 'core:AttributeMap', 'removeurnprefix' - ), - */ - - /* - * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => array( - 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ), - */ - /* - * All users will be members of 'users' and 'members' - 61 => array( - 'class' => 'core:AttributeAdd', 'groups' => array('users', 'members') - ), - */ - - // Adopts language from attribute to use in UI - 90 => 'core:LanguageAdaptor', - - ], - - - /* - * This option configures the metadata sources. The metadata sources is given as an array with - * different metadata sources. When searching for metadata, simpleSAMPphp will search through - * the array from start to end. - * - * Each element in the array is an associative array which configures the metadata source. - * The type of the metadata source is given by the 'type' element. For each type we have - * different configuration options. - * - * Flat file metadata handler: - * - 'type': This is always 'flatfile'. - * - 'directory': The directory we will load the metadata files from. The default value for - * this option is the value of the 'metadatadir' configuration option, or - * 'metadata/' if that option is unset. - * - * XML metadata handler: - * This metadata handler parses an XML file with either an EntityDescriptor element or an - * EntitiesDescriptor element. The XML file may be stored locally, or (for debugging) on a remote - * web server. - * The XML hetadata handler defines the following options: - * - 'type': This is always 'xml'. - * - 'file': Path to the XML file with the metadata. - * - 'url': The URL to fetch metadata from. THIS IS ONLY FOR DEBUGGING - THERE IS NO CACHING OF THE RESPONSE. - * - * - * Examples: - * - * This example defines two flatfile sources. One is the default metadata directory, the other - * is a metadata directory with autogenerated metadata files. - * - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'flatfile', 'directory' => 'metadata-generated'), - * ), - * - * This example defines a flatfile source and an XML source. - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'), - * ), - * - * - * Default: - * 'metadata.sources' => array( - * array('type' => 'flatfile') - * ), - */ - 'metadata.sources' => [ - ['type' => 'flatfile'], - ], - - - /* - * Configure the datastore for simpleSAMLphp. - * - * - 'phpsession': Limited datastore, which uses the PHP session. - * - 'memcache': Key-value datastore, based on memcache. - * - 'sql': SQL datastore, using PDO. - * - * The default datastore is 'phpsession'. - * - * (This option replaces the old 'session.handler'-option.) - */ - 'store.type' => 'phpsession', - - - /* - * The DSN the sql datastore should connect to. - * - * See http://www.php.net/manual/en/pdo.drivers.php for the various - * syntaxes. - */ - 'store.sql.dsn' => 'sqlite:/path/to/sqlitedatabase.sq3', - - /* - * The username and password to use when connecting to the database. - */ - 'store.sql.username' => null, - 'store.sql.password' => null, - - /* - * The prefix we should use on our tables. - */ - 'store.sql.prefix' => 'simpleSAMLphp', - - - /* - * Configuration for the MemcacheStore class. This allows you to store - * multiple redudant copies of sessions on different memcache servers. - * - * 'memcache_store.servers' is an array of server groups. Every data - * item will be mirrored in every server group. - * - * Each server group is an array of servers. The data items will be - * load-balanced between all servers in each server group. - * - * Each server is an array of parameters for the server. The following - * options are available: - * - 'hostname': This is the hostname or ip address where the - * memcache server runs. This is the only required option. - * - 'port': This is the port number of the memcache server. If this - * option isn't set, then we will use the 'memcache.default_port' - * ini setting. This is 11211 by default. - * - 'weight': This sets the weight of this server in this server - * group. http://php.net/manual/en/function.Memcache-addServer.php - * contains more information about the weight option. - * - 'timeout': The timeout for this server. By default, the timeout - * is 3 seconds. - * - * Example of redudant configuration with load balancing: - * This configuration makes it possible to lose both servers in the - * a-group or both servers in the b-group without losing any sessions. - * Note that sessions will be lost if one server is lost from both the - * a-group and the b-group. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'mc_a1'), - * array('hostname' => 'mc_a2'), - * ), - * array( - * array('hostname' => 'mc_b1'), - * array('hostname' => 'mc_b2'), - * ), - * ), - * - * Example of simple configuration with only one memcache server, - * running on the same computer as the web server: - * Note that all sessions will be lost if the memcache server crashes. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'localhost'), - * ), - * ), - * - */ - 'memcache_store.servers' => [ - [ - ['hostname' => 'localhost'], - ], - ], - - - /* - * This value is the duration data should be stored in memcache. Data - * will be dropped from the memcache servers when this time expires. - * The time will be reset every time the data is written to the - * memcache servers. - * - * This value should always be larger than the 'session.duration' - * option. Not doing this may result in the session being deleted from - * the memcache servers while it is still in use. - * - * Set this value to 0 if you don't want data to expire. - * - * Note: The oldest data will always be deleted if the memcache server - * runs out of storage space. - */ - 'memcache_store.expires' => 36 * (60 * 60), // 36 hours. - - - /* - * Should signing of generated metadata be enabled by default. - * - * Metadata signing can also be enabled for a individual SP or IdP by setting the - * same option in the metadata for the SP or IdP. - */ - 'metadata.sign.enable' => true, - - /* - * The default key & certificate which should be used to sign generated metadata. These - * are files stored in the cert dir. - * These values can be overridden by the options with the same names in the SP or - * IdP metadata. - * - * If these aren't specified here or in the metadata for the SP or IdP, then - * the 'certificate' and 'privatekey' option in the metadata will be used. - * if those aren't set, signing of metadata will fail. - */ - 'metadata.sign.privatekey' => 'ssp-hub-sp1.pem', - 'metadata.sign.privatekey_pass' => null, - 'metadata.sign.certificate' => 'ssp-hub-sp1.crt', - - - /* - * Proxy to use for retrieving URLs. - * - * Example: - * 'proxy' => 'tcp://proxy.example.com:5100' - */ - 'proxy' => null, - - /* - * Array of domains that are allowed when generating links or redirections - * to URLs. simpleSAMLphp will use this option to determine whether to - * to consider a given URL valid or not, but you should always validate - * URLs obtained from the input on your own (i.e. ReturnTo or RelayState - * parameters obtained from the $_REQUEST array). - * - * Set to NULL to disable checking of URLs. - * - * simpleSAMLphp will automatically add your own domain (either by checking - * it dinamically, or by using the domain defined in the 'baseurlpath' - * directive, the latter having precedence) to the list of trusted domains, - * in case this option is NOT set to NULL. In that case, you are explicitly - * telling simpleSAMLphp to verify URLs. - * - * Set to an empty array to disallow ALL redirections or links pointing to - * an external URL other than your own domain. - * - * Example: - * 'trusted.url.domains' => array('sp.example.com', 'app.example.com'), - */ - 'trusted.url.domains' => null, - -]; diff --git a/development/sp2-local/config/config.php b/development/sp2-local/config/config.php deleted file mode 100644 index 0c027f86..00000000 --- a/development/sp2-local/config/config.php +++ /dev/null @@ -1,836 +0,0 @@ - SimpleSAML\Logger::ERR, // No statistics, only errors - 'WARNING' => SimpleSAML\Logger::WARNING, // No statistics, only warnings/errors - 'NOTICE' => SimpleSAML\Logger::NOTICE, // Statistics and errors - 'INFO' => SimpleSAML\Logger::INFO, // Verbose logs - 'DEBUG' => SimpleSAML\Logger::DEBUG, // Full debug logs - not recommended for production -]; - -/* - * Get config settings from ENV vars or set defaults - */ - -// Required to be defined in environment -$ADMIN_EMAIL = Env::get('ADMIN_EMAIL'); -$ADMIN_PASS = Env::get('ADMIN_PASS'); -$SECRET_SALT = Env::get('SECRET_SALT'); - -// Defaults provided if not defined in environment -$BASE_URL_PATH = Env::get('BASE_URL_PATH', '/'); -$ADMIN_NAME = Env::get('ADMIN_NAME', 'SAML Admin'); -$ADMIN_PROTECT_INDEX_PAGE = Env::get('ADMIN_PROTECT_INDEX_PAGE', true); -$SHOW_SAML_ERRORS = Env::get('SHOW_SAML_ERRORS', false); -$ENABLE_DEBUG = Env::get('ENABLE_DEBUG', false); -$LOGGING_LEVEL = Env::get('LOGGING_LEVEL', 'NOTICE'); -$LOGGING_HANDLER = Env::get('LOGGING_HANDLER', 'stderr'); -$SESSION_DURATION = (int)(Env::get('SESSION_DURATION', 540)); -$SESSION_DATASTORE_TIMEOUT = (int)(Env::get('SESSION_DATASTORE_TIMEOUT', (4 * 60 * 60))); // 4 hours -$SESSION_STATE_TIMEOUT = (int)(Env::get('SESSION_STATE_TIMEOUT', (60 * 60))); // 1 hour -$SESSION_COOKIE_LIFETIME = (int)(Env::get('SESSION_COOKIE_LIFETIME', 0)); -$SESSION_REMEMBERME_LIFETIME = (int)(Env::get('SESSION_REMEMBERME_LIFETIME', (14 * 86400))); // 14 days -$SECURE_COOKIE = Env::get('SECURE_COOKIE', true); -$SAML20_IDP_ENABLE = Env::get('SAML20_IDP_ENABLE', true); - -$config = [ - - /* - * Setup the following parameters to match the directory of your installation. - * See the user manual for more details. - * - * Valid format for baseurlpath is: - * [(http|https)://(hostname|fqdn)[:port]]/[path/to/simplesaml/] - * (note that it must end with a '/') - * - * The full url format is useful if your simpleSAMLphp setup is hosted behind - * a reverse proxy. In that case you can specify the external url here. - * - * Please note that simpleSAMLphp will then redirect all queries to the - * external url, no matter where you come from (direct access or via the - * reverse proxy). - */ - 'baseurlpath' => $BASE_URL_PATH, - 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - - /* - * A directory where simpleSAMLphp can save temporary files. - * - * SimpleSAMLphp will attempt to create this directory if it doesn't exist. - */ - 'tempdir' => '/tmp/simplesaml', - - - /* - * The 'debug' option allows you to control how SimpleSAMLphp behaves in certain - * situations where further action may be taken - * - * It can be left unset, in which case, debugging is switched off for all actions. - * If set, it MUST be an array containing the actions that you want to enable, or - * alternatively a hashed array where the keys are the actions and their - * corresponding values are booleans enabling or disabling each particular action. - * - * SimpleSAMLphp provides some pre-defined actions, though modules could add new - * actions here. Refer to the documentation of every module to learn if they - * allow you to set any more debugging actions. - * - * The pre-defined actions are: - * - * - 'saml': this action controls the logging of SAML messages exchanged with other - * entities. When enabled ('saml' is present in this option, or set to true), all - * SAML messages will be logged, including plaintext versions of encrypted - * messages. - * - * - 'backtraces': this action controls the logging of error backtraces. If you - * want to log backtraces so that you can debug any possible errors happening in - * SimpleSAMLphp, enable this action (add it to the array or set it to true). - * - * - 'validatexml': this action allows you to validate SAML documents against all - * the relevant XML schemas. SAML 1.1 messages or SAML metadata parsed with - * the XML to SimpleSAMLphp metadata converter or the metaedit module will - * validate the SAML documents if this option is enabled. - * - * If you want to disable debugging completely, unset this option or set it to an - * empty array. - */ - 'debug' => [ - 'saml' => $ENABLE_DEBUG, - 'backtraces' => true, - 'validatexml' => $ENABLE_DEBUG, - ], - - /* - * When showerrors is enabled, all error messages and stack traces will be output - * to the browser. - * - * When errorreporting is enabled, a form will be presented for the user to report - * the error to technicalcontact_email. - */ - 'showerrors' => $SHOW_SAML_ERRORS, - 'errorreporting' => false, - - /* - * Custom error show function called from SimpleSAML_Error_Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. - * - * Example: - * 'errors.show_function' => array('sspmod_example_Error_Show', 'show'), - */ - - /* - * This option allows you to enable validation of XML data against its - * schemas. A warning will be written to the log if validation fails. - */ - 'debug.validatexml' => false, - - /* - * This password must be kept secret, and modified from the default value 123. - * This password will give access to the installation page of simpleSAMLphp with - * metadata listing and diagnostics pages. - * You can also put a hash here; run "bin/pwgen.php" to generate one. - */ - 'auth.adminpassword' => $ADMIN_PASS, - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, - 'admin.protectmetadata' => true, - - /* - * This is a secret salt used by simpleSAMLphp when it needs to generate a secure hash - * of a value. It must be changed from its default value to a secret value. The value of - * 'secretsalt' can be any valid string of any length. - * - * A possible way to generate a random salt is by running the following command from a unix shell: - * tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo - */ - 'secretsalt' => $SECRET_SALT, - - /* - * Some information about the technical persons running this installation. - * The email address will be used as the recipient address for error reports, and - * also as the technical contact in generated metadata. - */ - 'technicalcontact_name' => $ADMIN_NAME, - 'technicalcontact_email' => $ADMIN_EMAIL, - - /* - * The timezone of the server. This option should be set to the timezone you want - * simpleSAMLphp to report the time in. The default is to guess the timezone based - * on your system timezone. - * - * See this page for a list of valid timezones: http://php.net/manual/en/timezones.php - */ - 'timezone' => 'GMT', - - /* - * Logging. - * - * define the minimum log level to log - * SimpleSAML\Logger::ERR No statistics, only errors - * SimpleSAML\Logger::WARNING No statistics, only warnings/errors - * SimpleSAML\Logger::NOTICE Statistics and errors - * SimpleSAML\Logger::INFO Verbose logs - * SimpleSAML\Logger::DEBUG Full debug logs - not reccomended for production - * - * Choose logging handler. - * - * Options: [syslog,file,errorlog,stderr] - * - */ - 'logging.level' => $logLevels[$LOGGING_LEVEL], - 'logging.handler' => $LOGGING_HANDLER, - - /* - * Specify the format of the logs. Its use varies depending on the log handler used (for instance, you cannot - * control here how dates are displayed when using the syslog or errorlog handlers), but in general the options - * are: - * - * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard - * format is applied. This can be useful if you just want to control the placement of the date, but don't care - * about the format. - * - * - %process: the name of the SimpleSAMLphp process. Remember you can configure this in the 'logging.processname' - * option below. - * - * - %level: the log level (name or number depending on the handler used). - * - * - %stat: if the log entry is intended for statistical purposes, it will print the string 'STAT ' (bear in mind - * the trailing space). - * - * - %trackid: the track ID, an identifier that allows you to track a single session. - * - * - %srcip: the IP address of the client. If you are behind a proxy, make sure to modify the - * $_SERVER['REMOTE_ADDR'] variable on your code accordingly to the X-Forwarded-For header. - * - * - %msg: the message to be logged. - * - */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', - - /* - * Choose which facility should be used when logging with syslog. - * - * These can be used for filtering the syslog output from simpleSAMLphp into its - * own file by configuring the syslog daemon. - * - * See the documentation for openlog (http://php.net/manual/en/function.openlog.php) for available - * facilities. Note that only LOG_USER is valid on windows. - * - * The default is to use LOG_LOCAL5 if available, and fall back to LOG_USER if not. - */ - 'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, - - /* - * The process name that should be used when logging to syslog. - * The value is also written out by the other logging handlers. - */ - 'logging.processname' => 'simplesamlphp', - - /* Logging: file - Logfilename in the loggingdir from above. - */ - 'logging.logfile' => 'simplesamlphp.log', - - /* (New) statistics output configuration. - * - * This is an array of outputs. Each output has at least a 'class' option, which - * selects the output. - */ - 'statistics.out' => [// Log statistics to the normal log. - /* - [ - 'class' => 'core:Log', - 'level' => 'notice', - ], - */ - // Log statistics to files in a directory. One file per day. - /* - [ - 'class' => 'core:File', - 'directory' => '/var/log/stats', - ], - */ - ], - - - /* - * Enable - * - * Which functionality in simpleSAMLphp do you want to enable. Normally you would enable only - * one of the functionalities below, but in some cases you could run multiple functionalities. - * In example when you are setting up a federation bridge. - */ - 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, - 'enable.adfs-idp' => false, - 'enable.wsfed-sp' => false, - 'enable.authmemcookie' => false, - - - /* - * Module enable configuration - * - * Configuration to override module enabling/disabling. - * - * Example: - * - * 'module.enable' => array( - * // Setting to TRUE enables. - * 'exampleauth' => TRUE, - * // Setting to FALSE disables. - * 'saml' => FALSE, - * // Unset or NULL uses default. - * 'core' => NULL, - * ), - * - */ - - 'module.enable' => [ - 'saml' => true, - 'core' => true, - 'admin' => true, - ], - - /* - * This value is the duration of the session in seconds. Make sure that the time duration of - * cookies both at the SP and the IdP exceeds this duration. - */ - 'session.duration' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, data should be stored in the datastore. As the datastore is used for - * login and logout requests, thid option will control the maximum time these operations can take. - * The default is 4 hours (4*60*60) seconds, which should be more than enough for these operations. - */ - 'session.datastore.timeout' => $SESSION_DATASTORE_TIMEOUT, - - /* - * Sets the duration, in seconds, auth state should be stored. - */ - 'session.state.timeout' => $SESSION_STATE_TIMEOUT, - - /* - * Option to override the default settings for the session cookie name - */ - 'session.cookie.name' => 'SSPSESSID', - - /* - * Expiration time for the session cookie, in seconds. - * - * Defaults to 0, which means that the cookie expires when the browser is closed. - * - * Example: - * 'session.cookie.lifetime' => 30*60, - */ - 'session.cookie.lifetime' => $SESSION_COOKIE_LIFETIME, - - /* - * Limit the path of the cookies. - * - * Can be used to limit the path of the cookies to a specific subdirectory. - * - * Example: - * 'session.cookie.path' => '/simplesaml/', - */ - 'session.cookie.path' => '/', - - /* - * Cookie domain. - * - * Can be used to make the session cookie available to several domains. - * - * Example: - * 'session.cookie.domain' => '.example.org', - */ - 'session.cookie.domain' => null, - - /* - * Set the secure flag in the cookie. - * - * Set this to TRUE if the user only accesses your service - * through https. If the user can access the service through - * both http and https, this must be set to FALSE. - */ - 'session.cookie.secure' => $SECURE_COOKIE, - - /* - * When set to FALSE fallback to transient session on session initialization - * failure, throw exception otherwise. - */ - 'session.disable_fallback' => false, - - /* - * Enable secure POST from HTTPS to HTTP. - * - * If you have some SP's on HTTP and IdP is normally on HTTPS, this option - * enables secure POSTing to HTTP endpoint without warning from browser. - * - * For this to work, module.php/core/postredirect.php must be accessible - * also via HTTP on IdP, e.g. if your IdP is on - * https://idp.example.org/ssp/, then - * http://idp.example.org/ssp/module.php/core/postredirect.php must be accessible. - */ - 'enable.http_post' => false, - - /* - * Options to override the default settings for php sessions. - */ - 'session.phpsession.cookiename' => null, - 'session.phpsession.savepath' => null, - 'session.phpsession.httponly' => true, - - /* - * Option to override the default settings for the auth token cookie - */ - 'session.authtoken.cookiename' => 'SSPAUTHTOKEN', - - /* - * Options for remember me feature for IdP sessions. Remember me feature - * has to be also implemented in authentication source used. - * - * Option 'session.cookie.lifetime' should be set to zero (0), i.e. cookie - * expires on browser session if remember me is not checked. - * - * Session duration ('session.duration' option) should be set according to - * 'session.rememberme.lifetime' option. - * - * It's advised to use remember me feature with session checking function - * defined with 'session.check_function' option. - */ - 'session.rememberme.enable' => false, - 'session.rememberme.checked' => false, - 'session.rememberme.lifetime' => $SESSION_REMEMBERME_LIFETIME, - - /** - * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. - * - * Example: - * 'session.check_function' => array('sspmod_example_Util', 'checkSession'), - */ - - /* - * Languages available, RTL languages, and what language is default - */ - 'language.available' => array( - 'en', 'es', 'fr', 'pt', - ), - 'language.rtl' => array('ar', 'dv', 'fa', 'ur', 'he'), - 'language.default' => 'en', - - /* - * Options to override the default settings for the language parameter - */ - 'language.parameter.name' => 'language', - 'language.parameter.setcookie' => true, - - /* - * Options to override the default settings for the language cookie - */ - 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, - 'language.cookie.path' => '/', - 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - - /** - * Custom getLanguage function called from SimpleSAML_XHTML_Template::getLanguage(). - * Function should return language code of one of the available languages or NULL. - * See SimpleSAML_XHTML_Template::getLanguage() source code for more info. - * - * This option can be used to implement a custom function for determining - * the default language for the user. - * - * Example: - * 'language.get_language_function' => array('sspmod_example_Template', 'getLanguage'), - */ - - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - /* - * Which theme directory should be used? - */ - 'theme.use' => 'material:material', - - - /* - * Default IdP for WS-Fed. - */ - // 'default-wsfed-idp' => 'urn:federation:pingfederate:localhost', - - /* - * Whether the discovery service should allow the user to save his choice of IdP. - */ - 'idpdisco.enableremember' => true, - 'idpdisco.rememberchecked' => true, - - // Disco service only accepts entities it knows. - 'idpdisco.validate' => true, - - 'idpdisco.extDiscoveryStorage' => null, - - /* - * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box - * gives the best use experience. - * - * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. - * This makes it easier for the user to choose the IdP - * - * Options: [links,dropdown] - * - */ - 'idpdisco.layout' => 'links', - - /* - * Whether simpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - - - /* - * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.idp' => [ - /* Enable the authproc filter below to add URN Prefixces to all attributes - 10 => array( - 'class' => 'core:AttributeMap', 'addurnprefix' - ), */ - /* Enable the authproc filter below to automatically generated eduPersonTargetedID. - 20 => 'core:TargetedID', - */ - - // Adopts language from attribute to use in UI - 30 => 'core:LanguageAdaptor', - - /* Add a realm attribute from edupersonprincipalname - 40 => 'core:AttributeRealm', - */ - 45 => [ - 'class' => 'core:StatisticsWithAttribute', - 'attributename' => 'realm', - 'type' => 'saml20-idp-SSO', - ], - - // If no attributes are requested in the SP metadata, then these will be sent through - 50 => [ - 'class' => 'core:AttributeLimit', - 'default' => true, - 'eduPersonPrincipalName', 'sn', 'givenName', 'mail', - ], - - // Use the uid value to populate the nameid entry - 60 => [ - 'class' => 'saml:AttributeNameID', - 'attribute' => 'uid', - 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient', - ], - - /* - * Search attribute "distinguishedName" for pattern and replaces if found - - 70 => array( - 'class' => 'core:AttributeAlter', - 'pattern' => '/OU=studerende/', - 'replacement' => 'Student', - 'subject' => 'distinguishedName', - '%replace', - ), - */ - - /* - * Consent module is enabled (with no permanent storage, using cookies). - - 90 => array( - 'class' => 'consent:Consent', - 'store' => 'consent:Cookie', - 'focus' => 'yes', - 'checked' => TRUE - ), - */ - - - // If language is set in Consent module it will be added as an attribute. - 99 => 'core:LanguageAdaptor', - ], - /* - * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.sp' => [ - /* - 10 => array( - 'class' => 'core:AttributeMap', 'removeurnprefix' - ), - */ - - /* - * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => array( - 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ), - */ - /* - * All users will be members of 'users' and 'members' - 61 => array( - 'class' => 'core:AttributeAdd', 'groups' => array('users', 'members') - ), - */ - - // Adopts language from attribute to use in UI - 90 => 'core:LanguageAdaptor', - - ], - - - /* - * This option configures the metadata sources. The metadata sources is given as an array with - * different metadata sources. When searching for metadata, simpleSAMPphp will search through - * the array from start to end. - * - * Each element in the array is an associative array which configures the metadata source. - * The type of the metadata source is given by the 'type' element. For each type we have - * different configuration options. - * - * Flat file metadata handler: - * - 'type': This is always 'flatfile'. - * - 'directory': The directory we will load the metadata files from. The default value for - * this option is the value of the 'metadatadir' configuration option, or - * 'metadata/' if that option is unset. - * - * XML metadata handler: - * This metadata handler parses an XML file with either an EntityDescriptor element or an - * EntitiesDescriptor element. The XML file may be stored locally, or (for debugging) on a remote - * web server. - * The XML hetadata handler defines the following options: - * - 'type': This is always 'xml'. - * - 'file': Path to the XML file with the metadata. - * - 'url': The URL to fetch metadata from. THIS IS ONLY FOR DEBUGGING - THERE IS NO CACHING OF THE RESPONSE. - * - * - * Examples: - * - * This example defines two flatfile sources. One is the default metadata directory, the other - * is a metadata directory with autogenerated metadata files. - * - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'flatfile', 'directory' => 'metadata-generated'), - * ), - * - * This example defines a flatfile source and an XML source. - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'), - * ), - * - * - * Default: - * 'metadata.sources' => array( - * array('type' => 'flatfile') - * ), - */ - 'metadata.sources' => [ - ['type' => 'flatfile'], - ], - - - /* - * Configure the datastore for simpleSAMLphp. - * - * - 'phpsession': Limited datastore, which uses the PHP session. - * - 'memcache': Key-value datastore, based on memcache. - * - 'sql': SQL datastore, using PDO. - * - * The default datastore is 'phpsession'. - * - * (This option replaces the old 'session.handler'-option.) - */ - 'store.type' => 'phpsession', - - - /* - * The DSN the sql datastore should connect to. - * - * See http://www.php.net/manual/en/pdo.drivers.php for the various - * syntaxes. - */ - 'store.sql.dsn' => 'sqlite:/path/to/sqlitedatabase.sq3', - - /* - * The username and password to use when connecting to the database. - */ - 'store.sql.username' => null, - 'store.sql.password' => null, - - /* - * The prefix we should use on our tables. - */ - 'store.sql.prefix' => 'simpleSAMLphp', - - - /* - * Configuration for the MemcacheStore class. This allows you to store - * multiple redudant copies of sessions on different memcache servers. - * - * 'memcache_store.servers' is an array of server groups. Every data - * item will be mirrored in every server group. - * - * Each server group is an array of servers. The data items will be - * load-balanced between all servers in each server group. - * - * Each server is an array of parameters for the server. The following - * options are available: - * - 'hostname': This is the hostname or ip address where the - * memcache server runs. This is the only required option. - * - 'port': This is the port number of the memcache server. If this - * option isn't set, then we will use the 'memcache.default_port' - * ini setting. This is 11211 by default. - * - 'weight': This sets the weight of this server in this server - * group. http://php.net/manual/en/function.Memcache-addServer.php - * contains more information about the weight option. - * - 'timeout': The timeout for this server. By default, the timeout - * is 3 seconds. - * - * Example of redudant configuration with load balancing: - * This configuration makes it possible to lose both servers in the - * a-group or both servers in the b-group without losing any sessions. - * Note that sessions will be lost if one server is lost from both the - * a-group and the b-group. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'mc_a1'), - * array('hostname' => 'mc_a2'), - * ), - * array( - * array('hostname' => 'mc_b1'), - * array('hostname' => 'mc_b2'), - * ), - * ), - * - * Example of simple configuration with only one memcache server, - * running on the same computer as the web server: - * Note that all sessions will be lost if the memcache server crashes. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'localhost'), - * ), - * ), - * - */ - 'memcache_store.servers' => [ - [ - ['hostname' => 'localhost'], - ], - ], - - - /* - * This value is the duration data should be stored in memcache. Data - * will be dropped from the memcache servers when this time expires. - * The time will be reset every time the data is written to the - * memcache servers. - * - * This value should always be larger than the 'session.duration' - * option. Not doing this may result in the session being deleted from - * the memcache servers while it is still in use. - * - * Set this value to 0 if you don't want data to expire. - * - * Note: The oldest data will always be deleted if the memcache server - * runs out of storage space. - */ - 'memcache_store.expires' => 36 * (60 * 60), // 36 hours. - - - /* - * Should signing of generated metadata be enabled by default. - * - * Metadata signing can also be enabled for a individual SP or IdP by setting the - * same option in the metadata for the SP or IdP. - */ - 'metadata.sign.enable' => true, - - /* - * The default key & certificate which should be used to sign generated metadata. These - * are files stored in the cert dir. - * These values can be overridden by the options with the same names in the SP or - * IdP metadata. - * - * If these aren't specified here or in the metadata for the SP or IdP, then - * the 'certificate' and 'privatekey' option in the metadata will be used. - * if those aren't set, signing of metadata will fail. - */ - 'metadata.sign.privatekey' => 'ssp-hub-sp2.pem', - 'metadata.sign.privatekey_pass' => null, - 'metadata.sign.certificate' => 'ssp-hub-sp2.crt', - - - /* - * Proxy to use for retrieving URLs. - * - * Example: - * 'proxy' => 'tcp://proxy.example.com:5100' - */ - 'proxy' => null, - - /* - * Array of domains that are allowed when generating links or redirections - * to URLs. simpleSAMLphp will use this option to determine whether to - * to consider a given URL valid or not, but you should always validate - * URLs obtained from the input on your own (i.e. ReturnTo or RelayState - * parameters obtained from the $_REQUEST array). - * - * Set to NULL to disable checking of URLs. - * - * simpleSAMLphp will automatically add your own domain (either by checking - * it dinamically, or by using the domain defined in the 'baseurlpath' - * directive, the latter having precedence) to the list of trusted domains, - * in case this option is NOT set to NULL. In that case, you are explicitly - * telling simpleSAMLphp to verify URLs. - * - * Set to an empty array to disallow ALL redirections or links pointing to - * an external URL other than your own domain. - * - * Example: - * 'trusted.url.domains' => array('sp.example.com', 'app.example.com'), - */ - 'trusted.url.domains' => null, - -]; diff --git a/development/sp3-local/config/config.php b/development/sp3-local/config/config.php deleted file mode 100644 index 3a6d4aaa..00000000 --- a/development/sp3-local/config/config.php +++ /dev/null @@ -1,836 +0,0 @@ - SimpleSAML\Logger::ERR, // No statistics, only errors - 'WARNING' => SimpleSAML\Logger::WARNING, // No statistics, only warnings/errors - 'NOTICE' => SimpleSAML\Logger::NOTICE, // Statistics and errors - 'INFO' => SimpleSAML\Logger::INFO, // Verbose logs - 'DEBUG' => SimpleSAML\Logger::DEBUG, // Full debug logs - not recommended for production -]; - -/* - * Get config settings from ENV vars or set defaults - */ - -// Required to be defined in environment -$ADMIN_EMAIL = Env::get('ADMIN_EMAIL'); -$ADMIN_PASS = Env::get('ADMIN_PASS'); -$SECRET_SALT = Env::get('SECRET_SALT'); - -// Defaults provided if not defined in environment -$BASE_URL_PATH = Env::get('BASE_URL_PATH', '/'); -$ADMIN_NAME = Env::get('ADMIN_NAME', 'SAML Admin'); -$ADMIN_PROTECT_INDEX_PAGE = Env::get('ADMIN_PROTECT_INDEX_PAGE', true); -$SHOW_SAML_ERRORS = Env::get('SHOW_SAML_ERRORS', false); -$ENABLE_DEBUG = Env::get('ENABLE_DEBUG', false); -$LOGGING_LEVEL = Env::get('LOGGING_LEVEL', 'NOTICE'); -$LOGGING_HANDLER = Env::get('LOGGING_HANDLER', 'stderr'); -$SESSION_DURATION = (int)(Env::get('SESSION_DURATION', 540)); -$SESSION_DATASTORE_TIMEOUT = (int)(Env::get('SESSION_DATASTORE_TIMEOUT', (4 * 60 * 60))); // 4 hours -$SESSION_STATE_TIMEOUT = (int)(Env::get('SESSION_STATE_TIMEOUT', (60 * 60))); // 1 hour -$SESSION_COOKIE_LIFETIME = (int)(Env::get('SESSION_COOKIE_LIFETIME', 0)); -$SESSION_REMEMBERME_LIFETIME = (int)(Env::get('SESSION_REMEMBERME_LIFETIME', (14 * 86400))); // 14 days -$SECURE_COOKIE = Env::get('SECURE_COOKIE', true); -$SAML20_IDP_ENABLE = Env::get('SAML20_IDP_ENABLE', true); - -$config = [ - - /* - * Setup the following parameters to match the directory of your installation. - * See the user manual for more details. - * - * Valid format for baseurlpath is: - * [(http|https)://(hostname|fqdn)[:port]]/[path/to/simplesaml/] - * (note that it must end with a '/') - * - * The full url format is useful if your simpleSAMLphp setup is hosted behind - * a reverse proxy. In that case you can specify the external url here. - * - * Please note that simpleSAMLphp will then redirect all queries to the - * external url, no matter where you come from (direct access or via the - * reverse proxy). - */ - 'baseurlpath' => $BASE_URL_PATH, - 'certdir' => 'cert/', - 'loggingdir' => 'log/', - 'datadir' => 'data/', - - /* - * A directory where simpleSAMLphp can save temporary files. - * - * SimpleSAMLphp will attempt to create this directory if it doesn't exist. - */ - 'tempdir' => '/tmp/simplesaml', - - - /* - * The 'debug' option allows you to control how SimpleSAMLphp behaves in certain - * situations where further action may be taken - * - * It can be left unset, in which case, debugging is switched off for all actions. - * If set, it MUST be an array containing the actions that you want to enable, or - * alternatively a hashed array where the keys are the actions and their - * corresponding values are booleans enabling or disabling each particular action. - * - * SimpleSAMLphp provides some pre-defined actions, though modules could add new - * actions here. Refer to the documentation of every module to learn if they - * allow you to set any more debugging actions. - * - * The pre-defined actions are: - * - * - 'saml': this action controls the logging of SAML messages exchanged with other - * entities. When enabled ('saml' is present in this option, or set to true), all - * SAML messages will be logged, including plaintext versions of encrypted - * messages. - * - * - 'backtraces': this action controls the logging of error backtraces. If you - * want to log backtraces so that you can debug any possible errors happening in - * SimpleSAMLphp, enable this action (add it to the array or set it to true). - * - * - 'validatexml': this action allows you to validate SAML documents against all - * the relevant XML schemas. SAML 1.1 messages or SAML metadata parsed with - * the XML to SimpleSAMLphp metadata converter or the metaedit module will - * validate the SAML documents if this option is enabled. - * - * If you want to disable debugging completely, unset this option or set it to an - * empty array. - */ - 'debug' => [ - 'saml' => $ENABLE_DEBUG, - 'backtraces' => true, - 'validatexml' => $ENABLE_DEBUG, - ], - - /* - * When showerrors is enabled, all error messages and stack traces will be output - * to the browser. - * - * When errorreporting is enabled, a form will be presented for the user to report - * the error to technicalcontact_email. - */ - 'showerrors' => $SHOW_SAML_ERRORS, - 'errorreporting' => false, - - /* - * Custom error show function called from SimpleSAML_Error_Error::show. - * See docs/simplesamlphp-errorhandling.txt for function code example. - * - * Example: - * 'errors.show_function' => array('sspmod_example_Error_Show', 'show'), - */ - - /* - * This option allows you to enable validation of XML data against its - * schemas. A warning will be written to the log if validation fails. - */ - 'debug.validatexml' => false, - - /* - * This password must be kept secret, and modified from the default value 123. - * This password will give access to the installation page of simpleSAMLphp with - * metadata listing and diagnostics pages. - * You can also put a hash here; run "bin/pwgen.php" to generate one. - */ - 'auth.adminpassword' => $ADMIN_PASS, - 'admin.protectindexpage' => $ADMIN_PROTECT_INDEX_PAGE, - 'admin.protectmetadata' => true, - - /* - * This is a secret salt used by simpleSAMLphp when it needs to generate a secure hash - * of a value. It must be changed from its default value to a secret value. The value of - * 'secretsalt' can be any valid string of any length. - * - * A possible way to generate a random salt is by running the following command from a unix shell: - * tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo - */ - 'secretsalt' => $SECRET_SALT, - - /* - * Some information about the technical persons running this installation. - * The email address will be used as the recipient address for error reports, and - * also as the technical contact in generated metadata. - */ - 'technicalcontact_name' => $ADMIN_NAME, - 'technicalcontact_email' => $ADMIN_EMAIL, - - /* - * The timezone of the server. This option should be set to the timezone you want - * simpleSAMLphp to report the time in. The default is to guess the timezone based - * on your system timezone. - * - * See this page for a list of valid timezones: http://php.net/manual/en/timezones.php - */ - 'timezone' => 'GMT', - - /* - * Logging. - * - * define the minimum log level to log - * SimpleSAML\Logger::ERR No statistics, only errors - * SimpleSAML\Logger::WARNING No statistics, only warnings/errors - * SimpleSAML\Logger::NOTICE Statistics and errors - * SimpleSAML\Logger::INFO Verbose logs - * SimpleSAML\Logger::DEBUG Full debug logs - not reccomended for production - * - * Choose logging handler. - * - * Options: [syslog,file,errorlog,stderr] - * - */ - 'logging.level' => $logLevels[$LOGGING_LEVEL], - 'logging.handler' => $LOGGING_HANDLER, - - /* - * Specify the format of the logs. Its use varies depending on the log handler used (for instance, you cannot - * control here how dates are displayed when using the syslog or errorlog handlers), but in general the options - * are: - * - * - %date{}: the date and time, with its format specified inside the brackets. See the PHP documentation - * of the strftime() function for more information on the format. If the brackets are omitted, the standard - * format is applied. This can be useful if you just want to control the placement of the date, but don't care - * about the format. - * - * - %process: the name of the SimpleSAMLphp process. Remember you can configure this in the 'logging.processname' - * option below. - * - * - %level: the log level (name or number depending on the handler used). - * - * - %stat: if the log entry is intended for statistical purposes, it will print the string 'STAT ' (bear in mind - * the trailing space). - * - * - %trackid: the track ID, an identifier that allows you to track a single session. - * - * - %srcip: the IP address of the client. If you are behind a proxy, make sure to modify the - * $_SERVER['REMOTE_ADDR'] variable on your code accordingly to the X-Forwarded-For header. - * - * - %msg: the message to be logged. - * - */ - //'logging.format' => '%date{%b %d %H:%M:%S} %process %level %stat[%trackid] %msg', - - /* - * Choose which facility should be used when logging with syslog. - * - * These can be used for filtering the syslog output from simpleSAMLphp into its - * own file by configuring the syslog daemon. - * - * See the documentation for openlog (http://php.net/manual/en/function.openlog.php) for available - * facilities. Note that only LOG_USER is valid on windows. - * - * The default is to use LOG_LOCAL5 if available, and fall back to LOG_USER if not. - */ - 'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, - - /* - * The process name that should be used when logging to syslog. - * The value is also written out by the other logging handlers. - */ - 'logging.processname' => 'simplesamlphp', - - /* Logging: file - Logfilename in the loggingdir from above. - */ - 'logging.logfile' => 'simplesamlphp.log', - - /* (New) statistics output configuration. - * - * This is an array of outputs. Each output has at least a 'class' option, which - * selects the output. - */ - 'statistics.out' => [// Log statistics to the normal log. - /* - [ - 'class' => 'core:Log', - 'level' => 'notice', - ], - */ - // Log statistics to files in a directory. One file per day. - /* - [ - 'class' => 'core:File', - 'directory' => '/var/log/stats', - ], - */ - ], - - - /* - * Enable - * - * Which functionality in simpleSAMLphp do you want to enable. Normally you would enable only - * one of the functionalities below, but in some cases you could run multiple functionalities. - * In example when you are setting up a federation bridge. - */ - 'enable.saml20-idp' => $SAML20_IDP_ENABLE, - 'enable.shib13-idp' => false, - 'enable.adfs-idp' => false, - 'enable.wsfed-sp' => false, - 'enable.authmemcookie' => false, - - - /* - * Module enable configuration - * - * Configuration to override module enabling/disabling. - * - * Example: - * - * 'module.enable' => array( - * // Setting to TRUE enables. - * 'exampleauth' => TRUE, - * // Setting to FALSE disables. - * 'saml' => FALSE, - * // Unset or NULL uses default. - * 'core' => NULL, - * ), - * - */ - - 'module.enable' => [ - 'saml' => true, - 'core' => true, - 'admin' => true, - ], - - /* - * This value is the duration of the session in seconds. Make sure that the time duration of - * cookies both at the SP and the IdP exceeds this duration. - */ - 'session.duration' => $SESSION_DURATION, - - /* - * Sets the duration, in seconds, data should be stored in the datastore. As the datastore is used for - * login and logout requests, thid option will control the maximum time these operations can take. - * The default is 4 hours (4*60*60) seconds, which should be more than enough for these operations. - */ - 'session.datastore.timeout' => $SESSION_DATASTORE_TIMEOUT, - - /* - * Sets the duration, in seconds, auth state should be stored. - */ - 'session.state.timeout' => $SESSION_STATE_TIMEOUT, - - /* - * Option to override the default settings for the session cookie name - */ - 'session.cookie.name' => 'SSPSESSID', - - /* - * Expiration time for the session cookie, in seconds. - * - * Defaults to 0, which means that the cookie expires when the browser is closed. - * - * Example: - * 'session.cookie.lifetime' => 30*60, - */ - 'session.cookie.lifetime' => $SESSION_COOKIE_LIFETIME, - - /* - * Limit the path of the cookies. - * - * Can be used to limit the path of the cookies to a specific subdirectory. - * - * Example: - * 'session.cookie.path' => '/simplesaml/', - */ - 'session.cookie.path' => '/', - - /* - * Cookie domain. - * - * Can be used to make the session cookie available to several domains. - * - * Example: - * 'session.cookie.domain' => '.example.org', - */ - 'session.cookie.domain' => null, - - /* - * Set the secure flag in the cookie. - * - * Set this to TRUE if the user only accesses your service - * through https. If the user can access the service through - * both http and https, this must be set to FALSE. - */ - 'session.cookie.secure' => $SECURE_COOKIE, - - /* - * When set to FALSE fallback to transient session on session initialization - * failure, throw exception otherwise. - */ - 'session.disable_fallback' => false, - - /* - * Enable secure POST from HTTPS to HTTP. - * - * If you have some SP's on HTTP and IdP is normally on HTTPS, this option - * enables secure POSTing to HTTP endpoint without warning from browser. - * - * For this to work, module.php/core/postredirect.php must be accessible - * also via HTTP on IdP, e.g. if your IdP is on - * https://idp.example.org/ssp/, then - * http://idp.example.org/ssp/module.php/core/postredirect.php must be accessible. - */ - 'enable.http_post' => false, - - /* - * Options to override the default settings for php sessions. - */ - 'session.phpsession.cookiename' => null, - 'session.phpsession.savepath' => null, - 'session.phpsession.httponly' => true, - - /* - * Option to override the default settings for the auth token cookie - */ - 'session.authtoken.cookiename' => 'SSPAUTHTOKEN', - - /* - * Options for remember me feature for IdP sessions. Remember me feature - * has to be also implemented in authentication source used. - * - * Option 'session.cookie.lifetime' should be set to zero (0), i.e. cookie - * expires on browser session if remember me is not checked. - * - * Session duration ('session.duration' option) should be set according to - * 'session.rememberme.lifetime' option. - * - * It's advised to use remember me feature with session checking function - * defined with 'session.check_function' option. - */ - 'session.rememberme.enable' => false, - 'session.rememberme.checked' => false, - 'session.rememberme.lifetime' => $SESSION_REMEMBERME_LIFETIME, - - /** - * Custom function for session checking called on session init and loading. - * See docs/simplesamlphp-advancedfeatures.txt for function code example. - * - * Example: - * 'session.check_function' => array('sspmod_example_Util', 'checkSession'), - */ - - /* - * Languages available, RTL languages, and what language is default - */ - 'language.available' => array( - 'en', 'es', 'fr', 'pt', - ), - 'language.rtl' => array('ar', 'dv', 'fa', 'ur', 'he'), - 'language.default' => 'en', - - /* - * Options to override the default settings for the language parameter - */ - 'language.parameter.name' => 'language', - 'language.parameter.setcookie' => true, - - /* - * Options to override the default settings for the language cookie - */ - 'language.cookie.name' => 'language', - 'language.cookie.domain' => null, - 'language.cookie.path' => '/', - 'language.cookie.lifetime' => (60 * 60 * 24 * 900), - - /** - * Custom getLanguage function called from SimpleSAML_XHTML_Template::getLanguage(). - * Function should return language code of one of the available languages or NULL. - * See SimpleSAML_XHTML_Template::getLanguage() source code for more info. - * - * This option can be used to implement a custom function for determining - * the default language for the user. - * - * Example: - * 'language.get_language_function' => array('sspmod_example_Template', 'getLanguage'), - */ - - /* - * Extra dictionary for attribute names. - * This can be used to define local attributes. - * - * The format of the parameter is a string with :. - * - * Specifying this option will cause us to look for modules//dictionaries/.definition.json - * The dictionary should look something like: - * - * { - * "firstattribute": { - * "en": "English name", - * "no": "Norwegian name" - * }, - * "secondattribute": { - * "en": "English name", - * "no": "Norwegian name" - * } - * } - * - * Note that all attribute names in the dictionary must in lowercase. - * - * Example: 'attributes.extradictionary' => 'ourmodule:ourattributes', - */ - 'attributes.extradictionary' => null, - - /* - * Which theme directory should be used? - */ - 'theme.use' => 'material:material', - - - /* - * Default IdP for WS-Fed. - */ - // 'default-wsfed-idp' => 'urn:federation:pingfederate:localhost', - - /* - * Whether the discovery service should allow the user to save his choice of IdP. - */ - 'idpdisco.enableremember' => true, - 'idpdisco.rememberchecked' => true, - - // Disco service only accepts entities it knows. - 'idpdisco.validate' => true, - - 'idpdisco.extDiscoveryStorage' => null, - - /* - * IdP Discovery service look configuration. - * Wether to display a list of idp or to display a dropdown box. For many IdP' a dropdown box - * gives the best use experience. - * - * When using dropdown box a cookie is used to highlight the previously chosen IdP in the dropdown. - * This makes it easier for the user to choose the IdP - * - * Options: [links,dropdown] - * - */ - 'idpdisco.layout' => 'links', - - /* - * Whether simpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - - - /* - * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.idp' => [ - /* Enable the authproc filter below to add URN Prefixces to all attributes - 10 => array( - 'class' => 'core:AttributeMap', 'addurnprefix' - ), */ - /* Enable the authproc filter below to automatically generated eduPersonTargetedID. - 20 => 'core:TargetedID', - */ - - // Adopts language from attribute to use in UI - 30 => 'core:LanguageAdaptor', - - /* Add a realm attribute from edupersonprincipalname - 40 => 'core:AttributeRealm', - */ - 45 => [ - 'class' => 'core:StatisticsWithAttribute', - 'attributename' => 'realm', - 'type' => 'saml20-idp-SSO', - ], - - // If no attributes are requested in the SP metadata, then these will be sent through - 50 => [ - 'class' => 'core:AttributeLimit', - 'default' => true, - 'eduPersonPrincipalName', 'sn', 'givenName', 'mail', - ], - - // Use the uid value to populate the nameid entry - 60 => [ - 'class' => 'saml:AttributeNameID', - 'attribute' => 'uid', - 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient', - ], - - /* - * Search attribute "distinguishedName" for pattern and replaces if found - - 70 => array( - 'class' => 'core:AttributeAlter', - 'pattern' => '/OU=studerende/', - 'replacement' => 'Student', - 'subject' => 'distinguishedName', - '%replace', - ), - */ - - /* - * Consent module is enabled (with no permanent storage, using cookies). - - 90 => array( - 'class' => 'consent:Consent', - 'store' => 'consent:Cookie', - 'focus' => 'yes', - 'checked' => TRUE - ), - */ - - - // If language is set in Consent module it will be added as an attribute. - 99 => 'core:LanguageAdaptor', - ], - /* - * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 - */ - 'authproc.sp' => [ - /* - 10 => array( - 'class' => 'core:AttributeMap', 'removeurnprefix' - ), - */ - - /* - * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => array( - 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ), - */ - /* - * All users will be members of 'users' and 'members' - 61 => array( - 'class' => 'core:AttributeAdd', 'groups' => array('users', 'members') - ), - */ - - // Adopts language from attribute to use in UI - 90 => 'core:LanguageAdaptor', - - ], - - - /* - * This option configures the metadata sources. The metadata sources is given as an array with - * different metadata sources. When searching for metadata, simpleSAMPphp will search through - * the array from start to end. - * - * Each element in the array is an associative array which configures the metadata source. - * The type of the metadata source is given by the 'type' element. For each type we have - * different configuration options. - * - * Flat file metadata handler: - * - 'type': This is always 'flatfile'. - * - 'directory': The directory we will load the metadata files from. The default value for - * this option is the value of the 'metadatadir' configuration option, or - * 'metadata/' if that option is unset. - * - * XML metadata handler: - * This metadata handler parses an XML file with either an EntityDescriptor element or an - * EntitiesDescriptor element. The XML file may be stored locally, or (for debugging) on a remote - * web server. - * The XML hetadata handler defines the following options: - * - 'type': This is always 'xml'. - * - 'file': Path to the XML file with the metadata. - * - 'url': The URL to fetch metadata from. THIS IS ONLY FOR DEBUGGING - THERE IS NO CACHING OF THE RESPONSE. - * - * - * Examples: - * - * This example defines two flatfile sources. One is the default metadata directory, the other - * is a metadata directory with autogenerated metadata files. - * - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'flatfile', 'directory' => 'metadata-generated'), - * ), - * - * This example defines a flatfile source and an XML source. - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'), - * ), - * - * - * Default: - * 'metadata.sources' => array( - * array('type' => 'flatfile') - * ), - */ - 'metadata.sources' => [ - ['type' => 'flatfile'], - ], - - - /* - * Configure the datastore for simpleSAMLphp. - * - * - 'phpsession': Limited datastore, which uses the PHP session. - * - 'memcache': Key-value datastore, based on memcache. - * - 'sql': SQL datastore, using PDO. - * - * The default datastore is 'phpsession'. - * - * (This option replaces the old 'session.handler'-option.) - */ - 'store.type' => 'phpsession', - - - /* - * The DSN the sql datastore should connect to. - * - * See http://www.php.net/manual/en/pdo.drivers.php for the various - * syntaxes. - */ - 'store.sql.dsn' => 'sqlite:/path/to/sqlitedatabase.sq3', - - /* - * The username and password to use when connecting to the database. - */ - 'store.sql.username' => null, - 'store.sql.password' => null, - - /* - * The prefix we should use on our tables. - */ - 'store.sql.prefix' => 'simpleSAMLphp', - - - /* - * Configuration for the MemcacheStore class. This allows you to store - * multiple redudant copies of sessions on different memcache servers. - * - * 'memcache_store.servers' is an array of server groups. Every data - * item will be mirrored in every server group. - * - * Each server group is an array of servers. The data items will be - * load-balanced between all servers in each server group. - * - * Each server is an array of parameters for the server. The following - * options are available: - * - 'hostname': This is the hostname or ip address where the - * memcache server runs. This is the only required option. - * - 'port': This is the port number of the memcache server. If this - * option isn't set, then we will use the 'memcache.default_port' - * ini setting. This is 11211 by default. - * - 'weight': This sets the weight of this server in this server - * group. http://php.net/manual/en/function.Memcache-addServer.php - * contains more information about the weight option. - * - 'timeout': The timeout for this server. By default, the timeout - * is 3 seconds. - * - * Example of redudant configuration with load balancing: - * This configuration makes it possible to lose both servers in the - * a-group or both servers in the b-group without losing any sessions. - * Note that sessions will be lost if one server is lost from both the - * a-group and the b-group. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'mc_a1'), - * array('hostname' => 'mc_a2'), - * ), - * array( - * array('hostname' => 'mc_b1'), - * array('hostname' => 'mc_b2'), - * ), - * ), - * - * Example of simple configuration with only one memcache server, - * running on the same computer as the web server: - * Note that all sessions will be lost if the memcache server crashes. - * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'localhost'), - * ), - * ), - * - */ - 'memcache_store.servers' => [ - [ - ['hostname' => 'localhost'], - ], - ], - - - /* - * This value is the duration data should be stored in memcache. Data - * will be dropped from the memcache servers when this time expires. - * The time will be reset every time the data is written to the - * memcache servers. - * - * This value should always be larger than the 'session.duration' - * option. Not doing this may result in the session being deleted from - * the memcache servers while it is still in use. - * - * Set this value to 0 if you don't want data to expire. - * - * Note: The oldest data will always be deleted if the memcache server - * runs out of storage space. - */ - 'memcache_store.expires' => 36 * (60 * 60), // 36 hours. - - - /* - * Should signing of generated metadata be enabled by default. - * - * Metadata signing can also be enabled for a individual SP or IdP by setting the - * same option in the metadata for the SP or IdP. - */ - 'metadata.sign.enable' => true, - - /* - * The default key & certificate which should be used to sign generated metadata. These - * are files stored in the cert dir. - * These values can be overridden by the options with the same names in the SP or - * IdP metadata. - * - * If these aren't specified here or in the metadata for the SP or IdP, then - * the 'certificate' and 'privatekey' option in the metadata will be used. - * if those aren't set, signing of metadata will fail. - */ - 'metadata.sign.privatekey' => 'ssp-hub-sp3.pem', - 'metadata.sign.privatekey_pass' => null, - 'metadata.sign.certificate' => 'ssp-hub-sp3.crt', - - - /* - * Proxy to use for retrieving URLs. - * - * Example: - * 'proxy' => 'tcp://proxy.example.com:5100' - */ - 'proxy' => null, - - /* - * Array of domains that are allowed when generating links or redirections - * to URLs. simpleSAMLphp will use this option to determine whether to - * to consider a given URL valid or not, but you should always validate - * URLs obtained from the input on your own (i.e. ReturnTo or RelayState - * parameters obtained from the $_REQUEST array). - * - * Set to NULL to disable checking of URLs. - * - * simpleSAMLphp will automatically add your own domain (either by checking - * it dinamically, or by using the domain defined in the 'baseurlpath' - * directive, the latter having precedence) to the list of trusted domains, - * in case this option is NOT set to NULL. In that case, you are explicitly - * telling simpleSAMLphp to verify URLs. - * - * Set to an empty array to disallow ALL redirections or links pointing to - * an external URL other than your own domain. - * - * Example: - * 'trusted.url.domains' => array('sp.example.com', 'app.example.com'), - */ - 'trusted.url.domains' => null, - -]; diff --git a/docker-compose.yml b/docker-compose.yml index b4c6d66c..ce6cc3fd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -261,7 +261,6 @@ services: - ./development/sp-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - - ./development/sp-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/sp-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php # Utilize custom metadata @@ -273,6 +272,7 @@ services: - "8081:80" environment: ADMIN_PASS: "sp1" + IDP_NAME: "NA" SECRET_SALT: "h57fjemb&dn^nsJFGNjweJz1" SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" @@ -286,7 +286,6 @@ services: - ./development/sp2-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - - ./development/sp2-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/sp2-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php # Utilize custom metadata @@ -295,6 +294,7 @@ services: - "8082:80" environment: ADMIN_PASS: "sp2" + IDP_NAME: "NA" SECRET_SALT: "h57fjemb&dn^nsJFGNjweJz2" SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" @@ -308,7 +308,6 @@ services: - ./development/sp3-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - - ./development/sp3-local/config/config.php:/data/vendor/simplesamlphp/simplesamlphp/config/config.php - ./development/sp3-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php # Utilize custom metadata @@ -319,6 +318,7 @@ services: - local.env environment: ADMIN_PASS: sp3 + IDP_NAME: "NA" SECRET_SALT: h57fjemb&dn^nsJFGNjweJz3 SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" From 75a62121c4254fb3e615dba34bbfb11eb6523f11 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Mon, 17 Jun 2024 16:54:39 +0800 Subject: [PATCH 12/85] NameIDPolicy must now be an array [skip ci] --- .../sp-local/config/authsources-pwmanager.php | 10 ++++++++-- development/sp-local/config/authsources.php | 12 +++++++++--- docs/editing_authprocs.md | 7 ++++++- modules/sildisco/src/Auth/Process/AddIdp2NameId.php | 5 ++++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/development/sp-local/config/authsources-pwmanager.php b/development/sp-local/config/authsources-pwmanager.php index 80aee9c9..3b0b4b62 100644 --- a/development/sp-local/config/authsources-pwmanager.php +++ b/development/sp-local/config/authsources-pwmanager.php @@ -15,7 +15,10 @@ 'entityID' => 'http://pwmanager.local:8084', 'idp' => 'http://ssp-idp1.local:8085', 'discoURL' => null, - 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + 'NameIDPolicy' => [ + 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + 'AllowCreate' => true, + ], ], 'mfa-idp-no-port' => [ @@ -23,6 +26,9 @@ 'entityID' => 'http://pwmanager.local', 'idp' => 'http://ssp-idp1.local', 'discoURL' => null, - 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + 'NameIDPolicy' => [ + 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + 'AllowCreate' => true, + ], ], ]; diff --git a/development/sp-local/config/authsources.php b/development/sp-local/config/authsources.php index def226f1..a6d91c06 100644 --- a/development/sp-local/config/authsources.php +++ b/development/sp-local/config/authsources.php @@ -29,8 +29,11 @@ 'discoURL' => null, // Tell the Hub which format to use for the NameID - 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", - + 'NameIDPolicy' => [ + 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + 'AllowCreate' => true, + ], + // Specify what private key to use (such as for decrypting assertions). 'privatekey' => 'ssp-hub-sp1.pem', ], @@ -51,7 +54,10 @@ 'discoURL' => null, // Tell the Hub which format to use for the NameID - 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + 'NameIDPolicy' => [ + 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + 'AllowCreate' => true, + ], // Specify what private key to use (such as for decrypting assertions). 'privatekey' => 'ssp-hub-sp1.pem', diff --git a/docs/editing_authprocs.md b/docs/editing_authprocs.md index 42a62368..88013fa8 100644 --- a/docs/editing_authprocs.md +++ b/docs/editing_authprocs.md @@ -16,7 +16,12 @@ The IdP's metadata needs to include an `'IDPNamespace'` entry with a string valu In order for this to work, the SP needs to include a line in its authsources.php file in the Hub's entry ... -` 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",` +``` + 'NameIDPolicy' => [ + 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + 'AllowCreate' => true, + ], +``` In addition, the IDP's sp-remote metadata stanza for the Hub needs to include ... diff --git a/modules/sildisco/src/Auth/Process/AddIdp2NameId.php b/modules/sildisco/src/Auth/Process/AddIdp2NameId.php index 3516881d..583a5db5 100644 --- a/modules/sildisco/src/Auth/Process/AddIdp2NameId.php +++ b/modules/sildisco/src/Auth/Process/AddIdp2NameId.php @@ -11,7 +11,10 @@ * * Also, for this to work, the SP needs to include a line in its * authsources.php file in the IdP's entry ... - * 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + * 'NameIDPolicy' => [ + * 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + * 'AllowCreate' => true, + * ], * */ class AddIdp2NameId extends \SimpleSAML\Auth\ProcessingFilter { From 908ae9d6f525033c303f93815a1987bb353f3bf0 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Mon, 17 Jun 2024 17:37:22 +0800 Subject: [PATCH 13/85] SimpleSAML Utils now requires instantiation [skip ci] --- development/UserPass.php | 4 ++- modules/expirychecker/public/about2expire.php | 3 ++- modules/expirychecker/public/expired.php | 3 ++- .../src/Auth/Process/ExpiryDate.php | 9 ++++--- modules/mfa/public/prompt-for-mfa.php | 3 ++- modules/mfa/public/send-manager-mfa.php | 3 ++- modules/mfa/src/Auth/Process/Mfa.php | 26 ++++++++++++------- .../src/Auth/Process/ProfileReview.php | 11 +++++--- modules/silauth/src/Auth/Source/SilAuth.php | 3 ++- modules/sildisco/public/metadata.php | 17 +++++++----- modules/sildisco/src/IdPDisco.php | 11 +++++--- 11 files changed, 62 insertions(+), 31 deletions(-) diff --git a/development/UserPass.php b/development/UserPass.php index ebb331d0..aab070cf 100644 --- a/development/UserPass.php +++ b/development/UserPass.php @@ -53,8 +53,10 @@ public function __construct($info, $config) $username = $userpass[0]; $password = $userpass[1]; +// $attrUtils = new \SimpleSAML\Utils\Attributes(); +// // try { -// $attributes = \SimpleSAML\Utils\Attributes::normalizeAttributesArray($attributes); +// $attributes = $attrUtils->normalizeAttributesArray($attributes); // } catch (\Exception $e) { // throw new \Exception('Invalid attributes for user '.$username. // ' in authentication source '.$this->authId.': '.$e->getMessage()); diff --git a/modules/expirychecker/public/about2expire.php b/modules/expirychecker/public/about2expire.php index 9e38ac03..f3cfc0b9 100644 --- a/modules/expirychecker/public/about2expire.php +++ b/modules/expirychecker/public/about2expire.php @@ -48,7 +48,8 @@ } } - HTTP::redirectTrustedURL($passwordChangeUrl, array()); + $httpUtils = new HTTP(); + $httpUtils->redirectTrustedURL($passwordChangeUrl, array()); } $globalConfig = Configuration::getInstance(); diff --git a/modules/expirychecker/public/expired.php b/modules/expirychecker/public/expired.php index c4c0b8c9..33ab22b7 100644 --- a/modules/expirychecker/public/expired.php +++ b/modules/expirychecker/public/expired.php @@ -41,7 +41,8 @@ } } - HTTP::redirectTrustedURL($passwordChangeUrl, array()); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($passwordChangeUrl, array()); } $globalConfig = Configuration::getInstance(); diff --git a/modules/expirychecker/src/Auth/Process/ExpiryDate.php b/modules/expirychecker/src/Auth/Process/ExpiryDate.php index 567b31fa..c6e5967f 100644 --- a/modules/expirychecker/src/Auth/Process/ExpiryDate.php +++ b/modules/expirychecker/src/Auth/Process/ExpiryDate.php @@ -294,7 +294,8 @@ public function redirect2PasswordChange( 'passwordChangeUrl' => $passwordChangeUrl, ])); - HTTP::redirectTrustedURL($passwordChangeUrl, array()); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($passwordChangeUrl, array()); } /** @@ -367,7 +368,8 @@ public function redirectToExpiredPage(array &$state, string $accountName, int $e $id = State::saveState($state, 'expirychecker:expired'); $url = Module::getModuleURL('expirychecker/expired.php'); - HTTP::redirectTrustedURL($url, array('StateId' => $id)); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, array('StateId' => $id)); } /** @@ -403,6 +405,7 @@ protected function redirectToWarningPage(array &$state, string $accountName, int $id = State::saveState($state, 'expirychecker:about2expire'); $url = Module::getModuleURL('expirychecker/about2expire.php'); - HTTP::redirectTrustedURL($url, array('StateId' => $id)); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, array('StateId' => $id)); } } diff --git a/modules/mfa/public/prompt-for-mfa.php b/modules/mfa/public/prompt-for-mfa.php index a736fd69..4502c0bd 100644 --- a/modules/mfa/public/prompt-for-mfa.php +++ b/modules/mfa/public/prompt-for-mfa.php @@ -60,7 +60,8 @@ 'mfaId' => $mfaOption['id'], 'StateId' => $stateId, ]); - HTTP::redirectTrustedURL($moduleUrl); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($moduleUrl); return; } $mfaOption = Mfa::getMfaOptionById($mfaOptions, $mfaId); diff --git a/modules/mfa/public/send-manager-mfa.php b/modules/mfa/public/send-manager-mfa.php index cf510162..dc80da92 100644 --- a/modules/mfa/public/send-manager-mfa.php +++ b/modules/mfa/public/send-manager-mfa.php @@ -29,7 +29,8 @@ $moduleUrl = SimpleSAML\Module::getModuleURL('mfa/prompt-for-mfa.php', [ 'StateId' => $stateId, ]); - HTTP::redirectTrustedURL($moduleUrl); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($moduleUrl); } $globalConfig = Configuration::getInstance(); diff --git a/modules/mfa/src/Auth/Process/Mfa.php b/modules/mfa/src/Auth/Process/Mfa.php index 363df9a5..0b08935c 100644 --- a/modules/mfa/src/Auth/Process/Mfa.php +++ b/modules/mfa/src/Auth/Process/Mfa.php @@ -373,7 +373,8 @@ public static function giveUserNewBackupCodes(array &$state, LoggerInterface $lo $stateId = State::saveState($state, self::STAGE_SENT_TO_NEW_BACKUP_CODES_PAGE); $url = Module::getModuleURL('mfa/new-backup-codes.php'); - HTTP::redirectTrustedURL($url, ['StateId' => $stateId]); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } protected static function hasMfaOptions(array $mfa): bool @@ -547,11 +548,13 @@ public static function validateMfaSubmission( public static function redirectToMfaSetup(array &$state): void { $mfaSetupUrl = $state['mfaSetupUrl']; - + + $httpUtils = new HTTP; + // Tell the MFA-setup URL where the user is ultimately trying to go (if known). $currentDestination = self::getRelayStateUrl($state); if (! empty($currentDestination)) { - $mfaSetupUrl = HTTP::addURLParameters( + $mfaSetupUrl = $httpUtils->addURLParameters( $mfaSetupUrl, ['returnTo' => $currentDestination] ); @@ -564,7 +567,7 @@ public static function redirectToMfaSetup(array &$state): void var_export($mfaSetupUrl, true) )); - HTTP::redirectTrustedURL($mfaSetupUrl); + $httpUtils->redirectTrustedURL($mfaSetupUrl); } /** @@ -634,7 +637,8 @@ protected function redirectToMfaNeededMessage(array &$state, string $employeeId, $stateId = State::saveState($state, self::STAGE_SENT_TO_MFA_NEEDED_MESSAGE); $url = Module::getModuleURL('mfa/must-set-up-mfa.php'); - HTTP::redirectTrustedURL($url, ['StateId' => $stateId]); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } /** @@ -683,7 +687,8 @@ protected function redirectToMfaPrompt(array &$state, string $employeeId, array $mfaOption = self::getMfaOptionToUse($mfaOptions, $userAgent); - HTTP::redirectTrustedURL($url, [ + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, [ 'mfaId' => $mfaOption['id'], 'StateId' => $id, ]); @@ -763,7 +768,8 @@ protected static function redirectToLowOnBackupCodesNag( $stateId = State::saveState($state, self::STAGE_SENT_TO_LOW_ON_BACKUP_CODES_NAG); $url = Module::getModuleURL('mfa/low-on-backup-codes.php'); - HTTP::redirectTrustedURL($url, ['StateId' => $stateId]); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } /** @@ -782,7 +788,8 @@ protected static function redirectToOutOfBackupCodesMessage(array &$state, strin $stateId = State::saveState($state, self::STAGE_SENT_TO_OUT_OF_BACKUP_CODES_MESSAGE); $url = Module::getModuleURL('mfa/out-of-backup-codes.php'); - HTTP::redirectTrustedURL($url, ['StateId' => $stateId]); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } /** @@ -853,7 +860,8 @@ public static function sendManagerCode(array &$state, LoggerInterface $logger): $url = Module::getModuleURL('mfa/prompt-for-mfa.php'); - HTTP::redirectTrustedURL($url, ['mfaId' => $mfaOption['id'], 'StateId' => $stateId]); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, ['mfaId' => $mfaOption['id'], 'StateId' => $stateId]); } /** diff --git a/modules/profilereview/src/Auth/Process/ProfileReview.php b/modules/profilereview/src/Auth/Process/ProfileReview.php index 56ed70f5..9c56080a 100644 --- a/modules/profilereview/src/Auth/Process/ProfileReview.php +++ b/modules/profilereview/src/Auth/Process/ProfileReview.php @@ -192,8 +192,9 @@ public static function redirectToProfile(&$state) $profileUrl = $state['ProfileUrl']; // Tell the profile-setup URL where the user is ultimately trying to go (if known). $currentDestination = self::getRelayStateUrl($state); + $httpUtils = new HTTP; if (! empty($currentDestination)) { - $profileUrl = HTTP::addURLParameters( + $profileUrl = $httpUtils->addURLParameters( $profileUrl, ['returnTo' => $currentDestination] ); @@ -207,7 +208,7 @@ public static function redirectToProfile(&$state) 'profileUrl' => $profileUrl, ])); - HTTP::redirectTrustedURL($profileUrl); + $httpUtils->redirectTrustedURL($profileUrl); } /** @@ -290,7 +291,8 @@ protected function redirectToProfileReview(&$state, $employeeId, $mfaOptions, $m $stateId = State::saveState($state, self::STAGE_SENT_TO_NAG); $url = Module::getModuleURL('profilereview/nag.php'); - HTTP::redirectTrustedURL($url, array('StateId' => $stateId)); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, array('StateId' => $stateId)); } /** @@ -309,7 +311,8 @@ protected function redirectToNag(&$state, $employeeId, $template) $stateId = State::saveState($state, self::STAGE_SENT_TO_NAG); $url = Module::getModuleURL('profilereview/nag.php'); - HTTP::redirectTrustedURL($url, array('StateId' => $stateId)); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, array('StateId' => $stateId)); } public static function hasSeenSplashPageRecently(string $page) diff --git a/modules/silauth/src/Auth/Source/SilAuth.php b/modules/silauth/src/Auth/Source/SilAuth.php index 3f8d05ed..80e8c0be 100644 --- a/modules/silauth/src/Auth/Source/SilAuth.php +++ b/modules/silauth/src/Auth/Source/SilAuth.php @@ -81,7 +81,8 @@ public function authenticate(array &$state): void */ $url = Module::getModuleURL('silauth/loginuserpass.php'); $params = array('AuthState' => $id); - HTTP::redirectTrustedURL($url, $params); + $httpUtils = new HTTP; + $httpUtils->redirectTrustedURL($url, $params); /* The previous function never returns, so this code is never executed. */ assert('FALSE'); diff --git a/modules/sildisco/public/metadata.php b/modules/sildisco/public/metadata.php index a7d339fa..76dcf1a5 100644 --- a/modules/sildisco/public/metadata.php +++ b/modules/sildisco/public/metadata.php @@ -20,8 +20,9 @@ } // check if valid local session exists +//$authUtils = new Auth; //if ($config->getBoolean('admin.protectmetadata', false)) { -// Auth::requireAdmin(); +// $authUtils->requireAdmin(); //} try { @@ -32,8 +33,10 @@ $availableCerts = array(); + $cryptoUtils = new Crypto; + $keys = array(); - $certInfo = Crypto::loadPublicKey($idpmeta, false, 'new_'); + $certInfo = $cryptoUtils->loadPublicKey($idpmeta, false, 'new_'); if ($certInfo !== null) { $availableCerts['new_idp.crt'] = $certInfo; $keys[] = array( @@ -47,7 +50,7 @@ $hasNewCert = false; } - $certInfo = Crypto::loadPublicKey($idpmeta, true); + $certInfo = $cryptoUtils->loadPublicKey($idpmeta, true); $availableCerts['idp.crt'] = $certInfo; $keys[] = array( 'type' => 'X509Certificate', @@ -57,7 +60,7 @@ ); if ($idpmeta->hasValue('https.certificate')) { - $httpsCert = Crypto::loadPublicKey($idpmeta, true, 'https.'); + $httpsCert = $cryptoUtils->loadPublicKey($idpmeta, true, 'https.'); assert('isset($httpsCert["certData"])'); $availableCerts['https.crt'] = $httpsCert; $keys[] = array( @@ -112,11 +115,13 @@ $metaArray['keys'] = $keys; } + $httpUtils = new HTTP; + if ($idpmeta->getBoolean('saml20.sendartifact', false)) { // Artifact sending enabled $metaArray['ArtifactResolutionService'][] = array( 'index' => 0, - 'Location' => HTTP::getBaseURL().'saml2/idp/ArtifactResolutionService.php', + 'Location' => $httpUtils->getBaseURL().'saml2/idp/ArtifactResolutionService.php', 'Binding' => Constants::BINDING_SOAP, ); } @@ -126,7 +131,7 @@ array_unshift($metaArray['SingleSignOnService'], array( 'hoksso:ProtocolBinding' => Constants::BINDING_HTTP_REDIRECT, 'Binding' => Constants::BINDING_HOK_SSO, - 'Location' => HTTP::getBaseURL().'saml2/idp/SSOService.php' + 'Location' => $httpUtils->getBaseURL().'saml2/idp/SSOService.php' )); } diff --git a/modules/sildisco/src/IdPDisco.php b/modules/sildisco/src/IdPDisco.php index c17cff9a..d3b5afb5 100644 --- a/modules/sildisco/src/IdPDisco.php +++ b/modules/sildisco/src/IdPDisco.php @@ -5,6 +5,8 @@ use Sil\SspUtils\AnnouncementUtils; use Sil\SspUtils\DiscoUtils; use Sil\SspUtils\Metadata; +use SimpleSAML\Utils\Arrays; +use SimpleSAML\Utils\HTTP; /** * This class implements a custom IdP discovery service, for use with a ssp hub (proxy) @@ -76,6 +78,8 @@ public function handleRequest(): void $this->start(); list($spEntityId, $idpList) = $this->getSPEntityIDAndReducedIdpList(); + $httpUtils = new HTTP; + if (sizeof($idpList) == 1) { $idp = array_keys($idpList)[0]; $idp = $this->validateIdP($idp); @@ -86,7 +90,7 @@ public function handleRequest(): void $this->returnIdParam . ')' ); - \SimpleSAML\Utils\HTTP::redirectTrustedURL( + $httpUtils->redirectTrustedURL( $this->returnURL, array($this->returnIdParam => $idp) ); @@ -102,8 +106,9 @@ public function handleRequest(): void $rawSPName = $spEntries[$spEntityId][self::$spNameMdKey] ?? null; if ($rawSPName !== null) { + $arrayUtils = new Arrays; $spName = htmlspecialchars($t->getTranslator()->getPreferredTranslation( - \SimpleSAML\Utils\Arrays::arrayize($rawSPName, 'en') + $arrayUtils->arrayize($rawSPName, 'en') )) ; } @@ -112,7 +117,7 @@ public function handleRequest(): void $t->data['returnIDParam'] = $this->returnIdParam; $t->data['entityID'] = $this->spEntityId; $t->data['spName'] = $spName; - $t->data['urlpattern'] = htmlspecialchars(\SimpleSAML\Utils\HTTP::getSelfURLNoQuery()); + $t->data['urlpattern'] = htmlspecialchars($httpUtils->getSelfURLNoQuery()); $t->data['announcement'] = AnnouncementUtils::getAnnouncement(); $t->data['helpCenterUrl'] = $this->config->getValue('helpCenterUrl', ''); From 6931f2e42d121aaaf8a9473099ef866359b5e9f9 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Mon, 17 Jun 2024 17:52:46 +0800 Subject: [PATCH 14/85] use the default name for crt and pem files [skip ci] --- development/sp-local/cert/{ssp-hub-sp1.crt => saml.crt} | 0 development/sp-local/cert/{ssp-hub-sp1.pem => saml.pem} | 0 development/sp-local/config/authsources.php | 4 ++-- development/sp2-local/cert/{ssp-hub-sp2.crt => saml.crt} | 0 development/sp2-local/cert/{ssp-hub-sp2.pem => saml.pem} | 0 development/sp2-local/config/authsources.php | 4 ++-- development/sp3-local/cert/{ssp-hub-sp3.crt => saml.crt} | 0 development/sp3-local/cert/{ssp-hub-sp3.pem => saml.pem} | 0 development/sp3-local/config/authsources.php | 4 ++-- 9 files changed, 6 insertions(+), 6 deletions(-) rename development/sp-local/cert/{ssp-hub-sp1.crt => saml.crt} (100%) rename development/sp-local/cert/{ssp-hub-sp1.pem => saml.pem} (100%) rename development/sp2-local/cert/{ssp-hub-sp2.crt => saml.crt} (100%) rename development/sp2-local/cert/{ssp-hub-sp2.pem => saml.pem} (100%) rename development/sp3-local/cert/{ssp-hub-sp3.crt => saml.crt} (100%) rename development/sp3-local/cert/{ssp-hub-sp3.pem => saml.pem} (100%) diff --git a/development/sp-local/cert/ssp-hub-sp1.crt b/development/sp-local/cert/saml.crt similarity index 100% rename from development/sp-local/cert/ssp-hub-sp1.crt rename to development/sp-local/cert/saml.crt diff --git a/development/sp-local/cert/ssp-hub-sp1.pem b/development/sp-local/cert/saml.pem similarity index 100% rename from development/sp-local/cert/ssp-hub-sp1.pem rename to development/sp-local/cert/saml.pem diff --git a/development/sp-local/config/authsources.php b/development/sp-local/config/authsources.php index def226f1..1e0b9cc9 100644 --- a/development/sp-local/config/authsources.php +++ b/development/sp-local/config/authsources.php @@ -32,7 +32,7 @@ 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", // Specify what private key to use (such as for decrypting assertions). - 'privatekey' => 'ssp-hub-sp1.pem', + 'privatekey' => 'saml.pem', ], 'ssp-hub-custom-port' => [ @@ -54,6 +54,6 @@ 'NameIDPolicy' => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", // Specify what private key to use (such as for decrypting assertions). - 'privatekey' => 'ssp-hub-sp1.pem', + 'privatekey' => 'saml.pem', ], ]; diff --git a/development/sp2-local/cert/ssp-hub-sp2.crt b/development/sp2-local/cert/saml.crt similarity index 100% rename from development/sp2-local/cert/ssp-hub-sp2.crt rename to development/sp2-local/cert/saml.crt diff --git a/development/sp2-local/cert/ssp-hub-sp2.pem b/development/sp2-local/cert/saml.pem similarity index 100% rename from development/sp2-local/cert/ssp-hub-sp2.pem rename to development/sp2-local/cert/saml.pem diff --git a/development/sp2-local/config/authsources.php b/development/sp2-local/config/authsources.php index 60f76215..5f919b06 100644 --- a/development/sp2-local/config/authsources.php +++ b/development/sp2-local/config/authsources.php @@ -29,7 +29,7 @@ 'discoURL' => null, // Specify what private key to use (such as for decrypting assertions). - 'privatekey' => 'ssp-hub-sp2.pem', + 'privatekey' => 'saml.pem', ], 'ssp-hub-custom-port' => [ @@ -48,6 +48,6 @@ 'discoURL' => null, // Specify what private key to use (such as for decrypting assertions). - 'privatekey' => 'ssp-hub-sp2.pem', + 'privatekey' => 'saml.pem', ], ]; diff --git a/development/sp3-local/cert/ssp-hub-sp3.crt b/development/sp3-local/cert/saml.crt similarity index 100% rename from development/sp3-local/cert/ssp-hub-sp3.crt rename to development/sp3-local/cert/saml.crt diff --git a/development/sp3-local/cert/ssp-hub-sp3.pem b/development/sp3-local/cert/saml.pem similarity index 100% rename from development/sp3-local/cert/ssp-hub-sp3.pem rename to development/sp3-local/cert/saml.pem diff --git a/development/sp3-local/config/authsources.php b/development/sp3-local/config/authsources.php index 4559d445..ae2b9f9b 100644 --- a/development/sp3-local/config/authsources.php +++ b/development/sp3-local/config/authsources.php @@ -29,7 +29,7 @@ 'discoURL' => null, // Specify what private key to use (such as for decrypting assertions). - 'privatekey' => 'ssp-hub-sp3.pem', + 'privatekey' => 'saml.pem', ], 'ssp-hub-custom-port' => [ @@ -48,6 +48,6 @@ 'discoURL' => null, // Specify what private key to use (such as for decrypting assertions). - 'privatekey' => 'ssp-hub-sp3.pem', + 'privatekey' => 'saml.pem', ], ]; From b9cc751576b5edca57c6cd3d8b5775a55baae99a Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Tue, 18 Jun 2024 08:44:07 +0800 Subject: [PATCH 15/85] update ssp-utilities and psr3-adapters [skip ci] --- composer.json | 4 ++-- composer.lock | 30 +++++++++++++----------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/composer.json b/composer.json index fbddf88b..e9b88a13 100644 --- a/composer.json +++ b/composer.json @@ -17,9 +17,9 @@ "simplesamlphp/simplesamlphp": "^2.0", "simplesamlphp/composer-module-installer": "^1.0", "rlanvin/php-ip": "^1.0", - "silinternational/ssp-utilities": "dev-develop", + "silinternational/ssp-utilities": "v2.0.0", "silinternational/php-env": "^3.1.0", - "silinternational/psr3-adapters": "dev-develop", + "silinternational/psr3-adapters": "v4.0.0", "silinternational/yii2-json-log-targets": "^2.0", "silinternational/idp-id-broker-php-client": "^4.3", "sinergi/browser-detector": "^6.1", diff --git a/composer.lock b/composer.lock index b59659f6..0029c94e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0f83d8f3f828482ea5f55c186a325c8a", + "content-hash": "a4096531caaadf1c30b8c7600e11a4e1", "packages": [ { "name": "aws/aws-crt-php", @@ -2977,16 +2977,16 @@ }, { "name": "silinternational/psr3-adapters", - "version": "dev-develop", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/silinternational/psr3-adapters.git", - "reference": "3c9bf52795e569ae7b08e5d808cb5e179e6c1efa" + "reference": "80a364235da0ff114c151e3b35eadb117db463cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silinternational/psr3-adapters/zipball/3c9bf52795e569ae7b08e5d808cb5e179e6c1efa", - "reference": "3c9bf52795e569ae7b08e5d808cb5e179e6c1efa", + "url": "https://api.github.com/repos/silinternational/psr3-adapters/zipball/80a364235da0ff114c151e3b35eadb117db463cd", + "reference": "80a364235da0ff114c151e3b35eadb117db463cd", "shasum": "" }, "require": { @@ -3005,7 +3005,6 @@ "simplesamlphp/simplesamlphp": "^2.0", "yiisoft/yii2": "^2.0" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -3026,22 +3025,22 @@ "description": "Various PSR3-compatible logging adapters.", "support": { "issues": "https://github.com/silinternational/psr3-adapters/issues", - "source": "https://github.com/silinternational/psr3-adapters/tree/develop" + "source": "https://github.com/silinternational/psr3-adapters/tree/4.0.0" }, - "time": "2024-06-14T04:45:18+00:00" + "time": "2024-06-18T00:37:01+00:00" }, { "name": "silinternational/ssp-utilities", - "version": "dev-develop", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/silinternational/ssp-utilities.git", - "reference": "d62cbee61a008d80f4ad758b3ec84cbac76f75bb" + "reference": "816a506c5d44e820d9c71372b024c279907dd382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silinternational/ssp-utilities/zipball/d62cbee61a008d80f4ad758b3ec84cbac76f75bb", - "reference": "d62cbee61a008d80f4ad758b3ec84cbac76f75bb", + "url": "https://api.github.com/repos/silinternational/ssp-utilities/zipball/816a506c5d44e820d9c71372b024c279907dd382", + "reference": "816a506c5d44e820d9c71372b024c279907dd382", "shasum": "" }, "require": { @@ -3052,7 +3051,6 @@ "phpunit/phpunit": ">=7.0", "roave/security-advisories": "dev-master" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -3066,9 +3064,9 @@ "description": "SimpleSAMLphp related utility classes", "support": { "issues": "https://github.com/silinternational/ssp-utilities/issues", - "source": "https://github.com/silinternational/ssp-utilities/tree/develop" + "source": "https://github.com/silinternational/ssp-utilities/tree/2.0.0" }, - "time": "2024-06-14T04:45:01+00:00" + "time": "2024-06-15T02:06:26+00:00" }, { "name": "silinternational/yii2-json-log-targets", @@ -8727,8 +8725,6 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "silinternational/ssp-utilities": 20, - "silinternational/psr3-adapters": 20, "roave/security-advisories": 20 }, "prefer-stable": false, From c811a0195041b655c1b60a5da90c5ee8b2b8b539 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Tue, 18 Jun 2024 08:46:21 +0800 Subject: [PATCH 16/85] remove Vagrantfile [skip ci] --- Vagrantfile | 84 ----------------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 Vagrantfile diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index 512d79b6..00000000 --- a/Vagrantfile +++ /dev/null @@ -1,84 +0,0 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# All Vagrant configuration is done below. The "2" in Vagrant.configure -# configures the configuration version (we support older styles for -# backwards compatibility). Please don't change it unless you know what -# you're doing. -Vagrant.configure(2) do |config| - # The most common configuration options are documented and commented below. - # For a complete reference, please see the online documentation at - # https://docs.vagrantup.com. - - # Every Vagrant development environment requires a box. You can search for - # boxes at https://atlas.hashicorp.com/search. - config.vm.box = "ubuntu/trusty64" - - # Create a private network, which allows host-only access to the machine - # using a specific IP. - config.vm.network "private_network", ip: "192.168.62.10" - - # Provider-specific configuration so you can fine-tune various - # backing providers for Vagrant. These expose provider-specific options. - # Example for VirtualBox: - # - config.vm.provider "virtualbox" do |vb| - # Customize the amount of memory on the VM: - vb.memory = "2048" - - # A fix for speed issues with DNS resolution: - # http://serverfault.com/questions/453185/vagrant-virtualbox-dns-10-0-2-3-not-working?rq=1 - vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] - - # Set the timesync threshold to 59 seconds, instead of the default 20 minutes. - # 59 seconds chosen to ensure SimpleSAML never gets too far out of date. - vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 59000] - end - # - # View the documentation for the provider you are using for more - # information on available options. - - # This provisioner runs on the first `vagrant up`. - config.vm.provision "install", type: "shell", inline: <<-SHELL - # Add Docker apt repository - sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D - sudo sh -c 'echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list' - sudo apt-get update -y - # Add NTP so that the LDAP queries don't unexpectedly fail. - sudo apt-get install ntp -y - # Uninstall old lxc-docker - apt-get purge lxc-docker - apt-cache policy docker-engine - # Install docker and dependencies - sudo apt-get install -y linux-image-extra-$(uname -r) - sudo apt-get install -y docker-engine - # Add user vagrant to docker group - sudo groupadd docker - sudo usermod -aG docker vagrant - # Install Docker Compose - curl -L https://github.com/docker/compose/releases/download/1.17.0/docker compose-`uname -s`-`uname -m` > /usr/local/bin/docker compose - chmod +x /usr/local/bin/docker compose - SHELL - - # This provisioner runs on every `vagrant reload' (as well as the first - # `vagrant up`), reinstalling from local directories - config.vm.provision "recompose", type: "shell", - run: "always", inline: <<-SHELL - - # Run docker compose (which will update preloaded images, and - # pulls any images not preloaded) - cd /vagrant - - # Set necessary environment variables for shell access. - export COMPOSER_CACHE_DIR=/tmp - export DOCKER_UIDGID="$(id -u):$(id -g)" - - # Set up necessary env. vars to automatically be present each time. - cat << 'EOF' >> /home/vagrant/.bashrc -export COMPOSER_CACHE_DIR=/tmp -export DOCKER_UIDGID="$(id -u):$(id -g)" -EOF - - SHELL - -end From 7ad6978a0d27388c84bd094d0a0e543fc182d9bb Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:01:43 +0800 Subject: [PATCH 17/85] use parens to instantiate a class [skip ci] --- modules/expirychecker/public/expired.php | 2 +- .../expirychecker/src/Auth/Process/ExpiryDate.php | 6 +++--- modules/mfa/public/prompt-for-mfa.php | 2 +- modules/mfa/public/send-manager-mfa.php | 2 +- modules/mfa/src/Auth/Process/Mfa.php | 14 +++++++------- .../src/Auth/Process/ProfileReview.php | 6 +++--- modules/silauth/src/Auth/Source/SilAuth.php | 2 +- modules/sildisco/public/metadata.php | 6 +++--- modules/sildisco/src/IdPDisco.php | 4 ++-- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/modules/expirychecker/public/expired.php b/modules/expirychecker/public/expired.php index 33ab22b7..bb60eb41 100644 --- a/modules/expirychecker/public/expired.php +++ b/modules/expirychecker/public/expired.php @@ -41,7 +41,7 @@ } } - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($passwordChangeUrl, array()); } diff --git a/modules/expirychecker/src/Auth/Process/ExpiryDate.php b/modules/expirychecker/src/Auth/Process/ExpiryDate.php index c6e5967f..13bbcf88 100644 --- a/modules/expirychecker/src/Auth/Process/ExpiryDate.php +++ b/modules/expirychecker/src/Auth/Process/ExpiryDate.php @@ -294,7 +294,7 @@ public function redirect2PasswordChange( 'passwordChangeUrl' => $passwordChangeUrl, ])); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($passwordChangeUrl, array()); } @@ -368,7 +368,7 @@ public function redirectToExpiredPage(array &$state, string $accountName, int $e $id = State::saveState($state, 'expirychecker:expired'); $url = Module::getModuleURL('expirychecker/expired.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, array('StateId' => $id)); } @@ -405,7 +405,7 @@ protected function redirectToWarningPage(array &$state, string $accountName, int $id = State::saveState($state, 'expirychecker:about2expire'); $url = Module::getModuleURL('expirychecker/about2expire.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, array('StateId' => $id)); } } diff --git a/modules/mfa/public/prompt-for-mfa.php b/modules/mfa/public/prompt-for-mfa.php index 4502c0bd..53b8bd32 100644 --- a/modules/mfa/public/prompt-for-mfa.php +++ b/modules/mfa/public/prompt-for-mfa.php @@ -60,7 +60,7 @@ 'mfaId' => $mfaOption['id'], 'StateId' => $stateId, ]); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($moduleUrl); return; } diff --git a/modules/mfa/public/send-manager-mfa.php b/modules/mfa/public/send-manager-mfa.php index dc80da92..2bc082b6 100644 --- a/modules/mfa/public/send-manager-mfa.php +++ b/modules/mfa/public/send-manager-mfa.php @@ -29,7 +29,7 @@ $moduleUrl = SimpleSAML\Module::getModuleURL('mfa/prompt-for-mfa.php', [ 'StateId' => $stateId, ]); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($moduleUrl); } diff --git a/modules/mfa/src/Auth/Process/Mfa.php b/modules/mfa/src/Auth/Process/Mfa.php index 0b08935c..8e6415ac 100644 --- a/modules/mfa/src/Auth/Process/Mfa.php +++ b/modules/mfa/src/Auth/Process/Mfa.php @@ -373,7 +373,7 @@ public static function giveUserNewBackupCodes(array &$state, LoggerInterface $lo $stateId = State::saveState($state, self::STAGE_SENT_TO_NEW_BACKUP_CODES_PAGE); $url = Module::getModuleURL('mfa/new-backup-codes.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } @@ -549,7 +549,7 @@ public static function redirectToMfaSetup(array &$state): void { $mfaSetupUrl = $state['mfaSetupUrl']; - $httpUtils = new HTTP; + $httpUtils = new HTTP(); // Tell the MFA-setup URL where the user is ultimately trying to go (if known). $currentDestination = self::getRelayStateUrl($state); @@ -637,7 +637,7 @@ protected function redirectToMfaNeededMessage(array &$state, string $employeeId, $stateId = State::saveState($state, self::STAGE_SENT_TO_MFA_NEEDED_MESSAGE); $url = Module::getModuleURL('mfa/must-set-up-mfa.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } @@ -687,7 +687,7 @@ protected function redirectToMfaPrompt(array &$state, string $employeeId, array $mfaOption = self::getMfaOptionToUse($mfaOptions, $userAgent); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, [ 'mfaId' => $mfaOption['id'], 'StateId' => $id, @@ -768,7 +768,7 @@ protected static function redirectToLowOnBackupCodesNag( $stateId = State::saveState($state, self::STAGE_SENT_TO_LOW_ON_BACKUP_CODES_NAG); $url = Module::getModuleURL('mfa/low-on-backup-codes.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } @@ -788,7 +788,7 @@ protected static function redirectToOutOfBackupCodesMessage(array &$state, strin $stateId = State::saveState($state, self::STAGE_SENT_TO_OUT_OF_BACKUP_CODES_MESSAGE); $url = Module::getModuleURL('mfa/out-of-backup-codes.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, ['StateId' => $stateId]); } @@ -860,7 +860,7 @@ public static function sendManagerCode(array &$state, LoggerInterface $logger): $url = Module::getModuleURL('mfa/prompt-for-mfa.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, ['mfaId' => $mfaOption['id'], 'StateId' => $stateId]); } diff --git a/modules/profilereview/src/Auth/Process/ProfileReview.php b/modules/profilereview/src/Auth/Process/ProfileReview.php index 9c56080a..c26b1173 100644 --- a/modules/profilereview/src/Auth/Process/ProfileReview.php +++ b/modules/profilereview/src/Auth/Process/ProfileReview.php @@ -192,7 +192,7 @@ public static function redirectToProfile(&$state) $profileUrl = $state['ProfileUrl']; // Tell the profile-setup URL where the user is ultimately trying to go (if known). $currentDestination = self::getRelayStateUrl($state); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); if (! empty($currentDestination)) { $profileUrl = $httpUtils->addURLParameters( $profileUrl, @@ -291,7 +291,7 @@ protected function redirectToProfileReview(&$state, $employeeId, $mfaOptions, $m $stateId = State::saveState($state, self::STAGE_SENT_TO_NAG); $url = Module::getModuleURL('profilereview/nag.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, array('StateId' => $stateId)); } @@ -311,7 +311,7 @@ protected function redirectToNag(&$state, $employeeId, $template) $stateId = State::saveState($state, self::STAGE_SENT_TO_NAG); $url = Module::getModuleURL('profilereview/nag.php'); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, array('StateId' => $stateId)); } diff --git a/modules/silauth/src/Auth/Source/SilAuth.php b/modules/silauth/src/Auth/Source/SilAuth.php index 80e8c0be..5147ee6b 100644 --- a/modules/silauth/src/Auth/Source/SilAuth.php +++ b/modules/silauth/src/Auth/Source/SilAuth.php @@ -81,7 +81,7 @@ public function authenticate(array &$state): void */ $url = Module::getModuleURL('silauth/loginuserpass.php'); $params = array('AuthState' => $id); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); $httpUtils->redirectTrustedURL($url, $params); /* The previous function never returns, so this code is never executed. */ diff --git a/modules/sildisco/public/metadata.php b/modules/sildisco/public/metadata.php index 76dcf1a5..097242ec 100644 --- a/modules/sildisco/public/metadata.php +++ b/modules/sildisco/public/metadata.php @@ -20,7 +20,7 @@ } // check if valid local session exists -//$authUtils = new Auth; +//$authUtils = new Auth(); //if ($config->getBoolean('admin.protectmetadata', false)) { // $authUtils->requireAdmin(); //} @@ -33,7 +33,7 @@ $availableCerts = array(); - $cryptoUtils = new Crypto; + $cryptoUtils = new Crypto(); $keys = array(); $certInfo = $cryptoUtils->loadPublicKey($idpmeta, false, 'new_'); @@ -115,7 +115,7 @@ $metaArray['keys'] = $keys; } - $httpUtils = new HTTP; + $httpUtils = new HTTP(); if ($idpmeta->getBoolean('saml20.sendartifact', false)) { // Artifact sending enabled diff --git a/modules/sildisco/src/IdPDisco.php b/modules/sildisco/src/IdPDisco.php index d3b5afb5..18e78600 100644 --- a/modules/sildisco/src/IdPDisco.php +++ b/modules/sildisco/src/IdPDisco.php @@ -78,7 +78,7 @@ public function handleRequest(): void $this->start(); list($spEntityId, $idpList) = $this->getSPEntityIDAndReducedIdpList(); - $httpUtils = new HTTP; + $httpUtils = new HTTP(); if (sizeof($idpList) == 1) { $idp = array_keys($idpList)[0]; @@ -106,7 +106,7 @@ public function handleRequest(): void $rawSPName = $spEntries[$spEntityId][self::$spNameMdKey] ?? null; if ($rawSPName !== null) { - $arrayUtils = new Arrays; + $arrayUtils = new Arrays(); $spName = htmlspecialchars($t->getTranslator()->getPreferredTranslation( $arrayUtils->arrayize($rawSPName, 'en') )) ; From a8d2d52c97673477c986f4a223f7dd86f12dbedc Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:54:10 +0800 Subject: [PATCH 18/85] remove ADMIN_PROTECT_INDEX_PAGE as it's no longer available [skip ci] --- actions-services.yml | 5 ----- docker-compose.yml | 5 ----- local.env.dist | 1 - 3 files changed, 11 deletions(-) diff --git a/actions-services.yml b/actions-services.yml index 43b28976..20e53aa8 100644 --- a/actions-services.yml +++ b/actions-services.yml @@ -69,7 +69,6 @@ services: SECRET_SALT: "not-secret-h57fjemb&dn^nsJFGNjweJ" IDP_NAME: "Hub" SECURE_COOKIE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" SHOW_SAML_ERRORS: "true" THEME_COLOR_SCHEME: "orange-light_blue" HUB_MODE: "true" @@ -190,7 +189,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" ssp-sp2.local: build: . @@ -211,7 +209,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" ssp-sp3.local: build: . @@ -232,7 +229,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" pwmanager.local: @@ -253,7 +249,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" # the broker and brokerDb containers are used by the silauth module broker: diff --git a/docker-compose.yml b/docker-compose.yml index ce6cc3fd..a7bcd751 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -123,7 +123,6 @@ services: SECRET_SALT: "h57fjemb&dn^nsJFGNjweJ" IDP_NAME: "Hub" SECURE_COOKIE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" SHOW_SAML_ERRORS: "true" THEME_COLOR_SCHEME: "orange-light_blue" HUB_MODE: "true" @@ -277,7 +276,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" ssp-sp2.local: build: . @@ -299,7 +297,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" ssp-sp3.local: build: . @@ -323,7 +320,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" pwmanager.local: image: silintl/ssp-base:develop @@ -345,7 +341,6 @@ services: SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" - ADMIN_PROTECT_INDEX_PAGE: "false" # the broker and brokerDb containers are used by the silauth module broker: diff --git a/local.env.dist b/local.env.dist index 2507b067..c09c0e96 100644 --- a/local.env.dist +++ b/local.env.dist @@ -6,7 +6,6 @@ SECRET_SALT= # These are Optional ADMIN_EMAIL= ADMIN_NAME= -ADMIN_PROTECT_INDEX_PAGE= ANALYTICS_ID= BASE_URL_PATH= COMPOSER_ALLOW_SUPERUSER=1 From 92f508df230c385c9bb4e8daccff95d4cbf48124 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:47:03 +0800 Subject: [PATCH 19/85] use ssp-base 9.3.0 (SimpleSAMLphp 1.19) for test SPs [skip ci] Since the `admin.protectindexpage` (`ADMIN_PROTECT_INDEX_PAGE`) is no longer supported in SSP 2, it may be easiest to just leave the test SPs on version 1.19. This is fine because we don't use ssp-base in non-Hub SP implementations. --- docker-compose.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a7bcd751..5c5900af 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -254,7 +254,7 @@ services: IDP_NAME: "IdP3" ssp-sp1.local: - build: . + image: silintl/ssp-base:9.3.0 volumes: # Utilize custom certs - ./development/sp-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert @@ -270,15 +270,17 @@ services: ports: - "8081:80" environment: + ADMIN_EMAIL: "john_doe@there.com" ADMIN_PASS: "sp1" IDP_NAME: "NA" SECRET_SALT: "h57fjemb&dn^nsJFGNjweJz1" SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" + ADMIN_PROTECT_INDEX_PAGE: "false" ssp-sp2.local: - build: . + image: silintl/ssp-base:9.3.0 volumes: # Utilize custom certs - ./development/sp2-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert @@ -291,15 +293,17 @@ services: ports: - "8082:80" environment: + ADMIN_EMAIL: "john_doe@there.com" ADMIN_PASS: "sp2" IDP_NAME: "NA" SECRET_SALT: "h57fjemb&dn^nsJFGNjweJz2" SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" + ADMIN_PROTECT_INDEX_PAGE: "false" ssp-sp3.local: - build: . + image: silintl/ssp-base:9.3.0 volumes: # Utilize custom certs - ./development/sp3-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert @@ -314,15 +318,17 @@ services: env_file: - local.env environment: + ADMIN_EMAIL: "john_doe@there.com" ADMIN_PASS: sp3 IDP_NAME: "NA" SECRET_SALT: h57fjemb&dn^nsJFGNjweJz3 SECURE_COOKIE: "false" SHOW_SAML_ERRORS: "true" SAML20_IDP_ENABLE: "false" + ADMIN_PROTECT_INDEX_PAGE: "false" pwmanager.local: - image: silintl/ssp-base:develop + image: silintl/ssp-base:9.3.0 volumes: # Utilize custom certs - ./development/sp-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert From d290c543fca9921fe17ec8a105b7fa2cb4fa5312 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:57:48 +0800 Subject: [PATCH 20/85] convert selectidp-links.php to twig template --- docker-compose.yml | 6 +- features/bootstrap/FeatureContext.php | 2 +- .../locales/en/LC_MESSAGES/material.po | 63 +++++++ .../locales/es/LC_MESSAGES/material.po | 63 +++++++ .../locales/fr/LC_MESSAGES/material.po | 63 +++++++ .../locales/ko/LC_MESSAGES/material.po | 63 +++++++ .../themes/material/default/announcement.twig | 5 + .../themes/material/default/footer.twig | 3 + .../themes/material/default/header.twig | 26 +++ .../material/default/selectidp-links.php | 168 ------------------ .../material/default/selectidp-links.twig | 157 ++++++++++++++++ modules/sildisco/src/IdPDisco.php | 18 +- 12 files changed, 464 insertions(+), 173 deletions(-) create mode 100644 modules/material/locales/en/LC_MESSAGES/material.po create mode 100644 modules/material/locales/es/LC_MESSAGES/material.po create mode 100644 modules/material/locales/fr/LC_MESSAGES/material.po create mode 100644 modules/material/locales/ko/LC_MESSAGES/material.po create mode 100644 modules/material/themes/material/default/announcement.twig create mode 100644 modules/material/themes/material/default/footer.twig create mode 100644 modules/material/themes/material/default/header.twig delete mode 100644 modules/material/themes/material/default/selectidp-links.php create mode 100644 modules/material/themes/material/default/selectidp-links.twig diff --git a/docker-compose.yml b/docker-compose.yml index 5c5900af..fcd3fc7b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -126,6 +126,7 @@ services: SHOW_SAML_ERRORS: "true" THEME_COLOR_SCHEME: "orange-light_blue" HUB_MODE: "true" + HELP_CENTER_URL: "https://example.org/help" ssp-idp1.local: # using a database session store type ("sql") build: . @@ -133,7 +134,7 @@ services: - db volumes: # Utilize custom certs - - ./development/idp-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert + - ./development/idp-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - ./development/idp-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php @@ -187,12 +188,13 @@ services: MYSQL_USER: "silauth" MYSQL_PASSWORD: "silauth" BASE_URL_PATH: "http://ssp-idp1.local/" # change this to "http://ssp-idp1.local:8085" for manual browser testing + HELP_CENTER_URL: "https://example.org/help" ssp-idp2.local: build: . volumes: # Utilize custom certs - - ./development/idp2-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert + - ./development/idp2-local/cert:/data/vendor/simplesamlphp/simplesamlphp/cert # Utilize custom configs - ./development/idp2-local/config/authsources.php:/data/vendor/simplesamlphp/simplesamlphp/config/authsources.php diff --git a/features/bootstrap/FeatureContext.php b/features/bootstrap/FeatureContext.php index 2734d304..80a5a45d 100644 --- a/features/bootstrap/FeatureContext.php +++ b/features/bootstrap/FeatureContext.php @@ -78,7 +78,7 @@ public function iGoToTheHubsDiscoveryPage() { $this->visit(self::HUB_DISCO_URL); } - + /** * @Then I should see our material theme */ diff --git a/modules/material/locales/en/LC_MESSAGES/material.po b/modules/material/locales/en/LC_MESSAGES/material.po new file mode 100644 index 00000000..d388a34d --- /dev/null +++ b/modules/material/locales/en/LC_MESSAGES/material.po @@ -0,0 +1,63 @@ + +msgid "{about2expire:title}" +msgstr "Expiring password" + +msgid "{about2expire:header}" +msgstr "Password expiring soon" + +msgid "{about2expire:expiring_in_a_day}" +msgstr "Your password will expire in one day." + +msgid "{about2expire:expiring_soon}" +msgstr "Your password will expire in %daysLeft% days." + +msgid "{about2expire:change_now}" +msgstr "Would you like to change it now?" + +msgid "{about2expire:button_change}" +msgstr "Yes" + +msgid "{about2expire:button_continue}" +msgstr "Later" + +msgid "{error:title}" +msgstr "Error" + +msgid "{error:header}" +msgstr "Error" + +msgid "{error:message}" +msgstr "An error occurred, please contact your help desk for further assistance." + +msgid "{expired:title}" +msgstr "Expired password" + +msgid "{expired:header}" +msgstr "Password expired" + +msgid "{expired:expired}" +msgstr "Your password has expired and must be changed before continuing." + +msgid "{expired:button_change}" +msgstr "Change" + +msgid "{footer:copyright}" +msgstr "Unauthorized use of this site is prohibited and may be subjected to civil and criminal prosecution." + +msgid "{selectidp-links:title}" +msgstr "Choose an identity account" + +msgid "{selectidp-links:header}" +msgstr "Choose an identity account" + +msgid "{selectidp-links:header-for-sp}" +msgstr "Choose an identity account to continue to %spName%" + +msgid "{selectidp-links:enabled}" +msgstr "Login with your %idpName% identity account" + +msgid "{selectidp-links:disabled}" +msgstr "%idpName% coming soon" + +msgid "{selectidp-links:help}" +msgstr "Help" diff --git a/modules/material/locales/es/LC_MESSAGES/material.po b/modules/material/locales/es/LC_MESSAGES/material.po new file mode 100644 index 00000000..fe353d52 --- /dev/null +++ b/modules/material/locales/es/LC_MESSAGES/material.po @@ -0,0 +1,63 @@ + +msgid "{about2expire:title}" +msgstr "Contraseña vencida" + +msgid "{about2expire:header}" +msgstr "Contraseña caducada pronto" + +msgid "{about2expire:expiring_in_a_day}" +msgstr "Su contraseña caducará en un día." + +msgid "{about2expire:expiring_soon}" +msgstr "Su contraseña caducará en {daysLeft} días." + +msgid "{about2expire:change_now}" +msgstr "¿Quieres cambiarlo ahora?" + +msgid "{about2expire:button_change}" +msgstr "Sí" + +msgid "{about2expire:button_continue}" +msgstr "Después" + +msgid "{error:title}" +msgstr "Error" + +msgid "{error:header}" +msgstr "Error" + +msgid "{error:message}" +msgstr "Se ha producido un error, póngase en contacto con su asistencia técnica para obtener más ayuda." + +msgid "{expired:title}" +msgstr "Contraseña caducada" + +msgid "{expired:header}" +msgstr "La contraseña expiró" + +msgid "{expired:expired}" +msgstr "Su contraseña ha caducado y debe cambiarse antes de continuar." + +msgid "{expired:button_change}" +msgstr "Cambiar" + +msgid "{footer:copyright}" +msgstr "El uso no autorizado de este sitio está prohibido y puede ser sometido a procesamiento civil y penal." + +msgid "{selectidp-links:title}" +msgstr "Elige una cuenta de identidad" + +msgid "{selectidp-links:header}" +msgstr "Elige una cuenta de identidad" + +msgid "{selectidp-links:header-for-sp}" +msgstr "Elija una cuenta de identidad para continuar en %spName%" + +msgid "{selectidp-links:enabled}" +msgstr "Inicie sesión con su cuenta de identidad %idpName%" + +msgid "{selectidp-links:disabled}" +msgstr "%idpName% próximamente" + +msgid "{selectidp-links:help}" +msgstr "Ayuda" diff --git a/modules/material/locales/fr/LC_MESSAGES/material.po b/modules/material/locales/fr/LC_MESSAGES/material.po new file mode 100644 index 00000000..5a1d423d --- /dev/null +++ b/modules/material/locales/fr/LC_MESSAGES/material.po @@ -0,0 +1,63 @@ + +msgid "{about2expire:title}" +msgstr "Mot de passe expiré" + +msgid "{about2expire:header}" +msgstr "Mot de passe expire bientôt" + +msgid "{about2expire:expiring_in_a_day}" +msgstr "Votre mot de passe expirera en un jour." + +msgid "{about2expire:expiring_soon}" +msgstr "Votre mot de passe expirera en {daysLeft} jours." + +msgid "{about2expire:change_now}" +msgstr "Voulez-vous le changer maintenant?" + +msgid "{about2expire:button_change}" +msgstr "Oui" + +msgid "{about2expire:button_continue}" +msgstr "Plus tard" + +msgid "{error:title}" +msgstr "Erreur" + +msgid "{error:header}" +msgstr "Erreur" + +msgid "{error:message}" +msgstr "Une erreur s'est produite, s'il vous plaît contacter votre service d'assistance pour plus d'assistance." + +msgid "{expired:title}" +msgstr "Mot de passe expiré" + +msgid "{expired:header}" +msgstr "Mot de passe expiré" + +msgid "{expired:expired}" +msgstr "Votre mot de passe a expiré et doit être modifié avant de continuer." + +msgid "{expired:button_change}" +msgstr "Changer" + +msgid "{footer:copyright}" +msgstr "L'utilisation non autorisée de ce site est interdite et peut faire l'objet de poursuites civiles et pénales." + +msgid "{selectidp-links:title}" +msgstr "Choisissez un compte d'identité" + +msgid "{selectidp-links:header}" +msgstr "Choisissez un compte d'identité" + +msgid "{selectidp-links:header-for-sp}" +msgstr "Choisissez un compte d'identité pour continuer vers %spName%" + +msgid "{selectidp-links:enabled}" +msgstr "Connectez-vous avec votre compte d'identité %idpName%" + +msgid "{selectidp-links:disabled}" +msgstr "%idpName% à venir" + +msgid "{selectidp-links:help}" +msgstr "Aidez-moi" diff --git a/modules/material/locales/ko/LC_MESSAGES/material.po b/modules/material/locales/ko/LC_MESSAGES/material.po new file mode 100644 index 00000000..0405ac2f --- /dev/null +++ b/modules/material/locales/ko/LC_MESSAGES/material.po @@ -0,0 +1,63 @@ + +msgid "{about2expire:title}" +msgstr "만료 된 암호" + +msgid "{about2expire:header}" +msgstr "곧 만료되는 암호" + +msgid "{about2expire:expiring_in_a_day}" +msgstr "암호는 하루 만료됩니다." + +msgid "{about2expire:expiring_soon}" +msgstr "비밀번호는 {daysLeft} 일 후에 만료됩니다." + +msgid "{about2expire:change_now}" +msgstr "지금 변경 하시겠습니까?" + +msgid "{about2expire:button_change}" +msgstr "예" + +msgid "{about2expire:button_continue}" +msgstr "후에" + +msgid "{error:title}" +msgstr "오류" + +msgid "{error:header}" +msgstr "오류" + +msgid "{error:message}" +msgstr "오류가 발생했습니다. 도움을 받으려면 헬프 데스크에 문의하십시오." + +msgid "{expired:title}" +msgstr "만료 된 암호" + +msgid "{expired:header}" +msgstr "암호가 만료되었습니다." + +msgid "{expired:expired}" +msgstr "비밀번호가 만료되었으므로 계속하기 전에 비밀번호를 변경해야합니다." + +msgid "{expired:button_change}" +msgstr "바꾸다" + +msgid "{footer:copyright}" +msgstr "이 사이트의 무단 사용은 금지되어 있으며 민사 및 형사 고발의 대상이 될 수 있습니다." + +msgid "{selectidp-links:title}" +msgstr "ID 계정 선택" + +msgid "{selectidp-links:header}" +msgstr "ID 계정 선택" + +msgid "{selectidp-links:header-for-sp}" +msgstr "%spName%을 계속 진행하려면 신원 계정을 선택하십시오." + +msgid "{selectidp-links:enabled}" +msgstr "%idpName% 신원 계정으로 로그인하십시오." + +msgid "{selectidp-links:disabled}" +msgstr "%idpName% 곧 제공됨" + +msgid "{selectidp-links:help}" +msgstr "도움" diff --git a/modules/material/themes/material/default/announcement.twig b/modules/material/themes/material/default/announcement.twig new file mode 100644 index 00000000..acdd8f23 --- /dev/null +++ b/modules/material/themes/material/default/announcement.twig @@ -0,0 +1,5 @@ +{% if not announcement is empty %} +
+ {{ announcement|raw }} +
+{% endif %} diff --git a/modules/material/themes/material/default/footer.twig b/modules/material/themes/material/default/footer.twig new file mode 100644 index 00000000..4a61ac11 --- /dev/null +++ b/modules/material/themes/material/default/footer.twig @@ -0,0 +1,3 @@ +
+ {{ '{footer:copyright}'|trans }} +
diff --git a/modules/material/themes/material/default/header.twig b/modules/material/themes/material/default/header.twig new file mode 100644 index 00000000..c26a7e16 --- /dev/null +++ b/modules/material/themes/material/default/header.twig @@ -0,0 +1,26 @@ + + + + + + + +{% if not (analyticsTrackingId ?? null) is empty %} + + + +{% endif %} + +{# FIXME: #} + + + + + + diff --git a/modules/material/themes/material/default/selectidp-links.php b/modules/material/themes/material/default/selectidp-links.php deleted file mode 100644 index 44a3d00b..00000000 --- a/modules/material/themes/material/default/selectidp-links.php +++ /dev/null @@ -1,168 +0,0 @@ - - - - <?= $this->t('{material:selectidp:title}') ?> - - - - - - - -
-
-
- - data['spName'] ?? null; - if (empty($spName)) { - echo $this->t('{material:selectidp:header}'); - } else { - echo htmlentities($this->t('{material:selectidp:header-for-sp}', ['{spName}' => $spName])); - } - ?> - - -
- - data['helpCenterUrl'])): ?> - - -
-
- -
- - -
- - - - - data['idplist']['dummy']); - - $enabledIdps = []; - $disabledIdps = []; - foreach ($this->data['idplist'] as $idp) { - $idp['enabled'] === true ? $enabledIdps[] = $idp - : $disabledIdps[] = $idp; - } - - foreach ($enabledIdps as $idp) { - $name = htmlentities($this->t($idp['name'])); - $idpId = htmlentities($idp['entityid']); - $hoverText = $this->t('{material:selectidp:enabled}', ['{idpName}' => $name]); - ?> -
-
- -
-
- - - t($idp['name'])); - $idpId = htmlentities($idp['entityid']); - $hoverText = $this->t('{material:selectidp:disabled}', ['{idpName}' => $name]); - ?> -
-
-
-
- -
- ': htmlentities($idp['logoCaption']) ?> -
-
-
- -
-
- - - -
- - - diff --git a/modules/material/themes/material/default/selectidp-links.twig b/modules/material/themes/material/default/selectidp-links.twig new file mode 100644 index 00000000..c350fa4f --- /dev/null +++ b/modules/material/themes/material/default/selectidp-links.twig @@ -0,0 +1,157 @@ + + + + {{ '{selectidp-links:title}'|trans }} + + {% include 'header.twig' %} + + + + +
+
+
+ + {% if spName is empty %} + {{ '{selectidp-links:header}'|trans }} + {% else %} + {{ '{selectidp-links:header-for-sp}'|trans({'%spName%': spName|e}) }} + {% endif %} + + +
+ + {% if not helpCenterUrl is empty %} + + {% endif %} +
+
+ +
+ {% include 'announcement.twig' %} + +
+ + + + + {% for idp in enabledIdps %} +
+
+ +
+
+ {% endfor %} + + {% for idp in disabledIdps %} +
+
+
+
+ +
+ + {{ idp.logoCaption is empty ? '
' : idp.logoCaption|e }} +
+
+
+
+ {% endfor %} +
+
+ + + + {% include 'footer.twig' %} +
+ + + diff --git a/modules/sildisco/src/IdPDisco.php b/modules/sildisco/src/IdPDisco.php index c17cff9a..2541877e 100644 --- a/modules/sildisco/src/IdPDisco.php +++ b/modules/sildisco/src/IdPDisco.php @@ -96,7 +96,7 @@ public function handleRequest(): void // Get the SP's name $spEntries = Metadata::getSpMetadataEntries($this->getMetadataPath()); - $t = new \SimpleSAML\XHTML\Template($this->config, 'selectidp-links.php', 'disco'); + $t = new \SimpleSAML\XHTML\Template($this->config, 'selectidp-links', 'disco'); $spName = null; @@ -107,7 +107,21 @@ public function handleRequest(): void )) ; } - $t->data['idplist'] = $idpList; + // in order to bypass some built-in simplesaml behavior, an extra idp + // might've been added. It's not meant to be displayed. + unset($idpList['dummy']); + + $enabledIdps = []; + foreach ($idpList as $idp) { + if ($idp['enabled'] === true) { + $enabledIdps[] = $idp; + } else { + $disabledIdps[] = $idp; + } + } + + $t->data['enabledIdps'] = $enabledIdps; + $t->data['disabledIdps'] = $disabledIdps; $t->data['return'] = $this->returnURL; $t->data['returnIDParam'] = $this->returnIdParam; $t->data['entityID'] = $this->spEntityId; From bcd5977ae088fba1ec113d65c277e25b79647382 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Wed, 19 Jun 2024 11:22:02 +0800 Subject: [PATCH 21/85] fix bug in enable-exampleauth.sh regular expression --- development/enable-exampleauth.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/development/enable-exampleauth.sh b/development/enable-exampleauth.sh index df47b6c9..a14ba725 100755 --- a/development/enable-exampleauth.sh +++ b/development/enable-exampleauth.sh @@ -1,3 +1,3 @@ #!/usr/bin/env sh -sed -i 's@^\( *'\''module\.enable'\'' => \[\)@\1'\''\n exampleauth'\'' => true,@' vendor/simplesamlphp/simplesamlphp/config/config.php +sed -i 's@^\( *'\''module\.enable'\'' => \[\)@\1\n '\''exampleauth'\'' => true,@' /data/vendor/simplesamlphp/simplesamlphp/config/config.php From 185527e81d99e202b3b41a8034e0e45ae4e21820 Mon Sep 17 00:00:00 2001 From: briskt <3172830+briskt@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:50:50 +0800 Subject: [PATCH 22/85] convert selectidp-links.php template to Twig --- .editorconfig | 15 +++++++++++++++ .../themes/material/default/selectidp-links.twig | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..5d8d77f6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +trim_trailing_whitespace = true + +[*.php] +charset = utf-8 +indent_size = 4 + +[*.twig] +charset = utf-8 +indent_size = 2 diff --git a/modules/material/themes/material/default/selectidp-links.twig b/modules/material/themes/material/default/selectidp-links.twig index c350fa4f..4fcf59d7 100644 --- a/modules/material/themes/material/default/selectidp-links.twig +++ b/modules/material/themes/material/default/selectidp-links.twig @@ -61,7 +61,7 @@ title="{{ '{selectidp-links:enabled}'|trans({'%idpName%': idp.name|e}) }}" >
-
{% endfor %} - - {% for idp in disabledIdps %} -
-
-
-
- -
- - {{ idp.logoCaption is empty ? '
' : idp.logoCaption|e }} -
-
-
-
- {% endfor %} - - {% include 'footer.twig' %}