Compare commits

..

389 Commits

Author SHA1 Message Date
Benjamin Gaussorgues 8a88d8bf92 Merge pull request #47890 from nextcloud/release/30.0.0_rc5 2024-09-12 14:44:24 +02:00
Julius Knorr 01bf24505d Merge pull request #47915 from nextcloud/backport/47913/stable30
[stable30] fix: Add whiteboard to education and public sector bundle
2024-09-12 13:16:05 +02:00
Andy Scherzinger 7776d684e5 Merge pull request #47882 from nextcloud/backport/47294/stable30
[stable30] fix(files): Sort tree views correctly by natural order
2024-09-12 11:23:31 +02:00
Julius Knorr 80eec3f0ef fix: Add whiteboard to education and public sector bundle
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-09-12 09:08:22 +00:00
Andy Scherzinger e664039f84 Merge pull request #47897 from nextcloud/backport/47586/stable30
[stable30] fix(theming): Add migration to restore primary color after separating primary and background
2024-09-12 10:41:56 +02:00
Andy Scherzinger bb226dc430 Merge pull request #47912 from nextcloud/backport/47906/stable30
[stable30] chore: Update trashbin retention documentation with exceeded quota details
2024-09-12 10:40:43 +02:00
Christopher Ng 99a552c1c6 chore: Update trashbin retention documentation with exceeded quota details
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-12 06:52:24 +00:00
Nextcloud bot 218f18715f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-12 00:20:27 +00:00
Ferdinand Thiessen a8ae2f9755 fix: Adjust types of IQueryBuilder to properly allow joining with sub-query
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 15:20:42 +02:00
Ferdinand Thiessen b3ffd7356f fix: Use migration instead of repair step for restoring custom color
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 15:20:33 +02:00
Ferdinand Thiessen 9a7331d5ff chore: Use IAppConfig instead of IConfig->getAppValue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 15:20:23 +02:00
Ferdinand Thiessen bf507fe537 fix: Add repair step to restore primary color after separating primary and background
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 15:19:17 +02:00
Ferdinand Thiessen 6c84ff37e1 fix(theming): Allow to specify a userId manually in BackgroundService
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 15:19:10 +02:00
Benjamin Gaussorgues 261cb7829d build(hub): 30.0.0 RC5
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-09-11 11:39:52 +02:00
Nextcloud bot 674dad0f1f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-11 00:21:20 +00:00
nextcloud-command 5e8df987ca chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-10 21:31:07 +00:00
Christopher Ng 0376f18ca9 fix(files): Render folders in natural sort order
- Nodes are returned from the endpoint in an undefined order

Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-10 14:24:27 -07:00
Christopher Ng f88a84208c fix(files): Sort tree views correctly by natural order
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-10 14:24:23 -07:00
Christopher Ng a7dfaa1e42 chore(deps): Bump @nextcloud/files to v3.9.0
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-10 14:24:19 -07:00
Andy Scherzinger 6512e6371a Merge pull request #47810 from nextcloud/backport/47649/stable30
[stable30] fix: Fix inaccessible content on public pages due to overlapping footer
2024-09-10 21:06:25 +02:00
Andy Scherzinger 0fc355be58 Merge pull request #47874 from nextcloud/backport/47853/stable30
[stable30] fix: make swift connect exception message more informative
2024-09-10 20:58:06 +02:00
Julius Knorr 33c9638a14 Merge pull request #47863 from nextcloud/backport/47860/stable30
[stable30] fix: Only write once to template instead of create/copy
2024-09-10 16:56:54 +02:00
Robin Appelman 7206e5e086 fix: make swift connect exception message more informative
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-09-10 14:47:23 +00:00
Joas Schilling 5017d5000e Merge pull request #47839 from nextcloud/backport/47640/stable30
[stable30] fix: Run migration sql as statement so that the primary db node is used
2024-09-10 16:19:32 +02:00
Stephan Orbaugh 0d31f181d2 Merge pull request #47851 from nextcloud/backport/47807/stable30
[stable30] fix(files_sharing): password checkbox and labels in link share
2024-09-10 13:31:11 +02:00
Stephan Orbaugh 819bd7372d Merge pull request #47842 from nextcloud/backport/47805/stable30
[stable30] fix: Replace conflicting tags in `xml_exception` template
2024-09-10 11:47:34 +02:00
Julius Knorr a137eebb82 fix: Only write once to template instead of create/copy
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-09-10 08:07:26 +00:00
Andy Scherzinger bf35b27f9f Merge pull request #47855 from nextcloud/backport/47845/stable30
[stable30] Add an endpoint to remove all webhook registrations from an app
2024-09-10 09:45:01 +02:00
Nextcloud bot 49d911aa33 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-10 00:37:37 +00:00
Grigorii K. Shartsev a18ca8e323 chore(assets): Recompile assets
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-09-09 23:42:26 +02:00
Grigorii K. Shartsev f5502038e5 fix(files_sharing): add accessible labels in link share creation
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-09-09 23:42:26 +02:00
Côme Chilliet 771b00f222 chore(webhook_listeners): Update openapi.json
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 18:40:45 +00:00
Côme Chilliet 9470ddbbd5 feat(webhook_listeners): Add API endpoint to remove all registrations from an AppAPI app
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 18:40:45 +00:00
Côme Chilliet 6c1a6d17c2 feat(webhook_listeners): Add mapper method to remove all registrations from a given AppAPI id
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 18:40:45 +00:00
Grigorii K. Shartsev ac09d4d382 fix(files_sharing): checkbox for password in link share is not shown
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-09-09 14:43:33 +00:00
Ferdinand Thiessen 1966c9d071 fix: Replace conflicting tags in xml_exception template
The `<?xml` tag is interpreted as PHP short tags, so this causes errors.
Instead just print that part of the template.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-09 11:45:34 +00:00
Julius Härtl 332b7a43a4 fix: Run migration sql as statement so that the primary db node is used
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-09-09 09:38:13 +00:00
Nextcloud bot 8f6620d552 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-09 00:23:33 +00:00
Nextcloud bot 43ec07fa5c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-08 00:36:42 +00:00
Nextcloud bot 211b0160dc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-07 00:37:06 +00:00
nextcloud-command 163560316b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-06 22:58:07 +00:00
Christopher Ng f577d14bac chore: compile scss
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-06 15:43:13 -07:00
Christopher Ng 3b1a46fd73 fix: Fix inaccessible content on public pages due to overlapping footer
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-06 15:43:13 -07:00
Nextcloud bot 8274e3f239 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-06 00:25:17 +00:00
Andy Scherzinger cac3305ba9 Merge pull request #47787 from nextcloud/backport/47770/stable30
[stable30] fix(dav): Always respond custom error page on exceptions
2024-09-05 22:29:13 +02:00
Louis Chemineau 23b77dc7ec fix(dav): Always respond custom error page on exceptions
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-05 18:17:10 +00:00
Arthur Schiwon 599b923188 Merge pull request #47757 from nextcloud/release/30.0.0_rc4
30.0.0 RC4
2024-09-05 20:14:24 +02:00
Arthur Schiwon eaa03b967d Merge pull request #47775 from nextcloud/backport/46255/stable30
[stable30] fix: add option to remove the webroot for setup checks and don't chec…
2024-09-05 20:11:50 +02:00
Arthur Schiwon 050a5d092a Merge pull request #47781 from nextcloud/backport/47519/stable30
[stable30] feat(transfer-ownership): Correctly react to encrypted files
2024-09-05 20:04:40 +02:00
Arthur Schiwon 289e5d7e26 Merge pull request #47778 from nextcloud/backport/47769/stable30
[stable30] fix: Use sha256 to hash arguments of background jobs
2024-09-05 20:03:46 +02:00
Côme Chilliet e1317962b0 fix(transfer-ownership): Improve comments according to code review
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-05 16:02:41 +00:00
Côme Chilliet 7bac8f0fca feat(transfer-ownership): Correctly react to encrypted files
For E2EE encrypted files, we abort the transfer.
For SSE encrypted files, we abort only if not using master key.
Also fixed the check for when the path to a single file is used.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-05 16:02:41 +00:00
Louis Chemineau 14a2efff86 fix: Migrate existing bg jobs to use sha256
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-05 15:58:45 +00:00
Louis Chemineau 94d307c331 fix: Use sha256 to hash arguments of background jobs
This is to prevent collision as we are sometime hashing user input, yet using that hash to target the background job in the database.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-05 15:58:45 +00: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
Arthur Schiwon 83e6649cfa Merge pull request #47484 from nextcloud/backport/46013/stable30
[stable30] fix: write object to the correct urn when moving from another storage to object store
2024-09-05 10:49:06 +02:00
Andy Scherzinger 9f96455030 Merge pull request #47753 from nextcloud/backport/47745/stable30
[stable30] fix(files): undefined displayname for outdated `@nextcloud/files`<3.6.0 apps
2024-09-05 09:23:33 +02:00
Andy Scherzinger 5b55f6f3a5 Merge pull request #47764 from nextcloud/backport/47754/stable30
[stable30] fix(appstore): Cache apps.json also on dev instances
2024-09-05 09:18:52 +02:00
Marcel Müller 7a236cabdd fix(appstore): Cache apps.json also on dev instances
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2024-09-05 05:48:34 +00:00
nextcloud-command 03a22f94ce chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-05 07:23:42 +02:00
skjnldsv 2393b855ab fix(files): undefined displayname for outdated @nextcloud/files<3.6.0 apps
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-05 07:23:42 +02:00
Nextcloud bot 0cc6d2e879 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-05 00:23:58 +00:00
Robin Appelman 05f79f23cd fix: write object to the correct urn when moving from another storage to object store
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-09-04 23:17:04 +02:00
Andy Scherzinger 125e18d78b Merge pull request #47733 from nextcloud/backport/46859/stable30
[stable30] Fix status check and saving of external storages
2024-09-04 23:12:26 +02:00
Andy Scherzinger 46afe2e3c2 Merge pull request #47751 from nextcloud/backport/47417/stable30
[stable30] fix(files): Create non-existent parents of mountpoints
2024-09-04 23:11:18 +02:00
Arthur Schiwon eda4e0caa6 build(hub): 30.0.0 RC4
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-09-04 23:03:18 +02:00
provokateurin b9aaa9f2e0 fix(files): Create non-existent parents of mountpoints
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-04 18:04:13 +00:00
John Molakvoæ 957d4ad7dd Merge pull request #47748 from nextcloud/backport/47738/stable30 2024-09-04 18:08:18 +02:00
nextcloud-command 0eceb57ab3 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-04 15:11:09 +00:00
skjnldsv a1902abf75 fix(files): undefined sidebar
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-04 14:57:26 +00:00
Daniel Calviño Sánchez b1ece04137 fix: Hide status tooltip in row to add a new mount point
The row to add a new mount point is cloned when a new mountpoint is

added, so it is expected that it includes a status span. However, it

should not be displayed in that row, only in the cloned row when its

status is updated.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>

Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-04 10:21:55 +00:00
Daniel Calviño Sánchez 61b64b109c fix: Fix unmodified placeholder replacing the actual value when updating
When updating global storages and user storages a property is not
updated by "StoragesService::updateStorage()" if the value matches the
unmodified placeholder. However, userglobal storages are not updated
through the "StoragesService"; as only the authentication mechanism is
updated it is directly done with "saveBackendOptions()" in
"IUserProvided" or "UserGlobalAuth". Due to this the unmodified
placeholder value needs to be explicitly checked in those cases and
replaced by the actual value (note that in this case it is not possible
to just skip updating a specific property).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez 9a8beb417e test: Add integration tests for saving external userglobal storages
As the external storage uses the Nextcloud server itself the number of
workers of the PHP process running the Nextcloud server had to be
increased. Otherwise if a request is sent for the external storage while
handling a request from the integration tests a deadlock would occur.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez c23321e956 fix: Reset selected backend when adding a new storage
As a new storage is added by selecting a backend the selected backend
needs to be reset. Otherwise it is not possible to add another storage
with the same backend.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez 2d7c44afd6 fix: Add missing translation for UI string
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez b37017a19c fix: Restore default status tooltip when no status message is provided
If the status is updated but no explicit message is provided (for
example, if the status check succeeded) the default tooltip (from the
template) is now set to prevent a mismatch between the status and the
tooltip (for example, if the configuration is fixed after a failed
status check).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez 01ee29c0d5 fix: Set status tooltip to error message on failed actions
When saving, updating and rechecking an storage fails (which is
different to the soft-fail when the action itself succeeds but the
status check does not) further details are provided in the error message
of the response, which is now set as the tooltip.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez aee7859d1f fix: Set status tooltip to status message when saving an storage
When a storage is saved the status check can fail even if saving the
storage succeeds. In those cases further details are provided in the
status message of the storage, which is now set as the tooltip,
similarly to how it is done when rechecking the storage.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez a0068126ee fix: Remove status check when configuration was changed
Setting a null status was supposed to remove the status check, but
nothing was changed in that case. Now the status check is properly
removed, and doing that by hiding the element rather than just turning
it invisible also prevents that clicking on the invisible status
triggers a check, as until the new configuration is saved the check will
still be performed with the old configuration, which could be misleading
for the user.

Additionally, an explicit width is set to the parent of the span element
to prevent its width from changing when the span is shown and hidden.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez 9e06254239 fix: Recheck userglobal storages when loaded
Userglobal storages are now automatically recheck when loaded, similarly
to how it is done for global storages.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Daniel Calviño Sánchez 5a350302dd refactor: Store result in its own variable
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 10:11:59 +00:00
Andy Scherzinger d415629010 Merge pull request #47728 from nextcloud/backport/47155/stable30
[stable30] fix(jobs): Switch to executeStatement() while deleting rows
2024-09-04 11:34:26 +02:00
Andy Scherzinger 14197c1a84 Merge pull request #47726 from nextcloud/backport/47285/stable30
[stable30] fix: Do not throw if appstore is unavailable during upgrade
2024-09-04 11:33:51 +02:00
Andy Scherzinger 8914668427 Merge pull request #47729 from nextcloud/artonge/backport/stable30/47511
[stable30] chore: Improve isEncrypted description
2024-09-04 10:54:32 +02:00
Louis Chemineau e3924d3173 chore: Improve isEncrypted description
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-04 10:32:36 +02:00
Git'Fellow 4b55a4dc1d fix: lint
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-04 07:42:42 +00:00
Git'Fellow 07a269cea4 fix(jobs): Swicth to executeStatement() while deleting rows
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-04 07:42:42 +00:00
Julius Härtl c726b2f8f6 fix: Do not throw if appstore is unavailable during upgrade
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-09-04 07:32:11 +00:00
Nextcloud bot 1a9ded4b42 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-04 00:22:03 +00:00
John Molakvoæ 858de5734e Merge pull request #47720 from nextcloud/backport/47709/stable30 2024-09-03 21:44:14 +02:00
John Molakvoæ 74b73877f9 Merge pull request #47719 from nextcloud/backport/stable30/47158 2024-09-03 21:44:03 +02:00
nextcloud-command a5cb97b928 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 19:40:06 +00:00
skjnldsv f5ab18d0e5 fix: only keep major as server version
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-03 19:31:10 +00:00
John Molakvoæ ebc7d440e2 Merge pull request #47716 from nextcloud/backport/47674/stable30 2024-09-03 21:10:11 +02:00
nextcloud-command f4a1dac431 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 18:52:50 +00:00
Christopher Ng 6897622546 fix(files): Fix navigating with breadcrumbs not highlighting navigation entry
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-03 11:44:30 -07:00
Andy Scherzinger 0d4cf4404e Merge pull request #47699 from nextcloud/backport/47635/stable30
[stable30] [oauth2] Store hashed secret instead of encrypted
2024-09-03 20:20:17 +02:00
provokateurin 93cc5297ef fix(settings): Fix sharing exclude groups from password requirement option not working
Signed-off-by: provokateurin <kate@provokateurin.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 15:22:09 +00:00
Andy Scherzinger 7f62397f63 Merge pull request #47710 from nextcloud/fix/settings/admin/textprocessing2-stable30
[stable30] fix(settings): Don't display built-in task types in AI settings TextP…
2024-09-03 16:45:20 +02:00
nextcloud-command 20cda48c53 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 14:09:16 +00:00
Marcel Klehr 2ef6af9ee0 fix(settings): Add translators note
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
(cherry picked from commit c8f4967ce2)
2024-09-03 13:19:29 +02:00
Marcel Klehr b590177d87 fix(settings): Don't display built-in task types in AI settings TextProcessing
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
(cherry picked from commit 44a5723973)
2024-09-03 13:19:21 +02:00
nextcloud-command b64b5e1ad7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 10:49:21 +02:00
Julien Veyssier 4a2d2dbe15 fix(oauth2): fix tests
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-09-03 10:49:21 +02:00
Julien Veyssier 181b7fd543 fix(oauth2): store hashed secret instead of encrypted
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-09-03 10:49:21 +02:00
Andy Scherzinger 6e982631ad Merge pull request #47691 from nextcloud/fix/remote-share-parsing
[stable30] fix(files): Correctly parse external shares for files UI
2024-09-03 10:48:57 +02:00
Andy Scherzinger 5ce265f5c1 Merge pull request #47695 from nextcloud/backport/47627/stable30
[stable30] [LinkReferenceProvider] Better size check
2024-09-03 10:26:10 +02:00
nextcloud-command 84ec816f57 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 08:22:02 +00:00
Ferdinand Thiessen 5535151cc3 fix(files): Correctly parse external shares for files UI
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 07:13:21 +02:00
Julien Veyssier 6b5675f954 fix(linkReferenceProvider): better size check
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-09-03 02:38:43 +02:00
Nextcloud bot 8b7329bfb1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-03 00:21:04 +00:00
Andy Scherzinger 073b792dbf Merge pull request #47625 from nextcloud/backport/47581/stable30
[stable30] fix: Do not fail to get internal path on NonExistingFile
2024-09-03 01:29:35 +02:00
Andy Scherzinger a484760793 Merge pull request #47693 from nextcloud/backport/47617/stable30
[stable30] fix(css): make scrollbar visible again
2024-09-03 01:28:31 +02:00
nextcloud-command be1e98fc4c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 22:52:32 +00:00
protoclown 62165ae9b7 fix(css): make scrollbar visible again
Signed-off-by: protoclown <ornano@felinn.org>
2024-09-03 00:41:56 +02:00
Julius Härtl 2e312e47f4 fix: Do not fail to get internal path on NonExistingFile/NonExistingFolder
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-09-03 00:40:03 +02:00
Andy Scherzinger bf5d09c0a9 Merge pull request #47641 from nextcloud/backport/47616/stable30
[stable30] fix(css): Adjust header styles to only add focus-visible styles to menu
2024-09-03 00:37:01 +02:00
Andy Scherzinger a52faa9dcf Merge pull request #47456 from nextcloud/dependabot/npm_and_yarn/stable30/nextcloud/dialogs-5.3.7
[stable30] chore(deps): bump @nextcloud/dialogs from 5.3.5 to 6.0.0
2024-09-03 00:25:42 +02:00
nextcloud-command 33a688532d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 21:54:20 +00:00
Ferdinand Thiessen 8df58475d5 test: update snap shot for updated vue lib
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 23:47:23 +02:00
dependabot[bot] bb1118c63b chore(deps): bump @nextcloud/dialogs from 5.3.5 to 5.3.7
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 5.3.5 to 5.3.7.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v5.3.7/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v5.3.5...v5.3.7)

