commit
6a5f12beca
@ -0,0 +1,42 @@ |
||||
<?php |
||||
/** |
||||
* @author Georg Ehrke |
||||
* @copyright 2014 Georg Ehrke <georg@ownCloud.com> |
||||
* |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
namespace OCP\AppFramework\Http; |
||||
|
||||
class DataDownloadResponse extends DownloadResponse { |
||||
/** |
||||
* @var string |
||||
*/ |
||||
private $data; |
||||
|
||||
/** |
||||
* Creates a response that prompts the user to download the text |
||||
* @param string $data text to be downloaded |
||||
* @param string $filename the name that the downloaded file should have |
||||
* @param string $contentType the mimetype that the downloaded file should have |
||||
*/ |
||||
public function __construct($data, $filename, $contentType) { |
||||
$this->data = $data; |
||||
parent::__construct($filename, $contentType); |
||||
} |
||||
|
||||
/** |
||||
* @param string $data |
||||
*/ |
||||
public function setData($data) { |
||||
$this->data = $data; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function render() { |
||||
return $this->data; |
||||
} |
||||
} |
@ -1,21 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012, Robin Appelman <icewind1991@gmail.com> |
||||
* This file is licensed under the Affero General Public License version 3 or later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
OC_JSON::checkAdminUser(); |
||||
|
||||
$count=(isset($_GET['count']))?$_GET['count']:50; |
||||
$offset=(isset($_GET['offset']))?$_GET['offset']:0; |
||||
|
||||
$entries=OC_Log_Owncloud::getEntries($count, $offset); |
||||
$data = array(); |
||||
|
||||
OC_JSON::success( |
||||
array( |
||||
"data" => $entries, |
||||
"remain" => count(OC_Log_Owncloud::getEntries(1, $offset + $count)) !== 0, |
||||
) |
||||
); |
@ -1,13 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com> |
||||
* This file is licensed under the Affero General Public License version 3 or later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
OC_Util::checkAdminUser(); |
||||
OCP\JSON::callCheck(); |
||||
|
||||
OC_Config::setValue( 'loglevel', $_POST['level'] ); |
||||
|
||||
echo 'true'; |
@ -0,0 +1,126 @@ |
||||
<?php |
||||
/** |
||||
* @author Georg Ehrke |
||||
* @copyright 2014 Georg Ehrke <georg@ownCloud.com> |
||||
* |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Settings\Controller; |
||||
|
||||
use OCP\AppFramework\Controller; |
||||
use OCP\AppFramework\Http; |
||||
use OCP\AppFramework\Http\JSONResponse; |
||||
use OCP\AppFramework\Http\DataDownloadResponse; |
||||
use OCP\IL10N; |
||||
use OCP\AppFramework\Utility\ITimeFactory; |
||||
use OCP\IRequest; |
||||
use OCP\IConfig; |
||||
|
||||
/** |
||||
* Class LogSettingsController |
||||
* |
||||
* @package OC\Settings\Controller |
||||
*/ |
||||
class LogSettingsController extends Controller { |
||||
/** |
||||
* @var \OCP\IConfig |
||||
*/ |
||||
private $config; |
||||
|
||||
/** |
||||
* @var \OCP\IL10N |
||||
*/ |
||||
private $l10n; |
||||
|
||||
/** |
||||
* @var \OCP\ITimeFactory |
||||
*/ |
||||
private $timefactory; |
||||
|
||||
/** |
||||
* @param string $appName |
||||
* @param IRequest $request |
||||
* @param IConfig $config |
||||
*/ |
||||
public function __construct($appName, |
||||
IRequest $request, |
||||
IConfig $config, |
||||
IL10N $l10n, |
||||
ITimeFactory $timeFactory) { |
||||
|
||||
parent::__construct($appName, $request); |
||||
$this->config = $config; |
||||
$this->l10n = $l10n; |
||||
$this->timefactory = $timeFactory; |
||||
} |
||||
|
||||
/** |
||||
* set log level for logger |
||||
* |
||||
* @param int $level |
||||
* @return JSONResponse |
||||
*/ |
||||
public function setLogLevel($level) { |
||||
if ($level < 0 || $level > 4) { |
||||
return new JSONResponse([ |
||||
'message' => (string) $this->l10n->t('log-level out of allowed range'), |
||||
], Http::STATUS_BAD_REQUEST); |
||||
} |
||||
|
||||
$this->config->setSystemValue('loglevel', $level); |
||||
return new JSONResponse([ |
||||
'level' => $level, |
||||
]); |
||||
} |
||||
|
||||
/** |
||||
* get log entries from logfile |
||||
* |
||||
* @param int $count |
||||
* @param int $offset |
||||
* @return JSONResponse |
||||
*/ |
||||
public function getEntries($count=50, $offset=0) { |
||||
return new JSONResponse([ |
||||
'data' => \OC_Log_Owncloud::getEntries($count, $offset), |
||||
'remain' => count(\OC_Log_Owncloud::getEntries(1, $offset + $count)) !== 0, |
||||
]); |
||||
} |
||||
|
||||
/** |
||||
* download logfile |
||||
* |
||||
* @NoCSRFRequired |
||||
* |
||||
* @return DataDownloadResponse |
||||
*/ |
||||
public function download() { |
||||
return new DataDownloadResponse( |
||||
json_encode(\OC_Log_Owncloud::getEntries(null, null)), |
||||
$this->getFilenameForDownload(), |
||||
'application/json' |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* get filename for the logfile that's being downloaded |
||||
* |
||||
* @param int $timestamp (defaults to time()) |
||||
* @return string |
||||
*/ |
||||
private function getFilenameForDownload($timestamp=null) { |
||||
$instanceId = $this->config->getSystemValue('instanceid'); |
||||
|
||||
$filename = implode([ |
||||
'ownCloud', |
||||
$instanceId, |
||||
(!is_null($timestamp)) ? $timestamp : $this->timefactory->getTime() |
||||
], '-'); |
||||
$filename .= '.log'; |
||||
|
||||
return $filename; |
||||
} |
||||
} |
@ -0,0 +1,79 @@ |
||||
<?php |
||||
/** |
||||
* @author Georg Ehrke |
||||
* @copyright 2014 Georg Ehrke <georg@ownCloud.com> |
||||
* |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
namespace Test\Settings\Controller; |
||||
|
||||
use \OC\Settings\Application; |
||||
|
||||
/** |
||||
* @package OC\Settings\Controller |
||||
*/ |
||||
class LogSettingsControllerTest extends \Test\TestCase { |
||||
|
||||
/** @var \OCP\AppFramework\IAppContainer */ |
||||
private $container; |
||||
|
||||
/** @var LogSettingsController */ |
||||
private $logSettingsController; |
||||
|
||||
protected function setUp() { |
||||
$app = new Application(); |
||||
$this->container = $app->getContainer(); |
||||
$this->container['Config'] = $this->getMockBuilder('\OCP\IConfig') |
||||
->disableOriginalConstructor()->getMock(); |
||||
$this->container['AppName'] = 'settings'; |
||||
$this->logSettingsController = $this->container['LogSettingsController']; |
||||
} |
||||
|
||||
/** |
||||
* @dataProvider logLevelData |
||||
*/ |
||||
public function testSetLogLevel($level, $inRange) { |
||||
if ($inRange) { |
||||
$this->container['Config'] |
||||
->expects($this->once()) |
||||
->method('setSystemValue') |
||||
->with('loglevel', $level); |
||||
} |
||||
|
||||
$response = $this->logSettingsController->setLogLevel($level)->getData(); |
||||
|
||||
if ($inRange) { |
||||
$expectedResponse = ['level' => $level]; |
||||
} else { |
||||
$expectedResponse = ['message' => 'log-level out of allowed range']; |
||||
} |
||||
|
||||
$this->assertSame($expectedResponse, $response); |
||||
} |
||||
|
||||
public function logLevelData() { |
||||
return [ |
||||
[-1, false], |
||||
[0, true], |
||||
[1, true], |
||||
[2, true], |
||||
[3, true], |
||||
[4, true], |
||||
[5, false], |
||||
]; |
||||
} |
||||
|
||||
public function testGetFilenameForDownload() { |
||||
$timestamp = 42; |
||||
$this->container['Config'] |
||||
->expects($this->once()) |
||||
->method('getSystemValue') |
||||
->with('instanceid') |
||||
->will($this->returnValue('0xF')); |
||||
$filename = \Test_Helper::invokePrivate($this->logSettingsController, 'getFilenameForDownload', [$timestamp]); |
||||
|
||||
$this->assertSame('ownCloud-0xF-42.log', $filename); |
||||
} |
||||
} |
Loading…
Reference in new issue