OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

settings.php

7 KB
<?php $this->layout('layouts/admin', ['page_title' => $page_title, 'current_admin_page' => $current_admin_page]); ?>

<?php $counts = $counts ?? ['programme' => 0, 'installationen' => 0, 'geraete' => 0, 'system' => 0]; ?>

<div class="settings-page">

    <p class="text-muted" style="margin-bottom:1rem;">
        <?= $this->te('Das Software-Inventar erfasst nichts von selbst. Jede Quelle ist einzeln einzuschalten; solange keine eingeschaltet ist, wird kein Programm gelesen und keines gespeichert.') ?>
    </p>

    <form method="POST" action="/admin/software/settings">
        <input type="hidden" name="_csrf" value="<?= $this->e($this->csrf()) ?>">

        <!-- Quelle: Inventar-Agent -->
        <section class="settings-card">
            <div class="settings-card-header">
                <span class="settings-card-icon">&#128187;</span>
                <div>
                    <h2><?= $this->te('Über den Inventar-Agenten') ?></h2>
                    <p class="settings-card-desc">
                        <?= $this->te('Der PowerShell-Agent, der ohnehin Hardware meldet, liest zusätzlich die installierten Programme aus der Registry.') ?>
                    </p>
                </div>
            </div>
            <div class="settings-card-body">
                <div class="form-group" style="margin-bottom:0;">
                    <label class="settings-toggle" style="display:inline-flex;align-items:center;gap:.5rem;">
                        <input type="checkbox" name="software_collect_agent" value="1" <?= !empty($collect_agent) ? 'checked' : '' ?>>
                        <span><strong><?= $this->te('Programme über den Inventar-Agenten erfassen') ?></strong></span>
                    </label>
                    <small class="form-hint">
                        <?= $this->t('<strong>Nach dem Einschalten muss das Agent-Skript einmal neu heruntergeladen werden</strong> (<a href="/admin/inventory/sync">Inventar-Sync</a>) &ndash; erst das neue Skript sammelt Programme. Gelesen wird nur, was maschinenweit installiert ist; was einzelne Anmeldenamen für sich installiert haben, bleibt außen vor.') ?>
                    </small>
                </div>
            </div>
        </section>

        <!-- Quelle: Intune -->
        <section class="settings-card">
            <div class="settings-card-header">
                <span class="settings-card-icon">&#9729;</span>
                <div>
                    <h2><?= $this->te('Über den Intune-Abgleich') ?></h2>
                    <p class="settings-card-desc">
                        <?= $this->te('Intune führt je Gerät die erkannten Programme. Der bestehende Abgleich nimmt sie mit.') ?>
                    </p>
                </div>
            </div>
            <div class="settings-card-body">
                <div class="form-group" style="margin-bottom:0;">
                    <label class="settings-toggle" style="display:inline-flex;align-items:center;gap:.5rem;">
                        <input type="checkbox" name="software_collect_intune" value="1" <?= !empty($collect_intune) ? 'checked' : '' ?>>
                        <span><strong><?= $this->te('Programme über den Intune-Abgleich erfassen') ?></strong></span>
                    </label>
                    <small class="form-hint">
                        <?= $this->t('Kostet einen zusätzlichen Abruf je Gerät &ndash; bei großen Beständen verlängert das den Lauf. Intune meldet Name und Version; den Hersteller nur, wenn unter <a href="/admin/inventory/intune">Intune</a> die Beta-Schnittstelle eingeschaltet ist.') ?>
                        <?php if (empty($intune_configured)): ?>
                            <br><?= $this->t('<strong>Hinweis:</strong> Es ist noch keine Intune-Verbindung hinterlegt &ndash; der Schalter bleibt bis dahin wirkungslos.') ?>
                        <?php endif; ?>
                    </small>
                </div>
            </div>
        </section>

        <!-- Darstellung -->
        <section class="settings-card">
            <div class="settings-card-header">
                <span class="settings-card-icon">&#9881;</span>
                <div>
                    <h2><?= $this->te('Darstellung') ?></h2>
                    <p class="settings-card-desc"><?= $this->t('Was in der Liste unter <code>/software</code> erscheint.') ?></p>
                </div>
            </div>
            <div class="settings-card-body">
                <div class="form-group" style="margin-bottom:0;">
                    <label class="settings-toggle" style="display:inline-flex;align-items:center;gap:.5rem;">
                        <input type="checkbox" name="software_hide_system" value="1" <?= !empty($hide_system) ? 'checked' : '' ?>>
                        <span><strong><?= $this->te('Systembestandteile ausblenden') ?></strong></span>
                    </label>
                    <small class="form-hint">
                        <?= $this->te('Updates, Laufzeitumgebungen, Treiber und Sprachpakete machen den größten Teil der Einträge aus. Sie bleiben erfasst &ndash; gerade Laufzeitumgebungen sind für eine spätere Schwachstellenzuordnung interessant &ndash;, stehen in der Liste aber nicht im Weg. Ein einzelnes Programm lässt sich auf seiner Seite abweichend einstufen.') ?>
                    </small>
                </div>
            </div>
        </section>

        <div class="form-actions" style="display:flex;gap:.75rem;flex-wrap:wrap;">
            <button type="submit" class="btn btn-primary"><?= $this->te('Speichern') ?></button>
            <a href="/software" class="btn btn-default"><?= $this->te('Zum Inventar') ?></a>
        </div>
    </form>

    <!-- Eigenes Formular: das Leeren gehört nicht zum Speichern der Einstellungen -->
    <section class="settings-card">
        <div class="settings-card-header">
            <span class="settings-card-icon">&#128465;</span>
            <div>
                <h2><?= $this->te('Erfasste Daten') ?></h2>
                <p class="settings-card-desc">
                    <?= $this->te('{programme} Programm(e) auf {geraete} Gerät(en), {installationen} Installation(en) insgesamt.', ['programme' => (int)$counts['programme'], 'geraete' => (int)$counts['geraete'], 'installationen' => (int)$counts['installationen']]) ?>
                </p>
            </div>
        </div>
        <div class="settings-card-body">
            <form method="POST" action="/admin/software/purge"
                  onsubmit="return confirm('Alle erfassten Programme löschen? Eine noch eingeschaltete Quelle füllt die Liste beim nächsten Lauf erneut.');">
                <input type="hidden" name="_csrf" value="<?= $this->e($this->csrf()) ?>">
                <div class="form-group" style="margin-bottom:0;">
                    <button type="submit" class="btn btn-outline-danger">
                        <i class="fas fa-trash"></i> <?= $this->te('Inventar leeren') ?>
                    </button>
                    <small class="form-hint">
                        <?= $this->te('Gedacht für den Fall, dass die Erfassung wieder abgeschaltet wird: Das Abschalten allein lässt den bisherigen Bestand stehen. Der Vorgang steht im Audit-Log.') ?>
                    </small>
                </div>
            </form>
        </div>
    </section>
</div>