@ -54,10 +54,10 @@ use Icewind\SMB\ServerFactory;
use Icewind\SMB\System;
use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use OCP\Cache\CappedMemoryCache;
use OC\Files\Filesystem;
use OC\Files\Storage\Common;
use OCA\Files_External\Lib\Notify\SMBNotifyHandler;
use OCP\Cache\CappedMemoryCache;
use OCP\Constants;
use OCP\Files\EntityTooLargeException;
use OCP\Files\Notify\IChange;
@ -66,7 +66,7 @@ use OCP\Files\NotPermittedException;
use OCP\Files\Storage\INotifyStorage;
use OCP\Files\StorageAuthException;
use OCP\Files\StorageNotAvailableException;
use OCP\ILogger ;
use Psr\Log\LoggerInterface ;
class SMB extends Common implements INotifyStorage {
/**
@ -87,7 +87,7 @@ class SMB extends Common implements INotifyStorage {
/** @var CappedMemoryCache< IFileInfo > */
protected CappedMemoryCache $statCache;
/** @var I Logger */
/** @var LoggerInterface */
protected $logger;
/** @var bool */
@ -111,9 +111,16 @@ class SMB extends Common implements INotifyStorage {
}
if (isset($params['logger'])) {
if (!$params['logger'] instanceof LoggerInterface) {
throw new \Exception(
'Invalid logger. Got '
. get_class($params['logger'])
. ' Expected ' . LoggerInterface::class
);
}
$this->logger = $params['logger'];
} else {
$this->logger = \OC::$server->getLogger();
$this->logger = \OC::$server->get(LoggerInterface::class );
}
$options = new Options();
@ -212,7 +219,7 @@ class SMB extends Common implements INotifyStorage {
* @throws StorageAuthException
*/
protected function throwUnavailable(\Exception $e) {
$this->logger->logException($e, ['message' => 'Error while getting file info' ]);
$this->logger->error('Error while getting file info', ['exception' => $e ]);
throw new StorageAuthException($e->getMessage(), $e);
}
@ -277,13 +284,13 @@ class SMB extends Common implements INotifyStorage {
yield $file;
}
} catch (ForbiddenException $e) {
$this->logger->logException($e, ['level' => ILogger::DEBUG, 'message' => 'Hiding forbidden entry ' . $file->getName() ]);
$this->logger->debug($e->getMessage(), ['exception' => $e ]);
} catch (NotFoundException $e) {
$this->logger->logException($e, ['level' => ILogger::DEBUG, 'message' => 'Hiding not found entry ' . $file->getName() ]);
$this->logger->debug('Hiding forbidden entry ' . $file->getName(), ['exception' => $e ]);
}
}
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while getting folder content' ]);
$this->logger->error('Error while getting folder content', ['exception' => $e ]);
throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e);
} catch (NotFoundException $e) {
throw new \OCP\Files\NotFoundException($e->getMessage(), 0, $e);
@ -328,7 +335,7 @@ class SMB extends Common implements INotifyStorage {
$this->remove($target);
$result = $this->share->rename($absoluteSource, $absoluteTarget);
} else {
$this->logger->logException($e, ['level' => ILogger::WARN ]);
$this->logger->warning($e->getMessage(), ['exception' => $e ]);
return false;
}
} catch (InvalidArgumentException $e) {
@ -336,11 +343,11 @@ class SMB extends Common implements INotifyStorage {
$this->remove($target);
$result = $this->share->rename($absoluteSource, $absoluteTarget);
} else {
$this->logger->logException($e, ['level' => ILogger::WARN ]);
$this->logger->warning($e->getMessage(), ['exception' => $e ]);
return false;
}
} catch (\Exception $e) {
$this->logger->logException($e, ['level' => ILogger::WARN ]);
$this->logger->warning($e->getMessage(), ['exception' => $e ]);
return false;
}
unset($this->statCache[$absoluteSource], $this->statCache[$absoluteTarget]);
@ -431,7 +438,7 @@ class SMB extends Common implements INotifyStorage {
} catch (ForbiddenException $e) {
return false;
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while deleting file' ]);
$this->logger->error('Error while deleting file', ['exception' => $e ]);
throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e);
}
}
@ -518,7 +525,7 @@ class SMB extends Common implements INotifyStorage {
} catch (OutOfSpaceException $e) {
throw new EntityTooLargeException("not enough available space to create file", 0, $e);
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while opening file' ]);
$this->logger->error('Error while opening file', ['exception' => $e ]);
throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e);
}
}
@ -545,7 +552,7 @@ class SMB extends Common implements INotifyStorage {
} catch (ForbiddenException $e) {
return false;
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while removing folder' ]);
$this->logger->error('Error while removing folder', ['exception' => $e ]);
throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e);
}
}
@ -561,7 +568,7 @@ class SMB extends Common implements INotifyStorage {
} catch (OutOfSpaceException $e) {
throw new EntityTooLargeException("not enough available space to create file", 0, $e);
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while creating file' ]);
$this->logger->error('Error while creating file', ['exception' => $e ]);
throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e);
}
}
@ -658,7 +665,7 @@ class SMB extends Common implements INotifyStorage {
$this->share->mkdir($path);
return true;
} catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while creating folder' ]);
$this->logger->error('Error while creating folder', ['exception' => $e ]);
throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e);
} catch (Exception $e) {
return false;
@ -736,7 +743,7 @@ class SMB extends Common implements INotifyStorage {
} catch (ForbiddenException $e) {
return false;
} catch (Exception $e) {
$this->logger->logException($e );
$this->logger->error($e->getMessage(), ['exception' => $e] );
return false;
}
}