---
updated-dependencies:
- dependency-name: "@nextcloud/dialogs"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 23:47:23 +02:00
Andy Scherzinger d934aa8b55 Merge pull request #47644 from nextcloud/backport/47628/stable30
[stable30] fix(UnifiedSearch): Restore normal dialog size
2024-09-02 23:45:51 +02:00
nextcloud-command e55ca0c635 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 20:52:16 +00:00
fenn-cs c637b23f65 fix(UnifiedSearch): Restore normal dialog size
Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-09-02 15:38:21 +01:00
Andy Scherzinger 0380b0212e Merge pull request #47653 from nextcloud/dependabot/npm_and_yarn/stable30/ts-jest-29.2.5
chore(deps-dev): bump ts-jest from 29.2.4 to 29.2.5
2024-09-02 12:24:40 +02:00
Andy Scherzinger 946a45dcb0 Merge pull request #47651 from nextcloud/backport/hidden-ui-group-manager
[stable30] fix(settings): Hide forbidden UI elements for group managers
2024-09-02 12:14:03 +02:00
nextcloud-command c77580f7bf chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 09:26:18 +00:00
Ferdinand Thiessen 8c17f1ea04 fix(settings): Hide forbidden UI elements for group managers
1. The "recent" accounts API only works for admin and delegated admin -> hide for group managers
2. Group managers can not create new groups -> Hide the UI to add a new group for them
3. Accounts created by group managers require one of the groups, which is managed by the group manager, assigned.
   So if the group manager only manageres a single group, we should preselect that group.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 11:12:03 +02:00
Andy Scherzinger 4a0a645559 Merge pull request #47667 from nextcloud/automated/noid/stable30-fix-npm-audit
[stable30] Fix npm audit
2024-09-02 11:11:13 +02:00
nextcloud-command b3b0acf47e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 07:46:23 +00:00
nextcloud-command 47752a4ef9 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-09-02 09:35:06 +02:00
Nextcloud bot d6d476e1af Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-02 00:21:12 +00:00
Andy Scherzinger a905a04a37 Merge pull request #47666 from nextcloud/backport/node-loading-a11y
[stable30] fix(files): Node loading information should be accessible
2024-09-01 13:32:26 +02:00
nextcloud-command 1e6ce9a9b5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-01 09:54:06 +00:00
Ferdinand Thiessen 49d2d962b2 test: Add Cypress test for renaming loading state
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-01 11:48:05 +02:00
Ferdinand Thiessen b4b93d6bcd fix(files): Node loading information should be accessible
The loading icon visually informs that the node is currently loading,
but there is no non-visual information (accessible information).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-01 11:48:05 +02:00
Nextcloud bot f16d254aff Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-01 00:20:58 +00:00
dependabot[bot] 920ca8d26f chore(deps-dev): bump ts-jest from 29.2.4 to 29.2.5
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.2.4 to 29.2.5.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.2.4...v29.2.5)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 01:11:32 +00:00
Nextcloud bot 095375584f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-31 00:26:17 +00:00
Nextcloud bot 4758166e2d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-30 16:32:47 +00:00
nextcloud-command 5351a7a89b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-30 14:17:12 +00:00
Ferdinand Thiessen 282af4c89c fix(css): Adjust header styles to only add focus-visible styles to menu
Only the main menu should be styles by the header styles, not the popover menus.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-30 16:10:02 +02:00
John Molakvoæ 791fc9d95a Merge pull request #47626 from nextcloud/backport/47546/stable30 2024-08-30 15:56:47 +02:00
John Molakvoæ 9e0ddb64a9 Merge pull request #47621 from nextcloud/backport/47567/stable30 2024-08-30 15:45:26 +02:00
Ferdinand Thiessen 6ea52ed218 fix: Adjust filename validation messages
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-30 14:48:23 +02:00
Andy Scherzinger 5b852f863a Merge pull request #47633 from nextcloud/backport/47601/stable30
[stable30] [TaskProcessing] Use taskprocessing in TextProcessing and STT managers
2024-08-30 14:47:14 +02:00
nextcloud-command c8b1756839 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:16 +02:00
nextcloud-command 1979e8e39d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:16 +02:00
Marcel Klehr 133b396a1e Revert "fix(TaskProcessing): Use OCP\Server::get instead of copying methods"
This reverts commit d624c8da8f0dc2eaf18d416aa15db0a2035de398.

Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Marcel Klehr 77464a4a0d fix(TaskProcessing): Fix namespace of TaskProcessingTest.php
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Marcel Klehr 0bd839f5ae fix(TextProcessing): Don't run taskProcessing if task type is not available
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Marcel Klehr b1dd7ff638 fix(settings): Don't show built-in textprocessing task types in textprocessing settings
TaskProcessing is transparent to textprocessing providers and TextProcessing can use Taskprocessing providers so these are unnecessary

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Marcel Klehr 64468b847d fix(settings): Remove STT admin settings
taskprocessing is transparent to STT providers so specific STT settings are obsolete

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Marcel Klehr 578e576b89 fix(SpeechToTextManager): Throw TaskProcessing Task failed
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Marcel Klehr f54eb30232 fix(TaskProcessing): Use OCP\Server::get instead of copying methods
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Julien Veyssier d2ec025fa4 fix(taskprocessing): fix tests
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Julien Veyssier aa64204075 feat(speech-to-text): SpeechToTextManager::transcribeFile calls TaskProcessingManager::runTask
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:15 +02:00
Julien Veyssier 17e48ee1a7 feat(textprocessing): TextProcessingManager::runTask calls TaskProcessingManager::runTask
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 14:06:14 +02:00
Andy Scherzinger a7406306c7 Merge pull request #47619 from nextcloud/backport/47598/stable30
[stable30] fix: re-enable content-length header via htaccess
2024-08-30 13:14:01 +02:00
Josh c8daa02524 fix(config): Avoid error messages for restricted opcache API
Make changes recently added via #44230 match #8188 to avoid failures in restricted hosting environments.

Fixes #47562

Signed-off-by: Josh <josh.t.richards@gmail.com>
2024-08-30 07:53:04 +00:00
Simon L. 391ab80972 fix: re-enable content-length header via htaccess
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-08-30 07:48:46 +00:00
Andy Scherzinger 88b04ba867 Merge pull request #47555 from nextcloud/backport/47400/stable30
[stable30] feat(files): Allow more than 50 favorite views
2024-08-29 23:26:54 +02:00
Arthur Schiwon 8c77516161 Merge pull request #47603 from nextcloud/release/30.0.0_rc3
30.0.0 RC3
2024-08-29 21:06:54 +02:00
Arthur Schiwon 59ba0554ef Merge pull request #47612 from nextcloud/backport/47611/stable30
[stable30] fix(DB): set sharding parameters only when intended
2024-08-29 21:06:11 +02:00
nextcloud-command 0eacea3d55 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 19:03:05 +00:00
Christopher Ng 94fbcf3d53 test(files): Adapt favorite views spec
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-29 11:54:22 -07:00
Christopher Ng 3eca671c36 feat(files): Allow more than 50 favorite views
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-29 11:54:22 -07:00
Christopher Ng 83ae86271c perf(files): Do not block files page load with server-side favorites retrieval
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-29 11:54:22 -07:00
Arthur Schiwon 656412daa4 test(phpunit): skip sharding tests on 32bit
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:19:33 +02:00
Arthur Schiwon cb31a40d99 build: bump version to force 32bit test
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:08:03 +02:00
Arthur Schiwon 1b89323703 fix(DB): do not assume sharding is always enabled
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:06:33 +02:00
Arthur Schiwon e9dcfbcfb7 fix(DB): set sharding parameters only when intended
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:06:31 +02:00
Arthur Schiwon 74e106f24d build: js assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 18:29:55 +02:00
Arthur Schiwon acf98398ae build(hub): 30.0.0 RC3
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 18:00:05 +02:00
Arthur Schiwon 0b5c424f3a Merge pull request #47607 from nextcloud/artonge/backport/stable30/47600
[stable30] fix(files): Remove margin and width to not break layout
2024-08-29 17:58:38 +02:00
Louis Chemineau edb05e6a70 fix(files): Remove margin and width to not break layout
In grid view, this was messing with the reported available list width which was breaking the computed layout.

Fix https://github.com/nextcloud/server/issues/47599

Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-29 17:16:08 +02:00
Andy Scherzinger 9e2db34aa7 Merge pull request #47547 from nextcloud/backport/47540/stable30
[stable30] fix(files): Correctly check for already used names when creating new folder
2024-08-29 16:26:22 +02:00
nextcloud-command 4debb50ef8 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 13:43:20 +00:00
Ferdinand Thiessen bc3d7a00b0 fix(files): Correctly check for already used names when creating new folder
Also add Cypress tests for the "new"-menu.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-29 15:33:26 +02:00
Andy Scherzinger a56f7cbc03 Merge pull request #47404 from nextcloud/backport/47363/stable30
[stable30] fix: use empty template by default when pressing enter
2024-08-29 15:33:13 +02:00
nextcloud-command 93d946bd3f chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 12:28:15 +00:00
Elizabeth Danzberger 1d9066cc68 fix: use empty template by default when pressing enter
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-29 14:16:25 +02:00
Andy Scherzinger f81a3493a1 Merge pull request #47505 from nextcloud/backport/47448/stable30
[stable30] fix(user_status): add link to Availability page if user set predefined 'Vacationing'
2024-08-29 14:16:02 +02:00
Andy Scherzinger c8bd41c5d6 Merge pull request #47442 from nextcloud/backport/47204/stable30
[stable30] fix(files): Respect "Show hidden files" setting in tree
2024-08-29 14:11:51 +02:00
Andy Scherzinger 6d3c42e07e Merge pull request #47578 from nextcloud/backport/47525/stable30
[stable30] fix: optimise `getWrongShareOwnership` query
2024-08-29 13:13:40 +02:00
Andy Scherzinger 332d12e283 Merge pull request #47429 from nextcloud/backport/47415/stable30
[stable30] fix: Trusted server icon recovery without addressbook change
2024-08-29 11:43:05 +02:00
nextcloud-command f801a23ee7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 09:42:14 +00:00
Christopher Ng 2908674ddd refactor(files): Consolidate node registration
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-29 11:31:00 +02:00
Christopher Ng 97b2f97f94 refactor(files): Organize event subscriptions
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-29 11:31:00 +02:00
Christopher Ng 957f7c113e fix(files): Respect "Show hidden files" setting in tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-29 11:30:56 +02:00
Hamza Mahjoubi 6bc88231d6 fix: optimise getWrongShareOwnership query
Signed-off-by: Hamza Mahjoubi <hamzamahjoubi221@gmail.com>
2024-08-29 11:16:22 +02:00
Andy Scherzinger d02c778fa5 Merge pull request #47597 from nextcloud/backport/47596/stable30
[stable30] fix(test): Fix provisioning enabled apps
2024-08-29 11:15:34 +02:00
Andy Scherzinger e9f3cb38ce Merge pull request #47593 from nextcloud/backport/47551/stable30
[stable30] fix(files_sharing): Make share labels nullable
2024-08-29 09:50:10 +02:00
provokateurin 863679f499 fix(test): Fix provisioning enabled apps
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-29 09:43:37 +02:00
Julius Härtl 29a0e33b88 Merge pull request #47564 from nextcloud/backport/47290/stable30
[stable30] feat(templates): add support for checkboxes in template filler
2024-08-29 09:17:27 +02:00
provokateurin c320bea7b5 fix(files_sharing): Make share labels nullable
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-29 06:45:35 +00:00
nextcloud-command 31aae22b0c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 05:28:20 +00:00
Elizabeth Danzberger 905adcaeb8 feat(templates): add support for checkboxes in template filler
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-29 05:26:58 +00:00
Nextcloud bot c24ca3c23d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-29 00:21:17 +00:00
Andy Scherzinger c265e33a46 Merge pull request #47471 from nextcloud/automated/noid/stable30-fix-npm-audit
[stable30] Fix npm audit
2024-08-29 01:10:18 +02:00
nextcloud-command 637f2dd580 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 00:47:26 +02:00
Maksim Sukharev a90a7696d2 fix(user_status): add link to Availability page if user set predefined 'Vacationing'
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2024-08-29 00:47:22 +02:00
nextcloud-command 6122125bf9 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-08-29 00:44:33 +02:00
Andy Scherzinger 3113d01b11 Merge pull request #47574 from nextcloud/backport/37303/stable30
[stable30] fix(provisionning_api): Remove parameters that are not set into template
2024-08-29 00:44:01 +02:00
Andy Scherzinger 618eeb3e29 Merge pull request #47543 from nextcloud/backport/47450/stable30
[stable30] "Line" manager instead of "Account" manager
2024-08-29 00:41:19 +02:00
Jérôme Herbinet 83e6cdbb0f chore: npm run build
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 00:22:45 +02:00
Jérôme Herbinet d3571c4d34 fix(wording): "Line" manager instead of "Account" manager
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2024-08-29 00:22:45 +02:00
Andy Scherzinger 656fdef932 Merge pull request #47528 from nextcloud/backport/47510/stable30
[stable30] fix(db): Increase log level for very slow transactions
2024-08-29 00:19:20 +02:00
Andy Scherzinger ce0b75c89e Merge pull request #47436 from nextcloud/backport/47407/stable30
[stable30] fix(files_versions): Migrate version name dialog from NcModal to NcDialog
2024-08-29 00:16:20 +02:00
Ferdinand Thiessen ffefa2137e fix(files_versions): Migrate version name dialog from NcModal to NcDialog
* Resolves https://github.com/nextcloud/viewer/issues/2390

Make the version name dialog a real dialog instead of a modal.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-28 22:42:24 +02:00
Andy Scherzinger 11a0878337 Merge pull request #47587 from nextcloud/backport/47532/stable30
[stable30] feat(webhook_listeners): Enable the app by default
2024-08-28 22:38:56 +02:00
Côme Chilliet 328b1e2b5f feat(webhook_listeners): Enable the app by default
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-28 22:09:34 +02:00
Andy Scherzinger d854ed5dfc Merge pull request #47588 from nextcloud/backport/47515/stable30
[stable30] fix(migration): Correctly sort migrations by version number
2024-08-28 22:08:16 +02:00
Andy Scherzinger 318a6f7492 Merge pull request #47583 from nextcloud/backport/47185/stable30
[stable30] fix: Filename validation should only forbid `create` and `update`
2024-08-28 22:07:13 +02:00
nextcloud-command 32a8b5ef5c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-28 18:56:59 +00:00
Joas Schilling 8894747257 fix(migration): Correctly sort migrations by version number
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-28 18:49:09 +00:00
Ferdinand Thiessen bcd26323c1 fix: Also validate parent path in verifyPath
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 20:24:03 +02:00
Ferdinand Thiessen ef3bd03849 fix: Allow read-only filename validation to allow reading files
Needed to read files with the "Windows compatibility" feature.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 20:23:54 +02:00
Ferdinand Thiessen 183fcef39b fix: Renaming does not need update but delete permissions
Renaming is basically copy + delete (a move), so no need to update permissions.
Especially if the node is in a invalid directory the node should be moveable but not editable.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 20:23:50 +02:00
Ferdinand Thiessen e5e3459a54 fix(dav): Pre-check if node can be copied or moved in DAV files plugin
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 20:23:42 +02:00
Stephan Orbaugh f014c52b5f Merge pull request #47561 from nextcloud/backport/46639/stable30
[stable30] Transparent* database sharding
2024-08-28 17:23:39 +02:00
Thomas Citharel 089edee35f fix(provisionning_api): Remove parameters that are not set into template
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-08-28 14:05:00 +00:00
Louis Chemineau 140b36fcea fix: Backport to 30
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-28 14:54:14 +02:00
Louis Chemineau e5a8f996bd chore: Apply php:cs recommendations
Signed-off-by: Louis Chemineau <louis@chmn.me>

