Commit Graph

17793 Commits

Author SHA1 Message Date
DariusIII 064154ad12 Try to gain API speed 2026-07-14 13:26:18 +02:00
DariusIII 4a54077480 Fix issue with wrong date() 2026-07-14 12:53:54 +02:00
DariusIII d4d8f7cafa Update boost support 2026-07-14 12:46:08 +02:00
DariusIII 92b1c39613 Update API and APIv2 handling 2026-07-14 12:32:04 +02:00
DariusIII 7a70462ba4 Update agents.md with commit handling 2026-07-14 11:50:17 +02:00
DariusIII 654c0922c4 Update rector 2026-07-14 10:23:57 +02:00
DariusIII 5ee33502b1 Update nzb creation 2026-07-13 16:51:10 +02:00
DariusIII 1a9a976fa5 Update passkeys support 2026-07-13 13:34:50 +02:00
DariusIII 2652ff04a1 Update passkeys support 2026-07-13 13:13:59 +02:00
DariusIII 0eae1a7ca9 Harden 2FA 2026-07-13 13:07:17 +02:00
DariusIII b5b6841eca Update admin area views and controllers 2026-07-13 11:36:42 +02:00
DariusIII af014a9982 Update used packages to their latest versions 2026-07-13 09:44:21 +02:00
DariusIII 645eba20e2 Update additional PP 2026-07-12 16:30:39 +02:00
DariusIII 1e6c6f5193 Update APIv2 controller 2026-07-12 12:03:34 +02:00
DariusIII 11734a4163 Small speedup 2026-07-12 11:10:20 +02:00
DariusIII 01ee665a24 Update APIv2 speed 2026-07-12 11:06:31 +02:00
DariusIII 16388f1666 Make small speed improvements in XML_Response 2026-07-12 10:52:53 +02:00
DariusIII e11318eb2c Update XML_Response for API 2026-07-12 10:20:19 +02:00
DariusIII 138c0bfc30 Fix remember me behavior 2026-07-12 09:46:19 +02:00
DariusIII 1d98471262 Add resources 2026-07-11 16:28:54 +02:00
DariusIII c784e0d4e5 Update views 2026-07-11 16:28:16 +02:00
DariusIII 5a54fbe457 Fix issue in XMLResponse class 2026-07-11 15:22:49 +02:00
DariusIII a3a6fd8e4a Add missing files 2026-07-11 12:05:47 +02:00
DariusIII 254faf3050 Update series page 2026-07-11 11:40:39 +02:00
DariusIII 60c85e2e63 Add tests 2026-07-11 10:04:38 +02:00
DariusIII ccb79f13b9 Update API handling 2026-07-11 10:00:01 +02:00
DariusIII b0c781421c Update admin views and controllers 2026-07-10 22:35:32 +02:00
DariusIII f6c18cdeac Update views and related controllers 2026-07-10 21:31:19 +02:00
DariusIII 81d60db201 Add test 2026-07-10 16:31:59 +02:00
DariusIII 67be01c5ad Update health check 2026-07-10 16:30:46 +02:00
DariusIII 7c1a85c3da Update used packages to their latest versions 2026-07-10 15:11:33 +02:00
DariusIII 2fe92b5bfa Merge pull request #1863 from NNTmux/revert-1860-fix/category-exclusion-role-permissions
Revert "Fix getCategoryExclusionById() excluding every category for role-only users"
2026-07-09 08:35:32 +02:00
DariusIII 06379f25cb Revert "Fix getCategoryExclusionById() excluding every category for role-only users" 2026-07-09 08:14:18 +02:00
DariusIII 3927bf5656 Update used packages to their latest versions 2026-07-08 16:08:27 +02:00
DariusIII 8a63ee6700 Merge pull request #1860 from joemeyer76/fix/category-exclusion-role-permissions
Fix getCategoryExclusionById() excluding every category for role-only users
2026-07-04 09:29:36 +02:00
DariusIII f0f17def8c Merge pull request #1861 from joemeyer76/fix/nntp-getxover-return-type
Fix NNTPService::getXOVER() TypeError on NNTP error responses
2026-07-04 09:28:08 +02:00
joemeyer76 b0fd5491a0 Fix NNTPService::getXOVER() TypeError on NNTP error responses
getXOVER() declared its return type as `array|string|NNTPService`, which
does not include DariusIII\NetNntp\Error. The underlying NNTP client
legitimately returns an Error object whenever the server responds with
an error to an XOVER command (e.g. a group with no matching articles,
or a range past the group's high-water mark) -- both call sites in
BinariesService already guard for exactly this case via
NNTPService::isError($result). Because the declared return type
excluded Error, PHP raised a TypeError before either caller ever got a
chance to run that check:

    App\Services\NNTP\NNTPService::getXOVER(): Return value must be of
    type App\Services\NNTP\NNTPService|array|string, DariusIII\NetNntp\Error
    returned

In practice this crashed the first XOVER call that hit any error
response, which made historical backfill (`update:backfill` /
`multiprocessing:backfill`) unusable beyond the very first successful
chunk for a group -- backfill by its nature keeps requesting older and
older ranges until it walks off the group's actual history, at which
point the server error becomes inevitable.

Every sibling method on this class that the NNTP client can answer with
an Error object (doConnect, doQuit, getOverview, getGroups, getMessages,
getMessagesByMessageID) already declares `mixed` for this same reason.
This change brings getXOVER() in line with that existing convention
rather than introducing a new pattern.

Added a regression test that uses reflection to assert getXOVER()'s
return type permits DariusIII\NetNntp\Error (or is unrestricted via
`mixed`), plus a sanity check that NNTPService::isError() correctly
identifies Error instances. Verified the test fails against the old
`array|string|NNTPService` signature and passes against `mixed`.

Manually verified against a live NNTP server: `update:backfill` on a
real group ran 15+ chunks past the point where it previously crashed on
the very first error response, with no exceptions.
2026-07-03 20:21:36 -04:00
joemeyer76 e62724f2cd Fix getCategoryExclusionById() excluding every category for role-only users
RolesAndPermissionsSeeder grants every 'view *' permission via
Role::givePermissionTo() only -- it never grants permissions directly to a
user with User::givePermissionTo(). That is true for every seeded role,
including Admin.

User::getCategoryExclusionById() computed the allowed permission set as:

    $userAllowed = $user->getDirectPermissions()->pluck('name')->toArray();
    $roleAllowed = $user->getAllPermissions()->pluck('name')->toArray();
    $allowed = array_intersect($roleAllowed, $userAllowed);

getAllPermissions() already includes permissions granted via the user's
role(s), so intersecting it with getDirectPermissions() (permissions
assigned directly to the user, bypassing roles) means $allowed is empty
for any user whose permissions come only from their role. Since every
seeded role works this way, this silently excluded every category root
for every user on a fresh install, and any subsequent Newznab/Torznab API
search or browse request returned zero results with no visible error.

Fix: use getAllPermissions() directly, since it already reflects both
role-granted and directly-granted permissions.

Added a regression test (test_role_only_permissions_are_not_excluded)
that mirrors the real seeder setup -- role-only permissions, nothing
granted directly to the user -- to make sure this doesn't regress.
2026-07-03 18:18:46 -04:00
DariusIII 09ad515969 Update proxy blocking 2026-07-02 13:47:12 +02:00
DariusIII ffff25307b Remove xcertain *arr apps 2026-07-02 13:36:14 +02:00
DariusIII 7b5313e97e Update detection 2026-07-02 11:43:08 +02:00
DariusIII 3faeb1d63a Fix blocking issue 2026-07-01 14:44:16 +02:00
DariusIII 95fed139b3 Update used packages 2026-07-01 14:22:49 +02:00
DariusIII 0790d2290c Hide sensitive info from log 2026-06-30 19:05:15 +02:00
DariusIII 5b927b4581 Update blocking of abusive services 2026-06-30 17:28:09 +02:00
DariusIII 2b12bd8d0c Update used packages to their latest versions 2026-06-30 13:09:33 +02:00
DariusIII ada6ab08c8 Update docker 2026-06-29 14:22:35 +02:00
DariusIII 8b2633deb2 Merge pull request #1859 from NNTmux/copilot/fix-github-actions-php-8-5
Fix failing GitHub Actions "PHP 8.5" job: switch to composer install
2026-06-28 21:38:05 +02:00
copilot-swe-agent[bot] 3af1b15f48 fix: add missing array $headers parameter to output() overrides in tests 2026-06-28 19:19:04 +00:00
copilot-swe-agent[bot] c277fa461f fix: switch composer update to composer install in CI to avoid GitHub API rate limiting 2026-06-28 19:10:37 +00:00