added new config key to separate config and db folders from tmp files, if it not set it will rely on WS_DATA_PATH.

This commit is contained in:
Abdulmhsen B. A. A
2022-03-17 17:40:53 +03:00
parent e7ddf00997
commit b025d1a0dd
5 changed files with 28 additions and 17 deletions

View File

@@ -18,13 +18,15 @@ use Symfony\Component\Cache\Adapter\FilesystemAdapter;
return (function () { return (function () {
$config = [ $config = [
'name' => 'WatchState', 'name' => 'WatchState',
'version' => 'v0.0.1-beta', 'version' => 'v0.0.0',
'tz' => null, 'tz' => null,
'path' => fixPath( 'path' => fixPath(
env('WS_DATA_PATH', fn() => env('IN_DOCKER') ? '/config' : realpath(__DIR__ . '/../var')) env('WS_DATA_PATH', fn() => env('IN_DOCKER') ? '/config' : realpath(__DIR__ . '/../var'))
), ),
]; ];
$config['tmpDir'] = fixPath(env('WS_TMP_DIR', fn() => ag($config, 'path')));
$config['storage'] = [ $config['storage'] = [
'type' => PDOAdapter::class, 'type' => PDOAdapter::class,
'opts' => [ 'opts' => [
@@ -78,7 +80,7 @@ return (function () {
$config['cache'] = [ $config['cache'] = [
'adapter' => FilesystemAdapter::class, 'adapter' => FilesystemAdapter::class,
'config' => [ 'config' => [
'directory' => env('WS_CACHE_DIR', fn() => ag($config, 'path') . '/cache'), 'directory' => ag($config, 'tmpDir') . '/cache',
], ],
]; ];
@@ -87,7 +89,7 @@ return (function () {
'options' => [ 'options' => [
'save.handler' => 'file', 'save.handler' => 'file',
'save.handler.file' => [ 'save.handler.file' => [
'filename' => ag($config, 'path') . '/logs/profiler_' . gmdate('Y_m_d_His') . '.json' 'filename' => ag($config, 'tmpDir') . '/profiler/profiler_' . gmdate('Y_m_d_His') . '.json'
], ],
], ],
], ],
@@ -104,7 +106,7 @@ return (function () {
'type' => 'stream', 'type' => 'stream',
'enabled' => env('WS_LOGGER_FILE_ENABLE', false), 'enabled' => env('WS_LOGGER_FILE_ENABLE', false),
'level' => env('WS_LOGGER_FILE_LEVEL', Logger::ERROR), 'level' => env('WS_LOGGER_FILE_LEVEL', Logger::ERROR),
'filename' => env('WS_LOGGER_FILE', fn() => ag($config, 'path') . '/logs/app.log'), 'filename' => env('WS_LOGGER_FILE', fn() => ag($config, 'tmpDir') . '/logs/app.log'),
], ],
'syslog' => [ 'syslog' => [
'type' => 'syslog', 'type' => 'syslog',

View File

@@ -4,7 +4,9 @@ declare(strict_types=1);
return [ return [
'%(path)/db', '%(path)/db',
'%(path)/logs',
'%(path)/config', '%(path)/config',
'%(path)/cache', '%(tmpDir)/logs',
'%(tmpDir)/cache',
'%(tmpDir)/profiler',
'%(tmpDir)/webhooks',
]; ];

View File

@@ -49,7 +49,7 @@ class KernelConsole
} }
if (file_exists($dataPath . '/config/env')) { if (file_exists($dataPath . '/config/env')) {
(new Dotenv())->overload($dataPath . '/config/env'); (new Dotenv())->usePutenv(true)->overload($dataPath . '/config/env');
} }
})(); })();
@@ -182,16 +182,20 @@ class KernelConsole
} }
if (!($path = Config::get('path'))) { if (!($path = Config::get('path'))) {
throw new RuntimeException('No app path was set in config path or WS_DATA_PATH ENV'); throw new RuntimeException('No ENV:WS_DATA_PATH was set.');
} }
if (!($tmpDir = Config::get('tmpDir'))) {
throw new RuntimeException('No ENV:WS_TMP_DIR was set.');
}
$fn = function (string $key, string $path): string {
if (!file_exists($path)) { if (!file_exists($path)) {
if (!@mkdir($path, 0755, true) && !is_dir($path)) { if (!@mkdir($path, 0755, true) && !is_dir($path)) {
throw new RuntimeException(sprintf('Unable to create "%s" Directory.', $path)); throw new RuntimeException(sprintf('Unable to create "%s" Directory.', $path));
} }
} }
$fn = function (string $key, string $path): string {
if (!is_dir($path)) { if (!is_dir($path)) {
throw new RuntimeException(sprintf('%s is not a directory.', $key)); throw new RuntimeException(sprintf('%s is not a directory.', $key));
} }
@@ -219,10 +223,13 @@ class KernelConsole
return DIRECTORY_SEPARATOR !== $path ? rtrim($path, DIRECTORY_SEPARATOR) : $path; return DIRECTORY_SEPARATOR !== $path ? rtrim($path, DIRECTORY_SEPARATOR) : $path;
}; };
$path = $fn('path', $path); $list = [
'%(path)' => $fn('path', $path),
'%(tmpDir)' => $fn('tmpDir', $tmpDir),
];
foreach (require $dirList as $dir) { foreach (require $dirList as $dir) {
$dir = str_replace('%(path)', $path, $dir); $dir = str_replace(array_keys($list), array_values($list), $dir);
if (!file_exists($dir)) { if (!file_exists($dir)) {
if (!@mkdir($dir, 0755, true) && !is_dir($dir)) { if (!@mkdir($dir, 0755, true) && !is_dir($dir)) {

View File

@@ -223,7 +223,7 @@ class JellyfinServer implements ServerInterface
return $request; return $request;
} }
$body = $request->getBody()->getContents(); $body = (string)$request->getBody();
if (null === ($json = json_decode($body, true))) { if (null === ($json = json_decode($body, true))) {
return $request; return $request;

View File

@@ -234,13 +234,13 @@ if (!function_exists('saveWebhookPayload')) {
'query' => $request->getQueryParams(), 'query' => $request->getQueryParams(),
'parsed' => $request->getParsedBody(), 'parsed' => $request->getParsedBody(),
'server' => $request->getServerParams(), 'server' => $request->getServerParams(),
'body' => $request->getBody()->getContents(), 'body' => (string)$request->getBody(),
'attributes' => $request->getAttributes(), 'attributes' => $request->getAttributes(),
'cParsed' => $parsed, 'cParsed' => $parsed,
]; ];
@file_put_contents( @file_put_contents(
Config::get('path') . '/logs/' . sprintf('webhook.%s.%d.json', $name, time()), Config::get('tmpDir') . '/webhooks/' . sprintf('webhook.%s.%d.json', $name, time()),
json_encode($content, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) json_encode($content, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)
); );
} }