From 4035f4084f461691d0cd3bc9a688ea6cb320cd4f Mon Sep 17 00:00:00 2001 From: NekoCH <96158157+ex-hentai@users.noreply.github.com> Date: Fri, 9 Jan 2026 13:10:51 +0800 Subject: [PATCH] use TorrentFile from Rhilip\Bencode --- composer.json | 2 +- composer.lock | 470 +++++++++++++++++++++--------------------- include/functions.php | 5 + public/download.php | 40 ++-- public/takeupload.php | 106 +++------- 5 files changed, 286 insertions(+), 337 deletions(-) diff --git a/composer.json b/composer.json index 37faf4d7..95206e94 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ "meilisearch/meilisearch-php": "^1.0", "orangehill/iseed": "^3.0", "phpgangsta/googleauthenticator": "dev-master", - "rhilip/bencode": "^2.0", + "rhilip/bencode": "^2.5.0", "rlanvin/php-ip": "^3.0", "spatie/laravel-activitylog": "^4.10", "stichoza/google-translate-php": "^5.2" diff --git a/composer.lock b/composer.lock index 62b57582..a96f401c 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": "a4e381852542cfa642548a084130dc77", + "content-hash": "969c77f6f89e57076e377e953c84fd55", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -1439,16 +1439,16 @@ }, { "name": "filament/actions", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "8c436949d3fa5cc79a2aeb0b6d1741c5555e9d33" + "reference": "0823a3990ab8297cbe091e3da593b34c67a8a1b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/8c436949d3fa5cc79a2aeb0b6d1741c5555e9d33", - "reference": "8c436949d3fa5cc79a2aeb0b6d1741c5555e9d33", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/0823a3990ab8297cbe091e3da593b34c67a8a1b2", + "reference": "0823a3990ab8297cbe091e3da593b34c67a8a1b2", "shasum": "" }, "require": { @@ -1484,20 +1484,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-09T09:55:17+00:00" + "time": "2026-01-09T15:08:11+00:00" }, { "name": "filament/filament", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "2387e41380a304c411d420b17e965e11a8e24711" + "reference": "0b7eb4fdf32c41b6789bfdf60c9ba3056c99de1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/2387e41380a304c411d420b17e965e11a8e24711", - "reference": "2387e41380a304c411d420b17e965e11a8e24711", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/0b7eb4fdf32c41b6789bfdf60c9ba3056c99de1c", + "reference": "0b7eb4fdf32c41b6789bfdf60c9ba3056c99de1c", "shasum": "" }, "require": { @@ -1541,20 +1541,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-09T09:56:39+00:00" + "time": "2026-01-07T12:49:48+00:00" }, { "name": "filament/forms", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "6f4843f45906e0583997d2543fb747e07720a774" + "reference": "9ccbc9f299c5b46a8148d5791eec7e769f2e8a79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/6f4843f45906e0583997d2543fb747e07720a774", - "reference": "6f4843f45906e0583997d2543fb747e07720a774", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/9ccbc9f299c5b46a8148d5791eec7e769f2e8a79", + "reference": "9ccbc9f299c5b46a8148d5791eec7e769f2e8a79", "shasum": "" }, "require": { @@ -1591,20 +1591,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-09T09:53:27+00:00" + "time": "2026-01-09T15:08:08+00:00" }, { "name": "filament/infolists", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "0a85cf19262610d607d873644d4fb33e620fe126" + "reference": "3039b3e1c0aaf65eeb4b4b5064c76f7d17dc10b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/0a85cf19262610d607d873644d4fb33e620fe126", - "reference": "0a85cf19262610d607d873644d4fb33e620fe126", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/3039b3e1c0aaf65eeb4b4b5064c76f7d17dc10b6", + "reference": "3039b3e1c0aaf65eeb4b4b5064c76f7d17dc10b6", "shasum": "" }, "require": { @@ -1636,11 +1636,11 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-11-28T11:18:41+00:00" + "time": "2026-01-09T15:08:10+00:00" }, { "name": "filament/notifications", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", @@ -1687,16 +1687,16 @@ }, { "name": "filament/query-builder", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/query-builder.git", - "reference": "2f7e138801e7630c56a7588651497a7f468a9149" + "reference": "d9d3ecf78a87c4fad9dad7959d7280bc73f780ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/2f7e138801e7630c56a7588651497a7f468a9149", - "reference": "2f7e138801e7630c56a7588651497a7f468a9149", + "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/d9d3ecf78a87c4fad9dad7959d7280bc73f780ed", + "reference": "d9d3ecf78a87c4fad9dad7959d7280bc73f780ed", "shasum": "" }, "require": { @@ -1729,20 +1729,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-09T09:54:30+00:00" + "time": "2025-12-30T13:02:08+00:00" }, { "name": "filament/schemas", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/schemas.git", - "reference": "02ec53daed03d2feae75832db0920c4357079133" + "reference": "1b03f3a6038f2d7ad0376fbd92532f0bb4bf8495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/schemas/zipball/02ec53daed03d2feae75832db0920c4357079133", - "reference": "02ec53daed03d2feae75832db0920c4357079133", + "url": "https://api.github.com/repos/filamentphp/schemas/zipball/1b03f3a6038f2d7ad0376fbd92532f0bb4bf8495", + "reference": "1b03f3a6038f2d7ad0376fbd92532f0bb4bf8495", "shasum": "" }, "require": { @@ -1774,20 +1774,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-05T14:53:55+00:00" + "time": "2026-01-09T15:08:07+00:00" }, { "name": "filament/support", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "7c644018cc5c9a74503039ecf7ff10f340123a8c" + "reference": "895ce0a1b2cd93984842a0a32d85be858f3437d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/7c644018cc5c9a74503039ecf7ff10f340123a8c", - "reference": "7c644018cc5c9a74503039ecf7ff10f340123a8c", + "url": "https://api.github.com/repos/filamentphp/support/zipball/895ce0a1b2cd93984842a0a32d85be858f3437d4", + "reference": "895ce0a1b2cd93984842a0a32d85be858f3437d4", "shasum": "" }, "require": { @@ -1832,20 +1832,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-05T14:53:38+00:00" + "time": "2026-01-09T15:08:09+00:00" }, { "name": "filament/tables", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "93227775fff27b0662c5f82e2e7ca6ad20cdf42c" + "reference": "4ff508594596ac649544450329ef57fbf82d8552" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/93227775fff27b0662c5f82e2e7ca6ad20cdf42c", - "reference": "93227775fff27b0662c5f82e2e7ca6ad20cdf42c", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/4ff508594596ac649544450329ef57fbf82d8552", + "reference": "4ff508594596ac649544450329ef57fbf82d8552", "shasum": "" }, "require": { @@ -1878,20 +1878,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-09T09:54:45+00:00" + "time": "2026-01-09T15:08:21+00:00" }, { "name": "filament/widgets", - "version": "v4.3.1", + "version": "v4.5.2", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "555102cf4aea7f24977d24dd36f4bad0f7be528c" + "reference": "a3c154738fe5224ccdd144ddf06068f069bc0917" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/555102cf4aea7f24977d24dd36f4bad0f7be528c", - "reference": "555102cf4aea7f24977d24dd36f4bad0f7be528c", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/a3c154738fe5224ccdd144ddf06068f069bc0917", + "reference": "a3c154738fe5224ccdd144ddf06068f069bc0917", "shasum": "" }, "require": { @@ -1922,7 +1922,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-12-09T09:56:57+00:00" + "time": "2026-01-07T12:49:18+00:00" }, { "name": "firebase/php-jwt", @@ -2252,24 +2252,24 @@ }, { "name": "graham-campbell/result-type", - "version": "v1.1.3", + "version": "v1.1.4", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" + "phpoption/phpoption": "^1.9.5" }, "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, "type": "library", "autoload": { @@ -2298,7 +2298,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { @@ -2310,7 +2310,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:45:45+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { "name": "guzzlehttp/guzzle", @@ -2725,16 +2725,16 @@ }, { "name": "imdbphp/imdbphp", - "version": "v8.3.0", + "version": "v8.3.2", "source": { "type": "git", "url": "https://github.com/tboothman/imdbphp.git", - "reference": "b007c383b416e714c7212516284c41d974beba43" + "reference": "61fe9fac330914c3e61aa52ac27814c298d96cc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tboothman/imdbphp/zipball/b007c383b416e714c7212516284c41d974beba43", - "reference": "b007c383b416e714c7212516284c41d974beba43", + "url": "https://api.github.com/repos/tboothman/imdbphp/zipball/61fe9fac330914c3e61aa52ac27814c298d96cc6", + "reference": "61fe9fac330914c3e61aa52ac27814c298d96cc6", "shasum": "" }, "require": { @@ -2745,7 +2745,7 @@ "ext-simplexml": "*", "php": ">=5.6", "psr/log": "^1.0 || ^2.0", - "psr/simple-cache": "^1.0" + "psr/simple-cache": "^1.0|^3.0" }, "require-dev": { "cache/array-adapter": "^1.2", @@ -2767,9 +2767,9 @@ "description": "Library for retrieving film and tv information from IMDb", "support": { "issues": "https://github.com/tboothman/imdbphp/issues", - "source": "https://github.com/tboothman/imdbphp/tree/v8.3.0" + "source": "https://github.com/tboothman/imdbphp/tree/v8.3.2" }, - "time": "2025-03-02T18:05:46+00:00" + "time": "2026-01-13T18:58:23+00:00" }, { "name": "irazasyed/telegram-bot-sdk", @@ -2919,16 +2919,16 @@ }, { "name": "laravel/framework", - "version": "v12.43.1", + "version": "v12.47.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "195b893593a9298edee177c0844132ebaa02102f" + "reference": "ab8114c2e78f32e64eb238fc4b495bea3f8b80ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/195b893593a9298edee177c0844132ebaa02102f", - "reference": "195b893593a9298edee177c0844132ebaa02102f", + "url": "https://api.github.com/repos/laravel/framework/zipball/ab8114c2e78f32e64eb238fc4b495bea3f8b80ec", + "reference": "ab8114c2e78f32e64eb238fc4b495bea3f8b80ec", "shasum": "" }, "require": { @@ -3137,20 +3137,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-12-16T18:53:08+00:00" + "time": "2026-01-13T15:29:06+00:00" }, { "name": "laravel/horizon", - "version": "v5.41.0", + "version": "v5.42.0", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "eb6738246ab9d3450b705126b9794dfb0ea371b3" + "reference": "7d50d317ce97e5961e85dcd57f51190ade56fd77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/eb6738246ab9d3450b705126b9794dfb0ea371b3", - "reference": "eb6738246ab9d3450b705126b9794dfb0ea371b3", + "url": "https://api.github.com/repos/laravel/horizon/zipball/7d50d317ce97e5961e85dcd57f51190ade56fd77", + "reference": "7d50d317ce97e5961e85dcd57f51190ade56fd77", "shasum": "" }, "require": { @@ -3214,9 +3214,9 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.41.0" + "source": "https://github.com/laravel/horizon/tree/v5.42.0" }, - "time": "2025-12-14T15:55:28+00:00" + "time": "2026-01-06T14:49:58+00:00" }, { "name": "laravel/passport", @@ -3296,16 +3296,16 @@ }, { "name": "laravel/prompts", - "version": "v0.3.8", + "version": "v0.3.9", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "096748cdfb81988f60090bbb839ce3205ace0d35" + "reference": "5c41bf0555b7cfefaad4e66d3046675829581ac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/096748cdfb81988f60090bbb839ce3205ace0d35", - "reference": "096748cdfb81988f60090bbb839ce3205ace0d35", + "url": "https://api.github.com/repos/laravel/prompts/zipball/5c41bf0555b7cfefaad4e66d3046675829581ac4", + "reference": "5c41bf0555b7cfefaad4e66d3046675829581ac4", "shasum": "" }, "require": { @@ -3349,22 +3349,22 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.8" + "source": "https://github.com/laravel/prompts/tree/v0.3.9" }, - "time": "2025-11-21T20:52:52+00:00" + "time": "2026-01-07T21:00:29+00:00" }, { "name": "laravel/sanctum", - "version": "v4.2.1", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "f5fb373be39a246c74a060f2cf2ae2c2145b3664" + "reference": "47d26f1d310879ff757b971f5a6fc631d18663fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/f5fb373be39a246c74a060f2cf2ae2c2145b3664", - "reference": "f5fb373be39a246c74a060f2cf2ae2c2145b3664", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/47d26f1d310879ff757b971f5a6fc631d18663fd", + "reference": "47d26f1d310879ff757b971f5a6fc631d18663fd", "shasum": "" }, "require": { @@ -3414,20 +3414,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2025-11-21T13:59:03+00:00" + "time": "2026-01-11T18:20:25+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.7", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd" + "reference": "7581a4407012f5f53365e11bafc520fd7f36bc9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/cb291e4c998ac50637c7eeb58189c14f5de5b9dd", - "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/7581a4407012f5f53365e11bafc520fd7f36bc9b", + "reference": "7581a4407012f5f53365e11bafc520fd7f36bc9b", "shasum": "" }, "require": { @@ -3475,20 +3475,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2025-11-21T20:52:36+00:00" + "time": "2026-01-08T16:22:46+00:00" }, { "name": "laravel/tinker", - "version": "v2.10.2", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c" + "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/3bcb5f62d6f837e0f093a601e26badafb127bd4c", - "reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c", + "url": "https://api.github.com/repos/laravel/tinker/zipball/3d34b97c9a1747a81a3fde90482c092bd8b66468", + "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468", "shasum": "" }, "require": { @@ -3497,7 +3497,7 @@ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^7.2.5|^8.0", "psy/psysh": "^0.11.1|^0.12.0", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", @@ -3539,9 +3539,9 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.10.2" + "source": "https://github.com/laravel/tinker/tree/v2.11.0" }, - "time": "2025-11-20T16:29:12+00:00" + "time": "2025-12-19T19:16:45+00:00" }, { "name": "lbuchs/webauthn", @@ -3916,16 +3916,16 @@ }, { "name": "league/csv", - "version": "9.27.1", + "version": "9.28.0", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797" + "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/26de738b8fccf785397d05ee2fc07b6cd8749797", - "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/6582ace29ae09ba5b07049d40ea13eb19c8b5073", + "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073", "shasum": "" }, "require": { @@ -3935,14 +3935,14 @@ "require-dev": { "ext-dom": "*", "ext-xdebug": "*", - "friendsofphp/php-cs-fixer": "^3.75.0", - "phpbench/phpbench": "^1.4.1", - "phpstan/phpstan": "^1.12.27", + "friendsofphp/php-cs-fixer": "^3.92.3", + "phpbench/phpbench": "^1.4.3", + "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-deprecation-rules": "^1.2.1", "phpstan/phpstan-phpunit": "^1.4.2", "phpstan/phpstan-strict-rules": "^1.6.2", - "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.3.6", - "symfony/var-dumper": "^6.4.8 || ^7.3.0" + "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.5.4", + "symfony/var-dumper": "^6.4.8 || ^7.4.0 || ^8.0" }, "suggest": { "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", @@ -4003,7 +4003,7 @@ "type": "github" } ], - "time": "2025-10-25T08:35:20+00:00" + "time": "2025-12-27T15:18:42+00:00" }, { "name": "league/event", @@ -4860,16 +4860,16 @@ }, { "name": "maxmind/web-service-common", - "version": "v0.11.0", + "version": "v0.11.1", "source": { "type": "git", "url": "https://github.com/maxmind/web-service-common-php.git", - "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b" + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/5b9e3d3472213361eebdb3ab8879e91b8952091b", - "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/c309236b5a5555b96cf560089ec3cead12d845d2", + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2", "shasum": "" }, "require": { @@ -4881,7 +4881,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", - "phpunit/phpunit": "^8.0 || ^9.0", + "phpunit/phpunit": "^10.0", "squizlabs/php_codesniffer": "4.*" }, "type": "library", @@ -4905,9 +4905,9 @@ "homepage": "https://github.com/maxmind/web-service-common-php", "support": { "issues": "https://github.com/maxmind/web-service-common-php/issues", - "source": "https://github.com/maxmind/web-service-common-php/tree/v0.11.0" + "source": "https://github.com/maxmind/web-service-common-php/tree/v0.11.1" }, - "time": "2025-11-20T18:33:17+00:00" + "time": "2026-01-13T17:56:03+00:00" }, { "name": "meilisearch/meilisearch-php", @@ -4991,16 +4991,16 @@ }, { "name": "monolog/monolog", - "version": "3.9.0", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -5018,7 +5018,7 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.8", "phpstan/phpstan": "^2", @@ -5078,7 +5078,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -5090,7 +5090,7 @@ "type": "tidelift" } ], - "time": "2025-03-24T10:02:05+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "nesbot/carbon", @@ -5336,16 +5336,16 @@ }, { "name": "nette/utils", - "version": "v4.1.0", + "version": "v4.1.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", "shasum": "" }, "require": { @@ -5419,9 +5419,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.0" + "source": "https://github.com/nette/utils/tree/v4.1.1" }, - "time": "2025-12-01T17:49:23+00:00" + "time": "2025-12-22T12:14:32+00:00" }, { "name": "nikic/php-parser", @@ -6050,16 +6050,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.4", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", "shasum": "" }, "require": { @@ -6109,7 +6109,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" }, "funding": [ { @@ -6121,7 +6121,7 @@ "type": "tidelift" } ], - "time": "2025-08-21T11:53:16+00:00" + "time": "2025-12-27T19:41:33+00:00" }, { "name": "phpseclib/phpseclib", @@ -6764,25 +6764,25 @@ }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -6797,7 +6797,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -6809,9 +6809,9 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { "name": "psy/psysh", @@ -7165,16 +7165,16 @@ }, { "name": "rhilip/bencode", - "version": "v2.4.4", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/Rhilip/Bencode.git", - "reference": "67a580fbc50ddec5fc01df67202619461b0fd643" + "reference": "59f0ff18c5daf31caf77b76a5a1467bc47c82bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Rhilip/Bencode/zipball/67a580fbc50ddec5fc01df67202619461b0fd643", - "reference": "67a580fbc50ddec5fc01df67202619461b0fd643", + "url": "https://api.github.com/repos/Rhilip/Bencode/zipball/59f0ff18c5daf31caf77b76a5a1467bc47c82bfb", + "reference": "59f0ff18c5daf31caf77b76a5a1467bc47c82bfb", "shasum": "" }, "require": { @@ -7211,9 +7211,9 @@ ], "support": { "issues": "https://github.com/Rhilip/Bencode/issues", - "source": "https://github.com/Rhilip/Bencode/tree/v2.4.4" + "source": "https://github.com/Rhilip/Bencode/tree/v2.5.3" }, - "time": "2025-02-04T03:05:33+00:00" + "time": "2026-01-10T08:54:04+00:00" }, { "name": "rlanvin/php-ip", @@ -7910,16 +7910,16 @@ }, { "name": "symfony/console", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6", + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6", "shasum": "" }, "require": { @@ -7984,7 +7984,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.1" + "source": "https://github.com/symfony/console/tree/v7.4.3" }, "funding": [ { @@ -8004,7 +8004,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T15:23:39+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/css-selector", @@ -8387,16 +8387,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" + "reference": "fffe05569336549b20a1be64250b40516d6e8d06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", + "url": "https://api.github.com/repos/symfony/finder/zipball/fffe05569336549b20a1be64250b40516d6e8d06", + "reference": "fffe05569336549b20a1be64250b40516d6e8d06", "shasum": "" }, "require": { @@ -8431,7 +8431,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.0" + "source": "https://github.com/symfony/finder/tree/v7.4.3" }, "funding": [ { @@ -8451,7 +8451,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T05:42:40+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/html-sanitizer", @@ -8529,16 +8529,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27" + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52", "shasum": "" }, "require": { @@ -8587,7 +8587,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.1" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.3" }, "funding": [ { @@ -8607,20 +8607,20 @@ "type": "tidelift" } ], - "time": "2025-12-07T11:13:10+00:00" + "time": "2025-12-23T14:23:49+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.2", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f" + "reference": "885211d4bed3f857b8c964011923528a55702aa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6e6f0a5fa8763f75a504b930163785fb6dd055f", - "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5", + "reference": "885211d4bed3f857b8c964011923528a55702aa5", "shasum": "" }, "require": { @@ -8706,7 +8706,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.3" }, "funding": [ { @@ -8726,20 +8726,20 @@ "type": "tidelift" } ], - "time": "2025-12-08T07:43:37+00:00" + "time": "2025-12-31T08:43:57+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd" + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", - "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4", + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4", "shasum": "" }, "require": { @@ -8790,7 +8790,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.0" + "source": "https://github.com/symfony/mailer/tree/v7.4.3" }, "funding": [ { @@ -8810,7 +8810,7 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2025-12-16T08:02:06+00:00" }, { "name": "symfony/mime", @@ -9812,16 +9812,16 @@ }, { "name": "symfony/process", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f", + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f", "shasum": "" }, "require": { @@ -9853,7 +9853,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.0" + "source": "https://github.com/symfony/process/tree/v7.4.3" }, "funding": [ { @@ -9873,7 +9873,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T11:21:06+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -9965,16 +9965,16 @@ }, { "name": "symfony/routing", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4720254cb2644a0b876233d258a32bf017330db7" + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7", - "reference": "4720254cb2644a0b876233d258a32bf017330db7", + "url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", "shasum": "" }, "require": { @@ -10026,7 +10026,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.0" + "source": "https://github.com/symfony/routing/tree/v7.4.3" }, "funding": [ { @@ -10046,7 +10046,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/service-contracts", @@ -10227,16 +10227,16 @@ }, { "name": "symfony/translation", - "version": "v8.0.1", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "770e3b8b0ba8360958abedcabacd4203467333ca" + "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/770e3b8b0ba8360958abedcabacd4203467333ca", - "reference": "770e3b8b0ba8360958abedcabacd4203467333ca", + "url": "https://api.github.com/repos/symfony/translation/zipball/60a8f11f0e15c48f2cc47c4da53873bb5b62135d", + "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d", "shasum": "" }, "require": { @@ -10296,7 +10296,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v8.0.1" + "source": "https://github.com/symfony/translation/tree/v8.0.3" }, "funding": [ { @@ -10316,7 +10316,7 @@ "type": "tidelift" } ], - "time": "2025-12-01T09:13:36+00:00" + "time": "2025-12-21T10:59:45+00:00" }, { "name": "symfony/translation-contracts", @@ -10480,16 +10480,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece" + "reference": "7e99bebcb3f90d8721890f2963463280848cba92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece", - "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92", + "reference": "7e99bebcb3f90d8721890f2963463280848cba92", "shasum": "" }, "require": { @@ -10543,7 +10543,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.3" }, "funding": [ { @@ -10563,7 +10563,7 @@ "type": "tidelift" } ], - "time": "2025-10-27T20:36:44+00:00" + "time": "2025-12-18T07:04:31+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -10622,16 +10622,16 @@ }, { "name": "ueberdosis/tiptap-php", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/ueberdosis/tiptap-php.git", - "reference": "458194ad0f8b0cf616fecdf451a84f9a6c1f3056" + "reference": "6ea321fa665080e1a72ac5f52dfab19f6a292e2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/458194ad0f8b0cf616fecdf451a84f9a6c1f3056", - "reference": "458194ad0f8b0cf616fecdf451a84f9a6c1f3056", + "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/6ea321fa665080e1a72ac5f52dfab19f6a292e2d", + "reference": "6ea321fa665080e1a72ac5f52dfab19f6a292e2d", "shasum": "" }, "require": { @@ -10671,7 +10671,7 @@ ], "support": { "issues": "https://github.com/ueberdosis/tiptap-php/issues", - "source": "https://github.com/ueberdosis/tiptap-php/tree/2.0.0" + "source": "https://github.com/ueberdosis/tiptap-php/tree/2.1.0" }, "funding": [ { @@ -10687,30 +10687,30 @@ "type": "open_collective" } ], - "time": "2025-06-26T14:11:46+00:00" + "time": "2026-01-10T16:40:02+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.6.2", + "version": "v5.6.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + "reference": "955e7815d677a3eaa7075231212f2110983adecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", + "graham-campbell/result-type": "^1.1.4", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", @@ -10759,7 +10759,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" }, "funding": [ { @@ -10771,7 +10771,7 @@ "type": "tidelift" } ], - "time": "2025-04-30T23:37:27+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { "name": "voku/portable-ascii", @@ -11546,16 +11546,16 @@ }, { "name": "laravel-lang/lang", - "version": "15.26.3", + "version": "15.26.5", "source": { "type": "git", "url": "https://github.com/Laravel-Lang/lang.git", - "reference": "a32a00e3239d33af5000b947a488387040369e5c" + "reference": "7bb1eead5ccf7e50f313003775f6046fd8967ef5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/a32a00e3239d33af5000b947a488387040369e5c", - "reference": "a32a00e3239d33af5000b947a488387040369e5c", + "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/7bb1eead5ccf7e50f313003775f6046fd8967ef5", + "reference": "7bb1eead5ccf7e50f313003775f6046fd8967ef5", "shasum": "" }, "require": { @@ -11606,7 +11606,7 @@ "issues": "https://github.com/Laravel-Lang/lang/issues", "source": "https://github.com/Laravel-Lang/lang" }, - "time": "2025-12-09T12:42:35+00:00" + "time": "2026-01-10T18:54:31+00:00" }, { "name": "laravel-lang/locale-list", @@ -12405,35 +12405,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.11", + "version": "11.0.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4" + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.4.0", + "nikic/php-parser": "^5.7.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", "sebastian/code-unit-reverse-lookup": "^4.0.1", "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.0", + "sebastian/environment": "^7.2.1", "sebastian/lines-of-code": "^3.0.1", "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.2.3" + "theseer/tokenizer": "^1.3.1" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^11.5.46" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -12471,7 +12471,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" }, "funding": [ { @@ -12491,7 +12491,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T14:37:49+00:00" + "time": "2025-12-24T07:01:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -13945,7 +13945,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.2", + "php": ">=8.2 <8.6", "ext-bcmath": "*", "ext-curl": "*", "ext-gd": "*", @@ -13963,5 +13963,5 @@ "ext-zip": "*" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/include/functions.php b/include/functions.php index a1426152..f2b23e49 100644 --- a/include/functions.php +++ b/include/functions.php @@ -6615,4 +6615,9 @@ function hide_text($text) { return '' . $text . ''; } +function make_content_disposition(string $filename, string $disposition = 'attachment'): string { + $filenameFallback = str_replace('%', '', Str::ascii($filename)); + return \Symfony\Component\HttpFoundation\HeaderUtils::makeDisposition($disposition, $filename, $filenameFallback); +} + ?> diff --git a/public/download.php b/public/download.php index 83abc5cf..2a525dac 100644 --- a/public/download.php +++ b/public/download.php @@ -1,4 +1,7 @@ cleanRootFields(); +$dict->setAnnounce(get_tracker_schema_and_host($CURUSER['tracker_url_id'], true) . "?passkey=" . $CURUSER['passkey']); +$dict->setComment(getSchemeAndHttpHost(true) . "/details.php?id=" . $id); +$dict->setCreatedBy($SITENAME); +$dict->setCreationDate(strtotime($row['added'])); +do_log(sprintf("[ANNOUNCE_URL], user: %s, torrent: %s, url: %s", $CURUSER['id'] ?? '', $id, $dict->getAnnounce())); /** * does not support multi-tracker * @@ -197,30 +203,10 @@ header ("Content-Transfer-Encoding: binary"); */ header("Content-Type: application/x-bittorrent"); - -if ( str_replace("Gecko", "", $_SERVER['HTTP_USER_AGENT']) != $_SERVER['HTTP_USER_AGENT']) -{ - header ("Content-Disposition: attachment; filename=\"$torrentnameprefix.".$row["save_as"].".torrent\" ; charset=utf-8"); -} -else if ( str_replace("Firefox", "", $_SERVER['HTTP_USER_AGENT']) != $_SERVER['HTTP_USER_AGENT'] ) -{ - header ("Content-Disposition: attachment; filename=\"$torrentnameprefix.".$row["save_as"].".torrent\" ; charset=utf-8"); -} -else if ( str_replace("Opera", "", $_SERVER['HTTP_USER_AGENT']) != $_SERVER['HTTP_USER_AGENT'] ) -{ - header ("Content-Disposition: attachment; filename=\"$torrentnameprefix.".$row["save_as"].".torrent\" ; charset=utf-8"); -} -else if ( str_replace("IE", "", $_SERVER['HTTP_USER_AGENT']) != $_SERVER['HTTP_USER_AGENT'] ) -{ - header ("Content-Disposition: attachment; filename=".str_replace("+", "%20", rawurlencode("$torrentnameprefix." . $row["save_as"] .".torrent"))); -} -else -{ - header ("Content-Disposition: attachment; filename=".str_replace("+", "%20", rawurlencode("$torrentnameprefix." . $row["save_as"] .".torrent"))); -} +header("Content-Disposition: " . make_content_disposition($torrentnameprefix . $row["save_as"] . '.torrent')); //header ("Content-Disposition: attachment; filename=".$row["filename"].""); //ob_implicit_flush(true); //print(benc($dict)); -echo \Rhilip\Bencode\Bencode::encode($dict); +echo $dict->dumpToString(); ?> diff --git a/public/takeupload.php b/public/takeupload.php index acf7a059..c3e48a2b 100644 --- a/public/takeupload.php +++ b/public/takeupload.php @@ -1,5 +1,8 @@ $max_torrent_size) bark($lang_takeupload['std_torrent_file_too_big'].number_format($max_torrent_size).$lang_takeupload['std_remake_torrent_note']); $tmpname = $f["tmp_name"]; @@ -108,79 +109,36 @@ if ($maxPrice > 0 && isset($_POST['price']) && $_POST['price'] > $maxPrice && $p } try { - $dict = \Rhilip\Bencode\Bencode::load($tmpname); -} catch (\Rhilip\Bencode\ParseErrorException $e) { - bark($lang_takeupload['std_not_bencoded_file']); + $dict = TorrentFile::load($tmpname); + $dict->unhybridizedTo(); + $dict->parse(); +} catch (ParseException $e) { + bark($e->getMessage()); } -function checkTorrentDict($dict, $key, $type = null) -{ - global $lang_takeupload; - - if (!is_array($dict)) bark($lang_takeupload['std_not_a_dictionary']); - $value = $dict[$key]; - if (!isset($value)) bark($lang_takeupload['std_dictionary_is_missing_key']); - if (!is_null($type)) { - $isFunction = 'is_' . $type; - if (function_exists($isFunction) && !$isFunction($value)) { - bark($lang_takeupload['std_invalid_entry_in_dictionary']); - } - } - return $value; -} - -$info = checkTorrentDict($dict, 'info'); -if (isset($dict['piece layers']) || isset($info['files tree']) || (isset($info['meta version']) && $info['meta version'] == 2)) { - bark('Torrent files created with Bittorrent Protocol v2, or hybrid torrents are not supported.'); -} -$plen = checkTorrentDict($info, 'piece length', 'integer'); // Only Check without use -$dname = checkTorrentDict($info, 'name', 'string'); -$pieces = checkTorrentDict($info, 'pieces', 'string'); - -if (strlen($pieces) % 20 != 0) -bark($lang_takeupload['std_invalid_pieces']); - -$filelist = array(); -$totallen = $info['length'] ?? null; -if (isset($totallen)) { - $filelist[] = array($dname, $totallen); - $type = "single"; -} -else { - $flist = checkTorrentDict($info, 'files', 'array'); - - if (!isset($flist)) bark($lang_takeupload['std_missing_length_and_files']); - if (!count($flist)) bark("no files"); - - $totallen = 0; - foreach ($flist as $fn) { - $ll = checkTorrentDict($fn, 'length', 'integer'); - $path_key = isset($fn['path.utf-8']) ? 'path.utf-8' : 'path'; - $ff = checkTorrentDict($fn, $path_key, 'list'); - - $totallen += $ll; - $ffa = array(); - foreach ($ff as $ffe) { - if (!is_string($ffe)) bark($lang_takeupload['std_filename_errors']); - $ffa[] = $ffe; - } - - if (!count($ffa)) bark($lang_takeupload['std_filename_errors']); - $ffe = implode("/", $ffa); - $filelist[] = array($ffe, $ll); - } - $type = "multi"; -} - -$dict['announce'] = get_protocol_prefix() . $announce_urls[0]; // change announce url to local -$dict['info']['private'] = 1; //The following line requires uploader to re-download torrents after uploading //even the torrent is set as private and with uploader's passkey in it. -$dict['info']['source'] = "[$BASEURL] $SITENAME"; -unset ($dict['announce-list']); // remove multi-tracker capability -unset ($dict['nodes']); // remove cached peers (Bitcomet & Azareus) +$dict->cleanRootFields() + ->setComment(getSchemeAndHttpHost()) + ->setCreationDate(time()) + ->setCreatedBy($SITENAME) + ->setAnnounce(get_protocol_prefix() . $announce_urls[0]) // change announce url to local + ->setPrivate(true) + ->setSource("[$BASEURL] $SITENAME"); -$infohash = pack("H*", sha1(\Rhilip\Bencode\Bencode::encode($dict['info']))); // double up on the becoding solves the occassional misgenerated infohash + +$filelist = $dict->getFileList(); +$dname = $dict->getName(); +$type = $dict->getFileMode(); +$totallen = $dict->getSize(); +$pieces = $dict->getInfoField('pieces'); +$piecesCount = strlen($pieces) / 20; +$maxPieceCount = 24576; +$idealPiecesCount = $totallen / (8 * 1024 ** 2); +if ($piecesCount > $maxPieceCount && $idealPiecesCount < $maxPieceCount) { + bark('Too many pieces'); +} +$infohash = $dict->getInfoHashV1ForAnnounce(); $exists = \App\Models\Torrent::query()->where('info_hash', $infohash)->first(['id']); if ($exists) { // bark($lang_takeupload['std_torrent_existed']); @@ -351,7 +309,7 @@ $insert = [ // 'pt_gen' => $_POST['pt_gen'] ?? '', // 'technical_info' => $_POST['technical_info'] ?? '', 'cover' => $cover, - 'pieces_hash' => sha1($info['pieces']), + 'pieces_hash' => sha1($pieces), 'cache_stamp' => time(), ]; /** @@ -412,7 +370,7 @@ $id = \Nexus\Database\NexusDB::insert('torrents', $insert); //$id = mysql_insert_id(); $torrentFilePath = "$torrentSavePath/$id.torrent"; -$saveResult = \Rhilip\Bencode\Bencode::dump($torrentFilePath, $dict); +$saveResult = $dict->dump($torrentFilePath); if ($saveResult === false) { sql_query("delete from torrents where id = $id limit 1"); bark("save torrent to $torrentFilePath fail."); @@ -442,7 +400,7 @@ if (!empty($tagIdArr)) { @sql_query("DELETE FROM files WHERE torrent = $id"); foreach ($filelist as $file) { - @sql_query("INSERT INTO files (torrent, filename, size) VALUES ($id, ".sqlesc($file[0]).",".$file[1].")"); + @sql_query("INSERT INTO files (torrent, filename, size) VALUES ($id, ".sqlesc($file['path']).",".$file['size'].")"); } $extra['torrent_id'] = $id; \App\Models\TorrentExtra::query()->create($extra);