When using S3 storage, we sometimes have open_basedir errors due to aws-sdk-php trying to read ~/.aws/config which is out of open_basedir restrictions.
Christoph Wurst already added csm=false config in #21406 but it wasn't enough, we also need to set use_arn_region=false, added in this commit.
Signed-off-by: Florent <florent@coppint.com>
Internally it is valid to provide multiple values for a property as
plain string. An exampe is given in the PhpDoc of
AddressBookImpl::search().
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
In some cases (for example you never send data to the lookup server)
there is no need for this job to even try.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
- saves an LDAP requests in these cases
- prevents a Protocol Error logged on < 7.3 API (for backports)
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
It was disabled by default for ages. And often resulted in unwanted
behavior. If admins want trusted servers they just have to do it
manually.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
15) Warning
The data provider specified for OCA\Files_Trashbin\Tests\ExpirationTest::testGetMaxAgeAsTimestamp is invalid.
PHPUnit\Util\Exception: Method timestampTestData does not exist
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: Jan C. Borchardt <hey@jancborchardt.net>
Signed-off-by: npmbuildbot-nextcloud[bot] <npmbuildbot-nextcloud[bot]@users.noreply.github.com>
It is unreasonable to expect that one of these fields would be longer
than 2048 characters. Whilst some have definitely lower limits (such as
for phone numbers or domain names), a upper bound as sanity check makes
sense.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
The problem is that if a developer creates a structural error in their migration file,
they will already be marked as executed and an not be rerun.
Signed-off-by: Joas Schilling <coding@schilljs.com>
Added additional capability in the provisioning API to signal whether
the federation scope values can be used.
This is based on whether the lookup server upload is enabled or not.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Include version number in capability
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
When avatar scope is private, the PlaceholderAvatar is used to deliver a
placeholder avatar based on the user's initials.
This was implemented as a separate class for now to avoid messing with
the existing UserAvatar implementation and its generated vs
non-generated logic.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
The fields for phone number, address, website and twitter are now
editable regardless whether federated sharing and the lookup server
are enabled or not.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Use new scope values in settings page.
Adjust all consumers to use the new constants.
Map old scope values to new ones in account property getter.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Now not all fields have the "v2-private" option in place.
Fix dropdown issue when a scope was stored that is not listed after
disabling the lookup server.
Whenever the lookup server upload is disabled, the scope menu is now
displayed where it makes sense to allow switching between the two private
scopes.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Added new v2-private account manager scope that restricts the scope
further by excluding public link access.
Avatars with v2-private account scope are now showing the guest avatar
instead of the real avatar.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
The reason that `filecache.path` hasn't had an index added is the mysql limitation of ~1kb for indexeded fields,
which is to small for the `path`, however mysql supports indexing only the first N bytes of a column instead of the entire column,
allowing us to add an index even if the column is to long.
Because the index doesn't cover the entire column it can't be used in all situations where a normal index would be used, but it does cover the `path like 'folder/path/%'` queries that are used in various places.
Sqlite and Postgresql don't support prefix indexes, but they also don't have the 1kb limit and DBAL handles the differences in index creation.
Signed-off-by: Robin Appelman <robin@icewind.nl>
When an contact is moved to another address book, the contact is copied to
the second address book.
During copying, the birthday event is created - but it gets the same UID
as the contact's birthday event in the first address book.
To prevent the "Calendar object with uid already exists" error that followed,
we need to delete the old entry before the new one is created.
Resolves: https://github.com/nextcloud/server/issues/20492
Signed-off-by: Christian Weiske <cweiske@cweiske.de>
Remove "ocs-provider" test folder reference as it doesn't exist any
more.
Added back "Test" test subdir and fixed the tests inside.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
It seems Phpunit < 9 was case insensitive.
Fixed the phpunit config to target the correct name for the "Core" test
directory.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
The command is meant to be used when the fonts used to render texts
("core/fonts/NotoSans-Regular.ttf" and "core/fonts/NotoSans-Bold.ttf")
are changed (for example, to add support for other scripts). The avatar
and text file previews will be removed, so they will be generated again
with the updated font when needed.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Generated avatars as well as text file previews are rendered using the
"core/fonts/NotoSans-Regular.ttf" font. The file was the standard hinted
"NotoSans-Regular.ttf" file from https://www.google.com/get/noto/.
However that file does not cover some non LGC (Latin, Greek, Cyrillic)
scripts, like Arabic, Devanagari or Hebrew, to name a few.
Markdown file previews also use "core/fonts/NotoSans-Bold.ttf", which is
in the same situation as the regular one.
Due to limitations in the TTF format it is not possible to provide a
single file for each style that includes all Noto fonts. However, it is
possible to add more scripts to the standard "NotoSans-Regular.ttf" and
"NotoSans-Bold.ttf" files (although no CJK (Chinese, Japanese, Korean)
glyph can be included due to the aforementioned limitations).
This commit replaces the standard files with an extended version created
using the Noto Tools. The build script (as well as a patch for the Noto
Tools) is also included for reference and to be able to update the font
files in the future if needed.
Due to the additional scripts added the font files are now much larger,
although this does not seem to increase the time spent rendering LGC
scripts.
Note that the file for the bold style still contains less scripts than
the regular one, as not all scripts supported by Noto have a bold
weight.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
some smb servers are very insistent in reporting that the root of the share is readonly, even if it isn't.
This works around the problem by adding a hidden option to overwrite the permissions of the root of the share.
This can be enabled using
```bash
occ files_external:config <mount id> root_force_writable true
```
where you can find your mount id using
```bash
occ files_external:list
```
Signed-off-by: Robin Appelman <robin@icewind.nl>
Updating a user or group share now uses the correct method for the
validation of the expiration date. Instead of using the one from links
it uses the one for internal shares.
To avoid future confusion, the method "validateExpirationDate" has been
renamed to "validateExpirationDateLink".
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
The remote URL of a share is always stored in the database with a
trailing slash. However, when a cloud ID is generated trailing slashes
are removed.
The ID of a remote storage is generated from the cloud ID, but the
"cleanup-remote-storage" command directly used the remote URL stored in
the database. Due to this, even if the remote storage was valid, its ID
did not match the ID of the remote share generated by the command and
ended being removed.
Now the command generates the ID of remote shares using the cloud ID
instead, just like done by the remote storage, so there is no longer a
mismatch.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
- allows to delete data of existing LDAP users, which otherwise is safe
guarded
- ensures that the user is not being deleted on LDAP through a plugin
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
streams get closed automatically when dropped, and in some cases the stream seems to be already closed by the S3 library, in which case trying to close it again will raise an error
Signed-off-by: Robin Appelman <robin@icewind.nl>
Because the exceptions don't always contain a useful message for the UI,
but also because in some cases we need to find out what went wrong.
In some setups, a ShareNotFoundException might happen during creation
when we try to re-read the just written share. Usually related to Galera
Cluster where node syncing wait is not enabled.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
* Some implementations might check for different things
* IT will not change how the current ones work
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
even thought we currently have no proper way of limiting the search itself, we can at least limit the construction of the result objects.
this saves about 40% of the time spend in the search request in my local testing
Signed-off-by: Robin Appelman <robin@icewind.nl>
Instead of always clearing the password in the share model, now only do
it when it was actually saved.
Fixes an issue where saving another field would clear the password too
early and prevent it to be saved when the dropdown closed.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Signed-off-by: npmbuildbot-nextcloud[bot] <npmbuildbot-nextcloud[bot]@users.noreply.github.com>
Remote shares currently do not support expiration date.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Signed-off-by: npmbuildbot-nextcloud[bot] <npmbuildbot-nextcloud[bot]@users.noreply.github.com>
The input element is always hidden, so the check always ended falling
back to the label. Moreover, the label is the element that the user
interacts with, so it must be the one used.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Although if the element could not be found an exception would be thrown
and the test aborted if an element is in the DOM but hidden it would be
found and the test would pass.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Instead of looking for the bundle button and then checking its value now
the expected value is included in the locator and the button is checked
similarly to other elements.
No "Disable all" locator was added as it was not currently needed
anywhere.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
"Actor::find" is a more robust way to look for elements, as it handles
some exceptions that may be thrown. Therefore, even if the elements are
not actually used and it is only checked whether they exist or not using
the actor is the preferred way when possible (and it also makes it
consistent with the rest of the acceptance tests).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Adding some missing asserts showed that the "delete user" acceptance
test was silently failing, as the deletion was not being confirmed in
the dialog and thus the user was not being deleted.
The dialog button contains a single quote ("user0's"), so the XPath
expression had to be adjusted (it seems that it is not possible to
escape a single quote in a string enclosed in single quotes in XPath
1.0).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
WaitFor::element... calls only perform the waiting and return whether
the condition succeeded or not, but that result needs to be explicitly
checked to prevent further steps from being executed if the wait failed.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
As no timeout was specified the elements were tried to be found just
once. This caused the steps to fail if the elements did not appear yet
in the page when they were tried to be found.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The owner field is nowadays always empty when adding a federated share
using "Add to your Nextcloud", so don't check for it.
Fixes an issue where "Add to your Nextcloud" doesn't add anything.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Some NC installations may use a LDAP UUID for the username. If that
is the case, then the tooltip for who a file/folder was shared by may say something
like `Shared with Steve McQueen (smqueen@yada.com) by FKDJ39-38D794JG-4398GJODF9H3G-4534`.
This commit changes the value showed for the owner to the full display name.
Signed-off-by: npmbuildbot-nextcloud[bot] <npmbuildbot-nextcloud[bot]@users.noreply.github.com>
`apple-touch-icon` expects squared corners; only `apple-touch-icon-precomposed` expects pre-rounded corners. iOS and browsers apply their own corner radii to `apple-touch-icon`.
Signed-off-by: Elsie Hupp <github@elsiehupp.com>
Else you can end up that you renewed your password (LDAP for example).
But they still don't work because you did not use them before you logged
in.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Fixes an issue where the dropdown list was not visible on small screens
as it would appear above the field and be hidden behind the container
border.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
In case the server returns more results than expected by the limit, it
is now still interpreted as there being more results to query.
This situation can happen when there are multiple user backends in
place.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Only register the tag info view once as it's stored in a singleton.
This fixes an issue where the tag info view did not get rendered after
swiching between different file views.
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
about:Configuration, webserver/proxy or performance issues and other questions
about:I have a question …
- name:💼 Nextcloud Enterprise
url:https://portal.nextcloud.com/
about:If you are a Nextcloud Enterprise customer, or need Professional support, so it can be resolved directly by our dedicated engineers more quickly
about:If you are a customer and are using Nextcloud Enterprise, please submit your issue directly in the Nextcloud Portal so it can be resolved by our dedicated engineers more quickly.
"Enable clouds to communicate with each other and exchange data":"Karşılıklı iletişim kurmak için bulut hizmetlerini kullanın",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Birleşik Bulut API, farklı Nextcloud kopyalarının birbiri ile iletişim kurarak karşılıklı veri aktarmasını sağlar."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Bulut Birleşim API farklı Nextcloud kopyalarının birbiri ile iletişim kurarak karşılıklı veri aktarmasını sağlar."
"Enable clouds to communicate with each other and exchange data":"Karşılıklı iletişim kurmak için bulut hizmetlerini kullanın",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Birleşik Bulut API, farklı Nextcloud kopyalarının birbiri ile iletişim kurarak karşılıklı veri aktarmasını sağlar."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Bulut Birleşim API farklı Nextcloud kopyalarının birbiri ile iletişim kurarak karşılıklı veri aktarmasını sağlar."
@ -28,6 +28,6 @@ A reference to why it was very difficult to actually find good background pictur
- We need to have a good balance of different motives, e.g. not too many landscape pics.
- Same for a good balance of different colors.
- The photo needs to work as a background. Photos with objects focused in the middle don’t really work as they will be overlapped by the widgets anyway.
- Especially the top part cannot have too much differing contrast, as then it’s not possible to see the navigation icons.
- Especially the top part can’t have too much differing contrast, as then it’s not possible to see the navigation icons.
- We serve the pictures at 4k resolution and most of the selected images are also available in 6k or higher so it is future-proof.
- For the search of course we had to limit to CC0, CC By and CC By-Sa. Only CC0 would have been practically impossible cause there’s just not so many good ones which fit.
"Get more widgets from the app store":"احصل على ودجات من متجر التطبيقات",
"Change background image":"تغييرصورة الخلفية",
"Weather service":"خدمة احوال الطقس",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"لخصوصيتك، يتم استدعاء بيانات احوال الطقس عبر خادم نكست كلاود الخاص بك نيابه عنك ولذلك خدمة احوال الطقس لا تشارك المعلومات الشخصية.",
@ -26,7 +27,6 @@ OC.L10N.register(
"Default images":"الصور الإفتراضية",
"Plain background":"خلفية سادة",
"Insert from {productName}":"اضف من {productName}",
"Get more widgets from the app store":"احصل على ودجات من متجر التطبيقات",
"Get more widgets from the app store":"احصل على ودجات من متجر التطبيقات",
"Change background image":"تغييرصورة الخلفية",
"Weather service":"خدمة احوال الطقس",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"لخصوصيتك، يتم استدعاء بيانات احوال الطقس عبر خادم نكست كلاود الخاص بك نيابه عنك ولذلك خدمة احوال الطقس لا تشارك المعلومات الشخصية.",
@ -24,7 +25,6 @@
"Default images":"الصور الإفتراضية",
"Plain background":"خلفية سادة",
"Insert from {productName}":"اضف من {productName}",
"Get more widgets from the app store":"احصل على ودجات من متجر التطبيقات",
"Edit widgets":"Редактиране на изпълнимите модули",
"Get more widgets from the app store":"Вземете повече приспособления от app store",
"Change background image":"Промяна на фоновото изображение",
"Weather service":"Метеорологична услуга",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"За вашата поверителност данните за времето се изискват от Nextcloud сървъра ви от ваше име, така че метеорологичната служба не получава лична информация.",
@ -26,7 +27,6 @@ OC.L10N.register(
"Default images":"Изображения по подразбиране",
"Plain background":"Обикновен фон",
"Insert from {productName}":"Вмъкване от {productName}",
"Get more widgets from the app store":"Вземете повече приспособления от app store",
"Edit widgets":"Редактиране на изпълнимите модули",
"Get more widgets from the app store":"Вземете повече приспособления от app store",
"Change background image":"Промяна на фоновото изображение",
"Weather service":"Метеорологична услуга",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"За вашата поверителност данните за времето се изискват от Nextcloud сървъра ви от ваше име, така че метеорологичната служба не получава лична информация.",
@ -24,7 +25,6 @@
"Default images":"Изображения по подразбиране",
"Plain background":"Обикновен фон",
"Insert from {productName}":"Вмъкване от {productName}",
"Get more widgets from the app store":"Вземете повече приспособления от app store",
"Get more widgets from the app store":"Obtenir més ginys de la botiga d'aplicacions",
"Change background image":"Canvia la imatge de fons",
"Weather service":"Servei meteorològic",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Per a la seva privacitat, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
@ -26,7 +27,6 @@ OC.L10N.register(
"Default images":"Imatges predeterminades",
"Plain background":"Fons senzill",
"Insert from {productName}":"Insereix des de {productName}",
"Get more widgets from the app store":"Obtenir més ginys de la botiga d'aplicacions",
"Get more widgets from the app store":"Obtenir més ginys de la botiga d'aplicacions",
"Change background image":"Canvia la imatge de fons",
"Weather service":"Servei meteorològic",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Per a la seva privacitat, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
@ -24,7 +25,6 @@
"Default images":"Imatges predeterminades",
"Plain background":"Fons senzill",
"Insert from {productName}":"Insereix des de {productName}",
"Get more widgets from the app store":"Obtenir més ginys de la botiga d'aplicacions",
"Get more widgets from the App Store" :"Získejte další ovládací prvky z katalogu aplikací",
"Get more widgets from the app store" :"Získejte další ovládací prvky z katalogu aplikací",
"Change background image":"Změnit obrázek na pozadí",
"Weather service":"Služba předpovědi počasí",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Z důvodu ochrany vašeho soukromí, jsou údaje o počasí pro vás vyžádány vámi využívaným Nextcloud serverem, takže služba, poskytující tato data, neobdrží žádné osobní údaje.",
@ -27,7 +27,6 @@ OC.L10N.register(
"Default images":"Výchozí obrázky",
"Plain background":"Holé pozadí",
"Insert from {productName}":"Vložit z {productName}",
"Get more widgets from the app store":"Získejte další ovládací prvky z katalogu aplikací",
"Get more widgets from the App Store" :"Získejte další ovládací prvky z katalogu aplikací",
"Get more widgets from the app store" :"Získejte další ovládací prvky z katalogu aplikací",
"Change background image":"Změnit obrázek na pozadí",
"Weather service":"Služba předpovědi počasí",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Z důvodu ochrany vašeho soukromí, jsou údaje o počasí pro vás vyžádány vámi využívaným Nextcloud serverem, takže služba, poskytující tato data, neobdrží žádné osobní údaje.",
@ -25,7 +25,6 @@
"Default images":"Výchozí obrázky",
"Plain background":"Holé pozadí",
"Insert from {productName}":"Vložit z {productName}",
"Get more widgets from the app store":"Získejte další ovládací prvky z katalogu aplikací",
"Get more widgets from the app store":"Hent flere widgets fra app store",
"Change background image":"Ændre baggrund",
"Weather service":"Vejret",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Af hensyn til dit privatliv, er det din Nextcloud-server der henter vejr-data og udbyderen modtager således ingen oplysninger om dig.",
@ -26,7 +27,6 @@ OC.L10N.register(
"Default images":"Standardbilleder",
"Plain background":"Standard baggrund",
"Insert from {productName}":"Indsæt fra {productName}",
"Get more widgets from the app store":"Hent flere widgets fra app store",
"Get more widgets from the app store":"Hent flere widgets fra app store",
"Change background image":"Ændre baggrund",
"Weather service":"Vejret",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Af hensyn til dit privatliv, er det din Nextcloud-server der henter vejr-data og udbyderen modtager således ingen oplysninger om dig.",
@ -24,7 +25,6 @@
"Default images":"Standardbilleder",
"Plain background":"Standard baggrund",
"Insert from {productName}":"Indsæt fra {productName}",
"Get more widgets from the app store":"Hent flere widgets fra app store",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Zu Deinem Datenschutz werden die Wetterdaten von Deinen Nextcloud-Server für Dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
@ -26,7 +27,6 @@ OC.L10N.register(
"Default images":"Standardbilder",
"Plain background":"Einfacher Hintergrund",
"Insert from {productName}":"Von {productName} einfügen",
"Get more widgets from the app store":"Hole Dir weitere Widgets aus dem App Store",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Zu Deinem Datenschutz werden die Wetterdaten von Deinen Nextcloud-Server für Dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
@ -24,7 +25,6 @@
"Default images":"Standardbilder",
"Plain background":"Einfacher Hintergrund",
"Insert from {productName}":"Von {productName} einfügen",
"Get more widgets from the app store":"Hole Dir weitere Widgets aus dem App Store",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.":"Zu Ihrem Datenschutz werden die Wetterdaten von Ihrem Nextcloud-Server für Sie angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
@ -27,7 +27,6 @@ OC.L10N.register(
"Default images":"Standardbilder",
"Plain background":"Einfacher Hintergrund",
"Insert from {productName}":"Von {productName} einfügen",
"Get more widgets from the app store":"Holen Sie sich weitere Widgets aus dem App Store",
"Good night, {name}":"Gute Nacht {name}",
"Good night":"Gute Nacht",
"Pick from files":"Aus Dateien wählen"
Some files were not shown because too many files have changed in this diff
Show More