[skip ci]
2024-08-28 14:54:14 +02:00
Robin Appelman e2bff39f73 fix: mark systemconfig value as not being tainted because they are implicitly trusted
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 57ffbb7391 fix: make preload custom proterties sharding compatible
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman b2645590ce fix: implement sharding compatible cleanup for various bits
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman dc5f0f5fb7 fix: fix share cleanup for deleted groups with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman ddecae894a fix: adjust systemtag orphan cleanup query to work with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 550072342b fix: make background scan job compatible with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 1b6d76aa1b test: fix share provider tests for sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 0e40fa4fa5 fix: run mimetype repair query across all shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 693ee5ea0f fix: hint storage id in more places
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 22f76fca59 test: run sharding tests in ci
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 3e5193957b fix: only allow pre-defined shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman ecf1cc2c3c test: mark share test cleanup as running across all shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 82d7eaf80a feat: implement distributing partitioned queries over multiple shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 4ec53e723e feat: add option to automatically partition queries by specific tables
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 8f57d46a0b fix: delay calculating global cache prefix untill a cache is created
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman b1744e70a5 fix: don't make ICacheFactory depend on database
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman 8eaddbc038 feat: track expected output columns in query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Stephan Orbaugh 0d690ee11d Merge pull request #47398 from nextcloud/backport/47259/stable30
[stable30] feat: add negative compare-and-delete to imemcache
2024-08-28 14:54:00 +02:00
Stephan Orbaugh 175a09aabc Merge pull request #47559 from nextcloud/backport/47496/stable30
[stable30] feat: Improve encryption mode detection in occ info:file
2024-08-28 14:23:18 +02:00
Andy Scherzinger 1fcb0a3823 Merge pull request #47542 from nextcloud/backport/47522/stable30
[stable30] [TaskProcessing] Add manager::runTask method
2024-08-28 13:39:51 +02:00
Andy Scherzinger 30d0d08134 Merge pull request #47533 from nextcloud/backport/47509/stable30
[stable30] fix: gracefully handle unexpected exif orientation types
2024-08-28 13:11:42 +02:00
Andy Scherzinger b6096d2a22 Merge pull request #47499 from nextcloud/backport/47490/stable30
[stable30] chore(files): Adjust wording for file type filter
2024-08-28 12:15:52 +02:00
John Molakvoæ 77f6029c7e Merge pull request #47492 from nextcloud/backport/47467/stable30 2024-08-28 11:28:06 +02:00
Louis Chemineau 1c5eadba01 feat: Improve encryption mode detection in occ info:file
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-28 11:25:33 +02:00
Joas Schilling 028d59c8cd Merge pull request #47550 from nextcloud/backport/47521/stable30
[stable30] fix(logger): ignore session logging during setup
2024-08-28 08:18:24 +02:00
Nextcloud bot 3df82a14a5 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-28 00:23:19 +00:00
nextcloud-command 377571fb16 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 21:36:40 +00:00
Joas Schilling bf3ff8bbb8 Merge pull request #47545 from nextcloud/backport/47541/stable30
[stable30] ci: Reduce required run time
2024-08-27 23:25:26 +02:00
Ferdinand Thiessen ceebf2df6a fix(files): Remove huge margin on bottom
Instead make it relative to screen size.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-27 23:16:05 +02:00
Joas Schilling 261e9a0f1d ci: Update integration-sqlite.yml
Signed-off-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
2024-08-27 21:43:58 +02:00
Maxence Lange 5df51dbc73 fix(setup): ignore long session login during installation
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-08-27 19:14:03 +00:00
Joas Schilling ddf7e7acc9 ci: Don't run things normally and with coverage flag on the same configuration
Signed-off-by: Joas Schilling <coding@schilljs.com>

