Commit graph

178 commits

Author SHA1 Message Date
Enjeck C
6d6509990f fix: Make some strings in CodeIntegrity.php translatable
Signed-off-by: Enjeck C <patrathewhiz@gmail.com>
2025-08-26 22:04:15 +02:00
MichaIng
7e7822fbed feat(settings): simplify OPcache checks
For the overall OPcache size check, we currently compare used memory with free memory. However, `opcache.memory_consumption` is split into `used_memory`, `free_memory` and `wasted_memory`. When cached files change on disk, old entries are not replaced or removed, but remain as wasted memory, until the cache is actually full, and if their percentage is above `opcache.max_wasted_percentage`, which is 5% by default. When this happens, the engine is restarted, resetting the cache completely, like a `opcache_reset()` call.

As long as we do not consider wasted cache, recommendations based on free memory can be false. To solve this, we could count wasted memory as free memory, if it is above `opcache.max_wasted_percentage`, as the engine will be restarted as soon as needed, freeing up this wasted space. On the other hand, wasted memory below the threshold permanently blocks the OPcache, which supports counting it as used memory. Depending on the situation, instead of raising OPcache size, it could be also advised to reduce `opcache.max_wasted_percentage`. But too frequent cache resets break its purpose as well.

In my opinion, the matter is too complex to consider wasted cache correctly, and do precise recommendations, but we should focus on reducing false positives instead. What we know for sure is: if the cache is full (`$status['cache_full'] === true`), and the limit for cached keys has not been reached, the OPcache was too small to maintain free space, with wasted memory below the configured threshold, where it consumes memory permanently. Recommending to raise the OPcache size in this case, is hence as accurate as it gets. Even if 5% wasted cache could be freed, 95% used memory is still above the previous threshold for the setup check warning. And if `opcache.max_wasted_percentage` is above 5%, then the admin must have decided to change the default, deciding that system memory consumption has lower priority than preventing OPcache engine restarts.

`cache_full` can be true as well if the limit for cached keys has been reached, hence we need to merge both checks. In this case `num_cached_keys` equals `max_cached_keys` exactly, hence it is easy to differentiale whether `opcache.max_accelerated_files` or `opcache.memory_consumption` needs to be raised to address the `cache_full` state.

In practice, this change relaxes the checks: the respective limit needs to be reached 100% instead of 90%, to trigger a warning, eliminating also false alarms if a large share of the cache is consumed by wasted memory, which would be automatically freed once cache is 100% full.

Additionally, the recommendation for raising `opcache.max_accelerated_files` now says "a value higher than `max_cached_keys`", instead of "higher than `opcache.max_accelerated_files`". The actual limit, reflected by `max_cached_keys` from `opcache_get_status()`, [is a next higher value from a set of prime numbers](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.max-accelerated-files). E.g. if `opcache.max_accelerated_files` is set to 10,000 (PHP default), the effective limit is 16,229 OPcache keys. Recommending "higher than 10000" could hence lead to a settings change without effect. For an effective change, the new value needs to be "higher than 16229" instead, which is what the setup check will show in this situation, with this change applied.

