aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/l10n/el.js1
-rw-r--r--lib/l10n/el.json1
-rw-r--r--lib/l10n/es.js1
-rw-r--r--lib/l10n/es.json1
-rw-r--r--lib/l10n/fa.js58
-rw-r--r--lib/l10n/fa.json58
-rw-r--r--lib/l10n/lt_LT.js1
-rw-r--r--lib/l10n/lt_LT.json1
-rw-r--r--lib/l10n/sr.js1
-rw-r--r--lib/l10n/sr.json1
-rw-r--r--lib/l10n/tr.js1
-rw-r--r--lib/l10n/tr.json1
-rw-r--r--lib/private/Files/View.php2
-rw-r--r--lib/private/Installer.php19
-rw-r--r--lib/private/Log.php26
-rw-r--r--lib/private/Log/LogDetails.php10
-rw-r--r--lib/private/Security/Hasher.php34
-rw-r--r--lib/private/Server.php3
-rw-r--r--lib/private/Setup.php2
-rw-r--r--lib/public/Log/IDataLogger.php42
22 files changed, 233 insertions, 33 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 5edd4f2e1a3..d66039ae1fd 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -367,6 +367,7 @@ return array(
'OCP\\Lock\\LockedException' => $baseDir . '/lib/public/Lock/LockedException.php',
'OCP\\Lock\\ManuallyLockedException' => $baseDir . '/lib/public/Lock/ManuallyLockedException.php',
'OCP\\Lockdown\\ILockdownManager' => $baseDir . '/lib/public/Lockdown/ILockdownManager.php',
+ 'OCP\\Log\\IDataLogger' => $baseDir . '/lib/public/Log/IDataLogger.php',
'OCP\\Log\\IFileBased' => $baseDir . '/lib/public/Log/IFileBased.php',
'OCP\\Log\\ILogFactory' => $baseDir . '/lib/public/Log/ILogFactory.php',
'OCP\\Log\\IWriter' => $baseDir . '/lib/public/Log/IWriter.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index f81dbd7e16d..0a65eae24bb 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -396,6 +396,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Lock\\LockedException' => __DIR__ . '/../../..' . '/lib/public/Lock/LockedException.php',
'OCP\\Lock\\ManuallyLockedException' => __DIR__ . '/../../..' . '/lib/public/Lock/ManuallyLockedException.php',
'OCP\\Lockdown\\ILockdownManager' => __DIR__ . '/../../..' . '/lib/public/Lockdown/ILockdownManager.php',
+ 'OCP\\Log\\IDataLogger' => __DIR__ . '/../../..' . '/lib/public/Log/IDataLogger.php',
'OCP\\Log\\IFileBased' => __DIR__ . '/../../..' . '/lib/public/Log/IFileBased.php',
'OCP\\Log\\ILogFactory' => __DIR__ . '/../../..' . '/lib/public/Log/ILogFactory.php',
'OCP\\Log\\IWriter' => __DIR__ . '/../../..' . '/lib/public/Log/IWriter.php',
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index 886f94591f4..4aeb3586207 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
+ "MySQL username and/or password not valid" : "Το όνομα χρήστη και/'η ο κωδικός πρόσβασης MySQL δεν είναι σωστά",
"You need to enter details of an existing account." : "Χρειάζεται να εισάγετε λεπτομέρειες από υπάρχον λογαριασμό.",
"Oracle connection could not be established" : "Αδυναμία σύνδεσης Oracle",
"Oracle username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle",
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index 153ce45083e..1eada0d5f70 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -87,6 +87,7 @@
"%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
+ "MySQL username and/or password not valid" : "Το όνομα χρήστη και/'η ο κωδικός πρόσβασης MySQL δεν είναι σωστά",
"You need to enter details of an existing account." : "Χρειάζεται να εισάγετε λεπτομέρειες από υπάρχον λογαριασμό.",
"Oracle connection could not be established" : "Αδυναμία σύνδεσης Oracle",
"Oracle username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle",
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 5f8c2a57166..b0f413979ab 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -17,6 +17,7 @@ OC.L10N.register(
"Education Edition" : "Edición Educación",
"Enterprise bundle" : "Conjunto para empresas",
"Groupware bundle" : "Conjunto de groupware",
+ "Hub bundle" : "Conjunto de Hub",
"Social sharing bundle" : "Conjunto para compartir en redes",
"PHP %s or higher is required." : "Se requiere PHP %s o superior.",
"PHP with a version lower than %s is required." : "Se necesita una versión de PHP inferior a %s",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index d41ed35d46a..5addb89b11b 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -15,6 +15,7 @@
"Education Edition" : "Edición Educación",
"Enterprise bundle" : "Conjunto para empresas",
"Groupware bundle" : "Conjunto de groupware",
+ "Hub bundle" : "Conjunto de Hub",
"Social sharing bundle" : "Conjunto para compartir en redes",
"PHP %s or higher is required." : "Se requiere PHP %s o superior.",
"PHP with a version lower than %s is required." : "Se necesita una versión de PHP inferior a %s",
diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js
index 60904758551..28e373212c0 100644
--- a/lib/l10n/fa.js
+++ b/lib/l10n/fa.js
@@ -178,23 +178,79 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token منقضی شده است. لطفا دوباره صفحه را بارگذاری نمایید.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "هیچ درایور پایگاه داده (sqlite ، mysql یا postgresql) نصب نشده است.",
"Cannot write into \"config\" directory" : "امکان نوشتن درون شاخه‌ی \"config\" وجود ندارد",
+ "Cannot write into \"apps\" directory" : "نمی توان در فهرست \"برنامه ها\" نوشت",
"This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "این امر معمولاً با دسترسی به وب سرور دسترسی به فهرست برنامه ها یا غیرفعال کردن برنامه در پرونده پیکربندی قابل رفع است. دیدن%s",
"Cannot create \"data\" directory" : "دایرکتوری \"داده\" ایجاد نمی شود",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "این امر معمولاً با دسترسی به نوشتن وب سرور به فهرست اصلی قابل حل است. دیدن%s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "معمولاً مجوزها می توانند با دسترسی به نوشتن وب سرور به فهرست اصلی ، ثابت شوند. دیدن%s",
+ "Setting locale to %s failed" : "تنظیم محلی در %sانجام نشد",
+ "Please install one of these locales on your system and restart your webserver." : "لطفاً یکی از این لوکال ها را روی سیستم خود نصب کرده و شبکه سرور خود را مجدداً راه اندازی کنید.",
"Please ask your server administrator to install the module." : "لطفا از مدیر سیستم بخواهید تا ماژول را نصب کند.",
"PHP module %s not installed." : "ماژول PHP %s نصب نشده است.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "تنظیمات PHP%s تنظیم نشده است%s",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "تنظیم این تنظیمات در php.ini باعث می شود Nextcloud دوباره اجرا شود",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload به جای %sمقدار مورد انتظار تنظیم شده است",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "برای رفع این<code> مشکل ، mbstring.func_overload </code>را <code>0 </code>در php.ini خود تنظیم کنید",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 2.7.0 حداقل مورد نیاز است. در حال حاضر %sنصب شده است",
+ "To fix this issue update your libxml2 version and restart your web server." : "برای رفع این مشکل نسخه libxml2 خود را به روز کنید و سرور وب خود را مجدداً راه اندازی کنید.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ظاهراً برای خنثی کردن بلوک های اسناد درون خطی تنظیم شده است. این کار چندین برنامه اصلی را غیرقابل دسترسی خواهد کرد.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "این احتمالاً توسط حافظه پنهان / کش مانند Zend OPcache یا eAccelerator ایجاد شده است.",
+ "PHP modules have been installed, but they are still listed as missing?" : "ماژول های پی اچ پی نصب شده اند ، اما هنوز هم به عنوان مفقود شده ذکر شده اند؟",
+ "Please ask your server administrator to restart the web server." : "لطفاً از سرور سرور خود بخواهید که وب سرور را مجدداً راه اندازی کند.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است",
"Please upgrade your database version" : "لطفا نسخه‌ی پایگاه‌داده‌ی خود را بروز کنید",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "لطفاً مجوزها را به 0770 تغییر دهید تا فهرست توسط سایر کاربران فهرست نشود.",
+ "Your data directory is readable by other users" : "فهرست داده های شما توسط سایر کاربران قابل خواندن است",
+ "Your data directory must be an absolute path" : "فهرست داده های شما باید مسیری مطلق باشد",
+ "Check the value of \"datadirectory\" in your configuration" : "مقدار \"datadirectory\" را در پیکربندی خود بررسی کنید",
+ "Your data directory is invalid" : "فهرست داده شما نامعتبر است",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "اطمینان حاصل کنید که فایلی به نام \".ocdata\" در ریشه دایرکتوری داده وجود دارد.",
+ "Action \"%s\" not supported or implemented." : "عملی%s پشتیبانی یا اجرا نشده است.",
+ "Authentication failed, wrong token or provider ID given" : "تأیید اعتبار انجام نشد ، نشانه اشتباه یا شناسه ارائه دهنده داده شد",
+ "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "پارامترهای موجود برای تکمیل درخواست. پارامترهای موجود نیست%s",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "شناسه%1$s قبلاً توسط ارائه دهنده فدراسیون ابر استفاده شده است%2$s",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "ارائه دهنده فدراسیون Cloud با شناسه:%s وجود ندارد.",
+ "Could not obtain lock type %d on \"%s\"." : "نمی توان نوع%d قفل را به دست آورد%s",
+ "Storage unauthorized. %s" : "ذخیره سازی غیر مجاز.%s",
+ "Storage incomplete configuration. %s" : "پیکربندی ناقص ذخیره سازی.%s<br>",
+ "Storage connection error. %s" : "خطای اتصال ذخیره سازی%s",
"Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
+ "Storage connection timeout. %s" : "مدت زمان اتصال ذخیره سازی%s",
"Create" : "ایجاد کردن",
"Change" : "تغییر",
"Delete" : "حذف",
"Share" : "هم‌رسانی",
+ "Overview" : "بررسی اجمالی",
+ "Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
"Security" : "امنیت",
+ "Groupware" : "گروه های نرم افزاری",
"Personal info" : "مشخصات شخصی",
+ "Mobile & desktop" : "موبایل و دسک تاپ",
"Unlimited" : "نامحدود",
"Verifying" : "تایید شدن",
"Verifying …" : "در حال تایید شدن...",
- "Verify" : "تأیید کنید"
+ "Verify" : "تأیید کنید",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "اشتراک گذاری%s انجام نشد ، زیرا باقیمانده سهام را از نوع مجاز نمی کند%i",
+ "Sharing %s failed, because the file does not exist" : "اشتراک گذاری%s انجام نشد ، زیرا پرونده وجود ندارد",
+ "Sharing %s failed, because you can not share with yourself" : "اشتراک گذاری%s انجام نشد ، زیرا شما نمی توانید با خود به اشتراک بگذارید",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد زیرا کاربر %2$sوجود ندارد",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "اشتراک گذاری%1$s انجام نشد ، زیرا کاربر%2$s عضو هیچ گروهی نیست%3$s که عضو آن باشد",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "اشتراک گذاری%1$s انجام نشد ، زیرا این مورد قبلاً با آنها به اشتراک%2$s گذاشته شده است",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "اشتراک گذاری %1$sانجام نشد ، زیرا این مورد قبلاً با کاربر%2$s به اشتراک گذاشته شده است",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد ، زیرا این گروه%2$s وجود ندارد",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "اشتراک گذاری%1$s ناموفق %2$sبود ، زیرا عضو%3$s این گروه نیست",
+ "You need to provide a password to create a public link, only protected links are allowed" : "برای ایجاد یک لینک عمومی باید یک رمزعبور تهیه کنید ، فقط پیوندهای محافظت شده مجاز هستند",
+ "Sharing %s failed, because sharing with links is not allowed" : "اشتراک گذاری%s انجام نشد ، زیرا اشتراک گذاری با پیوندها مجاز نیست",
+ "Not allowed to create a federated share with the same user" : "مجاز به ایجاد یک اشتراک فدرال با همان کاربر نیست",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "اشتراک گذاری%1$s انجام نشد ، یافت نشد%2$s ، شاید سرور در حال حاضر غیرقابل دسترسی باشد.",
+ "Share type %1$s is not valid for %2$s" : "%2$sنوع اشتراک%1$s برای آن معتبر نیست",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "تاریخ انقضا امکان پذیر نیست. سهام نمی توانند دیرتر از بعد از%s اشتراک آنها منقضی شوند",
+ "Cannot set expiration date. Expiration date is in the past" : "تاریخ انقضا امکان پذیر نیست. تاریخ انقضا در گذشته است",
+ "Sharing failed, because the user %s is the original sharer" : "اشتراک گذاری انجام نشد زیرا کاربر%s اصلی ترین اشتراک است",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%2$sاشتراک گذاری%1$s ناموفق بود ، زیرا مجوزها از مجوزهای مجاز به آن فراتر می روند",
+ "Sharing %s failed, because resharing is not allowed" : "اشتراک گذاری %sانجام نشد ، زیرا اشتراک مجدد مجاز نیست",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "اشتراک گذاری%1$s انجام نشد ، زیرا قسمت پشتیبان اشتراک گذاری نتوانست%2$s منبع آن را پیدا کند",
+ "Sharing %s failed, because the file could not be found in the file cache" : "اشتراک گذاری %sانجام نشد ، زیرا پرونده در حافظه نهان فایل یافت نمی شود"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json
index 17a81e0a666..a99f59575c4 100644
--- a/lib/l10n/fa.json
+++ b/lib/l10n/fa.json
@@ -176,23 +176,79 @@
"Token expired. Please reload page." : "Token منقضی شده است. لطفا دوباره صفحه را بارگذاری نمایید.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "هیچ درایور پایگاه داده (sqlite ، mysql یا postgresql) نصب نشده است.",
"Cannot write into \"config\" directory" : "امکان نوشتن درون شاخه‌ی \"config\" وجود ندارد",
+ "Cannot write into \"apps\" directory" : "نمی توان در فهرست \"برنامه ها\" نوشت",
"This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "این امر معمولاً با دسترسی به وب سرور دسترسی به فهرست برنامه ها یا غیرفعال کردن برنامه در پرونده پیکربندی قابل رفع است. دیدن%s",
"Cannot create \"data\" directory" : "دایرکتوری \"داده\" ایجاد نمی شود",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "این امر معمولاً با دسترسی به نوشتن وب سرور به فهرست اصلی قابل حل است. دیدن%s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "معمولاً مجوزها می توانند با دسترسی به نوشتن وب سرور به فهرست اصلی ، ثابت شوند. دیدن%s",
+ "Setting locale to %s failed" : "تنظیم محلی در %sانجام نشد",
+ "Please install one of these locales on your system and restart your webserver." : "لطفاً یکی از این لوکال ها را روی سیستم خود نصب کرده و شبکه سرور خود را مجدداً راه اندازی کنید.",
"Please ask your server administrator to install the module." : "لطفا از مدیر سیستم بخواهید تا ماژول را نصب کند.",
"PHP module %s not installed." : "ماژول PHP %s نصب نشده است.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "تنظیمات PHP%s تنظیم نشده است%s",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "تنظیم این تنظیمات در php.ini باعث می شود Nextcloud دوباره اجرا شود",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload به جای %sمقدار مورد انتظار تنظیم شده است",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "برای رفع این<code> مشکل ، mbstring.func_overload </code>را <code>0 </code>در php.ini خود تنظیم کنید",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 2.7.0 حداقل مورد نیاز است. در حال حاضر %sنصب شده است",
+ "To fix this issue update your libxml2 version and restart your web server." : "برای رفع این مشکل نسخه libxml2 خود را به روز کنید و سرور وب خود را مجدداً راه اندازی کنید.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ظاهراً برای خنثی کردن بلوک های اسناد درون خطی تنظیم شده است. این کار چندین برنامه اصلی را غیرقابل دسترسی خواهد کرد.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "این احتمالاً توسط حافظه پنهان / کش مانند Zend OPcache یا eAccelerator ایجاد شده است.",
+ "PHP modules have been installed, but they are still listed as missing?" : "ماژول های پی اچ پی نصب شده اند ، اما هنوز هم به عنوان مفقود شده ذکر شده اند؟",
+ "Please ask your server administrator to restart the web server." : "لطفاً از سرور سرور خود بخواهید که وب سرور را مجدداً راه اندازی کند.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است",
"Please upgrade your database version" : "لطفا نسخه‌ی پایگاه‌داده‌ی خود را بروز کنید",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "لطفاً مجوزها را به 0770 تغییر دهید تا فهرست توسط سایر کاربران فهرست نشود.",
+ "Your data directory is readable by other users" : "فهرست داده های شما توسط سایر کاربران قابل خواندن است",
+ "Your data directory must be an absolute path" : "فهرست داده های شما باید مسیری مطلق باشد",
+ "Check the value of \"datadirectory\" in your configuration" : "مقدار \"datadirectory\" را در پیکربندی خود بررسی کنید",
+ "Your data directory is invalid" : "فهرست داده شما نامعتبر است",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "اطمینان حاصل کنید که فایلی به نام \".ocdata\" در ریشه دایرکتوری داده وجود دارد.",
+ "Action \"%s\" not supported or implemented." : "عملی%s پشتیبانی یا اجرا نشده است.",
+ "Authentication failed, wrong token or provider ID given" : "تأیید اعتبار انجام نشد ، نشانه اشتباه یا شناسه ارائه دهنده داده شد",
+ "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "پارامترهای موجود برای تکمیل درخواست. پارامترهای موجود نیست%s",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "شناسه%1$s قبلاً توسط ارائه دهنده فدراسیون ابر استفاده شده است%2$s",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "ارائه دهنده فدراسیون Cloud با شناسه:%s وجود ندارد.",
+ "Could not obtain lock type %d on \"%s\"." : "نمی توان نوع%d قفل را به دست آورد%s",
+ "Storage unauthorized. %s" : "ذخیره سازی غیر مجاز.%s",
+ "Storage incomplete configuration. %s" : "پیکربندی ناقص ذخیره سازی.%s<br>",
+ "Storage connection error. %s" : "خطای اتصال ذخیره سازی%s",
"Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
+ "Storage connection timeout. %s" : "مدت زمان اتصال ذخیره سازی%s",
"Create" : "ایجاد کردن",
"Change" : "تغییر",
"Delete" : "حذف",
"Share" : "هم‌رسانی",
+ "Overview" : "بررسی اجمالی",
+ "Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
"Security" : "امنیت",
+ "Groupware" : "گروه های نرم افزاری",
"Personal info" : "مشخصات شخصی",
+ "Mobile & desktop" : "موبایل و دسک تاپ",
"Unlimited" : "نامحدود",
"Verifying" : "تایید شدن",
"Verifying …" : "در حال تایید شدن...",
- "Verify" : "تأیید کنید"
+ "Verify" : "تأیید کنید",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "اشتراک گذاری%s انجام نشد ، زیرا باقیمانده سهام را از نوع مجاز نمی کند%i",
+ "Sharing %s failed, because the file does not exist" : "اشتراک گذاری%s انجام نشد ، زیرا پرونده وجود ندارد",
+ "Sharing %s failed, because you can not share with yourself" : "اشتراک گذاری%s انجام نشد ، زیرا شما نمی توانید با خود به اشتراک بگذارید",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد زیرا کاربر %2$sوجود ندارد",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "اشتراک گذاری%1$s انجام نشد ، زیرا کاربر%2$s عضو هیچ گروهی نیست%3$s که عضو آن باشد",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "اشتراک گذاری%1$s انجام نشد ، زیرا این مورد قبلاً با آنها به اشتراک%2$s گذاشته شده است",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "اشتراک گذاری %1$sانجام نشد ، زیرا این مورد قبلاً با کاربر%2$s به اشتراک گذاشته شده است",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد ، زیرا این گروه%2$s وجود ندارد",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "اشتراک گذاری%1$s ناموفق %2$sبود ، زیرا عضو%3$s این گروه نیست",
+ "You need to provide a password to create a public link, only protected links are allowed" : "برای ایجاد یک لینک عمومی باید یک رمزعبور تهیه کنید ، فقط پیوندهای محافظت شده مجاز هستند",
+ "Sharing %s failed, because sharing with links is not allowed" : "اشتراک گذاری%s انجام نشد ، زیرا اشتراک گذاری با پیوندها مجاز نیست",
+ "Not allowed to create a federated share with the same user" : "مجاز به ایجاد یک اشتراک فدرال با همان کاربر نیست",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "اشتراک گذاری%1$s انجام نشد ، یافت نشد%2$s ، شاید سرور در حال حاضر غیرقابل دسترسی باشد.",
+ "Share type %1$s is not valid for %2$s" : "%2$sنوع اشتراک%1$s برای آن معتبر نیست",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "تاریخ انقضا امکان پذیر نیست. سهام نمی توانند دیرتر از بعد از%s اشتراک آنها منقضی شوند",
+ "Cannot set expiration date. Expiration date is in the past" : "تاریخ انقضا امکان پذیر نیست. تاریخ انقضا در گذشته است",
+ "Sharing failed, because the user %s is the original sharer" : "اشتراک گذاری انجام نشد زیرا کاربر%s اصلی ترین اشتراک است",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%2$sاشتراک گذاری%1$s ناموفق بود ، زیرا مجوزها از مجوزهای مجاز به آن فراتر می روند",
+ "Sharing %s failed, because resharing is not allowed" : "اشتراک گذاری %sانجام نشد ، زیرا اشتراک مجدد مجاز نیست",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "اشتراک گذاری%1$s انجام نشد ، زیرا قسمت پشتیبان اشتراک گذاری نتوانست%2$s منبع آن را پیدا کند",
+ "Sharing %s failed, because the file could not be found in the file cache" : "اشتراک گذاری %sانجام نشد ، زیرا پرونده در حافظه نهان فایل یافت نمی شود"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index afab06e0856..76b9cd71950 100644
--- a/lib/l10n/lt_LT.js
+++ b/lib/l10n/lt_LT.js
@@ -75,6 +75,7 @@ OC.L10N.register(
"%s enter the database username." : "%s įrašykite duomenų bazės naudotojo vardą.",
"%s enter the database name." : "%s įrašykite duomenų bazės pavadinimą.",
"%s you may not use dots in the database name" : "%s negalite naudoti taškų duombazės pavadinime",
+ "MySQL username and/or password not valid" : "Neteisingas MySQL naudotojo vardas ir/arba slaptažodis",
"You need to enter details of an existing account." : "Jūs turite suvesti egzistuojančios paskyros duomenis.",
"Oracle connection could not be established" : "Nepavyko užmegzti Oracle ryšio",
"Oracle username and/or password not valid" : "Neteisingas Oracle naudotojo vardas ir/arba slaptažodis",
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index 4876a659c06..2bc92932213 100644
--- a/lib/l10n/lt_LT.json
+++ b/lib/l10n/lt_LT.json
@@ -73,6 +73,7 @@
"%s enter the database username." : "%s įrašykite duomenų bazės naudotojo vardą.",
"%s enter the database name." : "%s įrašykite duomenų bazės pavadinimą.",
"%s you may not use dots in the database name" : "%s negalite naudoti taškų duombazės pavadinime",
+ "MySQL username and/or password not valid" : "Neteisingas MySQL naudotojo vardas ir/arba slaptažodis",
"You need to enter details of an existing account." : "Jūs turite suvesti egzistuojančios paskyros duomenis.",
"Oracle connection could not be established" : "Nepavyko užmegzti Oracle ryšio",
"Oracle username and/or password not valid" : "Neteisingas Oracle naudotojo vardas ir/arba slaptažodis",
diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js
index fb64e8447d1..2e62198133a 100644
--- a/lib/l10n/sr.js
+++ b/lib/l10n/sr.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"%s enter the database username." : "%s унеси корисничко име базе података.",
"%s enter the database name." : "%s унеси име базе података.",
"%s you may not use dots in the database name" : "%s не можете користити тачке у имену базе података",
+ "MySQL username and/or password not valid" : "MySQL корисничко име и/или лозинка нису исправни",
"You need to enter details of an existing account." : "Потребно је да унесете детаље постојећег налога.",
"Oracle connection could not be established" : "Веза са базом података Oracle не може бити успостављена",
"Oracle username and/or password not valid" : "Oracle корисничко име и/или лозинка нису исправни",
diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json
index 8b50223bedb..d139e0b99b8 100644
--- a/lib/l10n/sr.json
+++ b/lib/l10n/sr.json
@@ -87,6 +87,7 @@
"%s enter the database username." : "%s унеси корисничко име базе података.",
"%s enter the database name." : "%s унеси име базе података.",
"%s you may not use dots in the database name" : "%s не можете користити тачке у имену базе података",
+ "MySQL username and/or password not valid" : "MySQL корисничко име и/или лозинка нису исправни",
"You need to enter details of an existing account." : "Потребно је да унесете детаље постојећег налога.",
"Oracle connection could not be established" : "Веза са базом података Oracle не може бити успостављена",
"Oracle username and/or password not valid" : "Oracle корисничко име и/или лозинка нису исправни",
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index ff38a964ffe..bc79c992929 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"%s enter the database username." : "%s veritabanı kullanıcı adını yazın.",
"%s enter the database name." : "%s veritabanı adını yazın.",
"%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz",
+ "MySQL username and/or password not valid" : "MySQL kullanıcı adı ya da parolası geçersiz",
"You need to enter details of an existing account." : "Var olan bir hesabın bilgilerini yazmalısınız.",
"Oracle connection could not be established" : "Oracle bağlantısı kurulamadı",
"Oracle username and/or password not valid" : "Oracle kullanıcı adı ya da parolası geçersiz",
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 501d17df3a9..496c2070b0c 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -87,6 +87,7 @@
"%s enter the database username." : "%s veritabanı kullanıcı adını yazın.",
"%s enter the database name." : "%s veritabanı adını yazın.",
"%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz",
+ "MySQL username and/or password not valid" : "MySQL kullanıcı adı ya da parolası geçersiz",
"You need to enter details of an existing account." : "Var olan bir hesabın bilgilerini yazmalısınız.",
"Oracle connection could not be established" : "Oracle bağlantısı kurulamadı",
"Oracle username and/or password not valid" : "Oracle kullanıcı adı ya da parolası geçersiz",
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 9151a5130a1..2c01c112ad4 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -1392,7 +1392,7 @@ class View {
}
$ownerId = $storage->getOwner($internalPath);
$owner = null;
- if ($ownerId !== null) {
+ if ($ownerId !== null && $ownerId !== false) {
// ownerId might be null if files are accessed with an access token without file system access
$owner = $this->getUserObjectForOwner($ownerId);
}
diff --git a/lib/private/Installer.php b/lib/private/Installer.php
index 790bec0ddd5..b3919f22d03 100644
--- a/lib/private/Installer.php
+++ b/lib/private/Installer.php
@@ -70,6 +70,8 @@ class Installer {
private $apps = null;
/** @var bool|null - for caching the result of the ready status */
private $isInstanceReadyForUpdates = null;
+ /** @var bool */
+ private $isCLI;
/**
* @param AppFetcher $appFetcher
@@ -78,16 +80,20 @@ class Installer {
* @param ILogger $logger
* @param IConfig $config
*/
- public function __construct(AppFetcher $appFetcher,
- IClientService $clientService,
- ITempManager $tempManager,
- ILogger $logger,
- IConfig $config) {
+ public function __construct(
+ AppFetcher $appFetcher,
+ IClientService $clientService,
+ ITempManager $tempManager,
+ ILogger $logger,
+ IConfig $config,
+ bool $isCLI
+ ) {
$this->appFetcher = $appFetcher;
$this->clientService = $clientService;
$this->tempManager = $tempManager;
$this->logger = $logger;
$this->config = $config;
+ $this->isCLI = $isCLI;
}
/**
@@ -270,8 +276,9 @@ class Installer {
// Download the release
$tempFile = $this->tempManager->getTemporaryFile('.tar.gz');
+ $timeout = $this->isCLI ? 0 : 120;
$client = $this->clientService->newClient();
- $client->get($app['releases'][0]['download'], ['save_to' => $tempFile, 'timeout' => 120]);
+ $client->get($app['releases'][0]['download'], ['save_to' => $tempFile, 'timeout' => $timeout]);
// Check if the signature actually matches the downloaded content
$certificate = openssl_get_publickey($app['certificate']);
diff --git a/lib/private/Log.php b/lib/private/Log.php
index 916d557003f..d288e724179 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -36,6 +36,7 @@ declare(strict_types=1);
namespace OC;
+use OCP\Log\IDataLogger;
use function array_merge;
use InterfaSys\LogNormalizer\Normalizer;
@@ -54,7 +55,7 @@ use OCP\Support\CrashReport\IRegistry;
*
* MonoLog is an example implementing this interface.
*/
-class Log implements ILogger {
+class Log implements ILogger, IDataLogger {
/** @var IWriter */
private $logger;
@@ -339,6 +340,29 @@ class Log implements ILogger {
}
}
+ public function logData(string $message, array $data, array $context = []): void {
+ $app = $context['app'] ?? 'no app in context';
+ $level = $context['level'] ?? ILogger::ERROR;
+
+ $minLevel = $this->getLogLevel($context);
+
+ array_walk($context, [$this->normalizer, 'format']);
+
+ try {
+ if ($level >= $minLevel) {
+ $data['message'] = $message;
+ if (!$this->logger instanceof IFileBased) {
+ $data = json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR | JSON_UNESCAPED_SLASHES);
+ }
+ $this->writeLog($app, $data, $level);
+ }
+
+ $context['level'] = $level;
+ } catch (\Throwable $e) {
+ // make sure we dont hard crash if logging fails
+ }
+ }
+
/**
* @param string $app
* @param string|array $entry
diff --git a/lib/private/Log/LogDetails.php b/lib/private/Log/LogDetails.php
index 2eea17ad73d..b1dc6e4311b 100644
--- a/lib/private/Log/LogDetails.php
+++ b/lib/private/Log/LogDetails.php
@@ -80,6 +80,16 @@ abstract class LogDetails {
'userAgent',
'version'
);
+
+ if(is_array($message) && !array_key_exists('Exception', $message)) {
+ // Exception messages should stay as they are,
+ // anything else modern is split to 'message' (string) and
+ // data (array) fields
+ $shortMessage = $message['message'] ?? '(no message provided)';
+ $entry['data'] = $message;
+ $entry['message'] = $shortMessage;
+ }
+
return $entry;
}
diff --git a/lib/private/Security/Hasher.php b/lib/private/Security/Hasher.php
index 882f80ea2bf..21271fffbd7 100644
--- a/lib/private/Security/Hasher.php
+++ b/lib/private/Security/Hasher.php
@@ -94,6 +94,10 @@ class Hasher implements IHasher {
public function hash(string $message): string {
$alg = $this->getPrefferedAlgorithm();
+ if (\defined('PASSWORD_ARGON2ID') && $alg === PASSWORD_ARGON2ID) {
+ return 3 . '|' . password_hash($message, PASSWORD_ARGON2ID, $this->options);
+ }
+
if (\defined('PASSWORD_ARGON2I') && $alg === PASSWORD_ARGON2I) {
return 2 . '|' . password_hash($message, PASSWORD_ARGON2I, $this->options);
}
@@ -142,32 +146,16 @@ class Hasher implements IHasher {
/**
* Verify V1 (blowfish) hashes
- * @param string $message Message to verify
- * @param string $hash Assumed hash of the message
- * @param null|string &$newHash Reference will contain the updated hash if necessary. Update the existing hash with this one.
- * @return bool Whether $hash is a valid hash of $message
- */
- protected function verifyHashV1(string $message, string $hash, &$newHash = null): bool {
- if(password_verify($message, $hash)) {
- if ($this->needsRehash($hash)) {
- $newHash = $this->hash($message);
- }
- return true;
- }
-
- return false;
- }
-
- /**
* Verify V2 (argon2i) hashes
+ * Verify V3 (argon2id) hashes
* @param string $message Message to verify
* @param string $hash Assumed hash of the message
* @param null|string &$newHash Reference will contain the updated hash if necessary. Update the existing hash with this one.
* @return bool Whether $hash is a valid hash of $message
*/
- protected function verifyHashV2(string $message, string $hash, &$newHash = null) : bool {
+ protected function verifyHash(string $message, string $hash, &$newHash = null): bool {
if(password_verify($message, $hash)) {
- if($this->needsRehash($hash)) {
+ if ($this->needsRehash($hash)) {
$newHash = $this->hash($message);
}
return true;
@@ -187,10 +175,10 @@ class Hasher implements IHasher {
if(isset($splittedHash['version'])) {
switch ($splittedHash['version']) {
+ case 3:
case 2:
- return $this->verifyHashV2($message, $splittedHash['hash'], $newHash);
case 1:
- return $this->verifyHashV1($message, $splittedHash['hash'], $newHash);
+ return $this->verifyHash($message, $splittedHash['hash'], $newHash);
}
} else {
return $this->legacyHashVerify($message, $hash, $newHash);
@@ -211,6 +199,10 @@ class Hasher implements IHasher {
$default = PASSWORD_ARGON2I;
}
+ if (\defined('PASSWORD_ARGON2ID')) {
+ $default = PASSWORD_ARGON2ID;
+ }
+
// Check if we should use PASSWORD_DEFAULT
if ($this->config->getSystemValue('hashing_default_password', false) === true) {
$default = PASSWORD_DEFAULT;
diff --git a/lib/private/Server.php b/lib/private/Server.php
index caaacab0a0a..d6c8e57d696 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -1272,7 +1272,8 @@ class Server extends ServerContainer implements IServerContainer {
$c->getHTTPClientService(),
$c->getTempManager(),
$c->getLogger(),
- $c->getConfig()
+ $c->getConfig(),
+ \OC::$CLI
);
});
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 795c8cabcea..26299aaa039 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -528,7 +528,7 @@ class Setup {
$content .= "\n Options -MultiViews";
$content .= "\n RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1]";
$content .= "\n RewriteRule ^core/preview.png$ index.php [PT,E=PATH_INFO:$1]";
- $content .= "\n RewriteCond %{REQUEST_FILENAME} !\\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map)$";
+ $content .= "\n RewriteCond %{REQUEST_FILENAME} !\\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4)$";
$content .= "\n RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico$";
$content .= "\n RewriteCond %{REQUEST_FILENAME} !core/img/manifest.json$";
$content .= "\n RewriteCond %{REQUEST_FILENAME} !/remote.php";
diff --git a/lib/public/Log/IDataLogger.php b/lib/public/Log/IDataLogger.php
new file mode 100644
index 00000000000..b5d3aa3075b
--- /dev/null
+++ b/lib/public/Log/IDataLogger.php
@@ -0,0 +1,42 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Log;
+
+/**
+ * Interface IDataLogger
+ *
+ * @package OCP\Log
+ * @since 18.0.1
+ */
+interface IDataLogger {
+
+ /**
+ * allows to log custom data, similar to how logException works
+ *
+ * @since 18.0.1
+ */
+ public function logData(string $message, array $data, array $context = []): void;
+
+}