403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /tmp/sc/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /tmp/sc/aaa9bd23e3f1e2b5299abb073c09508af0e52f73_0.file.system.tpl.php
<?php
/* Smarty version 3.1.30, created on 2026-06-27 05:56:50
  from "/var/www/clients/client1/web17/web/includes/templates/templates/pacim/system.tpl" */

/* @var Smarty_Internal_Template $_smarty_tpl */
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array (
  'version' => '3.1.30',
  'unifunc' => 'content_6a3f4a029d75f8_96293921',
  'has_nocache_code' => false,
  'file_dependency' => 
  array (
    'aaa9bd23e3f1e2b5299abb073c09508af0e52f73' => 
    array (
      0 => '/var/www/clients/client1/web17/web/includes/templates/templates/pacim/system.tpl',
      1 => 1782389322,
      2 => 'file',
    ),
  ),
  'includes' => 
  array (
    'file:pacim/_company.tpl' => 1,
    'file:pacim/_api.tpl' => 1,
    'file:pacim/_users.tpl' => 1,
  ),
),false)) {
function content_6a3f4a029d75f8_96293921 (Smarty_Internal_Template $_smarty_tpl) {
?>
<link rel="stylesheet" href="<?php echo @constant('SITE_URL');?>
/assets/css/cockpit.css?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/css/cockpit.css'));?>
">

<div class="page-header">
  <div class="page-header-row d-flex justify-content-between align-items-center flex-wrap gap-2">
    <div>
      <div class="stat-label">PaCIM System</div>
      <h1 class="h3 mb-0">Einstellungen</h1>
    </div>
  </div>
</div>

<ul class="nav nav-tabs mb-3" role="tablist">
  <li class="nav-item"><button class="nav-link active" data-bs-toggle="tab" data-bs-target="#set-overview" type="button" role="tab">Übersicht</button></li>
  <li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#set-company" type="button" role="tab">Unternehmen</button></li>
  <li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#set-accounting" type="button" role="tab">Buchhaltung</button></li>
  <li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#set-sources" type="button" role="tab">Buchungsquellen</button></li>
  <li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#set-mail" type="button" role="tab">E-Mail</button></li>
  <li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#set-api" type="button" role="tab">API</button></li>
  <li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#set-users" type="button" role="tab">Benutzer</button></li>
</ul>

<div class="tab-content">
  <div class="tab-pane fade show active" id="set-overview" role="tabpanel">
    <form id="overview-settings-form" autocomplete="off" style="max-width:560px;">
      <div class="card">
        <div class="card-header d-flex justify-content-between align-items-center">
          <span class="fw-bold">Benachrichtigungen (Pushover)</span>
          <button type="submit" class="btn btn-sm btn-primary"><i class="material-icons sm">save</i> Speichern</button>
        </div>
        <div class="card-body">
          <label class="form-label">Pushover App-Token <span class="text-muted">(systemweit)</span></label>
          <input type="text" class="form-control" id="set-pushover-app" name="pushover_app_token" autocomplete="off" placeholder="leer lassen = unverändert">
          <div class="form-text">
            Gilt für alle Benutzer. Einmal in <a href="https://pushover.net/apps/build" target="_blank" rel="noopener">Pushover</a> eine Anwendung anlegen und den API-Token hier eintragen.
            Den persönlichen User-Key und die gewünschten Benachrichtigungen legt jeder Benutzer selbst fest (Reiter <em>Benutzer</em> → bearbeiten → <em>Benachrichtigungen</em>).
            <span id="set-pushover-app-state" class="fw-semibold"></span>
          </div>
          <div id="set-overview-msg" class="small mt-2"></div>
        </div>
      </div>
    </form>
  </div>
  <div class="tab-pane fade" id="set-company" role="tabpanel">
    <?php $_smarty_tpl->_subTemplateRender("file:pacim/_company.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false);
?>

  </div>
  <div class="tab-pane fade" id="set-accounting" role="tabpanel">
    <form id="accounting-settings-form" autocomplete="off">
      <div class="card">
        <div class="card-header d-flex justify-content-between align-items-center">
          <span class="fw-bold">Google Drive – Buchhaltung</span>
          <button type="submit" class="btn btn-sm btn-primary"><i class="material-icons sm">save</i> Speichern</button>
        </div>
        <div class="card-body">
          <div class="mb-3" style="max-width:560px;">
            <label class="form-label">Google-Drive-Zielordner (Ordner-ID)</label>
            <input type="text" class="form-control" id="set-gdrive-folder" name="gdrive_accounting_folder" placeholder="z. B. 1WwoH_3YU20LSrQEcGK_cGWm46RfNjlq1">
            <div class="form-text">In diesen Ordner werden die Monatsabrechnungen (Rechnungen&nbsp;+&nbsp;Excel) übertragen. Die Ordner-ID findest du in der Google-Drive-URL (…/folders/<strong>ID</strong>).</div>
          </div>
          <div id="set-accounting-msg" class="small"></div>
        </div>
      </div>
    </form>
  </div>
  <div class="tab-pane fade" id="set-sources" role="tabpanel">
    <div class="card">
      <div class="card-header d-flex justify-content-between align-items-center">
        <span class="fw-bold">Buchungsquellen</span>
        <button class="btn btn-sm btn-primary" id="srcAddBtn"><i class="material-icons sm">add</i> Quelle hinzufügen</button>
      </div>
      <div class="card-body">
        <div class="text-muted small mb-2">Die Quelle (<code>customer_source</code>) kennzeichnet die Herkunft einer Buchung. Feste Quellen sind nicht löschbar. Partner-/Reisebüro-Buchungen werden automatisch mit der Quelle <strong>partner</strong> erfasst.</div>
        <div class="table-responsive">
          <table class="table table-hover align-middle mb-0">
            <thead><tr><th>Bezeichnung</th><th>Wert</th><th>Typ</th><th class="text-end">Kunden</th><th></th></tr></thead>
            <tbody id="srcBody"><tr><td colspan="5" class="text-center text-muted py-3">Wird geladen …</td></tr></tbody>
          </table>
        </div>
        <div id="srcOther" class="small text-muted mt-2"></div>
        <div id="srcMsg" class="small mt-2"></div>
      </div>
    </div>
  </div>

  <div class="tab-pane fade" id="set-mail" role="tabpanel">
    <form id="mailSettingsForm" autocomplete="off">
      <input type="hidden" name="smtpform" value="1">
      <div class="card mb-3">
        <div class="card-header d-flex justify-content-between align-items-center">
          <span class="fw-bold">SMTP-Versand (PHPMailer)</span>
          <button type="submit" class="btn btn-sm btn-primary"><i class="material-icons sm">save</i> Speichern</button>
        </div>
        <div class="card-body">
          <div class="alert alert-info small">Versandweg: <strong>Extern</strong> = bisheriger Versand bleibt aktiv. <strong>SMTP (lokal)</strong> = PaCIM versendet selbst. Erst nach Umschalten auf SMTP wird der lokale Versand produktiv genutzt.</div>
          <div class="row g-3">
            <div class="col-12 col-md-4"><label class="form-label">Versandweg</label>
              <select class="form-select" name="transport" id="ms-transport">
                <option value="external">Extern (bisheriger Versand)</option>
                <option value="smtp">SMTP lokal (PHPMailer)</option>
              </select>
            </div>
            <div class="col-12 col-md-5"><label class="form-label">SMTP-Host</label><input class="form-control" name="host" id="ms-host"></div>
            <div class="col-6 col-md-3"><label class="form-label">Port</label><input class="form-control" type="number" name="port" id="ms-port"></div>
            <div class="col-6 col-md-3"><label class="form-label">Verschlüsselung</label>
              <select class="form-select" name="secure" id="ms-secure"><option value="">keine</option><option value="tls">TLS (STARTTLS)</option><option value="ssl">SSL</option></select>
            </div>
            <div class="col-6 col-md-3 d-flex align-items-end"><label class="form-check d-flex align-items-center gap-2"><input class="form-check-input" type="checkbox" name="auth" id="ms-auth" value="1"> <span>Authentifizierung</span></label></div>
            <div class="col-12 col-md-6"><label class="form-label">Benutzer</label><input class="form-control" name="user" id="ms-user" autocomplete="off"></div>
            <div class="col-12 col-md-6"><label class="form-label">Passwort</label><input class="form-control" type="password" name="pass" id="ms-pass" autocomplete="new-password" placeholder="•••••• (leer = unverändert)"></div>
            <div class="col-12 col-md-6"><label class="form-label">Absender-Adresse</label><input class="form-control" type="email" name="from_email" id="ms-from-email"></div>
            <div class="col-12 col-md-6"><label class="form-label">Absender-Name</label><input class="form-control" name="from_name" id="ms-from-name"></div>
          </div>
          <hr>
          <div class="d-flex flex-wrap align-items-center gap-2">
            <button type="button" class="btn btn-light border" id="ms-test-connect"><i class="material-icons sm">wifi_tethering</i> Verbindung testen</button>
            <input class="form-control" style="max-width:260px;" type="email" id="ms-test-to" placeholder="Testmail an …">
            <button type="button" class="btn btn-light border" id="ms-test-mail"><i class="material-icons sm">send</i> Testmail senden</button>
            <span class="small ms-2" id="ms-test-status"></span>
          </div>
          <div class="js-status small mt-2" id="ms-status"></div>
          <div class="text-muted small mt-2">Universeller Header &amp; Footer sowie Navigations-Links werden im Bereich <a href="<?php echo @constant('SITE_URL');?>
/mailing/">Mailing → Einstellungen</a> gepflegt.</div>
        </div>
      </div>
    </form>
  </div>

  <div class="tab-pane fade" id="set-api" role="tabpanel">
    <?php $_smarty_tpl->_subTemplateRender("file:pacim/_api.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false);
?>

  </div>
  <div class="tab-pane fade" id="set-users" role="tabpanel">
    <?php $_smarty_tpl->_subTemplateRender("file:pacim/_users.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false);
?>

  </div>
</div>


<div class="modal fade" id="srcModal" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered">
    <div class="modal-content">
      <div class="modal-header"><h5 class="modal-title" id="srcModalTitle">Quelle</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div>
      <form id="srcForm" autocomplete="off">
        <div class="modal-body">
          <input type="hidden" name="orig" id="srcOrig">
          <div class="mb-3"><label class="form-label">Bezeichnung</label><input class="form-control" name="label" id="srcLabel" placeholder="z. B. Costa"></div>
          <div class="mb-1"><label class="form-label">Wert (customer_source) *</label><input class="form-control" name="key" id="srcKey" required placeholder="z. B. Costa"></div>
          <div class="form-text">Dieser Wert wird in der Datenbank gespeichert. Nach dem Anlegen nicht mehr änderbar.</div>
          <div class="js-status small mt-2" id="srcFormMsg"></div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-light" data-bs-dismiss="modal">Abbrechen</button>
          <button class="btn btn-primary" type="submit"><i class="material-icons sm">save</i> Speichern</button>
        </div>
      </form>
    </div>
  </div>
</div>

<?php echo '<script'; ?>
>
document.addEventListener('DOMContentLoaded', function () {
  if (typeof SITE_URL === 'undefined') return;
  var API = SITE_URL + '/settings-api.php';
  var accForm  = document.getElementById('accounting-settings-form');
  var ovForm   = document.getElementById('overview-settings-form');
  var gdrive   = document.getElementById('set-gdrive-folder');
  var pushApp  = document.getElementById('set-pushover-app');
  var pushState= document.getElementById('set-pushover-app-state');

  function setPushState(on) {
    if (!pushState) return;
    pushState.textContent = on ? '✓ hinterlegt' : 'noch nicht hinterlegt';
    pushState.className = 'fw-semibold ' + (on ? 'text-success' : 'text-warning');
  }

  fetch(API).then(function (r) { return r.json(); }).then(function (res) {
    if (!res || !res.ok || !res.settings) return;
    if (gdrive) gdrive.value = res.settings.gdrive_accounting_folder || '';
    setPushState(!!res.settings.pushover_app_token_set);
  }).catch(function () {});

  function bindSave(form, fields, msgId) {
    if (!form) return;
    var msg = document.getElementById(msgId);
    form.addEventListener('submit', function (e) {
      e.preventDefault();
      var body = new URLSearchParams();
      fields.forEach(function (f) { var el = document.getElementById(f.id); if (el) body.append(f.name, el.value.trim()); });
      if (msg) { msg.textContent = 'Speichern …'; msg.className = 'small text-muted'; }
      fetch(API, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, body: body.toString() })
        .then(function (r) { return r.json(); })
        .then(function (res) {
          if (res && res.ok) {
            if (msg) { msg.textContent = 'Gespeichert.'; msg.className = 'small text-success'; }
            if (res.settings) setPushState(!!res.settings.pushover_app_token_set);
            if (pushApp && form.contains(pushApp)) pushApp.value = ''; // Token-Feld nach Speichern leeren
          } else {
            if (msg) { msg.textContent = 'Speichern fehlgeschlagen.'; msg.className = 'small text-danger'; }
          }
        })
        .catch(function () { if (msg) { msg.textContent = 'Speichern fehlgeschlagen.'; msg.className = 'small text-danger'; } });
    });
  }
  bindSave(accForm, [{ id: 'set-gdrive-folder', name: 'gdrive_accounting_folder' }], 'set-accounting-msg');
  bindSave(ovForm,  [{ id: 'set-pushover-app', name: 'pushover_app_token' }], 'set-overview-msg');
});
<?php echo '</script'; ?>
>

<?php echo '<script'; ?>
 src="<?php echo @constant('SITE_URL');?>
/assets/js/users.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/users.js'));?>
"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
 src="<?php echo @constant('SITE_URL');?>
/assets/js/company.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/company.js'));?>
"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
 src="<?php echo @constant('SITE_URL');?>
/assets/js/sources.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/sources.js'));?>
"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
 src="<?php echo @constant('SITE_URL');?>
/assets/js/mail-settings.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/mail-settings.js'));?>
"><?php echo '</script'; ?>
>
<?php echo '<script'; ?>
 src="<?php echo @constant('SITE_URL');?>
/assets/js/apikeys.js?v=<?php echo filemtime((@constant('PATH_SYSTEM')).('/assets/js/apikeys.js'));?>
"><?php echo '</script'; ?>
>
<?php }
}

Youez - 2016 - github.com/yon3zu
LinuXploit