Signed-off-by: MichaIng <micha@dietpi.com>
2025-08-01 09:34:41 +02:00
Ferdinand Thiessen
42f9209db7 fix(settings): use correct scope for translations
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-07-11 11:04:21 +00:00
rakekniven
4fbfb195b5 chore(18n): More natural english - fix plural typo
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-05-26 14:15:24 +02:00
Joas Schilling
4f7aac0820 fix(l10n): Fix one more plural
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-26 14:15:24 +02:00
Marcel Klehr
8b9882c5e6 fix: Correct translation method use
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-05-26 14:15:24 +02:00
rakekniven
70a775ea8e fix(SetupChecks): Update TaskProcessingPickupSpeed
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-05-26 14:15:24 +02:00
rakekniven
9778ee30d6 chore(18n): More natural english
Reported at Transifex.

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-05-26 14:15:24 +02:00
Marcel Klehr
708462a098 feat(SetupChecks): Add check for TaskProcessing pickup speed
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-05-26 14:15:24 +02:00
Ferdinand Thiessen
832f79ac93
chore: apply code style
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-30 19:04:59 +02:00
Joas Schilling
a5e6f46eb0
fix(l10n): Improve english source strings
- No leading/trailing whitespace
- Use asci single quote

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-02-26 15:06:47 +01:00
Joas Schilling
37948c5127 fix(setupcheck): Update setup check for PHP version to be more accurate
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-02-10 18:46:56 +00:00
Josh
0ea6c5bb9d fix(SetupChecks): Pass webfinger if a handler is there
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-01-26 14:40:35 +00:00
Git'Fellow
c38d308aa2 fix(setupchecks): Binary data can have problems with serialize
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-01-10 08:02:37 +00:00
Joas Schilling
f12b81534a
fix(setupcheck): Make the Memcache setupcheck use the cache
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-12-19 15:35:04 +01:00
Git'Fellow
09ad3951e3
Merge pull request #49373 from nextcloud/backportArrayKeySetupCheks
fix(SetupChecks): Make sure array key is set
2024-11-21 13:08:14 +01:00
skjnldsv
79bf1abb98 fix(settings): psalm PhpMaxFileSize setup check warning
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-19 19:05:35 +01:00
skjnldsv
e22f8a8fa2 feat(settings): add big file upload setup checks
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-19 16:24:57 +00:00
Git'Fellow
50d071e7d2 fix(SetupChecks): Make sure array key is set
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-11-19 14:11:20 +01:00
Ferdinand Thiessen
77321bc6cf
Merge pull request #47944 from nextcloud/backport/47883/stable30
[stable30] fix(setup-checks): Ensure URL with webroot works
2024-09-19 00:19:19 +02:00
Joas Schilling
9371d93249 fix(a11y): Add OTF font loading check
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-09-16 09:26:59 +00:00
Ferdinand Thiessen
71d870d1bd
refactor(settings): CheckServerResponseTrait always expect absolute path
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-15 21:40:27 +02:00
Ferdinand Thiessen
27300ac6ce
fix(setup-checks): Ensure URL with webroot works
We basically mock the way `URLGenerator::getAbsoluteURL` works,
so we must make sure that the URL might already contain the webroot.
Because `baseURL` and `cliURL` also contain the webroot we need to remove
the webroot from the URL first.

Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Daniel <mail@danielkesselberg.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-15 21:40:27 +02:00
Côme Chilliet
6830b250b4 fix(setupchecks): Test overwrite.cli url first, then generated one, and
trusted domains as last fallback.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-05 15:54:56 +00:00
Daniel Kesselberg
ed8759eab8 fix: add option to remove the webroot for setup checks and don't check trusted_domains.
1) The checks for well-known urls should always run against the root domain and therefore the option to remove the webroot.

2) For trusted domains, the available protocol is unknown, and thus some guesswork would be needed to make that work. I've decided for now to not consider them anymore to reduce false-positives.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-09-05 15:54:56 +00:00
Ferdinand Thiessen
0563757ea4 fix(SetupCheck): Properly check public access to data directory
When checking for public (web) access to the data directory the status is not enough
as you might have a webserver that forwards to e.g. a login page.
So instead check that the content of the file matches.

For this the `.ncdata` file (renamed from `.ocdata`¹) has minimal text content
to allow checking.

