asdasd
This commit is contained in:
@@ -788,6 +788,16 @@ class ApiKernel
|
||||
}
|
||||
|
||||
if (!$this->dispatchTestMail($recipient, $subject, $html, $sender)) {
|
||||
$this->writeDebugLog('templates_test_send', [
|
||||
'time' => date(DATE_ATOM),
|
||||
'template_id' => $templateId,
|
||||
'to' => $recipient,
|
||||
'subject' => $subject,
|
||||
'sender_id' => $senderId > 0 ? $senderId : null,
|
||||
'from_email' => $sender['from_email'] ?? ($this->conf['smtp']['from_email'] ?? null),
|
||||
'from_name' => $sender['from_name'] ?? ($this->conf['smtp']['from_name'] ?? null),
|
||||
'html_length' => strlen($html),
|
||||
]);
|
||||
$this->fail('Send failed', null, 500);
|
||||
}
|
||||
|
||||
@@ -1084,6 +1094,12 @@ class ApiKernel
|
||||
case 'account.fonts.list':
|
||||
$this->handleAccountFontsList();
|
||||
break;
|
||||
case 'debug.logs.list':
|
||||
$this->handleDebugLogsList();
|
||||
break;
|
||||
case 'debug.logs.read':
|
||||
$this->handleDebugLogsRead();
|
||||
break;
|
||||
case 'placeholders.status':
|
||||
$this->handlePlaceholderStatus();
|
||||
break;
|
||||
@@ -2141,12 +2157,54 @@ class ApiKernel
|
||||
{
|
||||
$user = $this->requireAuth();
|
||||
$this->ensureDebugUser($user);
|
||||
$this->ensureDebugEnv();
|
||||
ob_start();
|
||||
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_ENVIRONMENT);
|
||||
$html = ob_get_clean() ?: '';
|
||||
$this->respond(['ok' => true, 'html' => $html]);
|
||||
}
|
||||
|
||||
private function handleDebugLogsList(): void
|
||||
{
|
||||
$user = $this->requireAuth();
|
||||
$this->ensureDebugUser($user);
|
||||
$this->ensureDebugEnv();
|
||||
$dir = $this->debugDir();
|
||||
if (!is_dir($dir)) {
|
||||
$this->respond(['ok' => true, 'items' => []]);
|
||||
}
|
||||
$items = [];
|
||||
foreach (glob($dir . '/*.log') ?: [] as $file) {
|
||||
$items[] = [
|
||||
'name' => basename($file),
|
||||
'size' => filesize($file) ?: 0,
|
||||
'updated_at' => date(DATE_ATOM, filemtime($file) ?: time()),
|
||||
];
|
||||
}
|
||||
$this->respond(['ok' => true, 'items' => $items]);
|
||||
}
|
||||
|
||||
private function handleDebugLogsRead(): void
|
||||
{
|
||||
$user = $this->requireAuth();
|
||||
$this->ensureDebugUser($user);
|
||||
$this->ensureDebugEnv();
|
||||
$name = trim((string)($this->in['name'] ?? ''));
|
||||
if ($name === '') {
|
||||
$this->fail('Log name required', null, 422);
|
||||
}
|
||||
$name = preg_replace('/[^a-zA-Z0-9_\.\-]/', '', $name) ?: '';
|
||||
if ($name === '' || strpos($name, '..') !== false) {
|
||||
$this->fail('Invalid log name', null, 422);
|
||||
}
|
||||
$file = $this->debugDir() . '/' . $name;
|
||||
if (!is_file($file)) {
|
||||
$this->fail('Log not found', null, 404);
|
||||
}
|
||||
$content = (string)file_get_contents($file);
|
||||
$this->respond(['ok' => true, 'content' => $content]);
|
||||
}
|
||||
|
||||
private function resolveBridgeConfig(?int $customerId): array
|
||||
{
|
||||
$fileConf = $this->conf['placeholders']['bridge'] ?? [];
|
||||
@@ -2832,6 +2890,34 @@ SQL;
|
||||
}
|
||||
}
|
||||
|
||||
private function ensureDebugEnv(): void
|
||||
{
|
||||
$env = strtolower((string)($this->conf['env'] ?? ''));
|
||||
if ($env !== 'staging') {
|
||||
$this->fail('Debug nur in Staging erlaubt', null, 403);
|
||||
}
|
||||
}
|
||||
|
||||
private function debugDir(): string
|
||||
{
|
||||
return dirname(__DIR__) . '/debug';
|
||||
}
|
||||
|
||||
private function writeDebugLog(string $name, array $payload): void
|
||||
{
|
||||
if (strtolower((string)($this->conf['env'] ?? '')) !== 'staging') {
|
||||
return;
|
||||
}
|
||||
$dir = $this->debugDir();
|
||||
if (!is_dir($dir)) {
|
||||
@mkdir($dir, 0775, true);
|
||||
}
|
||||
$safeName = preg_replace('/[^a-zA-Z0-9_\.\-]/', '_', $name) ?: 'debug';
|
||||
$file = rtrim($dir, '/') . '/' . $safeName . '.log';
|
||||
$data = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
|
||||
@file_put_contents($file, $data ?: '');
|
||||
}
|
||||
|
||||
private function defaultApiBase(): string
|
||||
{
|
||||
$base = $this->conf['base_url'] ?? '';
|
||||
|
||||
Reference in New Issue
Block a user