[skip ci]
2024-08-27 20:09:25 +02:00
Joas Schilling 07b3d4cc52 ci: Run things we only run on 1 PHP version on the preinstalled 8.1 which installs ~2m faster
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-27 20:09:25 +02:00
Julius Härtl 20d2430e49 Merge pull request #47539 from nextcloud/backport/47500/stable30 2024-08-27 20:02:50 +02:00
Elizabeth Danzberger a10497af22 chore: rebuild assets
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-27 12:43:08 -04:00
Elizabeth Danzberger c84cd0415e fix(files): fix list gap at bottom
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>

Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 12:41:19 -04:00
Andy Scherzinger ba1deb36b0 Merge pull request #47514 from nextcloud/backport/47495/stable30
[stable30] feat: Delegate is-encrypted handling to the e2ee app
2024-08-27 18:36:01 +02:00
Andy Scherzinger 15a0a3e86a Merge pull request #47518 from nextcloud/backport/47508/stable30
[stable30] fix(Router): Load attribute routes of all apps when not app is specified
2024-08-27 18:34:55 +02:00
Julien Veyssier cc78ff94a2 fix(taskprocessing): fix condition to reschedule SynchronousBackgroundJob
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-27 15:55:16 +00:00
Julien Veyssier 47b2175c86 feat(taskprocessing): add IManager::runTask method to run task synchronously
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-27 15:55:16 +00:00
Richard Steinmetz 3a9e33124b fix: gracefully handle unexpected exif orientation types
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-08-27 14:05:00 +00:00
Christoph Wurst 6d2394680c fix(db): Increase log level for very slow transactions
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-08-27 13:24:08 +00:00
Joas Schilling 4ea841721e Merge pull request #47512 from nextcloud/backport/47494/stable30
[stable30] fix(dav): Allow apps to get unshares for DAV resources
2024-08-27 13:33:12 +02:00
provokateurin c0f89e8b5f fix(Router): Load attribute routes of all apps when not app is specified
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-27 10:51:52 +00:00
Louis Chemineau e0c104af09 feat: Delegate is-encrypted handling to the e2ee app
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-27 10:34:54 +00:00
Joas Schilling 36aff9e8e4 fix(dav): Allow apps to get unshares for DAV resources
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-27 09:25:39 +00:00
John Molakvoæ fc9da19b99 Merge pull request #47498 from nextcloud/backport/47465/stable30 2024-08-27 09:20:26 +02:00
Andy Scherzinger cf7c1caf3a Merge pull request #47219 from nextcloud/dependabot/npm_and_yarn/stable30/webdav-5.7.1
chore(deps): bump webdav from 5.7.0 to 5.7.1
2024-08-27 06:57:50 +02:00
Nextcloud bot 43025173a3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-27 00:21:01 +00:00
nextcloud-command a597961b16 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 00:02:13 +00:00
nextcloud-command b6f6da9e93 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 21:58:27 +00:00
dependabot[bot] 5c5eaf2630 chore(deps): bump webdav from 5.7.0 to 5.7.1
Bumps [webdav](https://github.com/perry-mitchell/webdav-client) from 5.7.0 to 5.7.1.
- [Changelog](https://github.com/perry-mitchell/webdav-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/perry-mitchell/webdav-client/compare/v5.7.0...v5.7.1)

---
updated-dependencies:
- dependency-name: webdav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 23:51:35 +02:00
nextcloud-command 97343912de chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 21:34:00 +00:00
Ferdinand Thiessen 08391ee642 chore(files): Adjust wording for file type filter
* Resolves: https://github.com/nextcloud/server/issues/47440

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 19:42:16 +00:00
Ferdinand Thiessen fc64d5c838 fix(files): Reset drop notice on firefox
On firefox there is an old bug where when you move a dragged file outside
the window the `dragleave` event is never emitted.
So we just use a timeout to reset the drag over state.

Also a small change: Use the ID of the main container instead of relying on tag name and class.
(The ID is guranteed as other APIs rely on it, while the class is just used internally).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 19:03:42 +00:00
Arthur Schiwon 2b89ec16e3 Merge pull request #47483 from nextcloud/backport/47480/stable30
[stable30] fix(flow): cannot set custom user agent
2024-08-26 17:59:07 +02:00
Arthur Schiwon 5948d2bffb build: js assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 13:09:15 +00:00
Arthur Schiwon 79e81dfe6e fix(flow): cannot set customer user agent
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-26 12:13:54 +00:00
Joas Schilling 14dfa3bcff Merge pull request #47475 from nextcloud/backport/47435/stable30
[stable30] fix(mailer): Call to custom mail_template_class
2024-08-26 10:07:30 +02:00
Andy Scherzinger 192803e337 Merge pull request #47434 from nextcloud/backport/47408/stable30
[stable30] fix(dashboard): Adjust widget border radius
2024-08-26 09:50:21 +02:00
Christoph Klaffl 2863af448a fix call to custom mail_template_class
Signed-off-by: Christoph Klaffl <christoph@phreaker.eu>
2024-08-26 06:59:31 +00:00
Nextcloud bot f136e8004f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-26 00:20:28 +00:00
Nextcloud bot 746ad60980 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-25 00:24:27 +00:00
Nextcloud bot eae454b67f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-24 00:20:35 +00:00
Joas Schilling d5d9143621 Merge pull request #47454 from nextcloud/backport/47452/stable30
[stable30] fix: correct documentation for mail provider
2024-08-23 19:58:05 +02:00
SebastianKrupinski cd9b32fec6 fix: correct documentation for mail provider
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2024-08-23 16:35:53 +00:00
SebastianKrupinski 8848b52946 fix: correct documentation for mail provider
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2024-08-23 16:35:53 +00:00
nextcloud-command ac9eeedacc chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-23 16:43:54 +02:00
Ferdinand Thiessen bc3bdc236e fix(dashboard): Adjust widget border radius
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-23 16:43:54 +02:00
Robin Appelman 3e35e62f6b feat: add negative compare-and-delete to imemcache
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 11:37:57 +00:00
Andy Scherzinger 4823bcb8cd Merge pull request #47437 from nextcloud/backport/47419/stable30
[stable30] fix(migration): Add missing migration attributes
2024-08-23 07:47:22 +02:00
Nextcloud bot 9caf35ac3b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-23 00:20:13 +00:00
Joas Schilling c6a2aa42de fix(migration): Add missing migration attributes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-22 19:36:17 +00:00
Pablo Zimdahl 7492f7c7cb fix(federation): always set server status to OK after successful runs
Previously if a server status got set to failure, it stayed that way
until an addressbook-sync found changes. Now the server status is set to
OK after each successful sync check (if that's not the case already),
regardless of addressbook changes.

This change also includes two new logging statements, which could help
next time someone debugs this.

Signed-off-by: Pablo Zimdahl <pablo@nextcloud.com>
2024-08-22 19:01:42 +02:00
Andy Scherzinger 91649f6f39 Merge pull request #47422 from nextcloud/backport/47413/stable30
[stable30] fix(caldav): limit property length
2024-08-22 19:00:30 +02:00
John Molakvoæ 1e7affae3d Merge pull request #47411 from nextcloud/release/30.0.0_rc2 2024-08-22 16:03:40 +02:00
nextcloud-command 4e0809e37c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 14:01:20 +00:00
skjnldsv 29fb1678ff build(hub): 30.0.0 RC2
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:56:33 +00:00
John Molakvoæ 11d2240cf5 Merge pull request #47249 from nextcloud/backport/47240/stable30 2024-08-22 15:43:19 +02:00
Ferdinand Thiessen aa383a8ff6 fix(webauthn): Increase database column for public key id
* Resolves https://github.com/nextcloud/server/issues/34476

There is no maximum length defined in the standard,
most common the length is between 128 and 200 characters,
but as we store it not in plain data but base64 encoded the length can grow about 1/3.

We had a regression with 'Nitrokey 3' which created IDs with 196 byte length -> 262 bytes encoded base64.
So to be save we increase the size to 512 bytes.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 14:43:18 +02:00
Anna Larch e9e4bacbfd fix(caldav): limit property length
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-08-22 11:22:43 +00:00
Andy Scherzinger 73e8ccbf72 Merge pull request #47387 from nextcloud/backport/47372/stable30
[stable30] fix: `FilenameValidator::isForbidden` should only check forbidden files
2024-08-22 09:26:17 +02:00
Ferdinand Thiessen ec7675c047 docs: Add information how forbidden filenames are handled on existing files.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 08:51:58 +02:00
Ferdinand Thiessen 1e49c83556 fix: FilenameValidator::isForbidden should only check forbidden files
And not forbidden basenames as this is used for different purposes.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 08:51:58 +02:00
Joas Schilling e5a14f6831 Merge pull request #47393 from nextcloud/backport/46991/stable30
[stable30] fix(ProvisioningAPI): set typed config values by via API
2024-08-22 08:42:15 +02:00
Joas Schilling aeac721795 fix(provisioning): Support setting new app configs as well
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-22 08:06:06 +02:00
Nextcloud bot ebd0c51915 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-22 00:20:28 +00:00
Andy Scherzinger e87b559939 Merge pull request #47283 from nextcloud/backport/47038/stable30
[stable30] fix: check for correct storage class when checking for link parent
2024-08-21 21:59:22 +02:00
Joas Schilling cb0f8566f4 Merge pull request #47401 from nextcloud/backport/47397/stable30
[stable30] Update `@nextcloud/vue` to v8.17.0
2024-08-21 21:52:28 +02:00
Ferdinand Thiessen 13a2bcaafd chore: Update @nextcloud/vue to v8.17.0
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 19:10:49 +00:00
Andy Scherzinger a1e1e2d840 Merge pull request #47392 from nextcloud/backport/47370/stable30
[stable30] fix(files): Move loading icon before grid toggle
2024-08-21 20:57:51 +02:00
Andy Scherzinger 86c2bd1c0e Merge pull request #47389 from nextcloud/backport/47381/stable30
[stable30] chore(deps): Update openapi-extractor to v1.0.0
2024-08-21 17:41:39 +02:00
Andy Scherzinger 40665faf3c Merge pull request #47395 from nextcloud/backport/47388/stable30
[stable30] ci: Skip flaky test on PHP 8.3
2024-08-21 17:40:24 +02:00
nextcloud-command 0f2ea4006b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 17:38:19 +02:00
Ferdinand Thiessen 0b29811e08 fix(files): Move loading icon before grid toggle
This prevents jumping of that toggle button when the view is loading.
Also adjust the design for Nextcloud 30 (prevent jumping of breadcrumbs when loading due to increased height).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 17:38:19 +02:00
Andy Scherzinger 25bbfd6e43 Merge pull request #47390 from nextcloud/backport/47352/stable30
[stable30] fix(TaskProcessing/ContextWrite): Fix wording "ContextWrite" -> "Context write"
2024-08-21 17:37:36 +02:00
John Molakvoæ 28af5012a2 Merge pull request #47391 from nextcloud/backport/47371/stable30 2024-08-21 16:29:51 +02:00
Joas Schilling eea5378344 ci: Skip flaky test on PHP 8.3
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 13:55:13 +00:00
Joas Schilling 1766bff1ed Merge pull request #47385 from nextcloud/backport/47380/stable30
[stable30] fix(theming): Make getImage() call save against missing non-SVG version
2024-08-21 15:54:34 +02:00
Arthur Schiwon 54c6f1be80 fix(ProvisioningAPI): set typed config values by via API
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-21 13:00:17 +00:00
Ferdinand Thiessen 655b318b23 fix: Support Safari mobile
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:33:53 +00:00
Ferdinand Thiessen a67d98c31e fix: Disable auto-zoom on iOS
When using iOS and focussing an input element the view should not be zoomed.
So if we set a maximum scale iOS will not auto-zoom but still allow users to zoom.
But we can not do this by default as this will disable user zoom on Chrome.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:33:53 +00:00
Marcel Klehr 46dd99714a fix(TaskProcessing/ContextWrite): Fix wording "ContextWrite" -> "Context write"
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-08-21 11:26:44 +00:00
provokateurin 9f037c3ef3 chore(deps): Update openapi-extractor to v1.0.0
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-21 11:21:33 +00:00
Andy Scherzinger ccc39a41bb Merge pull request #47382 from nextcloud/backport/47331/stable30
[stable30] fix: adding blurhash to definitions
2024-08-21 13:21:14 +02:00
Joas Schilling 71c0b0053c fix(theming): Make getImage() call save against missing non-SVG version
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 13:19:29 +02:00
Andy Scherzinger 947a5e73f6 Merge pull request #47374 from nextcloud/backport/47365/stable30
[stable30] fix(files_sharing): Sort by correct share attribute ("share with displayname")
2024-08-21 13:18:37 +02:00
Joas Schilling f5e40d11df fix: adding blurhash to definitions
Signed-off-by: skalidindi53 <s.teja2004@gmail.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 10:00:35 +00:00
nextcloud-command dc1a3ba2ff chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 09:21:23 +00:00
Ferdinand Thiessen dd30146ce9 fix(files_sharing): Sort by correct share attribute ("share with displayname")
There is no `title` attribute, so this causes an exception.

Instead sort by the "share with" displayname which will be the user or group the node is shared to.

Meaning this will also be the title of the share in the UI.

If this is not available or there are multiple for the same, then sort by the custom label.

If also this is not set sort by the creation time.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>

[skip ci]
2024-08-21 07:55:24 +00:00
Andy Scherzinger 629bd67dab Merge pull request #47333 from nextcloud/backport/47319/stable30
[stable30] fix(UnifiedSearch): Focus search input on open
2024-08-21 09:43:06 +02:00
Andy Scherzinger fc9a45462d Merge pull request #47338 from nextcloud/backport/47332/stable30
[stable30] fix(caldav): allow renaming of birthday calendars
2024-08-21 08:58:15 +02:00
Joas Schilling 3b07eb9c7d Merge pull request #47260 from nextcloud/backport/47252/stable30
[stable30] fix(adminaudit): Don't crash when creating folder
2024-08-21 08:53:17 +02:00
Anna Larch b3698e1bdd fix(caldav): allow renaming of birthday calendars
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-08-21 08:35:46 +02:00
Nextcloud bot fae6b6f559 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-21 00:20:25 +00:00
Andy Scherzinger 9837d7707c Merge pull request #47364 from nextcloud/backport/47358/stable30
[stable30] Bump Hub 8 -> Hub 9
2024-08-21 01:09:51 +02:00
Joas Schilling ce5471b09f Merge pull request #47362 from nextcloud/backport/47356/stable30
[stable30] chore: Add webhook_listeners to list of shipped apps
2024-08-21 00:05:01 +02:00
Andy Scherzinger fe84af1cb1 chore: Bump Hub 8 -> Hub 9
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-08-20 22:02:26 +00:00
nextcloud-command ad27c5fbba chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-20 21:48:08 +00:00
fenn-cs 716b8c896e fix(UnifiedSearch): Focus search input on open
Resolves : https://github.com/nextcloud/server/issues/47056

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-08-20 23:13:31 +02:00
Andy Scherzinger cef2e2bcc8 Merge pull request #47322 from nextcloud/backport/47182/stable30
[stable30] perf: improve cleanup of tags/comments
2024-08-20 23:11:07 +02:00
Joas Schilling 08eb488e69 fix(CI): Add a check that all server apps are translated
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-20 20:54:35 +00:00
Côme Chilliet b4deb67ea7 chore: Add webhook_listeners to list of shipped apps
As well as CODEOWNERS and l10n

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-20 20:54:34 +00:00
John Molakvoæ 2dc3cd6112 Merge pull request #47355 from nextcloud/backport/47346/stable30 2024-08-20 20:24:11 +02:00
Robin Appelman fff198657f fix: use mountpoint from storage to find the encryption keys
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 14:24:43 +00:00
Robin Appelman ece54cf956 feat: store the mountpoint of storages in the mount options
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 14:24:43 +00:00
Joas Schilling b8adb8bfd6 Merge pull request #47255 from nextcloud/backport/47253/stable30
[stable30] feat(webauthn): Add user verification to webauthn challenges
2024-08-20 08:08:11 +02:00
Nextcloud bot b46f541015 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-20 00:20:39 +00:00
Julius Härtl 5789c99c4a Merge pull request #47292 from nextcloud/backport/47277/stable30
[stable30] [occ:bg-job:worker] Add 'stop_after' option
2024-08-19 15:36:36 +02:00
Robin Appelman 13231effd0 perf: improve cleanup of tags/comments
delete entire chunk at once instead of one-by-one

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-19 11:41:41 +00:00
Nextcloud bot 3b7014e5f7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-19 00:20:25 +00:00
John Molakvoæ fb6616e975 Merge pull request #47309 from nextcloud/automated/noid/stable30-fix-npm-audit 2024-08-18 17:30:33 +02:00
nextcloud-command 6c7726ab52 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-08-18 11:32:54 +00:00
John Molakvoæ eb1a26e530 Merge pull request #47305 from nextcloud/backport/47287/stable30 2024-08-18 13:28:00 +02:00
Nextcloud bot 4bc14ed801 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-18 00:23:03 +00:00
nextcloud-command 6f405780d2 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 18:35:02 +02:00
Ferdinand Thiessen 57bd5d06c1 fix: Access node owner by top level owner property
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-17 16:31:24 +00:00
John Molakvoæ b99c088dc3 Merge pull request #47295 from nextcloud/dependabot/npm_and_yarn/stable30/pinia-2.2.2
chore(deps): bump pinia from 2.2.0 to 2.2.2
2024-08-17 12:10:57 +02:00
dependabot[bot] 6c1e61763e chore(deps): bump pinia from 2.2.0 to 2.2.2
Bumps [pinia](https://github.com/vuejs/pinia) from 2.2.0 to 2.2.2.
- [Release notes](https://github.com/vuejs/pinia/releases)
- [Commits](https://github.com/vuejs/pinia/compare/pinia@2.2.0...pinia@2.2.2)

---
updated-dependencies:
- dependency-name: pinia
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 08:08:08 +00:00
Nextcloud bot c6584da72c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-17 00:20:28 +00:00
Julien Veyssier 0a9b26f442 feat(occ): add 'stop_after' option to stop the worker after some time
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-16 22:29:30 +00:00
Robin Appelman 9791fa278f fix: check for correct storage class when checking for link parent
fixes #39123

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-16 15:17:07 +00:00
John Molakvoæ 037476d67b Merge pull request #47276 from nextcloud/backport/47248/stable30 2024-08-16 13:14:40 +02:00
Ferdinand Thiessen 941cd723b2 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-16 10:55:39 +00:00
Ferdinand Thiessen 9eeb360a09 fix: Adjust legacy CSS styles for new Nextcloud 30 design
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-16 10:55:39 +00:00
Joas Schilling a54375b976 Merge pull request #47264 from nextcloud/backport/47258/stable30
[stable30] Don't save translated predefined user status as custom status
2024-08-16 09:44:59 +02:00
nextcloud-command d30ba42a61 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-16 05:34:02 +00:00
Nextcloud bot 1a9b1e9a2a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 00:20:14 +00:00
Joas Schilling 5441f97d56 fix(userstatus): Don't set predefined user status as custom when changing "Clear at"
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 17:22:37 +00:00
Joas Schilling b31a587be8 fix(adminaudit): Don't crash when creating folder
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 13:35:19 +00:00
S1m b7bf8ec3c5 feat(webauthn): Add user verification to webauthn challenges
Require user verification if all tokens are registered

with UV flag, else discourage it

Signed-off-by: S1m <git@sgougeon.fr>
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-08-15 11:52:40 +02:00
Joas Schilling 3b6d9eb774 Merge pull request #47229 from nextcloud/backport/47212/stable30
[stable30] fix(security): Update expiration date in security.txt
2024-08-15 10:54:24 +02:00
Nextcloud bot 7c0932f208 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-15 00:25:56 +00:00
John Molakvoæ 551e3601a2 Merge pull request #47190 from nextcloud/release/30.0.0_rc1 2024-08-14 18:59:20 +02:00
Joas Schilling 2819d7e4ab fix: Update 3rdparty/ which was merged too early
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 17:16:46 +02:00
skjnldsv 8bb6279062 build(hub): 30.0.0 RC1
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-14 16:33:35 +02:00
John Molakvoæ f68065c4e1 Merge pull request #47236 from nextcloud/backport/47203/stable30
[stable30] fix(AppMenu): Prevent menu entries from jumping on hover
2024-08-14 16:27:51 +02:00
Ferdinand Thiessen f8bbb274e4 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 12:34:37 +00:00
Ferdinand Thiessen 70c6ff9e11 fix(AppMenu): Prevent menu entries from jumping on hover
Only grow and shrink app menu entry if needed

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 12:34:37 +00:00
Joas Schilling 9a1339d3b4 Merge pull request #47235 from nextcloud/branchoff/welcome-stable30
chore(branchoff): Test against stable30 branches
2024-08-14 13:56:56 +02:00
Joas Schilling 5a55410083 chore(branchoff): Test against stable30 branches
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 13:53:22 +02:00
dependabot[bot] 2659b2113d Merge pull request #47217 from nextcloud/dependabot/npm_and_yarn/stable30/karma-coverage-2.2.1 2024-08-14 11:16:31 +00:00
Joas Schilling 3c02c442af fix(security): Update expiration date in security.txt
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:43:32 +00:00
dependabot[bot] eaec634d2c chore(deps-dev): bump karma-coverage from 2.2.0 to 2.2.1
Bumps [karma-coverage](https://github.com/karma-runner/karma-coverage) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/karma-runner/karma-coverage/releases)
- [Changelog](https://github.com/karma-runner/karma-coverage/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-coverage/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: karma-coverage
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-14 09:31:18 +00:00
6780 changed files with 150637 additions and 153708 deletions
-17
View File
@@ -1,17 +0,0 @@
# .git-blame-ignore-revs
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
# Format control structures
caff1023ea72bb2ea94130e18a2a6e2ccf819e5f
# Update to coding-standard 1.1.1
aa5f037af71c915424c6dcfd5ad2dc82797dc0d6
# Update to coding-standard 1.2.3
af6de04e9e141466dc229e444ff3f146f4a34765
0bd284cb81b6866338aaaa67aa1d81ef9bfbb2ab
8af7ecb2576071f170ecbb0aa2311b26581e40e2
# Update to coding-standard 1.3.1
9836e9b16484582d309c8437ab46d82e34956941
# Automated refactorings
49dd79eabb2b8902559a7a4e8f8fcad54f46b604
+11 -19
View File
@@ -2,18 +2,14 @@
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
/apps/cloud_federation_api/appinfo/info.xml @mejo-
/apps/comments/appinfo/info.xml @edward-ly @Pytal
/apps/contactsinteraction/appinfo/info.xml @kesselb @SebastianKrupinski
/apps/contactsinteraction/lib @kesselb @SebastianKrupinski
/apps/contactsinteraction/tests @kesselb @SebastianKrupinski
/apps/dashboard/appinfo/info.xml @julien-nc @juliusknorr
/apps/dav/lib/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/lib/CardDAV @hamza221 @SebastianKrupinski
/apps/dav/tests/unit/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/tests/unit/CardDAV @hamza221 @SebastianKrupinski
/apps/contactsinteraction/appinfo/info.xml @kesselb @miaulalala @ChristophWurst @GretaD @hamza221 @st3iny
/apps/dashboard/appinfo/info.xml @julien-nc @juliushaertl
/apps/dav/lib/CalDAV @ChristophWurst @miaulalala @tcitworld
/apps/dav/lib/CardDAV @ChristophWurst @miaulalala @tcitworld
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
/apps/federation/appinfo/info.xml @nfebe
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @nfebe
/apps/federation/appinfo/info.xml @datenangebot
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @Fenn-CS
/apps/files_external/appinfo/info.xml @icewind1991 @artonge
/apps/files_reminders/appinfo/info.xml @Pytal
/apps/files_sharing/appinfo/info.xml @skjnldsv @come-nc
@@ -24,14 +20,14 @@
/apps/settings/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/sharebymail/appinfo/info.xml @Altahrim
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
/apps/theming/appinfo/info.xml @skjnldsv @juliushaertl
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
/apps/weather_status/appinfo/info.xml @julien-nc @juliusknorr
/apps/weather_status/appinfo/info.xml @julien-nc @juliushaertl
/apps/webhook_listeners/appinfo/info.xml @come-nc @julien-nc
/apps/workflowengine/appinfo/info.xml @blizzz @juliusknorr
/apps/workflowengine/appinfo/info.xml @blizzz @juliushaertl
# Frontend expertise
/apps/files/src* @skjnldsv
@@ -41,9 +37,9 @@
/apps/files_trashbin/src* @skjnldsv
# Security team
/build/psalm-baseline-security.xml @nickvergessen
/resources/codesigning @mgallien @miaulalala @nickvergessen
/resources/config/ca-bundle.crt @miaulalala @nickvergessen
/resources/config/ca-bundle.crt @ChristophWurst @miaulalala @nickvergessen
/.drone.yml @nickvergessen
# Two-Factor Authentication
# https://github.com/nextcloud/wg-two-factor-authentication#members
@@ -69,10 +65,6 @@ ResponseDefinitions.php @provokateurin
/lib/public/Talk @nickvergessen
/lib/public/UserStatus @nickvergessen
# Groupware
/build/integration/dav_features/caldav.feature @st3iny @SebastianKrupinski
/build/integration/dav_features/carddav.feature @st3iny @SebastianKrupinski
# Personal interest
*/Activity/* @nickvergessen
*/Notifications/* @nickvergessen
+1 -1
View File
@@ -48,7 +48,7 @@ In some areas unit testing is hard (aka almost impossible) as of today - in thes
### Sign your work
We use the Developer Certificate of Origin (DCO) as an additional safeguard
We use the Developer Certificate of Origin (DCO) as a additional safeguard
for the Nextcloud project. This is a well established and widely used
mechanism to assure contributors have confirmed their right to license
their contribution under the project's license.
+26 -11
View File
@@ -62,6 +62,22 @@ body:
description: Describe what you expected to happen instead.
validations:
required: true
- type: dropdown
id: install-method
attributes:
label: Installation method
description: |
Select installation method you've used.
_Describe the method in the "Additional info" section if you chose "Other"._
options:
- "Community Web installer on a VPS or web space"
- "Community Manual installation with Archive"
- "Community Docker image"
- "Community NextcloudPi appliance"
- "Community SNAP package"
- "Community VM appliance"
- "Other Community project"
- "Official All-in-One appliance"
- type: dropdown
id: nextcloud-version
attributes:
@@ -70,9 +86,8 @@ body:
Select Nextcloud Server version.
_Versions not listed here are not maintained and not supported anymore_
options:
- "28"
- "29"
- "30"
- "31"
- "master"
validations:
required: true
@@ -95,10 +110,10 @@ body:
Select PHP engine version serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "PHP 8.4"
- "PHP 8.3"
- "PHP 8.2"
- "PHP 8.0"
- "PHP 8.1"
- "PHP 8.2"
- "PHP 8.3"
- "Other"
- type: dropdown
id: webserver
@@ -132,8 +147,8 @@ body:
description: |
Select if bug is present after an update or on a fresh install.
options:
- "Updated from a MINOR version (ex. 32.0.1 to 32.0.2)"
- "Upgraded to a MAJOR version (ex. 31 to 32)"
- "Updated from a MINOR version (ex. 28.0.1 to 28.0.2)"
- "Upgraded to a MAJOR version (ex. 28 to 29)"
- "Fresh Nextcloud Server install"
- type: dropdown
id: encryption
@@ -168,7 +183,7 @@ body:
./occ config:list system
```
> NOTE: This will be automatically formatted into code for better readability.
render: json
render: shell
- type: textarea
id: apps
attributes:
@@ -200,10 +215,10 @@ body:
attributes:
label: Nextcloud Logs
description: |
Provide relevant Nextcloud log entries (e.g. from the time period you reproduced the problem).
Copy full individual entries from `data/nextcloud.log` or use `Copy raw entry` from `/settings/admin/logging` section:
Provide Nextcloud logs lines.
Copy all contents from `data/nextcloud.log` or a RAW from `/settings/admin/logging` section:
> NOTE: This will be automatically formatted into code for better readability.
render: json
render: shell
- type: textarea
id: additional-info
attributes:
+7 -58
View File
@@ -59,20 +59,6 @@ updates:
reviewers:
- "nextcloud/server-dependabot"
# phpunit
- package-ecosystem: composer
directory: "/vendor-bin/phpunit"
schedule:
interval: weekly
day: saturday
time: "04:40"
timezone: Europe/Madrid
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# Main master npm
- package-ecosystem: npm
directory: "/"
@@ -121,7 +107,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable29
target-branch: stable28
labels:
- "3. to review"
- "feature: dependencies"
@@ -140,7 +126,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
target-branch: stable29
labels:
- "3. to review"
- "feature: dependencies"
@@ -152,24 +138,23 @@ updates:
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: npm
directory: "/"
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable31
target-branch: stable28
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
@@ -189,42 +174,6 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable31
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
+3 -3
View File
@@ -51,15 +51,15 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, json, mbstring
coverage: none
ini-file: development
env:
@@ -31,7 +31,7 @@ jobs:
- 'version.php'
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: 3rdparty commit hash on current branch
id: actual
@@ -27,7 +27,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: webiny/action-conventional-commits@8bc41ff4e7d423d56fa4905f6ff79209a78776c7 # v1.3.0
with:
+6 -7
View File
@@ -76,7 +76,7 @@ jobs:
fi
- name: Init branch
uses: xt0rted/pull-request-comment-branch@e8b8daa837e8ea7331c0003c9c316a64c6d8b0b1 # v3.0.0
uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
id: comment-branch
- name: Add reaction on failure
@@ -86,7 +86,7 @@ jobs:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
comment-id: ${{ github.event.comment.id }}
reactions: '-1'
reactions: "-1"
process:
runs-on: ubuntu-latest
@@ -94,15 +94,14 @@ jobs:
steps:
- name: Restore cached git repository
uses: buildjet/cache@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2
uses: buildjet/cache@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
with:
path: .git
key: git-repo
- name: Checkout ${{ needs.init.outputs.head_ref }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
persist-credentials: true
token: ${{ secrets.COMMAND_BOT_PAT }}
fetch-depth: 0
ref: ${{ needs.init.outputs.head_ref }}
@@ -120,7 +119,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v3
with:
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
cache: npm
@@ -177,4 +176,4 @@ jobs:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
comment-id: ${{ github.event.comment.id }}
reactions: '-1'
reactions: "-1"
+2 -2
View File
@@ -34,11 +34,11 @@ jobs:
exit 1
- name: Init branch
uses: xt0rted/pull-request-comment-branch@e8b8daa837e8ea7331c0003c9c316a64c6d8b0b1 # v1
uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
id: comment-branch
- name: Checkout ${{ steps.comment-branch.outputs.head_ref }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
+14 -23
View File
@@ -29,8 +29,6 @@ jobs:
npmVersion: ${{ steps.versions.outputs.npmVersion }}
env:
# We'll install cypress in the cypress job
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
steps:
@@ -41,7 +39,7 @@ jobs:
exit 1
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
# We need to checkout submodules for 3rdparty
submodules: true
@@ -64,7 +62,7 @@ jobs:
fallbackNpm: "^10"
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -80,7 +78,7 @@ jobs:
run: npm run cypress:version
- name: Save context
uses: buildjet/cache/save@v4
uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
with:
key: cypress-context-${{ github.run_id }}
path: ./
@@ -103,28 +101,23 @@ jobs:
steps:
- name: Restore context
uses: buildjet/cache/restore@v4
uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
with:
fail-on-cache-miss: true
key: cypress-context-${{ github.run_id }}
path: ./
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ needs.init.outputs.nodeVersion }}
- name: Set up npm ${{ needs.init.outputs.npmVersion }}
run: npm i -g 'npm@${{ needs.init.outputs.npmVersion }}'
- name: Install cypress
run: ./node_modules/cypress/bin/cypress install
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
uses: cypress-io/github-action@7271bed2a170d73c0b08939cd192db51a1c46c50 # v6.7.10
uses: cypress-io/github-action@df7484c5ba85def7eef30db301afa688187bc378 # v6.7.2
with:
# We already installed the dependencies in the init job
install: false
component: ${{ matrix.containers == 'component' }}
group: ${{ matrix.use-cypress-cloud && matrix.containers == 'component' && 'Run component' || matrix.use-cypress-cloud && 'Run E2E' || '' }}
# cypress env
@@ -142,21 +135,19 @@ jobs:
SPLIT: ${{ matrix.total-containers }}
SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
- name: Upload snapshots and videos
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
- name: Upload snapshots
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
if: always()
with:
name: snapshots_videos_${{ matrix.containers }}
path: |
cypress/snapshots
cypress/videos
name: snapshots_${{ matrix.containers }}
path: cypress/snapshots
- name: Extract NC logs
if: failure() && matrix.containers != 'component'
run: docker logs nextcloud-cypress-tests_${{ env.APP_NAME }} > nextcloud.log
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
- name: Upload NC logs
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
if: failure() && matrix.containers != 'component'
with:
name: nc_logs_${{ matrix.containers }}
@@ -164,10 +155,10 @@ jobs:
- name: Create data dir archive
if: failure() && matrix.containers != 'component'
run: docker exec nextcloud-cypress-tests_${{ env.APP_NAME }} tar -cvjf - data > data.tar
run: docker exec nextcloud-cypress-tests-server tar -cvjf - data > data.tar
- name: Upload data dir archive
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
if: failure() && matrix.containers != 'component'
with:
name: nc_data_${{ matrix.containers }}
+5 -5
View File
@@ -43,7 +43,7 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['8.1', '8.4']
php-versions: ['8.1', '8.3']
ftpd: ['proftpd', 'vsftpd', 'pure-ftpd']
include:
- php-versions: '8.1'
@@ -53,7 +53,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
@@ -68,11 +68,11 @@ jobs:
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -100,7 +100,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-files-external-ftp
+7 -7
View File
@@ -41,7 +41,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.2', '8.3', '8.4']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -60,12 +60,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -98,7 +98,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-files-external-s3
@@ -135,12 +135,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -165,7 +165,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-files-external-s3
+5 -5
View File
@@ -43,7 +43,7 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['8.1', '8.4']
php-versions: ['8.1', '8.3']
sftpd: ['openssh']
include:
- php-versions: '8.1'
@@ -53,7 +53,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
@@ -64,11 +64,11 @@ jobs:
if [[ '${{ matrix.sftpd }}' == 'openssh' ]]; then docker run -p 2222:22 --name sftp -d -v /tmp/sftp:/home/test atmoz/sftp 'test:test:::data'; fi
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -89,7 +89,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-files-external-sftp
@@ -34,7 +34,7 @@ jobs:
- '**.php'
files-external-smb-kerberos:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
needs: changes
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
@@ -43,22 +43,16 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Checkout user_saml
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
repository: nextcloud/user_saml
path: apps/user_saml
- name: Install user_saml
run: |
cd apps/user_saml
composer i
cd ../..
- name: Pull images
run: |
docker pull ghcr.io/icewind1991/samba-krb-test-dc
+5 -5
View File
@@ -41,7 +41,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1']
php-versions: ['8.1', '8.3']
include:
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -56,16 +56,16 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
ini-file: development
env:
@@ -94,7 +94,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v4.1.1
uses: codecov/codecov-action@922d8d7b314a529f2be903c1e79ee8283c492863 # v4.1.1
with:
files: ./clover.xml
flags: phpunit-files-external-smb
+4 -4
View File
@@ -41,7 +41,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.2', '8.3', '8.4']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -56,12 +56,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -91,7 +91,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v4.1.1
uses: codecov/codecov-action@922d8d7b314a529f2be903c1e79ee8283c492863 # v4.1.1
with:
files: ./clover.xml
flags: phpunit-files-external-webdav
+5 -5
View File
@@ -40,7 +40,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.2', '8.3', '8.4']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -49,12 +49,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -74,12 +74,12 @@ jobs:
./occ app:enable --force files_external
- name: PHPUnit
run: composer run test:files_external -- \
run: composer run test:files_external \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-files-external-generic
+4 -4
View File
@@ -51,12 +51,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -99,9 +99,9 @@ jobs:
- name: Run CalDAVTester
run: |
cp "apps/dav/tests/testsuits/caldavtest/serverinfo-${{ matrix.endpoint }}${{ matrix.endpoint == 'old' && (matrix.service == 'CardDAV' && '-carddav' || '-caldav') || '' }}-endpoint.xml" "apps/dav/tests/testsuits/caldavtest/serverinfo.xml"
cp "apps/dav/tests/travis/caldavtest/serverinfo-${{ matrix.endpoint }}${{ matrix.endpoint == 'old' && (matrix.service == 'CardDAV' && '-carddav' || '-caldav') || '' }}-endpoint.xml" "apps/dav/tests/travis/caldavtest/serverinfo.xml"
pushd CalDAVTester
PYTHONPATH="../pycalendar/src" python testcaldav.py --print-details-onfail --basedir "../apps/dav/tests/testsuits/caldavtest" -o cdt.txt \
PYTHONPATH="../pycalendar/src" python testcaldav.py --print-details-onfail --basedir "../apps/dav/tests/travis/caldavtest" -o cdt.txt \
"${{ matrix.service }}/current-user-principal.xml" \
"${{ matrix.service }}/sync-report.xml" \
${{ matrix.endpoint == 'new' && format('{0}/sharing-{1}.xml', matrix.service, matrix.service == 'CalDAV' && 'calendars' || 'addressbooks') || ';' }}
+2 -2
View File
@@ -50,12 +50,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+2 -2
View File
@@ -65,12 +65,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+4 -5
View File
@@ -61,7 +61,6 @@ jobs:
- 'federation_features'
- '--tags ~@large files_features'
- 'filesdrop_features'
- 'file_conversions'
- 'openldap_features'
- 'openldap_numerical_features'
- 'ldap_features'
@@ -72,7 +71,7 @@ jobs:
- 'videoverification_features'
php-versions: ['8.1']
spreed-versions: ['main']
spreed-versions: ['stable30']
services:
redis:
@@ -92,20 +91,20 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
submodules: true
- name: Checkout Talk app
if: ${{ matrix.test-suite == 'videoverification_features' }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/spreed
path: apps/spreed
ref: ${{ matrix.spreed-versions }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+2 -2
View File
@@ -53,7 +53,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
@@ -63,7 +63,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v3
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+2 -2
View File
@@ -48,10 +48,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up php8.1
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: 8.1
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
+3 -3
View File
@@ -47,16 +47,16 @@ jobs:
strategy:
matrix:
php-versions: [ '8.1', '8.2', '8.3', '8.4' ]
php-versions: [ '8.1', '8.2', '8.3' ]
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
coverage: none
-51
View File
@@ -1,51 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Lint stylelint
on: pull_request
permissions:
contents: read
concurrency:
group: lint-stylelint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: stylelint
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
run: npm ci
- name: Lint
run: npm run stylelint
+8 -8
View File
@@ -59,7 +59,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
@@ -80,10 +80,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
@@ -99,7 +99,7 @@ jobs:
run: npm run test:coverage --if-present
- name: Collect coverage
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v4.3.1
uses: codecov/codecov-action@922d8d7b314a529f2be903c1e79ee8283c492863 # v4.3.1
with:
files: ./coverage/lcov.info
@@ -114,10 +114,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
@@ -142,10 +142,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
+2 -2
View File
@@ -53,7 +53,7 @@ jobs:
name: NPM build
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
@@ -63,7 +63,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v3
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+4 -4
View File
@@ -21,13 +21,13 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['main', 'master', 'stable31', 'stable30', 'stable29']
branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
name: npm-audit-fix-${{ matrix.branches }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
ref: ${{ matrix.branches }}
@@ -39,7 +39,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v3
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -60,7 +60,7 @@ jobs:
- name: Create Pull Request
if: always()
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(deps): Fix npm audit'
+3 -3
View File
@@ -69,12 +69,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -105,7 +105,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-azure
+3 -3
View File
@@ -70,12 +70,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -111,7 +111,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-s3
+3 -3
View File
@@ -67,12 +67,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -101,7 +101,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-swift
+2 -2
View File
@@ -26,10 +26,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
+6 -6
View File
@@ -29,16 +29,16 @@ jobs:
exit 1
- name: Checkout server before PR
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
ref: ${{ github.event.pull_request.base.ref }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -64,7 +64,7 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: before.json
profiler-branch: master
profiler-branch: stable30
- name: Apply PR
run: |
@@ -86,12 +86,12 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: after.json
profiler-branch: master
profiler-branch: stable30
compare-with: before.json
- name: Upload profiles
if: always()
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
with:
name: profiles
path: |
+2 -2
View File
@@ -32,7 +32,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
@@ -42,7 +42,7 @@ jobs:
sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip, apcu
+3 -5
View File
@@ -61,8 +61,6 @@ jobs:
- php-versions: '8.3'
mariadb-versions: '10.11'
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
mariadb-versions: '11.4'
name: MariaDB ${{ matrix.mariadb-versions }} (PHP ${{ matrix.php-versions }}) - database tests
@@ -86,12 +84,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -124,7 +122,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.db.xml
flags: phpunit-mariadb
+4 -4
View File
@@ -55,7 +55,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.3', '8.4']
php-versions: ['8.1', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -71,12 +71,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -101,7 +101,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.xml
flags: phpunit-memcached
+3 -3
View File
@@ -120,12 +120,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -159,7 +159,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.1.1
with:
files: ./clover.db.xml
flags: phpunit-mysql
+3 -5
View File
@@ -61,8 +61,6 @@ jobs:
- mysql-versions: '8.0'
php-versions: '8.3'
coverage: ${{ github.event_name != 'pull_request' }}
- mysql-versions: '8.4'
php-versions: '8.4'
name: MySQL ${{ matrix.mysql-versions }} (PHP ${{ matrix.php-versions }}) - database tests
@@ -86,12 +84,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -124,7 +122,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.db.xml
flags: phpunit-mysql
+4 -4
View File
@@ -57,7 +57,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.3', '8.4']
php-versions: ['8.1', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -73,12 +73,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -106,7 +106,7 @@ jobs:
- name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.nodb.xml
flags: phpunit-nodb
@@ -1,121 +0,0 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: PHPUnit primary object store
on:
pull_request:
schedule:
- cron: "15 2 * * *"
concurrency:
group: phpunit-object-store-primary-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-latest-low
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/appinfo/**'
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- '**.php'
object-store-primary-tests-minio:
runs-on: ubuntu-latest
needs: changes
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
strategy:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['8.1']
key: ['s3', 's3-multibucket']
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
services:
cache:
image: ghcr.io/nextcloud/continuous-integration-redis:latest
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
minio:
image: bitnami/minio
env:
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
MINIO_DEFAULT_BUCKETS: nextcloud
ports:
- "9000:9000"
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Nextcloud
env:
OBJECT_STORE: ${{ matrix.key }}
OBJECT_STORE_KEY: nextcloud
OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
run: |
composer install
cp tests/redis.config.php config/
cp tests/preseed-config.php config/config.php
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: Wait for S3
run: |
sleep 10
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
- name: PHPUnit
run: composer run test:db
- name: S3 logs
if: always()
run: |
cat data/nextcloud.log
docker ps -a
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
object-store-primary-summary:
runs-on: ubuntu-latest-low
needs: [changes,object-store-primary-tests-minio]
if: always()
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.object-store-primary-tests-minio.result != 'success' }}; then exit 1; fi
+3 -5
View File
@@ -66,8 +66,6 @@ jobs:
php-versions: '8.2'
- oracle-versions: '23'
php-versions: '8.3'
- oracle-versions: '23'
php-versions: '8.4'
name: Oracle ${{ matrix.oracle-versions }} (PHP ${{ matrix.php-versions }}) - database tests
@@ -98,12 +96,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -129,7 +127,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.db.xml
flags: phpunit-oci
+6 -8
View File
@@ -56,14 +56,12 @@ jobs:
strategy:
matrix:
php-versions: ['8.1']
# To keep the matrix smaller we ignore PostgreSQL versions in between as we already test the minimum and the maximum
postgres-versions: ['13', '17']
# To keep the matrix smaller we ignore PostgreSQL '13', '14', and '15' as we already test 12 and 16 as lower and upper bound
postgres-versions: ['12', '16']
include:
- php-versions: '8.3'
postgres-versions: '17'
postgres-versions: '16'
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
postgres-versions: '17'
name: PostgreSQL ${{ matrix.postgres-versions }} (PHP ${{ matrix.php-versions }}) - database tests
@@ -86,12 +84,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -119,7 +117,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.db.xml
flags: phpunit-postgres
+4 -4
View File
@@ -55,7 +55,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.2', '8.3', '8.4']
php-versions: ['8.2', '8.3']
include:
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -71,12 +71,12 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -105,7 +105,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.3.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.db.xml
flags: phpunit-sqlite
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: The get-github-handles-from-website action
uses: marcelklehr/get-github-handles-from-website-action@06b2239db0a48fe1484ba0bfd966a3ab81a08308 # v1.0.1
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
id: scrape
with:
website: 'https://nextcloud.com/team/'
+2 -2
View File
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: REUSE Compliance Check
uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0
uses: fsfe/reuse-action@3ae3c6bdf1257ab19397fab11fd3312144692083 # v4.0.0
+1
View File
@@ -27,6 +27,7 @@ jobs:
for your contributions.
stale-issue-label: 'stale'
only-labels: 'needs info'
labels-to-remove-when-unstale: 'needs info,stale'
exempt-issue-labels: '1. to develop,2. developing,3. to review,4. to release,security'
days-before-stale: 30
days-before-close: 14
+21 -57
View File
@@ -4,14 +4,6 @@ name: Psalm static code analysis
on:
pull_request:
push:
branches:
- main
- master
- stable*
paths:
- '.github/workflows/static-code-analysis.yml'
- '**.php'
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
@@ -21,19 +13,19 @@ jobs:
static-code-analysis:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -42,39 +34,39 @@ jobs:
run: composer i
- name: Psalm
run: composer run psalm -- --threads=1 --monochrome --no-progress --output-format=github --update-baseline
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --update-baseline --report=results.sarif
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
run: git diff -- . ':!lib/composer'
- name: Upload Analysis results to GitHub
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
static-code-analysis-security:
runs-on: ubuntu-latest
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
- name: Composer install
run: composer i
- name: Psalm taint analysis
run: composer run psalm:security -- --threads=1 --monochrome --no-progress --output-format=github --update-baseline --report=results.sarif
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis
- name: Upload Security Analysis results to GitHub
if: always()
@@ -85,19 +77,17 @@ jobs:
static-code-analysis-ocp:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -106,34 +96,8 @@ jobs:
run: composer i
- name: Psalm
run: composer run psalm:ocp -- --threads=1 --monochrome --no-progress --output-format=github --update-baseline
run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
static-code-analysis-ncu:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer i
- name: Psalm
run: composer run psalm:ncu -- --threads=1 --monochrome --no-progress --output-format=github
run: git diff -- . ':!lib/composer'
+3 -3
View File
@@ -14,12 +14,12 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-ca-certificate-bundle-${{ matrix.branches }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: ${{ matrix.branches }}
submodules: true
@@ -28,7 +28,7 @@ jobs:
run: curl --etag-compare build/ca-bundle-etag.txt --etag-save build/ca-bundle-etag.txt --output resources/config/ca-bundle.crt https://curl.se/ca/cacert.pem
- name: Create Pull Request
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(security): Update CA certificate bundle'
@@ -14,12 +14,12 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-code-signing-crl-${{ matrix.branches }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: ${{ matrix.branches }}
submodules: true
@@ -31,7 +31,7 @@ jobs:
run: openssl crl -verify -in resources/codesigning/root.crl -CAfile resources/codesigning/root.crt -noout
- name: Create Pull Request
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(security): Update code signing revocation list'
@@ -0,0 +1,52 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Auto approve psalm baseline update
on:
pull_request_target:
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: update-psalm-baseline-approve-merge-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
auto-approve-merge:
if: github.actor == 'nextcloud-command'
runs-on: ubuntu-latest-low
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
# for alexwilson/enable-github-automerge-action to approve PRs
contents: write
steps:
- name: Disabled on forks
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
run: |
echo 'Can not approve PRs from forks'
exit 1
- uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
id: branchname
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# GitHub actions bot approve
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Enable GitHub auto merge
- name: Auto merge
uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # main
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,69 @@
# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Update Psalm baseline
on:
workflow_dispatch:
schedule:
- cron: "5 2 * * *"
jobs:
update-psalm-baseline:
runs-on: ubuntu-latest
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable29', 'stable28', 'stable27']
name: update-psalm-baseline-${{ matrix.branches }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: ${{ matrix.branches }}
submodules: true
- name: Set up php
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer install
- name: Psalm
run: composer run psalm:ci -- --monochrome --no-progress --output-format=text --update-baseline
continue-on-error: true
- name: Psalm OCP
run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
continue-on-error: true
- name: Reset composer
run: |
git clean -f lib/composer
git checkout composer.json composer.lock lib/composer
- name: Create Pull Request
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'chore(tests): Update psalm baseline'
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true
branch: 'automated/noid/${{ matrix.branches }}-update-psalm-baseline'
title: '[${{ matrix.branches }}] Update psalm-baseline.xml'
body: |
Auto-generated update psalm-baseline.xml with fixed psalm warnings
labels: |
automated pr
3. to review
team-reviewers: server-backend
-2
View File
@@ -35,7 +35,6 @@
!/apps/lookup_server_connector
!/apps/user_ldap
!/apps/oauth2
!/apps/profile
!/apps/provisioning_api
!/apps/settings
!/apps/systemtags
@@ -152,7 +151,6 @@ Vagrantfile
# Tests - auto-generated files
/data-autotest
/results.sarif
/tests/.phpunit.result.cache
/tests/coverage*
/tests/css
+7 -14
View File
@@ -15,18 +15,11 @@
<IfModule mod_env.c>
# Add security and privacy related headers
# Avoid doubled headers by unsetting headers in "onsuccess" table,
# then add headers to "always" table: https://github.com/nextcloud/server/pull/19002
<If "%{REQUEST_URI} =~ m#/login$#">
# Only on the login page we need any Origin or Referer header set.
Header onsuccess unset Referrer-Policy
Header always set Referrer-Policy "same-origin"
</If>
<Else>
Header onsuccess unset Referrer-Policy
Header always set Referrer-Policy "no-referrer"
</Else>
Header onsuccess unset Referrer-Policy
Header always set Referrer-Policy "no-referrer"
Header onsuccess unset X-Content-Type-Options
Header always set X-Content-Type-Options "nosniff"
@@ -56,8 +49,8 @@
</Else>
</FilesMatch>
# Let browsers cache OTF and WOFF files for a week
<FilesMatch "\.(otf|woff2?)$">
# Let browsers cache WOFF files for a week
<FilesMatch "\.woff2?$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
</IfModule>
@@ -110,10 +103,10 @@
# - https://docs.cyberduck.io/mountainduck/issues/fastcgi/
# - https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#troubleshooting-webdav
<IfModule mod_setenvif.c>
SetEnvIfNoCase Transfer-Encoding "chunked" proxy-sendcl=1
SetEnvIf Transfer-Encoding "chunked" proxy-sendcl=1
</IfModule>
# Apache disabled the sending of the server-side content-length header
# Apache disabled the sending of the server-side content-length header
# in their 2.4.59 patch updated which breaks some use-cases in Nextcloud.
# Setting ap_trust_cgilike_cl allows to bring back the usual behaviour.
# See https://bz.apache.org/bugzilla/show_bug.cgi?id=68973
+19 -13
View File
@@ -14,23 +14,29 @@ $config = new Config();
$config
->setParallelConfig(ParallelConfigFactory::detect())
->getFinder()
->ignoreVCSIgnored(true)
->exclude('config')
->exclude('3rdparty')
->exclude('build/stubs')
->exclude('composer')
->exclude('data')
->notPath('3rdparty')
->notPath('build/integration/vendor')
->notPath('build/lib')
->notPath('build/node_modules')
->notPath('build/stubs')
->notPath('composer')
->notPath('node_modules')
->notPath('vendor')
->in('apps')
->in(__DIR__);
$ignoredEntries = shell_exec('git status --porcelain --ignored ' . escapeshellarg(__DIR__));
$ignoredEntries = explode("\n", $ignoredEntries);
$ignoredEntries = array_filter($ignoredEntries, static fn (string $line) => str_starts_with($line, '!! '));
$ignoredEntries = array_map(static fn (string $line) => substr($line, 3), $ignoredEntries);
$ignoredEntries = array_values($ignoredEntries);
// Ignore additional app directories
$rootDir = new \DirectoryIterator(__DIR__);
foreach ($rootDir as $node) {
if (str_starts_with($node->getFilename(), 'apps')) {
$return = shell_exec('git check-ignore ' . escapeshellarg($node->getFilename() . '/'));
foreach ($ignoredEntries as $ignoredEntry) {
if (str_ends_with($ignoredEntry, '/')) {
$config->getFinder()->exclude($ignoredEntry);
} else {
$config->getFinder()->notPath($ignoredEntry);
if ($return !== null) {
$config->getFinder()->exclude($node->getFilename());
}
}
}
+18 -30
View File
File diff suppressed because one or more lines are too long
-6
View File
@@ -116,12 +116,6 @@ source_file = translationfiles/templates/oauth2.pot
source_lang = en
type = PO
[o:nextcloud:p:nextcloud:r:profile]
file_filter = translationfiles/<lang>/profile.po
source_file = translationfiles/templates/profile.pot
source_lang = en
type = PO
[o:nextcloud:p:nextcloud:r:provisioning_api]
file_filter = translationfiles/<lang>/provisioning_api.po
source_file = translationfiles/templates/provisioning_api.pot
-1
View File
@@ -314,7 +314,6 @@
- Max <max@nextcloud.com>
- Max Kovalenko <mxss1998@yandex.ru>
- Max Kunzelmann <maxdev@posteo.de>
- Max Schmit <maxschm@hotmail.com>
- Maxence Lange <maxence@artificial-owl.com>
- Maxence Lange <maxence@nextcloud.com>
- Maxence Lange <maxence@pontapreta.net>
+1 -1
View File
@@ -6,4 +6,4 @@ and our products: “Nextcloud Files”; “Nextcloud Groupware” and “Nextcl
This set of marks is collectively referred to as the “Nextcloud marks.”
Use of Nextcloud logos and other marks is only permitted under the guidelines provided by the Nextcloud GmbH.
A copy can be found at https://nextcloud.com/trademarks/
A copy can be found at https://discord.com/branding
+39
View File
@@ -0,0 +1,39 @@
License Agreement for Freepik Content
The Company authorizes the User to download and use the Freepik Content under the terms of this Section (see Section 7 in relation to Sponsored Content). The Company and its licensors reserve all rights over the Freepik Content not expressly granted in this license to the User.
Subject to the fulfillment of these Terms, the Company authorizes the User in a non-transferable, revocable, limited, non-exclusive manner and on a worldwide basis for the duration of the relevant rights; to download, use and modify the Freepik Content, in a device the User owns or controls and only for the purposes and uses allowed in these Terms.
The User may use the Freepik Content (including any derivative work), either using the Freepik Contents in its entirety or using only some or some of its elements, either using the Freepik Contents without modification, combining them with other contents or having previously modified them, being the license granted with respect to the Freepik content, provided that it:
* Does not involve collective use;
* The Freepik Content is not used in a manner that suggests an association or endorsement of any kind by the Company or the Website;
* The Freepik Content or any derivative work is not used or included (in whole or in part) in a database, archive or in any other media/stock product, collection, set of clips, or library, for distribution or resale or used in any other way that could prevent or limit future visits or downloads from the Website;
* Does not resell, assign, transfer or sublicense the Freepik Content or any derived work from the Freepik Content;
* Does not use the Freepik Content in printed or electronic items (e.g. t-shirts, cups, postcards, birthday or greeting cards, invitations, calendars, web models or electronic devices, apps, NFTs, videogames, advertising spots, audiovisual animations) aimed to be resold, in which the content in the Freepik Content is the main element (because of size, relevance or any other cause, in case of doubt about whether the content is main element, it shall be deemed that the content is main element);
* Does not use the Freepik Content (totally or partially) in any trademark, or part of the same, which may be used by any other means to guarantee or to imply a guaranty of any product and/or service, unless the Freepik Content used in such cases is modified in such a way as to be a new and different content not confusingly similar with the original Freepik Content or implies a use of the Freepik Content as a template or test, and not as a final item or material;
* Does not use the Freepik Content (including any caption information, title, keywords or other metadata associated with the Freepik Content) for any machine learning and/or artificial intelligence purposes, or for any technologies designed or intended for the identification of natural persons.
* Does not make any use of the Freepik Content which might be considered defamatory, libellous, obscene, immoral or illegal, including, without limitation, using it in a way that places any person appearing in the Freepik Content in a negative light or depicts them in a way that they may find offensive such as the use in pornography, advertisements for escort or similar services, political endorsements, birth control products, and;
* Does not make any use of the Freepik Content to slander, libel or to vilify a person, race, sex, culture, sexual orientation, religion, country, region, town, village or any other place, or any other human group.
When any Freepik Content is marked or identified as for editorial use, or when within the same there are logos, recognizable products, public buildings, public events or images taken in places where recognizable persons appear in the background, the User shall only be entitled to use it for such editorial use. In such cases, the User undertakes not to use that content in any manner that entails any connection with any business activity, the use in economic traffic or advertising, marketing or commercialization of any product or service. The User shall be directly liable and the Company shall not assume any liability as a result of the use for commercial purposes by the User of any content belonging to the Freepik Content, which according to this paragraph should be for editorial use only.
The authorization to use the Freepik Content shall be free provided that any use of the content in the Freepik Content by the User is credited to the Company/Website as stated by the Company from time to time. In order to benefit from the Service or to use the Freepik Content without acknowledging the Company/Website, the User must purchase a premium subscription (hereinafter, the "Premium Subscription") in the Website and download the Freepik Content during the term of any such Premium Subscription. Conditions in Section 10 shall apply to the purchase of the Premium Subscription.
As a general rule, it is forbidden for a User to authorize any third parties to use the Freepik Content (or any modification of any content in the Freepik Content). As an exception to the prohibition, the User may allow third parties to use the Freepik Content, when each and every of the following conditions are met:
* The third party has professionally instructed the User to produce goods or provide services to it/him/her and the User uses a limited number of items within the Freepik Content to produce such goods or provide such services to the instructing third party;
* The authorization granted by the User to the third party is in writing and complies with every restriction of the Users authorization to use the relevant Freepik Content and includes, without limitation, a restriction for the third party to distribute, resell or license the relevant content in the Freepik Content (i.e. the third party is the final user of the relevant content in the Freepik Content);
* None of the contents in the Freepik Content which are subject to the authorization are used as the main element (because of size, relevance or any other cause; in case of doubt about whether the content is the main element, it shall be deemed as the main element) in printed or electronic items (e.g. t-shirts, cups, postcards, birthday or greeting cards, invitations, calendars, web models or electronic devices, apps, NFTs, videogames, advertising spots, audiovisual animations) aimed to be resold by the third party;
* The production of goods or provision of services by the User to the third party is not done by automatic means, it is tailor-made for the third party (and therefore its use is not authorized by the User to any other third party) and requires a specific substantial human intervention from the User in relation to each third party; and
* The User -and not the third party- chooses the specific items within the content of the Freepik Content to be used in the production of goods or provision of services for the third party.
When all of the above conditions are met, the User shall be entitled to authorize a third party to use the relevant content in the Freepik Content. This exception refers only to the prohibition for the User to authorize third parties to use the content in the Freepik Content without affecting or limiting in any way the remaining conditions of the Users right to use the Freepik Content. Whether the above conditions regarding the exception to the prohibition for Users to authorize third parties to use the content in the Freepik Content are met shall be interpreted restrictively so that, in case of doubt, it shall be deemed that the conditions are not met.
The User does not acquire any right as a result of the use of the content in the Freepik Content. In particular, the User is not authorized to distribute, resell or rent any content in the Freepik Content (or any modification of any content in the Freepik Content).
The Company may, at any time, offer any content on the Website under a different license from the one included in this Section (the "Specific License"). The Company will inform on the Website which content is licensed under an Specific License. The Specific License will be made available to the User and will include, without limitation, a description of the license itself, as well as the permitted and prohibited uses in relation to the content. In the event that a particular content is offered under a Specific License, the Specific License shall apply over the general license described in this Section. Notwithstanding the foregoing, all other obligations contained in these Terms shall continue to be binding on the User, unless they conflict with the Specific License, in which case the Specific License shall prevail.
The Users rights under this Section will end automatically without any notice if the User breaches any of the Terms. In case of termination of the rights hereunder, the User shall cease using content in the Freepik Content and will destroy every copy, whether total or partial, thereof.
A copy can be found at <https://www.freepikcompany.com/legal/#nav-freepik-agreement>
+2 -6
View File
@@ -5,8 +5,8 @@
-->
# Nextcloud Server ☁
[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/server)](https://api.reuse.software/info/github.com/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=stable30)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=stable30)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/stable30/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
[![Design](https://contribute.design/api/shield/nextcloud/server)](https://contribute.design/nextcloud/server)
@@ -74,10 +74,6 @@ Otherwise, git checkouts can be handled the same as release archives, by using t
- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
#### Ignore code style updates in git blame
`git config blame.ignoreRevsFile .git-blame-ignore-revs`
## Contribution guidelines 📜
All contributions to this repository from June 16, 2016, and onward are considered to be
+7 -7
View File
@@ -3,11 +3,11 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { vi } from 'vitest'
import { jest } from '@jest/globals'
export const showMessage = vi.fn()
export const showSuccess = vi.fn()
export const showWarning = vi.fn()
export const showInfo = vi.fn()
export const showError = vi.fn()
export const showUndo = vi.fn()
export const showMessage = jest.fn()
export const showSuccess = jest.fn()
export const showWarning = jest.fn()
export const showInfo = jest.fn()
export const showError = jest.fn()
export const showUndo = jest.fn()
+12
View File
@@ -0,0 +1,12 @@
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import '@testing-library/jest-dom'
// Mock `window.location` with Jest spies and extend expect
import 'jest-location-mock'
// Mock `window.fetch` with Jest
import 'jest-fetch-mock'
+1 -2
View File
@@ -2,8 +2,7 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
window.OC = { ...window.OC }
window.OCA = { ...window.OCA }
window.OCP = { ...window.OCP }
window._oc_webroot = ''
-6
View File
@@ -1,6 +0,0 @@
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
import '@testing-library/jest-dom/vitest'
import 'core-js/stable/index.js'
+6
View File
@@ -0,0 +1,6 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"verbatimModuleSyntax": false
}
}
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.22.0</version>
<version>1.20.0</version>
<licence>agpl</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
@@ -20,7 +20,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="32" max-version="32"/>
<nextcloud min-version="30" max-version="30"/>
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>
@@ -8,22 +8,20 @@ $baseDir = $vendorDir;
return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'OCA\\AdminAudit\\Actions\\Action' => $baseDir . '/../lib/Actions/Action.php',
'OCA\\AdminAudit\\Actions\\AppManagement' => $baseDir . '/../lib/Actions/AppManagement.php',
'OCA\\AdminAudit\\Actions\\Auth' => $baseDir . '/../lib/Actions/Auth.php',
'OCA\\AdminAudit\\Actions\\Console' => $baseDir . '/../lib/Actions/Console.php',
'OCA\\AdminAudit\\Actions\\Files' => $baseDir . '/../lib/Actions/Files.php',
'OCA\\AdminAudit\\Actions\\GroupManagement' => $baseDir . '/../lib/Actions/GroupManagement.php',
'OCA\\AdminAudit\\Actions\\Security' => $baseDir . '/../lib/Actions/Security.php',
'OCA\\AdminAudit\\Actions\\Sharing' => $baseDir . '/../lib/Actions/Sharing.php',
'OCA\\AdminAudit\\Actions\\TagManagement' => $baseDir . '/../lib/Actions/TagManagement.php',
'OCA\\AdminAudit\\Actions\\Trashbin' => $baseDir . '/../lib/Actions/Trashbin.php',
'OCA\\AdminAudit\\Actions\\UserManagement' => $baseDir . '/../lib/Actions/UserManagement.php',
'OCA\\AdminAudit\\Actions\\Versions' => $baseDir . '/../lib/Actions/Versions.php',
'OCA\\AdminAudit\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\AdminAudit\\AuditLogger' => $baseDir . '/../lib/AuditLogger.php',
'OCA\\AdminAudit\\BackgroundJobs\\Rotate' => $baseDir . '/../lib/BackgroundJobs/Rotate.php',
'OCA\\AdminAudit\\IAuditLogger' => $baseDir . '/../lib/IAuditLogger.php',
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => $baseDir . '/../lib/Listener/AppManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\AuthEventListener' => $baseDir . '/../lib/Listener/AuthEventListener.php',
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => $baseDir . '/../lib/Listener/ConsoleEventListener.php',
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => $baseDir . '/../lib/Listener/CriticalActionPerformedEventListener.php',
'OCA\\AdminAudit\\Listener\\FileEventListener' => $baseDir . '/../lib/Listener/FileEventListener.php',
'OCA\\AdminAudit\\Listener\\GroupManagementEventListener' => $baseDir . '/../lib/Listener/GroupManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\SecurityEventListener' => $baseDir . '/../lib/Listener/SecurityEventListener.php',
'OCA\\AdminAudit\\Listener\\SharingEventListener' => $baseDir . '/../lib/Listener/SharingEventListener.php',
'OCA\\AdminAudit\\Listener\\UserManagementEventListener' => $baseDir . '/../lib/Listener/UserManagementEventListener.php',
);
@@ -23,24 +23,22 @@ class ComposerStaticInitAdminAudit
public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'OCA\\AdminAudit\\Actions\\Action' => __DIR__ . '/..' . '/../lib/Actions/Action.php',
'OCA\\AdminAudit\\Actions\\AppManagement' => __DIR__ . '/..' . '/../lib/Actions/AppManagement.php',
'OCA\\AdminAudit\\Actions\\Auth' => __DIR__ . '/..' . '/../lib/Actions/Auth.php',
'OCA\\AdminAudit\\Actions\\Console' => __DIR__ . '/..' . '/../lib/Actions/Console.php',
'OCA\\AdminAudit\\Actions\\Files' => __DIR__ . '/..' . '/../lib/Actions/Files.php',
'OCA\\AdminAudit\\Actions\\GroupManagement' => __DIR__ . '/..' . '/../lib/Actions/GroupManagement.php',
'OCA\\AdminAudit\\Actions\\Security' => __DIR__ . '/..' . '/../lib/Actions/Security.php',
'OCA\\AdminAudit\\Actions\\Sharing' => __DIR__ . '/..' . '/../lib/Actions/Sharing.php',
'OCA\\AdminAudit\\Actions\\TagManagement' => __DIR__ . '/..' . '/../lib/Actions/TagManagement.php',
'OCA\\AdminAudit\\Actions\\Trashbin' => __DIR__ . '/..' . '/../lib/Actions/Trashbin.php',
'OCA\\AdminAudit\\Actions\\UserManagement' => __DIR__ . '/..' . '/../lib/Actions/UserManagement.php',
'OCA\\AdminAudit\\Actions\\Versions' => __DIR__ . '/..' . '/../lib/Actions/Versions.php',
'OCA\\AdminAudit\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\AdminAudit\\AuditLogger' => __DIR__ . '/..' . '/../lib/AuditLogger.php',
'OCA\\AdminAudit\\BackgroundJobs\\Rotate' => __DIR__ . '/..' . '/../lib/BackgroundJobs/Rotate.php',
'OCA\\AdminAudit\\IAuditLogger' => __DIR__ . '/..' . '/../lib/IAuditLogger.php',
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/AppManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\AuthEventListener' => __DIR__ . '/..' . '/../lib/Listener/AuthEventListener.php',
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => __DIR__ . '/..' . '/../lib/Listener/ConsoleEventListener.php',
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => __DIR__ . '/..' . '/../lib/Listener/CriticalActionPerformedEventListener.php',
'OCA\\AdminAudit\\Listener\\FileEventListener' => __DIR__ . '/..' . '/../lib/Listener/FileEventListener.php',
'OCA\\AdminAudit\\Listener\\GroupManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/GroupManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\SecurityEventListener' => __DIR__ . '/..' . '/../lib/Listener/SecurityEventListener.php',
'OCA\\AdminAudit\\Listener\\SharingEventListener' => __DIR__ . '/..' . '/../lib/Listener/SharingEventListener.php',
'OCA\\AdminAudit\\Listener\\UserManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/UserManagementEventListener.php',
);
public static function getInitializer(ClassLoader $loader)
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Auditēšana / Žurnalizēšana",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensitīvas darbības."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "Auditēšana / Žurnalizēšana",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensitīvas darbības."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
}
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Pengauditan / Pengelogan",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Menyediakan kebolehan pengelogan untuk Nextcloud seperti akses fail log atau tindakan sensitif."
},
"nplurals=1; plural=0;");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "Pengauditan / Pengelogan",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Menyediakan kebolehan pengelogan untuk Nextcloud seperti akses fail log atau tindakan sensitif."
},"pluralForm" :"nplurals=1; plural=0;"
}
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "ئىقتىسادىي تەپتىش / خاتىرىلەش",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud غا تىزىمغا كىرىش ئىقتىدارى بىلەن تەمىنلەيدۇ ، مەسىلەن ھۆججەتلەرنى زىيارەت قىلىش ياكى باشقا سەزگۈر ھەرىكەتلەر."
},
"nplurals=2; plural=(n != 1);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "ئىقتىسادىي تەپتىش / خاتىرىلەش",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud غا تىزىمغا كىرىش ئىقتىدارى بىلەن تەمىنلەيدۇ ، مەسىلەن ھۆججەتلەرنى زىيارەت قىلىش ياكى باشقا سەزگۈر ھەرىكەتلەر."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "稽核/記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
"Auditing / Logging" : "稽核記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "稽核/記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
"Auditing / Logging" : "稽核記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -32,13 +32,13 @@ class Action {
if (!isset($params[$element])) {
if ($obfuscateParameters) {
$this->logger->critical(
'$params["' . $element . '"] was missing.',
'$params["'.$element.'"] was missing.',
['app' => 'admin_audit']
);
} else {
$this->logger->critical(
sprintf(
'$params["' . $element . '"] was missing. Transferred value: %s',
'$params["'.$element.'"] was missing. Transferred value: %s',
print_r($params, true)
),
['app' => 'admin_audit']
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
class AppManagement extends Action {
/**
* @param string $appName
*/
public function enableApp(string $appName): void {
$this->log('App "%s" enabled',
['app' => $appName],
['app']
);
}
/**
* @param string $appName
* @param string[] $groups
*/
public function enableAppForGroups(string $appName, array $groups): void {
$this->log('App "%1$s" enabled for groups: %2$s',
['app' => $appName, 'groups' => implode(', ', $groups)],
['app', 'groups']
);
}
/**
* @param string $appName
*/
public function disableApp(string $appName): void {
$this->log('App "%s" disabled',
['app' => $appName],
['app']
);
}
}
+45
View File
@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
/**
* Class Auth logs all auth related actions
*
* @package OCA\AdminAudit\Actions
*/
class Auth extends Action {
public function loginAttempt(array $params): void {
$this->log(
'Login attempt: "%s"',
$params,
[
'uid',
],
true
);
}
public function loginSuccessful(array $params): void {
$this->log(
'Login successful: "%s"',
$params,
[
'uid',
],
true
);
}
public function logout(array $params): void {
$this->log(
'Logout occurred',
[],
[]
);
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
class Console extends Action {
/**
* @param array $arguments
*/
public function runCommand(array $arguments): void {
if (!isset($arguments[1]) || $arguments[1] === '_completion') {
// Don't log autocompletion
return;
}
// Remove `./occ`
array_shift($arguments);
$this->log('Console command executed: %s',
['arguments' => implode(' ', $arguments)],
['arguments']
);
}
}
+88 -21
View File
@@ -8,16 +8,17 @@ declare(strict_types=1);
namespace OCA\AdminAudit\Actions;
use OC\Files\Node\NonExistingFile;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeDeletedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Files\InvalidPathException;
use OCP\Files\NotFoundException;
use OCP\Server;
use OCP\Preview\BeforePreviewFetchedEvent;
use Psr\Log\LoggerInterface;
/**
@@ -28,9 +29,10 @@ use Psr\Log\LoggerInterface;
class Files extends Action {
private array $renamedNodes = [];
/**
* Logs file read actions
*
* @param BeforeNodeReadEvent $event
*/
public function read(BeforeNodeReadEvent $event): void {
try {
@@ -40,8 +42,8 @@ class Files extends Action {
'path' => mb_substr($node->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file read: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file read: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -54,14 +56,16 @@ class Files extends Action {
/**
* Logs rename actions of files
*
* @param BeforeNodeRenamedEvent $event
*/
public function beforeRename(BeforeNodeRenamedEvent $event): void {
try {
$source = $event->getSource();
$this->renamedNodes[$source->getId()] = $source;
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file rename: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file rename: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -69,6 +73,8 @@ class Files extends Action {
/**
* Logs rename actions of files
*
* @param NodeRenamedEvent $event
*/
public function afterRename(NodeRenamedEvent $event): void {
try {
@@ -80,8 +86,8 @@ class Files extends Action {
'newpath' => mb_substr($target->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file rename: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file rename: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -96,6 +102,8 @@ class Files extends Action {
/**
* Logs creation of files
*
* @param NodeCreatedEvent $event
*/
public function create(NodeCreatedEvent $event): void {
try {
@@ -104,8 +112,8 @@ class Files extends Action {
'path' => mb_substr($event->getNode()->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file create: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file create: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -121,6 +129,8 @@ class Files extends Action {
/**
* Logs copying of files
*
* @param NodeCopiedEvent $event
*/
public function copy(NodeCopiedEvent $event): void {
try {
@@ -131,8 +141,8 @@ class Files extends Action {
'newpath' => mb_substr($event->getTarget()->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file copy: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file copy: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -145,17 +155,19 @@ class Files extends Action {
/**
* Logs writing of files
*
* @param BeforeNodeWrittenEvent $event
*/
public function write(NodeWrittenEvent $event): void {
public function write(BeforeNodeWrittenEvent $event): void {
$node = $event->getNode();
try {
$params = [
'id' => $node->getId(),
'id' => $node instanceof NonExistingFile ? null : $node->getId(),
'path' => mb_substr($node->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file write: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file write: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -171,17 +183,43 @@ class Files extends Action {
}
/**
* Logs deletions of files
* Logs update of files
*
* @param NodeWrittenEvent $event
*/
public function delete(BeforeNodeDeletedEvent $event): void {
public function update(NodeWrittenEvent $event): void {
try {
$params = [
'id' => $event->getNode()->getId(),
'path' => mb_substr($event->getNode()->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file delete: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file update: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
$this->log(
'File with id "%s" updated: "%s"',
$params,
array_keys($params)
);
}
/**
* Logs deletions of files
*
* @param NodeDeletedEvent $event
*/
public function delete(NodeDeletedEvent $event): void {
try {
$params = [
'id' => $event->getNode()->getId(),
'path' => mb_substr($event->getNode()->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file delete: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -191,4 +229,33 @@ class Files extends Action {
array_keys($params)
);
}
/**
* Logs preview access to a file
*
* @param BeforePreviewFetchedEvent $event
*/
public function preview(BeforePreviewFetchedEvent $event): void {
try {
$file = $event->getNode();
$params = [
'id' => $file->getId(),
'width' => $event->getWidth(),
'height' => $event->getHeight(),
'crop' => $event->isCrop(),
'mode' => $event->getMode(),
'path' => mb_substr($file->getInternalPath(), 5)
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file preview: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
$this->log(
'Preview accessed: (id: "%s", width: "%s", height: "%s" crop: "%s", mode: "%s", path: "%s")',
$params,
array_keys($params)
);
}
}
@@ -0,0 +1,87 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
use OCP\IGroup;
use OCP\IUser;
/**
* Class GroupManagement logs all group manager related events
*
* @package OCA\AdminAudit\Actions
*/
class GroupManagement extends Action {
/**
* log add user to group event
*
* @param IGroup $group
* @param IUser $user
*/
public function addUser(IGroup $group, IUser $user): void {
$this->log('User "%s" added to group "%s"',
[
'group' => $group->getGID(),
'user' => $user->getUID()
],
[
'user', 'group'
]
);
}
/**
* log remove user from group event
*
* @param IGroup $group
* @param IUser $user
*/
public function removeUser(IGroup $group, IUser $user): void {
$this->log('User "%s" removed from group "%s"',
[
'group' => $group->getGID(),
'user' => $user->getUID()
],
[
'user', 'group'
]
);
}
/**
* log create group to group event
*
* @param IGroup $group
*/
public function createGroup(IGroup $group): void {
$this->log('Group created: "%s"',
[
'group' => $group->getGID()
],
[
'group'
]
);
}
/**
* log delete group to group event
*
* @param IGroup $group
*/
public function deleteGroup(IGroup $group): void {
$this->log('Group deleted: "%s"',
[
'group' => $group->getGID()
],
[
'group'
]
);
}
}
+60
View File
@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\IUser;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\AdminAudit\Actions
*/
class Security extends Action {
/**
* Logs failed twofactor challenge
*/
public function twofactorFailed(IUser $user, IProvider $provider): void {
$params = [
'displayName' => $user->getDisplayName(),
'uid' => $user->getUID(),
'provider' => $provider->getDisplayName(),
];
$this->log(
'Failed two factor attempt by user %s (%s) with provider %s',
$params,
[
'displayName',
'uid',
'provider',
]
);
}
/**
* Logs successful twofactor challenge
*/
public function twofactorSuccess(IUser $user, IProvider $provider): void {
$params = [
'displayName' => $user->getDisplayName(),
'uid' => $user->getUID(),
'provider' => $provider->getDisplayName(),
];
$this->log(
'Successful two factor attempt by user %s (%s) with provider %s',
$params,
[
'displayName',
'uid',
'provider',
]
);
}
}
+267
View File
@@ -7,12 +7,279 @@ declare(strict_types=1);
*/
namespace OCA\AdminAudit\Actions;
use OCP\Share\IShare;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\AdminAudit\Actions
*/
class Sharing extends Action {
/**
* Logs sharing of data
*
* @param array $params
*/
public function shared(array $params): void {
if ($params['shareType'] === IShare::TYPE_LINK) {
$this->log(
'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_USER) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_ROOM) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the room "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_EMAIL) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the email recipient "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_CIRCLE) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the circle "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the remote user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the remote group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_DECK) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the deck card "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_SCIENCEMESH) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the ScienceMesh user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
}
}
/**
* Logs unsharing of data
*
* @param array $params
*/
public function unshare(array $params): void {
if ($params['shareType'] === IShare::TYPE_LINK) {
$this->log(
'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_USER) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_ROOM) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the room "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_EMAIL) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the email recipient "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_CIRCLE) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the circle "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the remote user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the remote group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_DECK) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the deck card "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_SCIENCEMESH) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the ScienceMesh user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
}
}
/**
* Logs the updating of permission changes for shares
@@ -0,0 +1,122 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
use OCP\IUser;
/**
* Class UserManagement logs all user management related actions.
*
* @package OCA\AdminAudit\Actions
*/
class UserManagement extends Action {
/**
* Log creation of users
*
* @param array $params
*/
public function create(array $params): void {
$this->log(
'User created: "%s"',
$params,
[
'uid',
]
);
}
/**
* Log assignments of users (typically user backends)
*
* @param string $uid
*/
public function assign(string $uid): void {
$this->log(
'UserID assigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);
}
/**
* Log deletion of users
*
* @param array $params
*/
public function delete(array $params): void {
$this->log(
'User deleted: "%s"',
$params,
[
'uid',
]
);
}
/**
* Log unassignments of users (typically user backends, no data removed)
*
* @param string $uid
*/
public function unassign(string $uid): void {
$this->log(
'UserID unassigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);
}
/**
* Log enabling of users
*
* @param array $params
*/
public function change(array $params): void {
switch ($params['feature']) {
case 'enabled':
$this->log(
$params['value'] === true
? 'User enabled: "%s"'
: 'User disabled: "%s"',
['user' => $params['user']->getUID()],
[
'user',
]
);
break;
case 'eMailAddress':
$this->log(
'Email address changed for user %s',
['user' => $params['user']->getUID()],
[
'user',
]
);
break;
}
}
/**
* Logs changing of the user scope
*
* @param IUser $user
*/
public function setPassword(IUser $user): void {
if ($user->getBackendClassName() === 'Database') {
$this->log(
'Password of user "%s" has been changed',
[
'user' => $user->getUID(),
],
[
'user',
]
);
}
}
}
+127 -85
View File
@@ -1,35 +1,29 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\AppInfo;
use OC\Group\Manager as GroupManager;
use OC\User\Session as UserSession;
use OCA\AdminAudit\Actions\AppManagement;
use OCA\AdminAudit\Actions\Auth;
use OCA\AdminAudit\Actions\Console;
use OCA\AdminAudit\Actions\Files;
use OCA\AdminAudit\Actions\GroupManagement;
use OCA\AdminAudit\Actions\Security;
use OCA\AdminAudit\Actions\Sharing;
use OCA\AdminAudit\Actions\TagManagement;
use OCA\AdminAudit\Actions\Trashbin;
use OCA\AdminAudit\Actions\UserManagement;
use OCA\AdminAudit\Actions\Versions;
use OCA\AdminAudit\AuditLogger;
use OCA\AdminAudit\IAuditLogger;
use OCA\AdminAudit\Listener\AppManagementEventListener;
use OCA\AdminAudit\Listener\AuthEventListener;
use OCA\AdminAudit\Listener\ConsoleEventListener;
use OCA\AdminAudit\Listener\CriticalActionPerformedEventListener;
use OCA\AdminAudit\Listener\FileEventListener;
use OCA\AdminAudit\Listener\GroupManagementEventListener;
use OCA\AdminAudit\Listener\SecurityEventListener;
use OCA\AdminAudit\Listener\SharingEventListener;
use OCA\AdminAudit\Listener\UserManagementEventListener;
use OCP\App\Events\AppDisableEvent;
use OCP\App\Events\AppEnableEvent;
use OCP\App\Events\AppUpdateEvent;
use OCP\App\ManagerEvent;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
@@ -38,39 +32,29 @@ use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeDeletedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Group\Events\GroupCreatedEvent;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\Group\Events\UserAddedEvent;
use OCP\Group\Events\UserRemovedEvent;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUserSession;
use OCP\Log\Audit\CriticalActionPerformedEvent;
use OCP\Log\ILogFactory;
use OCP\Preview\BeforePreviewFetchedEvent;
use OCP\Share;
use OCP\Share\Events\ShareCreatedEvent;
use OCP\Share\Events\ShareDeletedEvent;
use OCP\SystemTag\ManagerEvent;
use OCP\User\Events\BeforeUserLoggedInEvent;
use OCP\User\Events\BeforeUserLoggedOutEvent;
use OCP\User\Events\PasswordUpdatedEvent;
use OCP\User\Events\UserChangedEvent;
use OCP\User\Events\UserCreatedEvent;
use OCP\User\Events\UserDeletedEvent;
use OCP\User\Events\UserIdAssignedEvent;
use OCP\User\Events\UserIdUnassignedEvent;
use OCP\User\Events\UserLoggedInEvent;
use OCP\User\Events\UserLoggedInWithCookieEvent;
use OCP\Util;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
class Application extends App implements IBootstrap {
/** @var LoggerInterface */
protected $logger;
public function __construct() {
parent::__construct('admin_audit');
}
@@ -81,45 +65,6 @@ class Application extends App implements IBootstrap {
});
$context->registerEventListener(CriticalActionPerformedEvent::class, CriticalActionPerformedEventListener::class);
// User management events
$context->registerEventListener(UserCreatedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserDeletedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserChangedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(PasswordUpdatedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserIdAssignedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserIdUnassignedEvent::class, UserManagementEventListener::class);
// Group management events
$context->registerEventListener(UserAddedEvent::class, GroupManagementEventListener::class);
$context->registerEventListener(UserRemovedEvent::class, GroupManagementEventListener::class);
$context->registerEventListener(GroupCreatedEvent::class, GroupManagementEventListener::class);
$context->registerEventListener(GroupDeletedEvent::class, GroupManagementEventListener::class);
// Sharing events
$context->registerEventListener(ShareCreatedEvent::class, SharingEventListener::class);
$context->registerEventListener(ShareDeletedEvent::class, SharingEventListener::class);
// Auth events
$context->registerEventListener(BeforeUserLoggedInEvent::class, AuthEventListener::class);
$context->registerEventListener(UserLoggedInWithCookieEvent::class, AuthEventListener::class);
$context->registerEventListener(UserLoggedInEvent::class, AuthEventListener::class);
$context->registerEventListener(BeforeUserLoggedOutEvent::class, AuthEventListener::class);
// File events
$context->registerEventListener(BeforePreviewFetchedEvent::class, FileEventListener::class);
// Security events
$context->registerEventListener(TwoFactorProviderChallengePassed::class, SecurityEventListener::class);
$context->registerEventListener(TwoFactorProviderChallengeFailed::class, SecurityEventListener::class);
// App management events
$context->registerEventListener(AppEnableEvent::class, AppManagementEventListener::class);
$context->registerEventListener(AppDisableEvent::class, AppManagementEventListener::class);
$context->registerEventListener(AppUpdateEvent::class, AppManagementEventListener::class);
// Console events
$context->registerEventListener(ConsoleEvent::class, ConsoleEventListener::class);
}
public function boot(IBootContext $context): void {
@@ -130,87 +75,172 @@ class Application extends App implements IBootstrap {
* TODO: once the hooks are migrated to lazy events, this should be done
* in \OCA\AdminAudit\AppInfo\Application::register
*/
$this->registerLegacyHooks($logger, $context->getServerContainer());
$this->registerHooks($logger, $context->getServerContainer());
}
/**
* Register hooks in order to log them
*/
private function registerLegacyHooks(IAuditLogger $logger, ContainerInterface $serverContainer): void {
private function registerHooks(IAuditLogger $logger,
ContainerInterface $serverContainer): void {
$this->userManagementHooks($logger, $serverContainer->get(IUserSession::class));
$this->groupHooks($logger, $serverContainer->get(IGroupManager::class));
$this->authHooks($logger);
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $serverContainer->get(IEventDispatcher::class);
$this->sharingLegacyHooks($logger);
$this->consoleHooks($logger, $eventDispatcher);
$this->appHooks($logger, $eventDispatcher);
$this->sharingHooks($logger);
$this->fileHooks($logger, $eventDispatcher);
$this->trashbinHooks($logger);
$this->versionsHooks($logger);
$this->securityHooks($logger, $eventDispatcher);
$this->tagHooks($logger, $eventDispatcher);
}
private function sharingLegacyHooks(IAuditLogger $logger): void {
private function userManagementHooks(IAuditLogger $logger,
IUserSession $userSession): void {
$userActions = new UserManagement($logger);
Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete');
Util::connectHook('OC_User', 'changeUser', $userActions, 'change');
assert($userSession instanceof UserSession);
$userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']);
$userSession->listen('\OC\User', 'assignedUserId', [$userActions, 'assign']);
$userSession->listen('\OC\User', 'postUnassignedUserId', [$userActions, 'unassign']);
}
private function groupHooks(IAuditLogger $logger,
IGroupManager $groupManager): void {
$groupActions = new GroupManagement($logger);
assert($groupManager instanceof GroupManager);
$groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']);
$groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']);
$groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']);
$groupManager->listen('\OC\Group', 'postCreate', [$groupActions, 'createGroup']);
}
private function sharingHooks(IAuditLogger $logger): void {
$shareActions = new Sharing($logger);
Util::connectHook(Share::class, 'post_shared', $shareActions, 'shared');
Util::connectHook(Share::class, 'post_unshare', $shareActions, 'unshare');
Util::connectHook(Share::class, 'post_unshareFromSelf', $shareActions, 'unshare');
Util::connectHook(Share::class, 'post_update_permissions', $shareActions, 'updatePermissions');
Util::connectHook(Share::class, 'post_update_password', $shareActions, 'updatePassword');
Util::connectHook(Share::class, 'post_set_expiration_date', $shareActions, 'updateExpirationDate');
Util::connectHook(Share::class, 'share_link_access', $shareActions, 'shareAccessed');
}
private function authHooks(IAuditLogger $logger): void {
$authActions = new Auth($logger);
Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt');
Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful');
Util::connectHook('OC_User', 'logout', $authActions, 'logout');
}
private function appHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->enableApp($event->getAppID());
});
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE_FOR_GROUPS, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->enableAppForGroups($event->getAppID(), $event->getGroups());
});
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_DISABLE, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->disableApp($event->getAppID());
});
}
private function consoleHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ConsoleEvent::class, function (ConsoleEvent $event) use ($logger) {
$appActions = new Console($logger);
$appActions->runCommand($event->getArguments());
});
}
private function tagHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ManagerEvent::EVENT_CREATE, function (ManagerEvent $event) use ($logger): void {
$eventDispatcher->addListener(\OCP\SystemTag\ManagerEvent::EVENT_CREATE, function (\OCP\SystemTag\ManagerEvent $event) use ($logger) {
$tagActions = new TagManagement($logger);
$tagActions->createTag($event->getTag());
});
}
private function fileHooks(IAuditLogger $logger, IEventDispatcher $eventDispatcher): void {
private function fileHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$fileActions = new Files($logger);
$eventDispatcher->addListener(
BeforePreviewFetchedEvent::class,
function (BeforePreviewFetchedEvent $event) use ($fileActions) {
$fileActions->preview($event);
}
);
$eventDispatcher->addListener(
BeforeNodeRenamedEvent::class,
function (BeforeNodeRenamedEvent $event) use ($fileActions): void {
function (BeforeNodeRenamedEvent $event) use ($fileActions) {
$fileActions->beforeRename($event);
}
);
$eventDispatcher->addListener(
NodeRenamedEvent::class,
function (NodeRenamedEvent $event) use ($fileActions): void {
function (NodeRenamedEvent $event) use ($fileActions) {
$fileActions->afterRename($event);
}
);
$eventDispatcher->addListener(
NodeCreatedEvent::class,
function (NodeCreatedEvent $event) use ($fileActions): void {
function (NodeCreatedEvent $event) use ($fileActions) {
$fileActions->create($event);
}
);
$eventDispatcher->addListener(
NodeCopiedEvent::class,
function (NodeCopiedEvent $event) use ($fileActions): void {
function (NodeCopiedEvent $event) use ($fileActions) {
$fileActions->copy($event);
}
);
$eventDispatcher->addListener(
NodeWrittenEvent::class,
function (NodeWrittenEvent $event) use ($fileActions): void {
BeforeNodeWrittenEvent::class,
function (BeforeNodeWrittenEvent $event) use ($fileActions) {
$fileActions->write($event);
}
);
$eventDispatcher->addListener(
NodeWrittenEvent::class,
function (NodeWrittenEvent $event) use ($fileActions) {
$fileActions->update($event);
}
);
$eventDispatcher->addListener(
BeforeNodeReadEvent::class,
function (BeforeNodeReadEvent $event) use ($fileActions): void {
function (BeforeNodeReadEvent $event) use ($fileActions) {
$fileActions->read($event);
}
);
$eventDispatcher->addListener(
BeforeNodeDeletedEvent::class,
function (BeforeNodeDeletedEvent $event) use ($fileActions): void {
NodeDeletedEvent::class,
function (NodeDeletedEvent $event) use ($fileActions) {
$fileActions->delete($event);
}
);
@@ -227,4 +257,16 @@ class Application extends App implements IBootstrap {
Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
}
private function securityHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(TwoFactorProviderChallengePassed::class, function (TwoFactorProviderChallengePassed $event) use ($logger) {
$security = new Security($logger);
$security->twofactorSuccess($event->getUser(), $event->getProvider());
});
$eventDispatcher->addListener(TwoFactorProviderChallengeFailed::class, function (TwoFactorProviderChallengeFailed $event) use ($logger) {
$security = new Security($logger);
$security->twofactorFailed($event->getUser(), $event->getProvider());
});
}
}
-3
View File
@@ -1,12 +1,9 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit;
use OCP\IConfig;
@@ -1,60 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\App\Events\AppDisableEvent;
use OCP\App\Events\AppEnableEvent;
use OCP\App\Events\AppUpdateEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
/**
* @template-implements IEventListener<AppEnableEvent|AppDisableEvent|AppUpdateEvent>
*/
class AppManagementEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof AppEnableEvent) {
$this->appEnable($event);
} elseif ($event instanceof AppDisableEvent) {
$this->appDisable($event);
} elseif ($event instanceof AppUpdateEvent) {
$this->appUpdate($event);
}
}
private function appEnable(AppEnableEvent $event): void {
if (empty($event->getGroupIds())) {
$this->log('App "%s" enabled',
['app' => $event->getAppId()],
['app']
);
} else {
$this->log('App "%1$s" enabled for groups: %2$s',
['app' => $event->getAppId(), 'groups' => implode(', ', $event->getGroupIds())],
['app', 'groups']
);
}
}
private function appDisable(AppDisableEvent $event): void {
$this->log('App "%s" disabled',
['app' => $event->getAppId()],
['app']
);
}
private function appUpdate(AppUpdateEvent $event): void {
$this->log('App "%s" updated',
['app' => $event->getAppId()],
['app']
);
}
}
@@ -1,67 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\User\Events\BeforeUserLoggedInEvent;
use OCP\User\Events\BeforeUserLoggedOutEvent;
use OCP\User\Events\UserLoggedInEvent;
use OCP\User\Events\UserLoggedInWithCookieEvent;
/**
* @template-implements IEventListener<BeforeUserLoggedInEvent|UserLoggedInWithCookieEvent|UserLoggedInEvent|BeforeUserLoggedOutEvent>
*/
class AuthEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof BeforeUserLoggedInEvent) {
$this->beforeUserLoggedIn($event);
} elseif ($event instanceof UserLoggedInWithCookieEvent || $event instanceof UserLoggedInEvent) {
$this->userLoggedIn($event);
} elseif ($event instanceof BeforeUserLoggedOutEvent) {
$this->beforeUserLogout($event);
}
}
private function beforeUserLoggedIn(BeforeUserLoggedInEvent $event): void {
$this->log(
'Login attempt: "%s"',
[
'uid' => $event->getUsername()
],
[
'uid',
],
true
);
}
private function userLoggedIn(UserLoggedInWithCookieEvent|UserLoggedInEvent $event): void {
$this->log(
'Login successful: "%s"',
[
'uid' => $event->getUser()->getUID()
],
[
'uid',
],
true
);
}
private function beforeUserLogout(BeforeUserLoggedOutEvent $event): void {
$this->log(
'Logout occurred',
[],
[]
);
}
}
@@ -1,42 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
/**
* @template-implements IEventListener<ConsoleEvent>
*/
class ConsoleEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof ConsoleEvent) {
$this->runCommand($event);
}
}
private function runCommand(ConsoleEvent $event): void {
$arguments = $event->getArguments();
if (!isset($arguments[1]) || $arguments[1] === '_completion') {
// Don't log autocompletion
return;
}
// Remove `./occ`
array_shift($arguments);
$this->log('Console command executed: %s',
['arguments' => implode(' ', $arguments)],
['arguments']
);
}
}
@@ -1,12 +1,10 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
@@ -1,57 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Files\InvalidPathException;
use OCP\Files\NotFoundException;
use OCP\Preview\BeforePreviewFetchedEvent;
use OCP\Server;
use Psr\Log\LoggerInterface;
/**
* @template-implements IEventListener<BeforePreviewFetchedEvent>
*/
class FileEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof BeforePreviewFetchedEvent) {
$this->beforePreviewFetched($event);
}
}
/**
* Logs preview access to a file
*/
private function beforePreviewFetched(BeforePreviewFetchedEvent $event): void {
try {
$file = $event->getNode();
$params = [
'id' => $file->getId(),
'width' => $event->getWidth(),
'height' => $event->getHeight(),
'crop' => $event->isCrop(),
'mode' => $event->getMode(),
'path' => mb_substr($file->getInternalPath(), 5)
];
$this->log(
'Preview accessed: (id: "%s", width: "%s", height: "%s" crop: "%s", mode: "%s", path: "%s")',
$params,
array_keys($params)
);
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file preview: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
}
}
@@ -1,81 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Group\Events\GroupCreatedEvent;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\Group\Events\UserAddedEvent;
use OCP\Group\Events\UserRemovedEvent;
/**
* @template-implements IEventListener<UserAddedEvent|UserRemovedEvent|GroupCreatedEvent|GroupDeletedEvent>
*/
class GroupManagementEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof UserAddedEvent) {
$this->userAdded($event);
} elseif ($event instanceof UserRemovedEvent) {
$this->userRemoved($event);
} elseif ($event instanceof GroupCreatedEvent) {
$this->groupCreated($event);
} elseif ($event instanceof GroupDeletedEvent) {
$this->groupDeleted($event);
}
}
private function userAdded(UserAddedEvent $event): void {
$this->log('User "%s" added to group "%s"',
[
'group' => $event->getGroup()->getGID(),
'user' => $event->getUser()->getUID()
],
[
'user', 'group'
]
);
}
private function userRemoved(UserRemovedEvent $event): void {
$this->log('User "%s" removed from group "%s"',
[
'group' => $event->getGroup()->getGID(),
'user' => $event->getUser()->getUID()
],
[
'user', 'group'
]
);
}
private function groupCreated(GroupCreatedEvent $event): void {
$this->log('Group created: "%s"',
[
'group' => $event->getGroup()->getGID()
],
[
'group'
]
);
}
private function groupDeleted(GroupDeletedEvent $event): void {
$this->log('Group deleted: "%s"',
[
'group' => $event->getGroup()->getGID()
],
[
'group'
]
);
}
}
@@ -1,61 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
/**
* @template-implements IEventListener<TwoFactorProviderChallengePassed|TwoFactorProviderChallengeFailed>
*/
class SecurityEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof TwoFactorProviderChallengePassed) {
$this->twoFactorProviderChallengePassed($event);
} elseif ($event instanceof TwoFactorProviderChallengeFailed) {
$this->twoFactorProviderChallengeFailed($event);
}
}
private function twoFactorProviderChallengePassed(TwoFactorProviderChallengePassed $event): void {
$this->log(
'Successful two factor attempt by user %s (%s) with provider %s',
[
'uid' => $event->getUser()->getUID(),
'displayName' => $event->getUser()->getDisplayName(),
'provider' => $event->getProvider()->getDisplayName()
],
[
'displayName',
'uid',
'provider',
]
);
}
private function twoFactorProviderChallengeFailed(TwoFactorProviderChallengeFailed $event): void {
$this->log(
'Failed two factor attempt by user %s (%s) with provider %s',
[
'uid' => $event->getUser()->getUID(),
'displayName' => $event->getUser()->getDisplayName(),
'provider' => $event->getProvider()->getDisplayName()
],
[
'displayName',
'uid',
'provider',
]
);
}
}
@@ -1,291 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Share\Events\ShareCreatedEvent;
use OCP\Share\Events\ShareDeletedEvent;
use OCP\Share\IShare;
/**
* @template-implements IEventListener<ShareCreatedEvent|ShareDeletedEvent>
*/
class SharingEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof ShareCreatedEvent) {
$this->shareCreated($event);
} elseif ($event instanceof ShareDeletedEvent) {
$this->shareDeleted($event);
}
}
private function shareCreated(ShareCreatedEvent $event): void {
$share = $event->getShare();
$params = [
'itemType' => $share->getNodeType(),
'path' => $share->getNode()->getPath(),
'itemSource' => $share->getNodeId(),
'shareWith' => $share->getSharedWith(),
'permissions' => $share->getPermissions(),
'id' => $share->getId()
];
match ($share->getShareType()) {
IShare::TYPE_LINK => $this->log(
'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'permissions',
'id',
]
),
IShare::TYPE_USER => $this->log(
'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_ROOM => $this->log(
'The %s "%s" with ID "%s" has been shared to the room "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_EMAIL => $this->log(
'The %s "%s" with ID "%s" has been shared to the email recipient "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_CIRCLE => $this->log(
'The %s "%s" with ID "%s" has been shared to the circle "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_REMOTE => $this->log(
'The %s "%s" with ID "%s" has been shared to the remote user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_REMOTE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been shared to the remote group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_DECK => $this->log(
'The %s "%s" with ID "%s" has been shared to the deck card "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_SCIENCEMESH => $this->log(
'The %s "%s" with ID "%s" has been shared to the sciencemesh user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
default => null
};
}
private function shareDeleted(ShareDeletedEvent $event): void {
$share = $event->getShare();
$params = [
'itemType' => $share->getNodeType(),
'fileTarget' => $share->getTarget(),
'itemSource' => $share->getNodeId(),
'shareWith' => $share->getSharedWith(),
'id' => $share->getId()
];
match ($share->getShareType()) {
IShare::TYPE_LINK => $this->log(
'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'id',
]
),
IShare::TYPE_USER => $this->log(
'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_ROOM => $this->log(
'The %s "%s" with ID "%s" has been unshared from the room "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_EMAIL => $this->log(
'The %s "%s" with ID "%s" has been unshared from the email recipient "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_CIRCLE => $this->log(
'The %s "%s" with ID "%s" has been unshared from the circle "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_REMOTE => $this->log(
'The %s "%s" with ID "%s" has been unshared from the remote user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_REMOTE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been unshared from the remote group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_DECK => $this->log(
'The %s "%s" with ID "%s" has been unshared from the deck card "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_SCIENCEMESH => $this->log(
'The %s "%s" with ID "%s" has been unshared from the sciencemesh user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
default => null
};
}
}
@@ -1,126 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\User\Events\PasswordUpdatedEvent;
use OCP\User\Events\UserChangedEvent;
use OCP\User\Events\UserCreatedEvent;
use OCP\User\Events\UserDeletedEvent;
use OCP\User\Events\UserIdAssignedEvent;
use OCP\User\Events\UserIdUnassignedEvent;
/**
* @template-implements IEventListener<UserCreatedEvent|UserDeletedEvent|UserChangedEvent|PasswordUpdatedEvent|UserIdAssignedEvent|UserIdUnassignedEvent>
*/
class UserManagementEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof UserCreatedEvent) {
$this->userCreated($event);
} elseif ($event instanceof UserDeletedEvent) {
$this->userDeleted($event);
} elseif ($event instanceof UserChangedEvent) {
$this->userChanged($event);
} elseif ($event instanceof PasswordUpdatedEvent) {
$this->passwordUpdated($event);
} elseif ($event instanceof UserIdAssignedEvent) {
$this->userIdAssigned($event);
} elseif ($event instanceof UserIdUnassignedEvent) {
$this->userIdUnassigned($event);
}
}
private function userCreated(UserCreatedEvent $event): void {
$this->log(
'User created: "%s"',
[
'uid' => $event->getUid()
],
[
'uid',
]
);
}
private function userDeleted(UserDeletedEvent $event): void {
$this->log(
'User deleted: "%s"',
[
'uid' => $event->getUser()->getUID()
],
[
'uid',
]
);
}
private function userChanged(UserChangedEvent $event): void {
switch ($event->getFeature()) {
case 'enabled':
$this->log(
$event->getValue() === true
? 'User enabled: "%s"'
: 'User disabled: "%s"',
['user' => $event->getUser()->getUID()],
[
'user',
]
);
break;
case 'eMailAddress':
$this->log(
'Email address changed for user %s',
['user' => $event->getUser()->getUID()],
[
'user',
]
);
break;
}
}
private function passwordUpdated(PasswordUpdatedEvent $event): void {
if ($event->getUser()->getBackendClassName() === 'Database') {
$this->log(
'Password of user "%s" has been changed',
[
'user' => $event->getUser()->getUID(),
],
[
'user',
]
);
}
}
/**
* Log assignments of users (typically user backends)
*/
private function userIdAssigned(UserIdAssignedEvent $event): void {
$this->log(
'UserID assigned: "%s"',
[ 'uid' => $event->getUserId() ],
[ 'uid' ]
);
}
/**
* Log unassignments of users (typically user backends, no data removed)
*/
private function userIdUnassigned(UserIdUnassignedEvent $event): void {
$this->log(
'UserID unassigned: "%s"',
[ 'uid' => $event->getUserId() ],
[ 'uid' ]
);
}
}

Some files were not shown because too many files have changed in this diff Show More