¹The file was renamed from the legacy `.ocdata`, there is a repair step to remove the old one.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-08 22:08:42 +02:00
Git'Fellow
4488714148
Merge pull request #46353 from nextcloud/skipOPcacheCLI
fix(setupchecks): Skip checking for OPcache settings if running checks from CLI
2024-08-01 20:02:25 +02:00
Joas Schilling
047479ccf9
feat(security): Add public API to allow validating IP Ranges and checking for "in range"
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-07-19 16:28:03 +02:00
Benjamin Gaussorgues
202e5b1e95
feat(security): restrict admin actions to IP ranges
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-07-19 16:28:03 +02:00
Anna Larch
2201bce7d3 fix(caldav): lower scheduling table size warning
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-07-17 11:20:49 +02:00
Git'Fellow
fa84f52c3f
fix: typo
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-07-08 15:11:35 +02:00
Git'Fellow
372c9d2ee6
fix: check both CLI and value
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-07-08 15:09:29 +02:00
Git'Fellow
39f052407a
fix(setupchecks): Skip checking for OPcache if running from CLI
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-07-08 10:43:20 +02:00
Ferdinand Thiessen
8fc498fb82
fix(IntegrityCheck): Ensure the check is run if no results are available
If there are no cached results the current implementation was also returning an empty array,
but this was the same as when there was a successful run.
So to distinguish this we return `null` if there are *no* results.
In this case we need to rerun the integrity checker.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-03 11:37:49 +02:00
Daniel
02983f3317
Merge pull request #46190 from nextcloud/bug/45047/skip-check-when-disk-free-space-disabled
fix(setupchecks): skip check when disk_free_space is disabled
2024-06-29 15:59:17 +02:00
Daniel Kesselberg
fd9fd1b6fb
fix(setupchecks): skip check when disk_free_space is disabled
Make it easier to discover that the check failed because disk_free_space is disabled.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-06-28 13:06:49 +02:00
Ferdinand Thiessen
6601adcd6d
refactor(SetupCheck): Make mariadb and mysql version variables
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-06-27 16:22:42 +02:00
Ferdinand Thiessen
6e48ca1cf8
fix(settings): Adjust SetupCheck for supported database versions
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-06-27 16:15:16 +02:00
MichaIng
ea994fe8fb
fix(settings): make trailing slash for caldav/carddav redirects optional
#43939 moved the CalDAV/CardDAV redirect checks from the frontend to a new backend API.

Since the backend does not send an authentication header, checking for the expected response code 207 of the DAV endpoint does not work anymore, hence the URL of the last redirect is checked instead.

This URL is expected to contain a trailing slash, which was not required before, since the DAV endpoint works properly without it (when authenticated).

While a trailing slash in the redirect does no harm, it causes many setups to throw an admin panel warning, while in fact the redirects work properly. Furthermore, the proposed "/.well-known/carddav" => "/remote.php/dav/" redirect leads to double slashes, when doing a request to "/.well-known/carddav/", which seems more wrong then right.

This change makes the trailing slash optional, hence old and adjusted setups won't throw the warning anymore, and the DAV endpoint works well in both cases.

Signed-off-by: MichaIng <micha@dietpi.com>
2024-06-24 17:52:22 +02:00
Robin Appelman
e74f71b32e feat: add setup check for needed mimetype migrations
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-06-18 14:46:19 +02:00
Andy Scherzinger
ec5b60af28
chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-06-03 20:33:31 +02:00
Anna Larch
ad78f7e48e fix(caldav): automatically delete outdated scheduling objects
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-05-31 13:14:01 +02:00
Côme Chilliet
c31d6b1fdc
Merge pull request #45262 from nextcloud/check-HttpsUrlGeneration
fix(SetupChecks): Detect CLI mode in HTTPS / URL generator check
2024-05-13 12:06:21 +02:00
Daniel
99f89bb3de
Merge pull request #45242 from nextcloud/check-memcache-memcached
fix(setupCheck): Only warn when memcache present w/o memcached
2024-05-13 11:53:27 +02:00
Ferdinand Thiessen
ef320200b9
fix: Move hint about firewall issues to common helper string
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Josh <josh.t.richards@gmail.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-05-13 09:27:19 +02:00
Julius Härtl
a5fc9b1563
Merge pull request #45272 from nextcloud/check-db-missing-indices
feat(SetupChecks): Refactor DatabaseHasMissingIndices
2024-05-13 07:55:39 +02:00
Josh Richards
5b5178abe7 fix(SetupChecks): Detect CLI mode in HTTPS / URL generator check
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-05-12 18:09:36 -04:00
Josh Richards
229e5444c9 feat(SetupChecks): Refactor DatabaseHasMissingIndices
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-05-11 10:29:42 -04:00
Josh Richards
29157149c8 fix: oops vendor string embedded in version
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-05-10 16:41:29 -04:00
Josh Richards
2e94ec8832 fix: only compare major version of pgsql
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-05-10 16:41:29 -04:00