summaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/l10n/tr.js6
-rw-r--r--apps/files_external/l10n/tr.json6
-rw-r--r--apps/files_external/lib/Lib/Storage/SMB.php65
3 files changed, 63 insertions, 14 deletions
diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js
index e3c473a48fa..18bf1bdf431 100644
--- a/apps/files_external/l10n/tr.js
+++ b/apps/files_external/l10n/tr.js
@@ -111,9 +111,9 @@ OC.L10N.register(
"OpenStack Object Storage" : "OpenStack Nesne Depolama",
"Service name" : "Hizmet adı",
"Request timeout (seconds)" : "İstek zaman aşımı (saniye)",
- "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
- "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
- "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticinizle görüşün.",
"External storage support" : "Dış depolama desteği",
"Adds basic external storage support" : "Temel dış depolama desteği ekler",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.",
diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json
index 3bf1240e564..0dbc5a4364d 100644
--- a/apps/files_external/l10n/tr.json
+++ b/apps/files_external/l10n/tr.json
@@ -109,9 +109,9 @@
"OpenStack Object Storage" : "OpenStack Nesne Depolama",
"Service name" : "Hizmet adı",
"Request timeout (seconds)" : "İstek zaman aşımı (saniye)",
- "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
- "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
- "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticinizle görüşün.",
"External storage support" : "Dış depolama desteği",
"Adds basic external storage support" : "Temel dış depolama desteği ekler",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.",
diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php
index d010fb54840..3ff8179c7b4 100644
--- a/apps/files_external/lib/Lib/Storage/SMB.php
+++ b/apps/files_external/lib/Lib/Storage/SMB.php
@@ -55,6 +55,7 @@ use OC\Cache\CappedMemoryCache;
use OC\Files\Filesystem;
use OC\Files\Storage\Common;
use OCA\Files_External\Lib\Notify\SMBNotifyHandler;
+use OCP\Constants;
use OCP\Files\Notify\IChange;
use OCP\Files\Notify\IRenameChange;
use OCP\Files\Storage\INotifyStorage;
@@ -97,7 +98,7 @@ class SMB extends Common implements INotifyStorage {
if (isset($params['auth'])) {
$auth = $params['auth'];
} elseif (isset($params['user']) && isset($params['password']) && isset($params['share'])) {
- list($workgroup, $user) = $this->splitUser($params['user']);
+ [$workgroup, $user] = $this->splitUser($params['user']);
$auth = new BasicAuth($user, $workgroup, $params['password']);
} else {
throw new \Exception('Invalid configuration, no credentials provided');
@@ -206,14 +207,15 @@ class SMB extends Common implements INotifyStorage {
* @return \Icewind\SMB\IFileInfo[]
* @throws StorageNotAvailableException
*/
- protected function getFolderContents($path) {
+ protected function getFolderContents($path): iterable {
try {
$path = ltrim($this->buildPath($path), '/');
$files = $this->share->dir($path);
foreach ($files as $file) {
$this->statCache[$path . '/' . $file->getName()] = $file;
}
- return array_filter($files, function (IFileInfo $file) {
+
+ foreach ($files as $file) {
try {
// the isHidden check is done before checking the config boolean to ensure that the metadata is always fetch
// so we trigger the below exceptions where applicable
@@ -221,15 +223,15 @@ class SMB extends Common implements INotifyStorage {
if ($hide) {
$this->logger->debug('hiding hidden file ' . $file->getName());
}
- return !$hide;
+ if (!$hide) {
+ yield $file;
+ }
} catch (ForbiddenException $e) {
$this->logger->logException($e, ['level' => ILogger::DEBUG, 'message' => 'Hiding forbidden entry ' . $file->getName()]);
- return false;
} catch (NotFoundException $e) {
$this->logger->logException($e, ['level' => ILogger::DEBUG, 'message' => 'Hiding not found entry ' . $file->getName()]);
- return false;
}
- });
+ }
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while getting folder content']);
throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
@@ -508,6 +510,46 @@ class SMB extends Common implements INotifyStorage {
}
}
+ public function getMetaData($path) {
+ $fileInfo = $this->getFileInfo($path);
+ if (!$fileInfo) {
+ return null;
+ }
+
+ return $this->getMetaDataFromFileInfo($fileInfo);
+ }
+
+ private function getMetaDataFromFileInfo(IFileInfo $fileInfo) {
+ $permissions = Constants::PERMISSION_READ + Constants::PERMISSION_SHARE;
+
+ if (!$fileInfo->isReadOnly()) {
+ $permissions += Constants::PERMISSION_DELETE;
+ $permissions += Constants::PERMISSION_UPDATE;
+ if ($fileInfo->isDirectory()) {
+ $permissions += Constants::PERMISSION_CREATE;
+ }
+ }
+
+ $data = [];
+ if ($fileInfo->isDirectory()) {
+ $data['mimetype'] = 'httpd/unix-directory';
+ } else {
+ $data['mimetype'] = \OC::$server->getMimeTypeDetector()->detectPath($fileInfo->getPath());
+ }
+ $data['mtime'] = $fileInfo->getMTime();
+ if ($fileInfo->isDirectory()) {
+ $data['size'] = -1; //unknown
+ } else {
+ $data['size'] = $fileInfo->getSize();
+ }
+ $data['etag'] = $this->getETag($fileInfo->getPath());
+ $data['storage_mtime'] = $data['mtime'];
+ $data['permissions'] = $permissions;
+ $data['name'] = $fileInfo->getName();
+
+ return $data;
+ }
+
public function opendir($path) {
try {
$files = $this->getFolderContents($path);
@@ -519,10 +561,17 @@ class SMB extends Common implements INotifyStorage {
$names = array_map(function ($info) {
/** @var \Icewind\SMB\IFileInfo $info */
return $info->getName();
- }, $files);
+ }, iterator_to_array($files));
return IteratorDirectory::wrap($names);
}
+ public function getDirectoryContent($directory): \Traversable {
+ $files = $this->getFolderContents($directory);
+ foreach ($files as $file) {
+ yield $this->getMetaDataFromFileInfo($file);
+ }
+ }
+
public function filetype($path) {
try {
return $this->getFileInfo($path)->isDirectory() ? 'dir' : 'file';