Changeset 3347420
- Timestamp:
- 08/20/2025 09:19:04 AM (8 months ago)
- Location:
- captcha-eu
- Files:
-
- 6 added
- 4 deleted
- 30 edited
- 1 copied
-
tags/v1.0.62 (copied) (copied from captcha-eu/trunk)
-
tags/v1.0.62/.gitlab-ci.yml (modified) (2 diffs)
-
tags/v1.0.62/assets/js/option-settings.js (modified) (1 diff)
-
tags/v1.0.62/bin/install-wp-tests.sh (modified) (1 diff)
-
tags/v1.0.62/composer.lock (modified) (55 diffs)
-
tags/v1.0.62/readme.txt (modified) (1 diff)
-
tags/v1.0.62/src/Admin.php (modified) (5 diffs)
-
tags/v1.0.62/tests/test-ssrf-protection.php (added)
-
tags/v1.0.62/vendor/autoload.php (modified) (1 diff)
-
tags/v1.0.62/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/v1.0.62/vendor/composer/autoload_static.php (modified) (2 diffs)
-
tags/v1.0.62/vendor/composer/installers/.git/index (modified) (previous)
-
tags/v1.0.62/vendor/composer/installers/.git/logs/HEAD (modified) (1 diff)
-
tags/v1.0.62/vendor/composer/installers/.git/logs/refs/heads/main (modified) (1 diff)
-
tags/v1.0.62/vendor/composer/installers/.git/logs/refs/remotes/origin/HEAD (modified) (1 diff)
-
tags/v1.0.62/vendor/composer/installers/.git/objects/info/packs (modified) (1 diff)
-
tags/v1.0.62/vendor/composer/installers/.git/objects/pack/pack-c8323075ac8f3d5b632c113f9a8b003d76f2ef04.idx (deleted)
-
tags/v1.0.62/vendor/composer/installers/.git/objects/pack/pack-c8323075ac8f3d5b632c113f9a8b003d76f2ef04.pack (deleted)
-
tags/v1.0.62/vendor/composer/installers/.git/objects/pack/pack-d5163848cabfa76e781dca05937c97e4aadfebf6.idx (added)
-
tags/v1.0.62/vendor/composer/installers/.git/objects/pack/pack-d5163848cabfa76e781dca05937c97e4aadfebf6.pack (added)
-
tags/v1.0.62/wp-captcha.php (modified) (1 diff)
-
trunk/.gitlab-ci.yml (modified) (2 diffs)
-
trunk/assets/js/option-settings.js (modified) (1 diff)
-
trunk/bin/install-wp-tests.sh (modified) (1 diff)
-
trunk/composer.lock (modified) (55 diffs)
-
trunk/readme.txt (modified) (1 diff)
-
trunk/src/Admin.php (modified) (5 diffs)
-
trunk/tests/test-ssrf-protection.php (added)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installers/.git/index (modified) (previous)
-
trunk/vendor/composer/installers/.git/logs/HEAD (modified) (1 diff)
-
trunk/vendor/composer/installers/.git/logs/refs/heads/main (modified) (1 diff)
-
trunk/vendor/composer/installers/.git/logs/refs/remotes/origin/HEAD (modified) (1 diff)
-
trunk/vendor/composer/installers/.git/objects/info/packs (modified) (1 diff)
-
trunk/vendor/composer/installers/.git/objects/pack/pack-c8323075ac8f3d5b632c113f9a8b003d76f2ef04.idx (deleted)
-
trunk/vendor/composer/installers/.git/objects/pack/pack-c8323075ac8f3d5b632c113f9a8b003d76f2ef04.pack (deleted)
-
trunk/vendor/composer/installers/.git/objects/pack/pack-d5163848cabfa76e781dca05937c97e4aadfebf6.idx (added)
-
trunk/vendor/composer/installers/.git/objects/pack/pack-d5163848cabfa76e781dca05937c97e4aadfebf6.pack (added)
-
trunk/wp-captcha.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
captcha-eu/tags/v1.0.62/.gitlab-ci.yml
r3185922 r3347420 32 32 image: php:8.1 33 33 services: 34 - mysql:8.0 34 - name: mysql:5.7 35 alias: mysql 36 command: ["--default-authentication-plugin=mysql_native_password", "--skip-ssl"] 35 37 variables: 36 38 MYSQL_DATABASE: x1 … … 52 54 - composer install --prefer-dist --no-progress 53 55 - chmod +x ./bin/install-wp-tests.sh 56 - sleep 20 57 - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl || sleep 10 58 - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl 54 59 script: 55 60 - ./bin/install-wp-tests.sh wordpress_test_test root rootpassword mysql latest -
captcha-eu/tags/v1.0.62/assets/js/option-settings.js
r2906129 r3347420 36 36 restKey: restKey, 37 37 publicKey: publicKey, 38 _wpnonce: captcha_at_ajax.nonce, 38 39 }, 39 40 success: function(res) { -
captcha-eu/tags/v1.0.62/bin/install-wp-tests.sh
r3185922 r3347420 128 128 129 129 # create database 130 mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA || true130 mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA --skip-ssl || true 131 131 } 132 132 -
captcha-eu/tags/v1.0.62/composer.lock
r3340199 r3347420 162 162 { 163 163 "name": "antecedent/patchwork", 164 "version": "2.2. 1",164 "version": "2.2.2", 165 165 "source": { 166 166 "type": "git", 167 167 "url": "https://github.com/antecedent/patchwork.git", 168 "reference": " 1bf183a3e1bd094f231a2128b9ecc5363c269245"169 }, 170 "dist": { 171 "type": "zip", 172 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/ 1bf183a3e1bd094f231a2128b9ecc5363c269245",173 "reference": " 1bf183a3e1bd094f231a2128b9ecc5363c269245",168 "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9" 169 }, 170 "dist": { 171 "type": "zip", 172 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9", 173 "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9", 174 174 "shasum": "" 175 175 }, … … 204 204 "support": { 205 205 "issues": "https://github.com/antecedent/patchwork/issues", 206 "source": "https://github.com/antecedent/patchwork/tree/2.2. 1"207 }, 208 "time": "202 4-12-11T10:19:54+00:00"206 "source": "https://github.com/antecedent/patchwork/tree/2.2.2" 207 }, 208 "time": "2025-08-12T16:59:40+00:00" 209 209 }, 210 210 { … … 813 813 { 814 814 "name": "fidry/cpu-core-counter", 815 "version": "1. 2.0",815 "version": "1.3.0", 816 816 "source": { 817 817 "type": "git", 818 818 "url": "https://github.com/theofidry/cpu-core-counter.git", 819 "reference": " 8520451a140d3f46ac33042715115e290cf5785f"820 }, 821 "dist": { 822 "type": "zip", 823 "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/ 8520451a140d3f46ac33042715115e290cf5785f",824 "reference": " 8520451a140d3f46ac33042715115e290cf5785f",819 "reference": "db9508f7b1474469d9d3c53b86f817e344732678" 820 }, 821 "dist": { 822 "type": "zip", 823 "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", 824 "reference": "db9508f7b1474469d9d3c53b86f817e344732678", 825 825 "shasum": "" 826 826 }, … … 832 832 "fidry/php-cs-fixer-config": "^1.1.2", 833 833 "phpstan/extension-installer": "^1.2.0", 834 "phpstan/phpstan": "^ 1.9.2",835 "phpstan/phpstan-deprecation-rules": "^ 1.0.0",836 "phpstan/phpstan-phpunit": "^ 1.2.2",837 "phpstan/phpstan-strict-rules": "^ 1.4.4",834 "phpstan/phpstan": "^2.0", 835 "phpstan/phpstan-deprecation-rules": "^2.0.0", 836 "phpstan/phpstan-phpunit": "^2.0", 837 "phpstan/phpstan-strict-rules": "^2.0", 838 838 "phpunit/phpunit": "^8.5.31 || ^9.5.26", 839 839 "webmozarts/strict-phpunit": "^7.5" … … 862 862 "support": { 863 863 "issues": "https://github.com/theofidry/cpu-core-counter/issues", 864 "source": "https://github.com/theofidry/cpu-core-counter/tree/1. 2.0"864 "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" 865 865 }, 866 866 "funding": [ … … 870 870 } 871 871 ], 872 "time": "202 4-08-06T10:04:20+00:00"872 "time": "2025-08-14T07:29:31+00:00" 873 873 }, 874 874 { 875 875 "name": "friendsofphp/php-cs-fixer", 876 "version": "v3.8 5.1",876 "version": "v3.86.0", 877 877 "source": { 878 878 "type": "git", 879 879 "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", 880 "reference": " 2fb6d7f6c3398dca5786a1635b27405d73a417ba"881 }, 882 "dist": { 883 "type": "zip", 884 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/ 2fb6d7f6c3398dca5786a1635b27405d73a417ba",885 "reference": " 2fb6d7f6c3398dca5786a1635b27405d73a417ba",880 "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36" 881 }, 882 "dist": { 883 "type": "zip", 884 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36", 885 "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36", 886 886 "shasum": "" 887 887 }, … … 967 967 "support": { 968 968 "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", 969 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.8 5.1"969 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.86.0" 970 970 }, 971 971 "funding": [ … … 975 975 } 976 976 ], 977 "time": "2025-0 7-29T22:22:50+00:00"977 "time": "2025-08-13T22:36:21+00:00" 978 978 }, 979 979 { … … 1664 1664 { 1665 1665 "name": "nikic/php-parser", 1666 "version": "v5.6. 0",1666 "version": "v5.6.1", 1667 1667 "source": { 1668 1668 "type": "git", 1669 1669 "url": "https://github.com/nikic/PHP-Parser.git", 1670 "reference": " 221b0d0fdf1369c71047ad1d18bb5880017bbc56"1671 }, 1672 "dist": { 1673 "type": "zip", 1674 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ 221b0d0fdf1369c71047ad1d18bb5880017bbc56",1675 "reference": " 221b0d0fdf1369c71047ad1d18bb5880017bbc56",1670 "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" 1671 }, 1672 "dist": { 1673 "type": "zip", 1674 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", 1675 "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", 1676 1676 "shasum": "" 1677 1677 }, … … 1692 1692 "extra": { 1693 1693 "branch-alias": { 1694 "dev-master": "5. 0-dev"1694 "dev-master": "5.x-dev" 1695 1695 } 1696 1696 }, … … 1716 1716 "support": { 1717 1717 "issues": "https://github.com/nikic/PHP-Parser/issues", 1718 "source": "https://github.com/nikic/PHP-Parser/tree/v5.6. 0"1719 }, 1720 "time": "2025-0 7-27T20:03:57+00:00"1718 "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" 1719 }, 1720 "time": "2025-08-13T20:13:15+00:00" 1721 1721 }, 1722 1722 { … … 1840 1840 { 1841 1841 "name": "php-mock/php-mock", 1842 "version": "2.6. 1",1842 "version": "2.6.2", 1843 1843 "source": { 1844 1844 "type": "git", 1845 1845 "url": "https://github.com/php-mock/php-mock.git", 1846 "reference": " c7b6789056dfc3c45389cabbe9930dc33aeb2bf0"1847 }, 1848 "dist": { 1849 "type": "zip", 1850 "url": "https://api.github.com/repos/php-mock/php-mock/zipball/ c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",1851 "reference": " c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",1846 "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9" 1847 }, 1848 "dist": { 1849 "type": "zip", 1850 "url": "https://api.github.com/repos/php-mock/php-mock/zipball/e134d210e4707c29724ebc7fe50d220123f0fdd9", 1851 "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9", 1852 1852 "shasum": "" 1853 1853 }, … … 1904 1904 "support": { 1905 1905 "issues": "https://github.com/php-mock/php-mock/issues", 1906 "source": "https://github.com/php-mock/php-mock/tree/2.6. 1"1906 "source": "https://github.com/php-mock/php-mock/tree/2.6.2" 1907 1907 }, 1908 1908 "funding": [ … … 1912 1912 } 1913 1913 ], 1914 "time": "2025-0 2-28T18:11:56+00:00"1914 "time": "2025-08-18T19:59:14+00:00" 1915 1915 }, 1916 1916 { … … 2357 2357 { 2358 2358 "name": "phpunit/phpunit", 2359 "version": "9.6.2 3",2359 "version": "9.6.24", 2360 2360 "source": { 2361 2361 "type": "git", 2362 2362 "url": "https://github.com/sebastianbergmann/phpunit.git", 2363 "reference": " 43d2cb18d0675c38bd44982a5d1d88f6d53d8d95"2364 }, 2365 "dist": { 2366 "type": "zip", 2367 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ 43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",2368 "reference": " 43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",2363 "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701" 2364 }, 2365 "dist": { 2366 "type": "zip", 2367 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea49afa29aeea25ea7bf9de9fdd7cab163cc0701", 2368 "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701", 2369 2369 "shasum": "" 2370 2370 }, … … 2377 2377 "ext-xml": "*", 2378 2378 "ext-xmlwriter": "*", 2379 "myclabs/deep-copy": "^1.13. 1",2379 "myclabs/deep-copy": "^1.13.4", 2380 2380 "phar-io/manifest": "^2.0.4", 2381 2381 "phar-io/version": "^3.2.1", … … 2388 2388 "sebastian/cli-parser": "^1.0.2", 2389 2389 "sebastian/code-unit": "^1.0.8", 2390 "sebastian/comparator": "^4.0. 8",2390 "sebastian/comparator": "^4.0.9", 2391 2391 "sebastian/diff": "^4.0.6", 2392 2392 "sebastian/environment": "^5.1.5", 2393 2393 "sebastian/exporter": "^4.0.6", 2394 "sebastian/global-state": "^5.0. 7",2394 "sebastian/global-state": "^5.0.8", 2395 2395 "sebastian/object-enumerator": "^4.0.4", 2396 2396 "sebastian/resource-operations": "^3.0.4", … … 2440 2440 "issues": "https://github.com/sebastianbergmann/phpunit/issues", 2441 2441 "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 2442 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.2 3"2442 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.24" 2443 2443 }, 2444 2444 "funding": [ … … 2464 2464 } 2465 2465 ], 2466 "time": "2025-0 5-02T06:40:34+00:00"2466 "time": "2025-08-10T08:32:42+00:00" 2467 2467 }, 2468 2468 { … … 3115 3115 { 3116 3116 "name": "react/promise", 3117 "version": "v3. 2.0",3117 "version": "v3.3.0", 3118 3118 "source": { 3119 3119 "type": "git", 3120 3120 "url": "https://github.com/reactphp/promise.git", 3121 "reference": " 8a164643313c71354582dc850b42b33fa12a4b63"3122 }, 3123 "dist": { 3124 "type": "zip", 3125 "url": "https://api.github.com/repos/reactphp/promise/zipball/ 8a164643313c71354582dc850b42b33fa12a4b63",3126 "reference": " 8a164643313c71354582dc850b42b33fa12a4b63",3121 "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" 3122 }, 3123 "dist": { 3124 "type": "zip", 3125 "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", 3126 "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", 3127 3127 "shasum": "" 3128 3128 }, … … 3131 3131 }, 3132 3132 "require-dev": { 3133 "phpstan/phpstan": "1.1 0.39|| 1.4.10",3133 "phpstan/phpstan": "1.12.28 || 1.4.10", 3134 3134 "phpunit/phpunit": "^9.6 || ^7.5" 3135 3135 }, … … 3176 3176 "support": { 3177 3177 "issues": "https://github.com/reactphp/promise/issues", 3178 "source": "https://github.com/reactphp/promise/tree/v3. 2.0"3178 "source": "https://github.com/reactphp/promise/tree/v3.3.0" 3179 3179 }, 3180 3180 "funding": [ … … 3184 3184 } 3185 3185 ], 3186 "time": "202 4-05-24T10:39:05+00:00"3186 "time": "2025-08-19T18:57:03+00:00" 3187 3187 }, 3188 3188 { … … 3558 3558 { 3559 3559 "name": "sebastian/comparator", 3560 "version": "4.0. 8",3560 "version": "4.0.9", 3561 3561 "source": { 3562 3562 "type": "git", 3563 3563 "url": "https://github.com/sebastianbergmann/comparator.git", 3564 "reference": " fa0f136dd2334583309d32b62544682ee972b51a"3565 }, 3566 "dist": { 3567 "type": "zip", 3568 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ fa0f136dd2334583309d32b62544682ee972b51a",3569 "reference": " fa0f136dd2334583309d32b62544682ee972b51a",3564 "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" 3565 }, 3566 "dist": { 3567 "type": "zip", 3568 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", 3569 "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", 3570 3570 "shasum": "" 3571 3571 }, … … 3620 3620 "support": { 3621 3621 "issues": "https://github.com/sebastianbergmann/comparator/issues", 3622 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0. 8"3622 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" 3623 3623 }, 3624 3624 "funding": [ … … 3626 3626 "url": "https://github.com/sebastianbergmann", 3627 3627 "type": "github" 3628 } 3629 ], 3630 "time": "2022-09-14T12:41:17+00:00" 3628 }, 3629 { 3630 "url": "https://liberapay.com/sebastianbergmann", 3631 "type": "liberapay" 3632 }, 3633 { 3634 "url": "https://thanks.dev/u/gh/sebastianbergmann", 3635 "type": "thanks_dev" 3636 }, 3637 { 3638 "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", 3639 "type": "tidelift" 3640 } 3641 ], 3642 "time": "2025-08-10T06:51:50+00:00" 3631 3643 }, 3632 3644 { … … 3895 3907 { 3896 3908 "name": "sebastian/global-state", 3897 "version": "5.0. 7",3909 "version": "5.0.8", 3898 3910 "source": { 3899 3911 "type": "git", 3900 3912 "url": "https://github.com/sebastianbergmann/global-state.git", 3901 "reference": "b ca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"3902 }, 3903 "dist": { 3904 "type": "zip", 3905 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b ca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",3906 "reference": "b ca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",3913 "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" 3914 }, 3915 "dist": { 3916 "type": "zip", 3917 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", 3918 "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", 3907 3919 "shasum": "" 3908 3920 }, … … 3947 3959 "support": { 3948 3960 "issues": "https://github.com/sebastianbergmann/global-state/issues", 3949 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0. 7"3961 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" 3950 3962 }, 3951 3963 "funding": [ … … 3953 3965 "url": "https://github.com/sebastianbergmann", 3954 3966 "type": "github" 3955 } 3956 ], 3957 "time": "2024-03-02T06:35:11+00:00" 3967 }, 3968 { 3969 "url": "https://liberapay.com/sebastianbergmann", 3970 "type": "liberapay" 3971 }, 3972 { 3973 "url": "https://thanks.dev/u/gh/sebastianbergmann", 3974 "type": "thanks_dev" 3975 }, 3976 { 3977 "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", 3978 "type": "tidelift" 3979 } 3980 ], 3981 "time": "2025-08-10T07:10:35+00:00" 3958 3982 }, 3959 3983 { … … 4128 4152 { 4129 4153 "name": "sebastian/recursion-context", 4130 "version": "4.0. 5",4154 "version": "4.0.6", 4131 4155 "source": { 4132 4156 "type": "git", 4133 4157 "url": "https://github.com/sebastianbergmann/recursion-context.git", 4134 "reference": " e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"4135 }, 4136 "dist": { 4137 "type": "zip", 4138 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/ e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",4139 "reference": " e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",4158 "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" 4159 }, 4160 "dist": { 4161 "type": "zip", 4162 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", 4163 "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", 4140 4164 "shasum": "" 4141 4165 }, … … 4179 4203 "support": { 4180 4204 "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 4181 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0. 5"4205 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" 4182 4206 }, 4183 4207 "funding": [ … … 4185 4209 "url": "https://github.com/sebastianbergmann", 4186 4210 "type": "github" 4187 } 4188 ], 4189 "time": "2023-02-03T06:07:39+00:00" 4211 }, 4212 { 4213 "url": "https://liberapay.com/sebastianbergmann", 4214 "type": "liberapay" 4215 }, 4216 { 4217 "url": "https://thanks.dev/u/gh/sebastianbergmann", 4218 "type": "thanks_dev" 4219 }, 4220 { 4221 "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", 4222 "type": "tidelift" 4223 } 4224 ], 4225 "time": "2025-08-10T06:57:39+00:00" 4190 4226 }, 4191 4227 { … … 4883 4919 { 4884 4920 "name": "symfony/polyfill-ctype", 4885 "version": "v1.3 2.0",4921 "version": "v1.33.0", 4886 4922 "source": { 4887 4923 "type": "git", … … 4942 4978 ], 4943 4979 "support": { 4944 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.3 2.0"4980 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" 4945 4981 }, 4946 4982 "funding": [ … … 4954 4990 }, 4955 4991 { 4992 "url": "https://github.com/nicolas-grekas", 4993 "type": "github" 4994 }, 4995 { 4956 4996 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4957 4997 "type": "tidelift" … … 4962 5002 { 4963 5003 "name": "symfony/polyfill-intl-grapheme", 4964 "version": "v1.3 2.0",5004 "version": "v1.33.0", 4965 5005 "source": { 4966 5006 "type": "git", 4967 5007 "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 4968 "reference": " b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"4969 }, 4970 "dist": { 4971 "type": "zip", 4972 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",4973 "reference": " b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",5008 "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" 5009 }, 5010 "dist": { 5011 "type": "zip", 5012 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", 5013 "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", 4974 5014 "shasum": "" 4975 5015 }, … … 5020 5060 ], 5021 5061 "support": { 5022 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.3 2.0"5062 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" 5023 5063 }, 5024 5064 "funding": [ … … 5032 5072 }, 5033 5073 { 5074 "url": "https://github.com/nicolas-grekas", 5075 "type": "github" 5076 }, 5077 { 5034 5078 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5035 5079 "type": "tidelift" 5036 5080 } 5037 5081 ], 5038 "time": "202 4-09-09T11:45:10+00:00"5082 "time": "2025-06-27T09:58:17+00:00" 5039 5083 }, 5040 5084 { 5041 5085 "name": "symfony/polyfill-intl-normalizer", 5042 "version": "v1.3 2.0",5086 "version": "v1.33.0", 5043 5087 "source": { 5044 5088 "type": "git", … … 5101 5145 ], 5102 5146 "support": { 5103 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.3 2.0"5147 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" 5104 5148 }, 5105 5149 "funding": [ … … 5113 5157 }, 5114 5158 { 5159 "url": "https://github.com/nicolas-grekas", 5160 "type": "github" 5161 }, 5162 { 5115 5163 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5116 5164 "type": "tidelift" … … 5121 5169 { 5122 5170 "name": "symfony/polyfill-mbstring", 5123 "version": "v1.3 2.0",5171 "version": "v1.33.0", 5124 5172 "source": { 5125 5173 "type": "git", … … 5182 5230 ], 5183 5231 "support": { 5184 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.3 2.0"5232 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" 5185 5233 }, 5186 5234 "funding": [ … … 5194 5242 }, 5195 5243 { 5244 "url": "https://github.com/nicolas-grekas", 5245 "type": "github" 5246 }, 5247 { 5196 5248 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5197 5249 "type": "tidelift" … … 5202 5254 { 5203 5255 "name": "symfony/polyfill-php73", 5204 "version": "v1.3 2.0",5256 "version": "v1.33.0", 5205 5257 "source": { 5206 5258 "type": "git", … … 5258 5310 ], 5259 5311 "support": { 5260 "source": "https://github.com/symfony/polyfill-php73/tree/v1.3 2.0"5312 "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0" 5261 5313 }, 5262 5314 "funding": [ … … 5270 5322 }, 5271 5323 { 5324 "url": "https://github.com/nicolas-grekas", 5325 "type": "github" 5326 }, 5327 { 5272 5328 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5273 5329 "type": "tidelift" … … 5278 5334 { 5279 5335 "name": "symfony/polyfill-php80", 5280 "version": "v1.3 2.0",5336 "version": "v1.33.0", 5281 5337 "source": { 5282 5338 "type": "git", … … 5338 5394 ], 5339 5395 "support": { 5340 "source": "https://github.com/symfony/polyfill-php80/tree/v1.3 2.0"5396 "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" 5341 5397 }, 5342 5398 "funding": [ … … 5350 5406 }, 5351 5407 { 5408 "url": "https://github.com/nicolas-grekas", 5409 "type": "github" 5410 }, 5411 { 5352 5412 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5353 5413 "type": "tidelift" … … 5358 5418 { 5359 5419 "name": "symfony/polyfill-php81", 5360 "version": "v1.3 2.0",5420 "version": "v1.33.0", 5361 5421 "source": { 5362 5422 "type": "git", … … 5414 5474 ], 5415 5475 "support": { 5416 "source": "https://github.com/symfony/polyfill-php81/tree/v1.3 2.0"5476 "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" 5417 5477 }, 5418 5478 "funding": [ … … 5423 5483 { 5424 5484 "url": "https://github.com/fabpot", 5485 "type": "github" 5486 }, 5487 { 5488 "url": "https://github.com/nicolas-grekas", 5425 5489 "type": "github" 5426 5490 }, … … 5777 5841 { 5778 5842 "name": "yoast/phpunit-polyfills", 5779 "version": "1.1. 4",5843 "version": "1.1.5", 5780 5844 "source": { 5781 5845 "type": "git", 5782 5846 "url": "https://github.com/Yoast/PHPUnit-Polyfills.git", 5783 "reference": " e6faedf5e34cea4438e341f660e2f719760c531d"5784 }, 5785 "dist": { 5786 "type": "zip", 5787 "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/ e6faedf5e34cea4438e341f660e2f719760c531d",5788 "reference": " e6faedf5e34cea4438e341f660e2f719760c531d",5847 "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0" 5848 }, 5849 "dist": { 5850 "type": "zip", 5851 "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/41aaac462fbd80feb8dd129e489f4bbc53fe26b0", 5852 "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0", 5789 5853 "shasum": "" 5790 5854 }, … … 5796 5860 "php-parallel-lint/php-console-highlighter": "^1.0.0", 5797 5861 "php-parallel-lint/php-parallel-lint": "^1.4.0", 5798 "yoast/yoastcs": "^3. 1.0"5862 "yoast/yoastcs": "^3.2.0" 5799 5863 }, 5800 5864 "type": "library", … … 5836 5900 "source": "https://github.com/Yoast/PHPUnit-Polyfills" 5837 5901 }, 5838 "time": "2025-0 2-09T18:13:44+00:00"5902 "time": "2025-08-10T04:54:36+00:00" 5839 5903 } 5840 5904 ], -
captcha-eu/tags/v1.0.62/readme.txt
r3340205 r3347420 5 5 Tested up to: 6.7 6 6 Requires PHP: 7.0 7 Stable tag: 1.0.6 17 Stable tag: 1.0.62 8 8 License: GPL 9 9 License URI: https://opensource.org/license/gpl/ -
captcha-eu/tags/v1.0.62/src/Admin.php
r3340205 r3347420 189 189 // check if option proxy_enabled set => update sdk.js content 190 190 if ($proxyForce || get_option('captcha_at_proxy_enabled')) { 191 // sdk.js url 192 global $wp_version; 193 $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js'); 194 195 // fetch sdk.js from endpoint 196 $sdkJSContent = file_get_contents($sdkUrl); 197 198 if ('' != $sdkJSContent) { 199 // save sdk.js content to option 200 update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent); 201 // set last sdk.js update timestamp 202 update_option('captcha_at_proxy_sdkjs_updated_at', time()); 191 // Validate endpoint URL to prevent SSRF 192 if ($this->isValidCaptchaHost($this->endpoint)) { 193 // sdk.js url 194 global $wp_version; 195 $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js'); 196 197 // Use wp_safe_remote_get instead of file_get_contents for security 198 $response = wp_safe_remote_get($sdkUrl, [ 199 'timeout' => 10, 200 'redirection' => 0, 201 ]); 202 203 if (!is_wp_error($response)) { 204 $sdkJSContent = wp_remote_retrieve_body($response); 205 206 if ('' != $sdkJSContent) { 207 // save sdk.js content to option 208 update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent); 209 // set last sdk.js update timestamp 210 update_option('captcha_at_proxy_sdkjs_updated_at', time()); 211 } 212 } 203 213 } 204 214 } … … 828 838 if ('captcha_page_captcha-eu-settings' == $screen->base) { 829 839 wp_enqueue_script('captcha_admin_script', $this->plugin_dir_url . 'assets/js/option-settings.js', ['jquery'], '1.0'); 840 841 // Localize script with nonce for security 842 wp_localize_script('captcha_admin_script', 'captcha_at_ajax', [ 843 'nonce' => wp_create_nonce('captcha_at_check_settings_nonce'), 844 ]); 830 845 } 831 846 } … … 833 848 public function captcha_at_check_settings() 834 849 { 850 // Verify nonce for CSRF protection 851 if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'captcha_at_check_settings_nonce')) { 852 wp_send_json_error([ 853 'notice' => $this->core->options->panelMSG('error', __('Security check failed', 'captcha-eu')), 854 ]); 855 return; 856 } 857 835 858 // Allow only authenticated admins to check settings 836 if (! is_admin() && !current_user_can('manage_options')) {859 if (!current_user_can('manage_options')) { 837 860 wp_send_json_error([ 838 861 'notice' => $this->core->options->panelMSG('error', __('Unauthorized access', 'captcha-eu')), … … 1359 1382 public function apiFetchLatestVersion() 1360 1383 { 1361 // fetch asset version info route 1362 $data = wp_remote_get($this->endpoint . '/version?t=' . time(), [ 1384 // Validate endpoint URL to prevent SSRF 1385 if (!$this->isValidCaptchaHost($this->endpoint)) { 1386 return false; 1387 } 1388 1389 // Use wp_safe_remote_get to prevent SSRF attacks 1390 $data = wp_safe_remote_get($this->endpoint . '/version?t=' . time(), [ 1363 1391 'headers' => ['Content-Type' => 'application/json', 'User-Agent' => 'Captcha'], 1392 'timeout' => 10, 1393 'redirection' => 0, // Prevent following redirects 1364 1394 ]); 1365 1395 … … 1390 1420 } 1391 1421 1422 private function isValidCaptchaHost($host) 1423 { 1424 // Sanitize and validate the host URL 1425 $host = sanitize_url($host); 1426 1427 if (empty($host)) { 1428 return false; 1429 } 1430 1431 // Parse the URL 1432 $parsed_url = wp_parse_url($host); 1433 1434 if (!$parsed_url || !isset($parsed_url['host'])) { 1435 return false; 1436 } 1437 1438 $hostname = strtolower($parsed_url['host']); 1439 1440 // Check if the host matches allowed patterns for captcha.eu and captcha.at domains 1441 // Patterns allow: 1442 // - *.captcha.eu (e.g., www.captcha.eu, at.captcha.eu, w19.captcha.eu) 1443 // - *.captcha.at (e.g., www.captcha.at, w19.captcha.at) 1444 // - captcha.eu 1445 // - captcha.at 1446 $allowed_patterns = [ 1447 '/^(.*\.)?captcha\.eu$/', 1448 '/^(.*\.)?captcha\.at$/', 1449 ]; 1450 1451 $is_allowed = false; 1452 foreach ($allowed_patterns as $pattern) { 1453 if (preg_match($pattern, $hostname)) { 1454 $is_allowed = true; 1455 break; 1456 } 1457 } 1458 1459 if (!$is_allowed) { 1460 return false; 1461 } 1462 1463 // Only allow HTTPS connections 1464 if (!isset($parsed_url['scheme']) || $parsed_url['scheme'] !== 'https') { 1465 return false; 1466 } 1467 1468 return true; 1469 } 1470 1392 1471 public function apiFetchPersonal($host = '', $restKey = '') 1393 1472 { 1394 // fetch personal info route 1395 $data = wp_remote_get($host . '/api/personal', [ 1473 // Validate host URL to prevent SSRF 1474 if (!$this->isValidCaptchaHost($host)) { 1475 return false; 1476 } 1477 1478 // Use wp_safe_remote_get to prevent SSRF attacks 1479 // This function blocks requests to private and local IP addresses 1480 $data = wp_safe_remote_get($host . '/api/personal', [ 1396 1481 'headers' => ['Content-Type' => 'application/json', 'Rest-Key' => $restKey, 'User-Agent' => 'Captcha'], 1482 'timeout' => 10, 1483 'redirection' => 0, // Prevent following redirects 1397 1484 ]); 1398 1485 -
captcha-eu/tags/v1.0.62/vendor/autoload.php
r3340205 r3347420 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d::getLoader();25 return ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c::getLoader(); -
captcha-eu/tags/v1.0.62/vendor/composer/autoload_real.php
r3340205 r3347420 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d5 class ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
captcha-eu/tags/v1.0.62/vendor/composer/autoload_static.php
r3340205 r3347420 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d7 class ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 34 34 { 35 35 return \Closure::bind(function () use ($loader) { 36 $loader->prefixLengthsPsr4 = ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::$prefixLengthsPsr4;37 $loader->prefixDirsPsr4 = ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::$prefixDirsPsr4;38 $loader->classMap = ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::$classMap;36 $loader->prefixLengthsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixLengthsPsr4; 37 $loader->prefixDirsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixDirsPsr4; 38 $loader->classMap = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$classMap; 39 39 40 40 }, null, ClassLoader::class); -
captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/logs/HEAD
r3340205 r3347420 1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/2 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 checkout: moving from main to v1.12.01 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/ 2 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 checkout: moving from main to v1.12.0 -
captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/logs/refs/heads/main
r3340205 r3347420 1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/ -
captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/logs/refs/remotes/origin/HEAD
r3340205 r3347420 1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/ -
captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/objects/info/packs
r3340205 r3347420 1 P pack- c8323075ac8f3d5b632c113f9a8b003d76f2ef04.pack1 P pack-d5163848cabfa76e781dca05937c97e4aadfebf6.pack 2 2 -
captcha-eu/tags/v1.0.62/wp-captcha.php
r3340205 r3347420 4 4 * Description: Captcha.eu provides a GDPR compliant protection against bots and spammers. 5 5 * Plugin URI: https://www.captcha.eu 6 * Version: 1.0.6 16 * Version: 1.0.62 7 7 * Author: captchaeu 8 8 * Author URI: https://profiles.wordpress.org/captchaeu/ -
captcha-eu/trunk/.gitlab-ci.yml
r3185922 r3347420 32 32 image: php:8.1 33 33 services: 34 - mysql:8.0 34 - name: mysql:5.7 35 alias: mysql 36 command: ["--default-authentication-plugin=mysql_native_password", "--skip-ssl"] 35 37 variables: 36 38 MYSQL_DATABASE: x1 … … 52 54 - composer install --prefer-dist --no-progress 53 55 - chmod +x ./bin/install-wp-tests.sh 56 - sleep 20 57 - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl || sleep 10 58 - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl 54 59 script: 55 60 - ./bin/install-wp-tests.sh wordpress_test_test root rootpassword mysql latest -
captcha-eu/trunk/assets/js/option-settings.js
r2906129 r3347420 36 36 restKey: restKey, 37 37 publicKey: publicKey, 38 _wpnonce: captcha_at_ajax.nonce, 38 39 }, 39 40 success: function(res) { -
captcha-eu/trunk/bin/install-wp-tests.sh
r3185922 r3347420 128 128 129 129 # create database 130 mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA || true130 mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA --skip-ssl || true 131 131 } 132 132 -
captcha-eu/trunk/composer.lock
r3340199 r3347420 162 162 { 163 163 "name": "antecedent/patchwork", 164 "version": "2.2. 1",164 "version": "2.2.2", 165 165 "source": { 166 166 "type": "git", 167 167 "url": "https://github.com/antecedent/patchwork.git", 168 "reference": " 1bf183a3e1bd094f231a2128b9ecc5363c269245"169 }, 170 "dist": { 171 "type": "zip", 172 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/ 1bf183a3e1bd094f231a2128b9ecc5363c269245",173 "reference": " 1bf183a3e1bd094f231a2128b9ecc5363c269245",168 "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9" 169 }, 170 "dist": { 171 "type": "zip", 172 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9", 173 "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9", 174 174 "shasum": "" 175 175 }, … … 204 204 "support": { 205 205 "issues": "https://github.com/antecedent/patchwork/issues", 206 "source": "https://github.com/antecedent/patchwork/tree/2.2. 1"207 }, 208 "time": "202 4-12-11T10:19:54+00:00"206 "source": "https://github.com/antecedent/patchwork/tree/2.2.2" 207 }, 208 "time": "2025-08-12T16:59:40+00:00" 209 209 }, 210 210 { … … 813 813 { 814 814 "name": "fidry/cpu-core-counter", 815 "version": "1. 2.0",815 "version": "1.3.0", 816 816 "source": { 817 817 "type": "git", 818 818 "url": "https://github.com/theofidry/cpu-core-counter.git", 819 "reference": " 8520451a140d3f46ac33042715115e290cf5785f"820 }, 821 "dist": { 822 "type": "zip", 823 "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/ 8520451a140d3f46ac33042715115e290cf5785f",824 "reference": " 8520451a140d3f46ac33042715115e290cf5785f",819 "reference": "db9508f7b1474469d9d3c53b86f817e344732678" 820 }, 821 "dist": { 822 "type": "zip", 823 "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", 824 "reference": "db9508f7b1474469d9d3c53b86f817e344732678", 825 825 "shasum": "" 826 826 }, … … 832 832 "fidry/php-cs-fixer-config": "^1.1.2", 833 833 "phpstan/extension-installer": "^1.2.0", 834 "phpstan/phpstan": "^ 1.9.2",835 "phpstan/phpstan-deprecation-rules": "^ 1.0.0",836 "phpstan/phpstan-phpunit": "^ 1.2.2",837 "phpstan/phpstan-strict-rules": "^ 1.4.4",834 "phpstan/phpstan": "^2.0", 835 "phpstan/phpstan-deprecation-rules": "^2.0.0", 836 "phpstan/phpstan-phpunit": "^2.0", 837 "phpstan/phpstan-strict-rules": "^2.0", 838 838 "phpunit/phpunit": "^8.5.31 || ^9.5.26", 839 839 "webmozarts/strict-phpunit": "^7.5" … … 862 862 "support": { 863 863 "issues": "https://github.com/theofidry/cpu-core-counter/issues", 864 "source": "https://github.com/theofidry/cpu-core-counter/tree/1. 2.0"864 "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" 865 865 }, 866 866 "funding": [ … … 870 870 } 871 871 ], 872 "time": "202 4-08-06T10:04:20+00:00"872 "time": "2025-08-14T07:29:31+00:00" 873 873 }, 874 874 { 875 875 "name": "friendsofphp/php-cs-fixer", 876 "version": "v3.8 5.1",876 "version": "v3.86.0", 877 877 "source": { 878 878 "type": "git", 879 879 "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", 880 "reference": " 2fb6d7f6c3398dca5786a1635b27405d73a417ba"881 }, 882 "dist": { 883 "type": "zip", 884 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/ 2fb6d7f6c3398dca5786a1635b27405d73a417ba",885 "reference": " 2fb6d7f6c3398dca5786a1635b27405d73a417ba",880 "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36" 881 }, 882 "dist": { 883 "type": "zip", 884 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36", 885 "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36", 886 886 "shasum": "" 887 887 }, … … 967 967 "support": { 968 968 "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", 969 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.8 5.1"969 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.86.0" 970 970 }, 971 971 "funding": [ … … 975 975 } 976 976 ], 977 "time": "2025-0 7-29T22:22:50+00:00"977 "time": "2025-08-13T22:36:21+00:00" 978 978 }, 979 979 { … … 1664 1664 { 1665 1665 "name": "nikic/php-parser", 1666 "version": "v5.6. 0",1666 "version": "v5.6.1", 1667 1667 "source": { 1668 1668 "type": "git", 1669 1669 "url": "https://github.com/nikic/PHP-Parser.git", 1670 "reference": " 221b0d0fdf1369c71047ad1d18bb5880017bbc56"1671 }, 1672 "dist": { 1673 "type": "zip", 1674 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ 221b0d0fdf1369c71047ad1d18bb5880017bbc56",1675 "reference": " 221b0d0fdf1369c71047ad1d18bb5880017bbc56",1670 "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" 1671 }, 1672 "dist": { 1673 "type": "zip", 1674 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", 1675 "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", 1676 1676 "shasum": "" 1677 1677 }, … … 1692 1692 "extra": { 1693 1693 "branch-alias": { 1694 "dev-master": "5. 0-dev"1694 "dev-master": "5.x-dev" 1695 1695 } 1696 1696 }, … … 1716 1716 "support": { 1717 1717 "issues": "https://github.com/nikic/PHP-Parser/issues", 1718 "source": "https://github.com/nikic/PHP-Parser/tree/v5.6. 0"1719 }, 1720 "time": "2025-0 7-27T20:03:57+00:00"1718 "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" 1719 }, 1720 "time": "2025-08-13T20:13:15+00:00" 1721 1721 }, 1722 1722 { … … 1840 1840 { 1841 1841 "name": "php-mock/php-mock", 1842 "version": "2.6. 1",1842 "version": "2.6.2", 1843 1843 "source": { 1844 1844 "type": "git", 1845 1845 "url": "https://github.com/php-mock/php-mock.git", 1846 "reference": " c7b6789056dfc3c45389cabbe9930dc33aeb2bf0"1847 }, 1848 "dist": { 1849 "type": "zip", 1850 "url": "https://api.github.com/repos/php-mock/php-mock/zipball/ c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",1851 "reference": " c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",1846 "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9" 1847 }, 1848 "dist": { 1849 "type": "zip", 1850 "url": "https://api.github.com/repos/php-mock/php-mock/zipball/e134d210e4707c29724ebc7fe50d220123f0fdd9", 1851 "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9", 1852 1852 "shasum": "" 1853 1853 }, … … 1904 1904 "support": { 1905 1905 "issues": "https://github.com/php-mock/php-mock/issues", 1906 "source": "https://github.com/php-mock/php-mock/tree/2.6. 1"1906 "source": "https://github.com/php-mock/php-mock/tree/2.6.2" 1907 1907 }, 1908 1908 "funding": [ … … 1912 1912 } 1913 1913 ], 1914 "time": "2025-0 2-28T18:11:56+00:00"1914 "time": "2025-08-18T19:59:14+00:00" 1915 1915 }, 1916 1916 { … … 2357 2357 { 2358 2358 "name": "phpunit/phpunit", 2359 "version": "9.6.2 3",2359 "version": "9.6.24", 2360 2360 "source": { 2361 2361 "type": "git", 2362 2362 "url": "https://github.com/sebastianbergmann/phpunit.git", 2363 "reference": " 43d2cb18d0675c38bd44982a5d1d88f6d53d8d95"2364 }, 2365 "dist": { 2366 "type": "zip", 2367 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ 43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",2368 "reference": " 43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",2363 "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701" 2364 }, 2365 "dist": { 2366 "type": "zip", 2367 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea49afa29aeea25ea7bf9de9fdd7cab163cc0701", 2368 "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701", 2369 2369 "shasum": "" 2370 2370 }, … … 2377 2377 "ext-xml": "*", 2378 2378 "ext-xmlwriter": "*", 2379 "myclabs/deep-copy": "^1.13. 1",2379 "myclabs/deep-copy": "^1.13.4", 2380 2380 "phar-io/manifest": "^2.0.4", 2381 2381 "phar-io/version": "^3.2.1", … … 2388 2388 "sebastian/cli-parser": "^1.0.2", 2389 2389 "sebastian/code-unit": "^1.0.8", 2390 "sebastian/comparator": "^4.0. 8",2390 "sebastian/comparator": "^4.0.9", 2391 2391 "sebastian/diff": "^4.0.6", 2392 2392 "sebastian/environment": "^5.1.5", 2393 2393 "sebastian/exporter": "^4.0.6", 2394 "sebastian/global-state": "^5.0. 7",2394 "sebastian/global-state": "^5.0.8", 2395 2395 "sebastian/object-enumerator": "^4.0.4", 2396 2396 "sebastian/resource-operations": "^3.0.4", … … 2440 2440 "issues": "https://github.com/sebastianbergmann/phpunit/issues", 2441 2441 "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 2442 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.2 3"2442 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.24" 2443 2443 }, 2444 2444 "funding": [ … … 2464 2464 } 2465 2465 ], 2466 "time": "2025-0 5-02T06:40:34+00:00"2466 "time": "2025-08-10T08:32:42+00:00" 2467 2467 }, 2468 2468 { … … 3115 3115 { 3116 3116 "name": "react/promise", 3117 "version": "v3. 2.0",3117 "version": "v3.3.0", 3118 3118 "source": { 3119 3119 "type": "git", 3120 3120 "url": "https://github.com/reactphp/promise.git", 3121 "reference": " 8a164643313c71354582dc850b42b33fa12a4b63"3122 }, 3123 "dist": { 3124 "type": "zip", 3125 "url": "https://api.github.com/repos/reactphp/promise/zipball/ 8a164643313c71354582dc850b42b33fa12a4b63",3126 "reference": " 8a164643313c71354582dc850b42b33fa12a4b63",3121 "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" 3122 }, 3123 "dist": { 3124 "type": "zip", 3125 "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", 3126 "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", 3127 3127 "shasum": "" 3128 3128 }, … … 3131 3131 }, 3132 3132 "require-dev": { 3133 "phpstan/phpstan": "1.1 0.39|| 1.4.10",3133 "phpstan/phpstan": "1.12.28 || 1.4.10", 3134 3134 "phpunit/phpunit": "^9.6 || ^7.5" 3135 3135 }, … … 3176 3176 "support": { 3177 3177 "issues": "https://github.com/reactphp/promise/issues", 3178 "source": "https://github.com/reactphp/promise/tree/v3. 2.0"3178 "source": "https://github.com/reactphp/promise/tree/v3.3.0" 3179 3179 }, 3180 3180 "funding": [ … … 3184 3184 } 3185 3185 ], 3186 "time": "202 4-05-24T10:39:05+00:00"3186 "time": "2025-08-19T18:57:03+00:00" 3187 3187 }, 3188 3188 { … … 3558 3558 { 3559 3559 "name": "sebastian/comparator", 3560 "version": "4.0. 8",3560 "version": "4.0.9", 3561 3561 "source": { 3562 3562 "type": "git", 3563 3563 "url": "https://github.com/sebastianbergmann/comparator.git", 3564 "reference": " fa0f136dd2334583309d32b62544682ee972b51a"3565 }, 3566 "dist": { 3567 "type": "zip", 3568 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ fa0f136dd2334583309d32b62544682ee972b51a",3569 "reference": " fa0f136dd2334583309d32b62544682ee972b51a",3564 "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" 3565 }, 3566 "dist": { 3567 "type": "zip", 3568 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", 3569 "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", 3570 3570 "shasum": "" 3571 3571 }, … … 3620 3620 "support": { 3621 3621 "issues": "https://github.com/sebastianbergmann/comparator/issues", 3622 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0. 8"3622 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" 3623 3623 }, 3624 3624 "funding": [ … … 3626 3626 "url": "https://github.com/sebastianbergmann", 3627 3627 "type": "github" 3628 } 3629 ], 3630 "time": "2022-09-14T12:41:17+00:00" 3628 }, 3629 { 3630 "url": "https://liberapay.com/sebastianbergmann", 3631 "type": "liberapay" 3632 }, 3633 { 3634 "url": "https://thanks.dev/u/gh/sebastianbergmann", 3635 "type": "thanks_dev" 3636 }, 3637 { 3638 "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", 3639 "type": "tidelift" 3640 } 3641 ], 3642 "time": "2025-08-10T06:51:50+00:00" 3631 3643 }, 3632 3644 { … … 3895 3907 { 3896 3908 "name": "sebastian/global-state", 3897 "version": "5.0. 7",3909 "version": "5.0.8", 3898 3910 "source": { 3899 3911 "type": "git", 3900 3912 "url": "https://github.com/sebastianbergmann/global-state.git", 3901 "reference": "b ca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"3902 }, 3903 "dist": { 3904 "type": "zip", 3905 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b ca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",3906 "reference": "b ca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",3913 "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" 3914 }, 3915 "dist": { 3916 "type": "zip", 3917 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", 3918 "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", 3907 3919 "shasum": "" 3908 3920 }, … … 3947 3959 "support": { 3948 3960 "issues": "https://github.com/sebastianbergmann/global-state/issues", 3949 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0. 7"3961 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" 3950 3962 }, 3951 3963 "funding": [ … … 3953 3965 "url": "https://github.com/sebastianbergmann", 3954 3966 "type": "github" 3955 } 3956 ], 3957 "time": "2024-03-02T06:35:11+00:00" 3967 }, 3968 { 3969 "url": "https://liberapay.com/sebastianbergmann", 3970 "type": "liberapay" 3971 }, 3972 { 3973 "url": "https://thanks.dev/u/gh/sebastianbergmann", 3974 "type": "thanks_dev" 3975 }, 3976 { 3977 "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", 3978 "type": "tidelift" 3979 } 3980 ], 3981 "time": "2025-08-10T07:10:35+00:00" 3958 3982 }, 3959 3983 { … … 4128 4152 { 4129 4153 "name": "sebastian/recursion-context", 4130 "version": "4.0. 5",4154 "version": "4.0.6", 4131 4155 "source": { 4132 4156 "type": "git", 4133 4157 "url": "https://github.com/sebastianbergmann/recursion-context.git", 4134 "reference": " e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"4135 }, 4136 "dist": { 4137 "type": "zip", 4138 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/ e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",4139 "reference": " e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",4158 "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" 4159 }, 4160 "dist": { 4161 "type": "zip", 4162 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", 4163 "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", 4140 4164 "shasum": "" 4141 4165 }, … … 4179 4203 "support": { 4180 4204 "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 4181 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0. 5"4205 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" 4182 4206 }, 4183 4207 "funding": [ … … 4185 4209 "url": "https://github.com/sebastianbergmann", 4186 4210 "type": "github" 4187 } 4188 ], 4189 "time": "2023-02-03T06:07:39+00:00" 4211 }, 4212 { 4213 "url": "https://liberapay.com/sebastianbergmann", 4214 "type": "liberapay" 4215 }, 4216 { 4217 "url": "https://thanks.dev/u/gh/sebastianbergmann", 4218 "type": "thanks_dev" 4219 }, 4220 { 4221 "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", 4222 "type": "tidelift" 4223 } 4224 ], 4225 "time": "2025-08-10T06:57:39+00:00" 4190 4226 }, 4191 4227 { … … 4883 4919 { 4884 4920 "name": "symfony/polyfill-ctype", 4885 "version": "v1.3 2.0",4921 "version": "v1.33.0", 4886 4922 "source": { 4887 4923 "type": "git", … … 4942 4978 ], 4943 4979 "support": { 4944 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.3 2.0"4980 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" 4945 4981 }, 4946 4982 "funding": [ … … 4954 4990 }, 4955 4991 { 4992 "url": "https://github.com/nicolas-grekas", 4993 "type": "github" 4994 }, 4995 { 4956 4996 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4957 4997 "type": "tidelift" … … 4962 5002 { 4963 5003 "name": "symfony/polyfill-intl-grapheme", 4964 "version": "v1.3 2.0",5004 "version": "v1.33.0", 4965 5005 "source": { 4966 5006 "type": "git", 4967 5007 "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 4968 "reference": " b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"4969 }, 4970 "dist": { 4971 "type": "zip", 4972 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",4973 "reference": " b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",5008 "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" 5009 }, 5010 "dist": { 5011 "type": "zip", 5012 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", 5013 "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", 4974 5014 "shasum": "" 4975 5015 }, … … 5020 5060 ], 5021 5061 "support": { 5022 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.3 2.0"5062 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" 5023 5063 }, 5024 5064 "funding": [ … … 5032 5072 }, 5033 5073 { 5074 "url": "https://github.com/nicolas-grekas", 5075 "type": "github" 5076 }, 5077 { 5034 5078 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5035 5079 "type": "tidelift" 5036 5080 } 5037 5081 ], 5038 "time": "202 4-09-09T11:45:10+00:00"5082 "time": "2025-06-27T09:58:17+00:00" 5039 5083 }, 5040 5084 { 5041 5085 "name": "symfony/polyfill-intl-normalizer", 5042 "version": "v1.3 2.0",5086 "version": "v1.33.0", 5043 5087 "source": { 5044 5088 "type": "git", … … 5101 5145 ], 5102 5146 "support": { 5103 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.3 2.0"5147 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" 5104 5148 }, 5105 5149 "funding": [ … … 5113 5157 }, 5114 5158 { 5159 "url": "https://github.com/nicolas-grekas", 5160 "type": "github" 5161 }, 5162 { 5115 5163 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5116 5164 "type": "tidelift" … … 5121 5169 { 5122 5170 "name": "symfony/polyfill-mbstring", 5123 "version": "v1.3 2.0",5171 "version": "v1.33.0", 5124 5172 "source": { 5125 5173 "type": "git", … … 5182 5230 ], 5183 5231 "support": { 5184 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.3 2.0"5232 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" 5185 5233 }, 5186 5234 "funding": [ … … 5194 5242 }, 5195 5243 { 5244 "url": "https://github.com/nicolas-grekas", 5245 "type": "github" 5246 }, 5247 { 5196 5248 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5197 5249 "type": "tidelift" … … 5202 5254 { 5203 5255 "name": "symfony/polyfill-php73", 5204 "version": "v1.3 2.0",5256 "version": "v1.33.0", 5205 5257 "source": { 5206 5258 "type": "git", … … 5258 5310 ], 5259 5311 "support": { 5260 "source": "https://github.com/symfony/polyfill-php73/tree/v1.3 2.0"5312 "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0" 5261 5313 }, 5262 5314 "funding": [ … … 5270 5322 }, 5271 5323 { 5324 "url": "https://github.com/nicolas-grekas", 5325 "type": "github" 5326 }, 5327 { 5272 5328 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5273 5329 "type": "tidelift" … … 5278 5334 { 5279 5335 "name": "symfony/polyfill-php80", 5280 "version": "v1.3 2.0",5336 "version": "v1.33.0", 5281 5337 "source": { 5282 5338 "type": "git", … … 5338 5394 ], 5339 5395 "support": { 5340 "source": "https://github.com/symfony/polyfill-php80/tree/v1.3 2.0"5396 "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" 5341 5397 }, 5342 5398 "funding": [ … … 5350 5406 }, 5351 5407 { 5408 "url": "https://github.com/nicolas-grekas", 5409 "type": "github" 5410 }, 5411 { 5352 5412 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 5353 5413 "type": "tidelift" … … 5358 5418 { 5359 5419 "name": "symfony/polyfill-php81", 5360 "version": "v1.3 2.0",5420 "version": "v1.33.0", 5361 5421 "source": { 5362 5422 "type": "git", … … 5414 5474 ], 5415 5475 "support": { 5416 "source": "https://github.com/symfony/polyfill-php81/tree/v1.3 2.0"5476 "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" 5417 5477 }, 5418 5478 "funding": [ … … 5423 5483 { 5424 5484 "url": "https://github.com/fabpot", 5485 "type": "github" 5486 }, 5487 { 5488 "url": "https://github.com/nicolas-grekas", 5425 5489 "type": "github" 5426 5490 }, … … 5777 5841 { 5778 5842 "name": "yoast/phpunit-polyfills", 5779 "version": "1.1. 4",5843 "version": "1.1.5", 5780 5844 "source": { 5781 5845 "type": "git", 5782 5846 "url": "https://github.com/Yoast/PHPUnit-Polyfills.git", 5783 "reference": " e6faedf5e34cea4438e341f660e2f719760c531d"5784 }, 5785 "dist": { 5786 "type": "zip", 5787 "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/ e6faedf5e34cea4438e341f660e2f719760c531d",5788 "reference": " e6faedf5e34cea4438e341f660e2f719760c531d",5847 "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0" 5848 }, 5849 "dist": { 5850 "type": "zip", 5851 "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/41aaac462fbd80feb8dd129e489f4bbc53fe26b0", 5852 "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0", 5789 5853 "shasum": "" 5790 5854 }, … … 5796 5860 "php-parallel-lint/php-console-highlighter": "^1.0.0", 5797 5861 "php-parallel-lint/php-parallel-lint": "^1.4.0", 5798 "yoast/yoastcs": "^3. 1.0"5862 "yoast/yoastcs": "^3.2.0" 5799 5863 }, 5800 5864 "type": "library", … … 5836 5900 "source": "https://github.com/Yoast/PHPUnit-Polyfills" 5837 5901 }, 5838 "time": "2025-0 2-09T18:13:44+00:00"5902 "time": "2025-08-10T04:54:36+00:00" 5839 5903 } 5840 5904 ], -
captcha-eu/trunk/readme.txt
r3340205 r3347420 5 5 Tested up to: 6.7 6 6 Requires PHP: 7.0 7 Stable tag: 1.0.6 17 Stable tag: 1.0.62 8 8 License: GPL 9 9 License URI: https://opensource.org/license/gpl/ -
captcha-eu/trunk/src/Admin.php
r3340205 r3347420 189 189 // check if option proxy_enabled set => update sdk.js content 190 190 if ($proxyForce || get_option('captcha_at_proxy_enabled')) { 191 // sdk.js url 192 global $wp_version; 193 $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js'); 194 195 // fetch sdk.js from endpoint 196 $sdkJSContent = file_get_contents($sdkUrl); 197 198 if ('' != $sdkJSContent) { 199 // save sdk.js content to option 200 update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent); 201 // set last sdk.js update timestamp 202 update_option('captcha_at_proxy_sdkjs_updated_at', time()); 191 // Validate endpoint URL to prevent SSRF 192 if ($this->isValidCaptchaHost($this->endpoint)) { 193 // sdk.js url 194 global $wp_version; 195 $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js'); 196 197 // Use wp_safe_remote_get instead of file_get_contents for security 198 $response = wp_safe_remote_get($sdkUrl, [ 199 'timeout' => 10, 200 'redirection' => 0, 201 ]); 202 203 if (!is_wp_error($response)) { 204 $sdkJSContent = wp_remote_retrieve_body($response); 205 206 if ('' != $sdkJSContent) { 207 // save sdk.js content to option 208 update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent); 209 // set last sdk.js update timestamp 210 update_option('captcha_at_proxy_sdkjs_updated_at', time()); 211 } 212 } 203 213 } 204 214 } … … 828 838 if ('captcha_page_captcha-eu-settings' == $screen->base) { 829 839 wp_enqueue_script('captcha_admin_script', $this->plugin_dir_url . 'assets/js/option-settings.js', ['jquery'], '1.0'); 840 841 // Localize script with nonce for security 842 wp_localize_script('captcha_admin_script', 'captcha_at_ajax', [ 843 'nonce' => wp_create_nonce('captcha_at_check_settings_nonce'), 844 ]); 830 845 } 831 846 } … … 833 848 public function captcha_at_check_settings() 834 849 { 850 // Verify nonce for CSRF protection 851 if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'captcha_at_check_settings_nonce')) { 852 wp_send_json_error([ 853 'notice' => $this->core->options->panelMSG('error', __('Security check failed', 'captcha-eu')), 854 ]); 855 return; 856 } 857 835 858 // Allow only authenticated admins to check settings 836 if (! is_admin() && !current_user_can('manage_options')) {859 if (!current_user_can('manage_options')) { 837 860 wp_send_json_error([ 838 861 'notice' => $this->core->options->panelMSG('error', __('Unauthorized access', 'captcha-eu')), … … 1359 1382 public function apiFetchLatestVersion() 1360 1383 { 1361 // fetch asset version info route 1362 $data = wp_remote_get($this->endpoint . '/version?t=' . time(), [ 1384 // Validate endpoint URL to prevent SSRF 1385 if (!$this->isValidCaptchaHost($this->endpoint)) { 1386 return false; 1387 } 1388 1389 // Use wp_safe_remote_get to prevent SSRF attacks 1390 $data = wp_safe_remote_get($this->endpoint . '/version?t=' . time(), [ 1363 1391 'headers' => ['Content-Type' => 'application/json', 'User-Agent' => 'Captcha'], 1392 'timeout' => 10, 1393 'redirection' => 0, // Prevent following redirects 1364 1394 ]); 1365 1395 … … 1390 1420 } 1391 1421 1422 private function isValidCaptchaHost($host) 1423 { 1424 // Sanitize and validate the host URL 1425 $host = sanitize_url($host); 1426 1427 if (empty($host)) { 1428 return false; 1429 } 1430 1431 // Parse the URL 1432 $parsed_url = wp_parse_url($host); 1433 1434 if (!$parsed_url || !isset($parsed_url['host'])) { 1435 return false; 1436 } 1437 1438 $hostname = strtolower($parsed_url['host']); 1439 1440 // Check if the host matches allowed patterns for captcha.eu and captcha.at domains 1441 // Patterns allow: 1442 // - *.captcha.eu (e.g., www.captcha.eu, at.captcha.eu, w19.captcha.eu) 1443 // - *.captcha.at (e.g., www.captcha.at, w19.captcha.at) 1444 // - captcha.eu 1445 // - captcha.at 1446 $allowed_patterns = [ 1447 '/^(.*\.)?captcha\.eu$/', 1448 '/^(.*\.)?captcha\.at$/', 1449 ]; 1450 1451 $is_allowed = false; 1452 foreach ($allowed_patterns as $pattern) { 1453 if (preg_match($pattern, $hostname)) { 1454 $is_allowed = true; 1455 break; 1456 } 1457 } 1458 1459 if (!$is_allowed) { 1460 return false; 1461 } 1462 1463 // Only allow HTTPS connections 1464 if (!isset($parsed_url['scheme']) || $parsed_url['scheme'] !== 'https') { 1465 return false; 1466 } 1467 1468 return true; 1469 } 1470 1392 1471 public function apiFetchPersonal($host = '', $restKey = '') 1393 1472 { 1394 // fetch personal info route 1395 $data = wp_remote_get($host . '/api/personal', [ 1473 // Validate host URL to prevent SSRF 1474 if (!$this->isValidCaptchaHost($host)) { 1475 return false; 1476 } 1477 1478 // Use wp_safe_remote_get to prevent SSRF attacks 1479 // This function blocks requests to private and local IP addresses 1480 $data = wp_safe_remote_get($host . '/api/personal', [ 1396 1481 'headers' => ['Content-Type' => 'application/json', 'Rest-Key' => $restKey, 'User-Agent' => 'Captcha'], 1482 'timeout' => 10, 1483 'redirection' => 0, // Prevent following redirects 1397 1484 ]); 1398 1485 -
captcha-eu/trunk/vendor/autoload.php
r3340205 r3347420 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d::getLoader();25 return ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c::getLoader(); -
captcha-eu/trunk/vendor/composer/autoload_real.php
r3340205 r3347420 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d5 class ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
captcha-eu/trunk/vendor/composer/autoload_static.php
r3340205 r3347420 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d7 class ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 34 34 { 35 35 return \Closure::bind(function () use ($loader) { 36 $loader->prefixLengthsPsr4 = ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::$prefixLengthsPsr4;37 $loader->prefixDirsPsr4 = ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::$prefixDirsPsr4;38 $loader->classMap = ComposerStaticInit 8abf7280a8e72bf2e1071644df96ee2d::$classMap;36 $loader->prefixLengthsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixLengthsPsr4; 37 $loader->prefixDirsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixDirsPsr4; 38 $loader->classMap = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$classMap; 39 39 40 40 }, null, ClassLoader::class); -
captcha-eu/trunk/vendor/composer/installers/.git/logs/HEAD
r3340205 r3347420 1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/2 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 checkout: moving from main to v1.12.01 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/ 2 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 checkout: moving from main to v1.12.0 -
captcha-eu/trunk/vendor/composer/installers/.git/logs/refs/heads/main
r3340205 r3347420 1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/ -
captcha-eu/trunk/vendor/composer/installers/.git/logs/refs/remotes/origin/HEAD
r3340205 r3347420 1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 175 4469875+0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000 clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/ -
captcha-eu/trunk/vendor/composer/installers/.git/objects/info/packs
r3340205 r3347420 1 P pack- c8323075ac8f3d5b632c113f9a8b003d76f2ef04.pack1 P pack-d5163848cabfa76e781dca05937c97e4aadfebf6.pack 2 2 -
captcha-eu/trunk/wp-captcha.php
r3340205 r3347420 4 4 * Description: Captcha.eu provides a GDPR compliant protection against bots and spammers. 5 5 * Plugin URI: https://www.captcha.eu 6 * Version: 1.0.6 16 * Version: 1.0.62 7 7 * Author: captchaeu 8 8 * Author URI: https://profiles.wordpress.org/captchaeu/
Note: See TracChangeset
for help on using the changeset viewer.