|
|
|
|
@ -1,5 +1,9 @@
|
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use OC\ServiceUnavailableException;
|
|
|
|
|
use OCP\IConfig;
|
|
|
|
|
use OCP\Util;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
|
|
|
|
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
|
|
|
|
|
@ -35,7 +39,7 @@ function handleException(Exception|Error $e): void {
|
|
|
|
|
// we shall not log on RemoteException
|
|
|
|
|
$server->addPlugin(new ExceptionLoggerPlugin('webdav', \OCP\Server::get(LoggerInterface::class)));
|
|
|
|
|
}
|
|
|
|
|
$server->on('beforeMethod:*', function () use ($e) {
|
|
|
|
|
$server->on('beforeMethod:*', function () use ($e): void {
|
|
|
|
|
if ($e instanceof RemoteException) {
|
|
|
|
|
switch ($e->getCode()) {
|
|
|
|
|
case 503:
|
|
|
|
|
@ -51,7 +55,7 @@ function handleException(Exception|Error $e): void {
|
|
|
|
|
$server->exec();
|
|
|
|
|
} else {
|
|
|
|
|
$statusCode = 500;
|
|
|
|
|
if ($e instanceof \OC\ServiceUnavailableException) {
|
|
|
|
|
if ($e instanceof ServiceUnavailableException) {
|
|
|
|
|
$statusCode = 503;
|
|
|
|
|
}
|
|
|
|
|
if ($e instanceof RemoteException) {
|
|
|
|
|
@ -86,7 +90,7 @@ function resolveService($service) {
|
|
|
|
|
return $services[$service];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return \OC::$server->getConfig()->getAppValue('core', 'remote_' . $service);
|
|
|
|
|
return \OCP\Server::get(IConfig::class)->getAppValue('core', 'remote_' . $service);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
@ -97,13 +101,13 @@ try {
|
|
|
|
|
// this policy with a softer one if debug mode is enabled.
|
|
|
|
|
header("Content-Security-Policy: default-src 'none';");
|
|
|
|
|
|
|
|
|
|
if (\OCP\Util::needUpgrade()) {
|
|
|
|
|
if (Util::needUpgrade()) {
|
|
|
|
|
// since the behavior of apps or remotes are unpredictable during
|
|
|
|
|
// an upgrade, return a 503 directly
|
|
|
|
|
throw new RemoteException('Service unavailable', 503);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$request = \OC::$server->getRequest();
|
|
|
|
|
$request = \OCP\Server::get(IRequest::class);
|
|
|
|
|
$pathInfo = $request->getPathInfo();
|
|
|
|
|
if ($pathInfo === false || $pathInfo === '') {
|
|
|
|
|
throw new RemoteException('Path not found', 404);
|
|
|
|
|
|