finalize
This commit is contained in:
parent
d9c79b3ddc
commit
a7dc688753
1
.astro/data-store.json
Normal file
1
.astro/data-store.json
Normal file
@ -0,0 +1 @@
|
||||
[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.11.1","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false},\"legacy\":{\"collections\":false}}"]
|
1
.astro/types.d.ts
vendored
1
.astro/types.d.ts
vendored
@ -1,2 +1 @@
|
||||
/// <reference types="astro/client" />
|
||||
/// <reference path="content.d.ts" />
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# DFIR Tools Hub - Node.js Deployment Script
|
||||
# CC24-Hub - Node.js Deployment Script
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -7,15 +7,15 @@
|
||||
<div class="footer-content">
|
||||
<div>
|
||||
<p class="text-muted" style="margin: 0;">
|
||||
© 2025 DFIR Tools Hub - Academic Research Project
|
||||
© 2025 CC24-Hub - Academic Research Project
|
||||
</p>
|
||||
</div>
|
||||
<div style="display: flex; gap: 2rem; align-items: center;">
|
||||
<a href="https://github.com/your-org/dfir-tools-hub" target="_blank" rel="noopener noreferrer">
|
||||
<a href="https://git.cc24.dev/mstoeck3/cc24-hub" target="_blank" rel="noopener noreferrer">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
||||
</svg>
|
||||
GitHub Repository
|
||||
Gitea-Repo
|
||||
</a>
|
||||
<a href="/impressum">Impressum</a>
|
||||
</div>
|
||||
|
@ -8,8 +8,8 @@ const currentPath = Astro.url.pathname;
|
||||
<div class="container">
|
||||
<div class="nav-wrapper">
|
||||
<div class="nav-brand">
|
||||
<img src="/logo-placeholder.svg" alt="DFIR Tools Hub" class="nav-logo" />
|
||||
<span style="font-weight: 600; font-size: 1.125rem;">DFIR Tools Hub</span>
|
||||
<img src="/logo-placeholder.svg" alt="CC24-Hub" class="nav-logo" />
|
||||
<span style="font-weight: 600; font-size: 1.125rem;">CC24-Hub</span>
|
||||
</div>
|
||||
|
||||
<ul class="nav-links">
|
||||
|
@ -85,16 +85,16 @@ const cardClass = hasValidProjectUrl ? 'card card-hosted' : (tool.license !== 'P
|
||||
<!-- Two buttons for tools we're hosting -->
|
||||
<div style="display: flex; gap: 0.5rem;">
|
||||
<a href={tool.url} target="_blank" rel="noopener noreferrer" class="btn btn-secondary" style="flex: 1;">
|
||||
Project Page
|
||||
Software-Homepage
|
||||
</a>
|
||||
<a href={tool.projectUrl} target="_blank" rel="noopener noreferrer" class="btn btn-primary" style="flex: 1;">
|
||||
Access Service
|
||||
Zugreifen
|
||||
</a>
|
||||
</div>
|
||||
) : (
|
||||
<!-- Single button for tools we're not hosting -->
|
||||
<a href={tool.url} target="_blank" rel="noopener noreferrer" class="btn btn-primary" style="width: 100%;">
|
||||
Visit Website
|
||||
Software-Homepage
|
||||
</a>
|
||||
)}
|
||||
</div>
|
@ -195,17 +195,17 @@ domains.forEach((domain: any) => {
|
||||
// Two buttons for tools we're hosting
|
||||
linksContainer.innerHTML = `
|
||||
<a href="${tool.url}" target="_blank" rel="noopener noreferrer" class="btn btn-secondary" style="flex: 1;">
|
||||
Project Page
|
||||
Software-Homepage
|
||||
</a>
|
||||
<a href="${tool.projectUrl}" target="_blank" rel="noopener noreferrer" class="btn btn-primary" style="flex: 1;">
|
||||
Access Service
|
||||
Zugreifen
|
||||
</a>
|
||||
`;
|
||||
} else {
|
||||
// Single button for tools we're not hosting
|
||||
linksContainer.innerHTML = `
|
||||
<a href="${tool.url}" target="_blank" rel="noopener noreferrer" class="btn btn-primary" style="width: 100%;">
|
||||
Visit Website
|
||||
Software-Homepage
|
||||
</a>
|
||||
`;
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ tools:
|
||||
projectUrl: "https://misp.cc24.dev"
|
||||
license: "AGPL-3.0"
|
||||
tags: ["threat-intelligence", "ioc", "sharing", "automation"]
|
||||
statusUrl: "https://uptime.example.lab/api/badge/2/status"
|
||||
statusUrl: "https://status.mikoshi.de/api/badge/34/status"
|
||||
|
||||
- name: "Timesketch"
|
||||
description: "Kollaborative forensische Timeline-Analyse-Plattform für chronologische Ereigniskorrelation und -visualisierung"
|
||||
@ -246,10 +246,10 @@ tools:
|
||||
skillLevel: "advanced"
|
||||
accessType: "self-hosted"
|
||||
url: "https://www.velociraptor.app/"
|
||||
projectUrl: "https://velociraptor.cc24.dev"
|
||||
projectUrl: "https://raptor.cc24.dev"
|
||||
license: "Apache 2.0"
|
||||
tags: ["hunting", "endpoint", "monitoring", "vql"]
|
||||
statusUrl: "https://uptime.example.lab/api/badge/4/status"
|
||||
statusUrl: "https://status.mikoshi.de/api/badge/33/status"
|
||||
|
||||
- name: "Arkime"
|
||||
description: "Skalierbare Full-Packet-Capture- und Analyseplattform für große Netzwerkumgebungen"
|
||||
@ -447,10 +447,10 @@ tools:
|
||||
skillLevel: "intermediate"
|
||||
accessType: "self-hosted"
|
||||
url: "https://neo4j.com/"
|
||||
projectUrl: "https://neo4j.cc24.dev"
|
||||
projectUrl: "https://graph.cc24.dev"
|
||||
license: "GPL-3.0 / Commercial"
|
||||
tags: ["graph", "visualization", "relationships", "queries"]
|
||||
statusUrl: "https://uptime.example.lab/api/badge/5/status"
|
||||
statusUrl: "https://status.mikoshi.de/api/badge/32/status"
|
||||
|
||||
# Collaboration Tools - Domain-agnostic
|
||||
- name: "Nextcloud"
|
||||
@ -465,7 +465,7 @@ tools:
|
||||
projectUrl: "https://cloud.cc24.dev"
|
||||
license: "AGPL-3.0"
|
||||
tags: ["file-sharing", "collaboration", "encryption", "privacy"]
|
||||
statusUrl: "https://uptime.example.lab/api/badge/10/status"
|
||||
statusUrl: "https://status.mikoshi.de/api/badge/11/status"
|
||||
|
||||
- name: "Gitea"
|
||||
description: "Leichtgewichtiger Self-Hosted Git-Service für Code-Kollaboration, Versionskontrolle und Dokumentation"
|
||||
@ -475,11 +475,11 @@ tools:
|
||||
platforms: ["Web"]
|
||||
skillLevel: "intermediate"
|
||||
accessType: "self-hosted"
|
||||
url: "https://git.example.lab"
|
||||
projectUrl: "https://gitea.cc24.dev"
|
||||
url: "https://gitea.org.lab"
|
||||
projectUrl: "https://git.cc24.dev"
|
||||
license: "MIT"
|
||||
tags: ["version-control", "git", "documentation", "lightweight"]
|
||||
statusUrl: "https://uptime.example.lab/api/badge/11/status"
|
||||
statusUrl: "https://status.mikoshi.de/api/badge/18/status"
|
||||
|
||||
# Domain definitions for reference
|
||||
domains:
|
||||
|
@ -8,7 +8,7 @@ export interface Props {
|
||||
description?: string;
|
||||
}
|
||||
|
||||
const { title, description = 'DFIR Tools Hub - A comprehensive directory of digital forensics and incident response tools' } = Astro.props;
|
||||
const { title, description = 'CC24-Hub - A comprehensive directory of digital forensics and incident response tools' } = Astro.props;
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
@ -17,7 +17,7 @@ const { title, description = 'DFIR Tools Hub - A comprehensive directory of digi
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content={description}>
|
||||
<title>{title} - DFIR Tools Hub</title>
|
||||
<title>{title} - CC24-Hub</title>
|
||||
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
||||
<script src="/src/scripts/theme.js"></script>
|
||||
<script>
|
||||
|
@ -2,51 +2,225 @@
|
||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||
---
|
||||
|
||||
<BaseLayout title="About">
|
||||
<section style="padding: 2rem 0; max-width: 800px; margin: 0 auto;">
|
||||
<h1 style="text-align: center; margin-bottom: 2rem;">About DFIR Tools Hub</h1>
|
||||
|
||||
<div class="card" style="margin-bottom: 2rem;">
|
||||
<h2>Project Overview</h2>
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
||||
<BaseLayout title="Über das Projekt" description="CC24-Hub - Ein akademisches Forschungsprojekt für die Seminargruppe CC24-w1">
|
||||
<section style="padding: 2rem 0; max-width: 900px; margin: 0 auto;">
|
||||
<!-- Hero Section -->
|
||||
<div style="text-align: center; margin-bottom: 3rem; padding: 2rem; background: linear-gradient(135deg, var(--color-bg-secondary) 0%, var(--color-bg-tertiary) 100%); border-radius: 1rem; border: 1px solid var(--color-border);">
|
||||
<h1 style="margin-bottom: 1rem; font-size: 2.5rem; color: var(--color-primary);">CC24-Hub</h1>
|
||||
<p style="font-size: 1.25rem; color: var(--color-text-secondary); margin-bottom: 0.5rem;">
|
||||
Ein bescheidenes Forschungsprojekt
|
||||
</p>
|
||||
<p>
|
||||
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
<p style="font-size: 1rem; color: var(--color-text-secondary);">
|
||||
Seminargruppe CC24-w1
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-bottom: 2rem;">
|
||||
<h2>DFIR Methodology</h2>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit:</p>
|
||||
<ul style="margin-left: 1.5rem; margin-bottom: 1rem;">
|
||||
<li><strong>Datensammlung:</strong> Lorem ipsum dolor sit amet</li>
|
||||
<li><strong>Auswertung:</strong> Consectetur adipiscing elit</li>
|
||||
<li><strong>Analyse:</strong> Sed do eiusmod tempor incididunt</li>
|
||||
<li><strong>Bericht & Präsentation:</strong> Ut labore et dolore magna aliqua</li>
|
||||
</ul>
|
||||
|
||||
<!-- Project Goal -->
|
||||
<div class="card" style="margin-bottom: 2rem; border-left: 4px solid var(--color-primary);">
|
||||
<div style="display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem;">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--color-primary)" stroke-width="2">
|
||||
<path d="M9 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2h-4"/>
|
||||
<path d="M9 11V7a3 3 0 0 1 6 0v4"/>
|
||||
</svg>
|
||||
<h2 style="margin: 0; color: var(--color-primary);">Das Ziel</h2>
|
||||
</div>
|
||||
<p style="margin-bottom: 1rem; line-height: 1.7;">
|
||||
Diese Seite soll euch, meinen Kommilitonen der Seminargruppe CC24-w1, eine <strong>einfache und übersichtliche Orientierung</strong>
|
||||
bieten: Welches Werkzeug eignet sich für welchen Zweck in der digitalen Forensik?
|
||||
</p>
|
||||
<p style="margin-bottom: 1rem; line-height: 1.7;">
|
||||
Ich stelle euch dafür eine <strong>vollständige Infrastruktur</strong> zur Verfügung, mit der ihr spezialisierte
|
||||
Forensik-Software direkt einsetzen und erforschen könnt – sei es für <em>Bildungszwecke</em> oder im
|
||||
<em>begrenzten Produktiveinsatz</em>.
|
||||
</p>
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1rem; border-radius: 0.5rem; margin-top: 1rem;">
|
||||
<p style="margin: 0; font-size: 0.875rem; color: var(--color-text-secondary);">
|
||||
<strong>💡 Praktischer Zugang:</strong> Die meisten Dienste sind bequem über das SSO der CC24-Cloud zugänglich,
|
||||
mit nur wenigen Ausnahmen.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-bottom: 2rem;">
|
||||
<h2>Forensic Domains</h2>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit:</p>
|
||||
<ul style="margin-left: 1.5rem;">
|
||||
<li>Storage & File System Artifacts</li>
|
||||
<li>Memory & Runtime Artifacts</li>
|
||||
<li>Network & Communication Artifacts</li>
|
||||
<li>Application & Code Artifacts</li>
|
||||
<li>Multimedia & Content Artifacts</li>
|
||||
<li>Transaction & Financial Artifacts</li>
|
||||
<li>Platform & Infrastructure Artifacts</li>
|
||||
</ul>
|
||||
|
||||
<!-- Methodology -->
|
||||
<div class="card" style="margin-bottom: 2rem; border-left: 4px solid var(--color-accent);">
|
||||
<div style="display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem;">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--color-accent)" stroke-width="2">
|
||||
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
|
||||
<polyline points="9,22 9,12 15,12 15,22"/>
|
||||
</svg>
|
||||
<h2 style="margin: 0; color: var(--color-accent);">Wissenschaftliche Grundlage</h2>
|
||||
</div>
|
||||
<p style="margin-bottom: 1rem; line-height: 1.7;">
|
||||
Bei der vorgestellten Software handelt es sich um eine <strong>kuratierte Auswahl</strong> von Anwendungen,
|
||||
vor allem aus dem Bereich der Open-Source-Software.
|
||||
</p>
|
||||
<p style="margin-bottom: 1rem; line-height: 1.7;">
|
||||
Das zugrunde liegende Modell folgt dem bewährten <strong>NIST-Framework</strong> nach Kent, Chevalier, Grance und Dang
|
||||
(NIST SP 800-86), das ich wegen seiner <em>Einfachheit</em> und <em>praktischen Adaptierbarkeit</em> schätze:
|
||||
</p>
|
||||
<div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; margin: 1.5rem 0; text-align: center;">
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1rem; border-radius: 0.5rem; border: 2px solid var(--color-accent);">
|
||||
<strong style="color: var(--color-accent);">Datensammlung</strong>
|
||||
</div>
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1rem; border-radius: 0.5rem; border: 2px solid var(--color-accent);">
|
||||
<strong style="color: var(--color-accent);">Auswertung</strong>
|
||||
</div>
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1rem; border-radius: 0.5rem; border: 2px solid var(--color-accent);">
|
||||
<strong style="color: var(--color-accent);">Analyse</strong>
|
||||
</div>
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1rem; border-radius: 0.5rem; border: 2px solid var(--color-accent);">
|
||||
<strong style="color: var(--color-accent);">Bericht</strong>
|
||||
</div>
|
||||
</div>
|
||||
<p style="margin: 0; font-size: 0.875rem; color: var(--color-text-secondary);">
|
||||
Diese Prozessphasen werden in der <strong>Matrix-Ansicht</strong> auf der Startseite mit forensischen Wissensdomänen verknüpft.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>Contributing</h2>
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
Visit our <a href="https://github.com/your-org/dfir-tools-hub" target="_blank" rel="noopener noreferrer">GitHub repository</a>
|
||||
to contribute or report issues.
|
||||
|
||||
<!-- Open Source Focus -->
|
||||
<div class="card" style="margin-bottom: 2rem; border-left: 4px solid var(--color-warning);">
|
||||
<div style="display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem;">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--color-warning)" stroke-width="2">
|
||||
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
||||
<path d="M9 12l2 2 4-4"/>
|
||||
</svg>
|
||||
<h2 style="margin: 0; color: var(--color-warning);">Weshalb der Fokus auf Open Source?</h2>
|
||||
</div>
|
||||
|
||||
<!-- Hypothesis Box -->
|
||||
<div style="background: linear-gradient(135deg, var(--color-warning) 0%, var(--color-accent) 100%); color: white; padding: 1.5rem; border-radius: 0.75rem; margin-bottom: 1.5rem;">
|
||||
<h3 style="margin: 0 0 1rem 0; font-size: 1.125rem;">💡 Zentrale Hypothese</h3>
|
||||
<p style="margin: 0; line-height: 1.6; font-style: italic;">
|
||||
"Die IT-Forensik verlangt nach der Anwendung von wissenschaftlichen Methoden und Objektivität.
|
||||
Die wissenschaftliche Methode verlangt einen transparenten Untersuchungsprozess, der in der Hauptverhandlung
|
||||
bzw. dem Auftraggeber gegenüber stets nachvollziehbar und erklärbar sein muss.
|
||||
<strong>Dieses Ziel ist mit proprietärer Software nicht zu erreichen</strong>, da der Quellcode nicht offen einsehbar ist."
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h3 style="margin-bottom: 1rem; color: var(--color-warning);">Wissenschaftliche Argumente für Open Source:</h3>
|
||||
<div style="display: grid; gap: 1rem;">
|
||||
<div style="display: flex; gap: 0.75rem; align-items: start;">
|
||||
<span style="background-color: var(--color-accent); color: white; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 0.75rem; flex-shrink: 0;">1</span>
|
||||
<div>
|
||||
<strong>Code-Transparenz und Erklärbarkeit</strong><br>
|
||||
<span class="text-muted">Vollständige Nachvollziehbarkeit aller forensischen Prozesse</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; gap: 0.75rem; align-items: start;">
|
||||
<span style="background-color: var(--color-accent); color: white; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 0.75rem; flex-shrink: 0;">2</span>
|
||||
<div>
|
||||
<strong>Falsifizierbarkeit</strong><br>
|
||||
<span class="text-muted">Ausschluss verdeckter Einflussnahmen auf Code-Ebene</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; gap: 0.75rem; align-items: start;">
|
||||
<span style="background-color: var(--color-accent); color: white; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 0.75rem; flex-shrink: 0;">3</span>
|
||||
<div>
|
||||
<strong>Datenschutztransparenz</strong><br>
|
||||
<span class="text-muted">Vollständige Kenntnis der Datenverarbeitung durch Quelltexteinsicht</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; gap: 0.75rem; align-items: start;">
|
||||
<span style="background-color: var(--color-accent); color: white; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 0.75rem; flex-shrink: 0;">4</span>
|
||||
<div>
|
||||
<strong>Kosteneffizienz & Gemeinschaftsbeitrag</strong><br>
|
||||
<span class="text-muted">Wirtschaftliche Vorteile und Unterstützung der wissenschaftlichen Gemeinschaft</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Support Section -->
|
||||
<div class="card" style="margin-bottom: 2rem; border-left: 4px solid var(--color-primary);">
|
||||
<div style="display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem;">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--color-primary)" stroke-width="2">
|
||||
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
||||
</svg>
|
||||
<h2 style="margin: 0; color: var(--color-primary);">Unterstützung und Kontakt</h2>
|
||||
</div>
|
||||
<p style="margin-bottom: 1rem; line-height: 1.7;">
|
||||
Falls eine Anwendung nicht wie vorgesehen funktioniert, ihr Unterstützung braucht, der Speicherplatz ausgeht
|
||||
oder sonstige Probleme auftreten: <strong>Schreibt mir einfach auf Signal!</strong>
|
||||
</p>
|
||||
|
||||
<!-- Special Note Box -->
|
||||
<div style="background-color: var(--color-warning); color: white; padding: 1.25rem; border-radius: 0.5rem; margin-top: 1.5rem;">
|
||||
<h4 style="margin: 0 0 0.75rem 0; display: flex; align-items: center; gap: 0.5rem;">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<circle cx="12" cy="12" r="10"/>
|
||||
<line x1="12" y1="8" x2="12" y2="12"/>
|
||||
<line x1="12" y1="16" x2="12.01" y2="16"/>
|
||||
</svg>
|
||||
Besonderer Hinweis zu Neo4j
|
||||
</h4>
|
||||
<p style="margin: 0; line-height: 1.6;">
|
||||
<strong>Neo4j</strong> unter <a href="https://graph.cc24.dev" style="color: white; text-decoration: underline;">https://graph.cc24.dev</a>
|
||||
liegt nur in einer Community-Edition vor, die lediglich einen einzelnen Account zulässt.
|
||||
<strong>Wir teilen uns daher alle zusammen den Account und die Datenbank.</strong><br>
|
||||
Zugangsdaten gibt es per Signal-Nachricht.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Contributing Section -->
|
||||
<div class="card" style="margin-bottom: 2rem; border-left: 4px solid var(--color-accent);">
|
||||
<div style="display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem;">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--color-accent)" stroke-width="2">
|
||||
<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
|
||||
<circle cx="8.5" cy="7" r="4"/>
|
||||
<line x1="20" y1="8" x2="20" y2="14"/>
|
||||
<line x1="23" y1="11" x2="17" y2="11"/>
|
||||
</svg>
|
||||
<h2 style="margin: 0; color: var(--color-accent);">Mitmachen und Beitragen</h2>
|
||||
</div>
|
||||
|
||||
<div style="display: grid; gap: 1.25rem;">
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1.25rem; border-radius: 0.5rem;">
|
||||
<h4 style="margin: 0 0 0.5rem 0; color: var(--color-accent);">🔍 Tool-Vorschläge</h4>
|
||||
<p style="margin: 0;">
|
||||
Ich suche stets nach Ergänzungen für die Liste. Falls euch interessante Tools einfallen –
|
||||
schreibt mir gerne auf Signal!
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1.25rem; border-radius: 0.5rem;">
|
||||
<h4 style="margin: 0 0 0.5rem 0; color: var(--color-accent);">🔧 Korrekturen & Updates</h4>
|
||||
<p style="margin: 0;">
|
||||
Sollte eine Anwendung nicht mehr aktuell, veraltet oder falsch repräsentiert sein,
|
||||
gebt mir gerne Bescheid.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1.25rem; border-radius: 0.5rem;">
|
||||
<h4 style="margin: 0 0 0.5rem 0; color: var(--color-accent);">💻 Code-Beiträge</h4>
|
||||
<p style="margin-bottom: 0.75rem;">
|
||||
Ihr könnt auch direkt am Sourcecode mitarbeiten:
|
||||
</p>
|
||||
<a href="https://git.cc24.dev/mstoeck3/cc24-hub" target="_blank" rel="noopener noreferrer"
|
||||
style="display: inline-flex; align-items: center; gap: 0.5rem; color: var(--color-accent); font-weight: 500;">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
||||
</svg>
|
||||
Git-Repository besuchen
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div style="background-color: var(--color-bg-secondary); padding: 1.25rem; border-radius: 0.5rem;">
|
||||
<h4 style="margin: 0 0 0.5rem 0; color: var(--color-accent);">⚡ Unterstützung</h4>
|
||||
<p style="margin: 0;">
|
||||
Kleine Spenden zur Infrastruktur-Finanzierung nehme ich auch gerne an, wenn es sein muss.
|
||||
Fragt einfach nach der Lightning-Adresse oder BTC-Adresse!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Note -->
|
||||
<div style="text-align: center; padding: 2rem; background-color: var(--color-bg-secondary); border-radius: 0.75rem; border: 1px solid var(--color-border);">
|
||||
<p style="margin: 0; color: var(--color-text-secondary); font-size: 0.875rem;">
|
||||
<strong>Akademisches Projekt</strong> | Seminargruppe CC24-w1 |
|
||||
Alle Tools und Dienste dienen ausschließlich Bildungs- und Forschungszwecken
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -156,10 +156,10 @@ function createToolCard(tool) {
|
||||
buttonHTML = `
|
||||
<div style="display: flex; gap: 0.5rem;">
|
||||
<a href="${tool.url}" target="_blank" rel="noopener noreferrer" class="btn btn-secondary" style="flex: 1;">
|
||||
Project Page
|
||||
Software-Homepage
|
||||
</a>
|
||||
<a href="${tool.projectUrl}" target="_blank" rel="noopener noreferrer" class="btn btn-primary" style="flex: 1;">
|
||||
Access Service
|
||||
Zugreifen
|
||||
</a>
|
||||
</div>
|
||||
`;
|
||||
@ -167,7 +167,7 @@ function createToolCard(tool) {
|
||||
// Single button for tools we're not hosting
|
||||
buttonHTML = `
|
||||
<a href="${tool.url}" target="_blank" rel="noopener noreferrer" class="btn btn-primary" style="width: 100%;">
|
||||
Visit Website
|
||||
Software-Homepage
|
||||
</a>
|
||||
`;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ const hostedServices = data.tools.filter((tool: any) => {
|
||||
<section style="padding: 2rem 0;">
|
||||
<h1 style="text-align: center; margin-bottom: 1rem;">Service Status</h1>
|
||||
<p class="text-muted" style="text-align: center; max-width: 600px; margin: 0 auto 3rem;">
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Real-time monitoring of our self-hosted DFIR services.
|
||||
Live-Monitoring zum Onlinestatus der Dienste.
|
||||
</p>
|
||||
|
||||
<!-- Service Status Grid -->
|
||||
@ -40,7 +40,7 @@ const hostedServices = data.tools.filter((tool: any) => {
|
||||
{service.description}
|
||||
</p>
|
||||
<a href={service.projectUrl} target="_blank" rel="noopener noreferrer" class="btn btn-secondary">
|
||||
Access Service →
|
||||
Zugreifen →
|
||||
</a>
|
||||
</div>
|
||||
))}
|
||||
@ -49,7 +49,7 @@ const hostedServices = data.tools.filter((tool: any) => {
|
||||
<!-- Uptime Kuma Embed -->
|
||||
<div class="card" style="padding: 0; overflow: hidden;">
|
||||
<iframe
|
||||
src="https://uptime.example.lab/status/lab-services"
|
||||
src="https://status.mikoshi.de/status/cc24-hub?embed=true"
|
||||
style="width: 100%; height: 600px; border: none;"
|
||||
title="Uptime Kuma Status Page"
|
||||
></iframe>
|
||||
@ -58,33 +58,31 @@ const hostedServices = data.tools.filter((tool: any) => {
|
||||
</BaseLayout>
|
||||
|
||||
<script define:vars={{ hostedServices }}>
|
||||
// Fetch status for each service
|
||||
document.addEventListener('DOMContentLoaded', async () => {
|
||||
for (const service of hostedServices) {
|
||||
if (service.statusUrl) {
|
||||
try {
|
||||
// Fetch status badge/API endpoint
|
||||
const response = await fetch(service.statusUrl);
|
||||
const data = await response.json();
|
||||
|
||||
// Update status badge
|
||||
const statusElement = document.getElementById(`status-${service.name.toLowerCase().replace(/\s+/g, '-')}`);
|
||||
if (statusElement) {
|
||||
const isUp = data.status === 'up' || data.status === 1;
|
||||
statusElement.innerHTML = `
|
||||
<span class="badge ${isUp ? 'badge-success' : 'badge-error'}">
|
||||
${isUp ? 'Operational' : 'Down'}
|
||||
</span>
|
||||
`;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Failed to fetch status for ${service.name}:`, error);
|
||||
const statusElement = document.getElementById(`status-${service.name.toLowerCase().replace(/\s+/g, '-')}`);
|
||||
if (statusElement) {
|
||||
statusElement.innerHTML = '<span class="badge badge-warning">Unknown</span>';
|
||||
}
|
||||
}
|
||||
// Load status badges for each service
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
hostedServices.forEach(service => {
|
||||
const statusElement = document.getElementById(`status-${service.name.toLowerCase().replace(/\s+/g, '-')}`);
|
||||
|
||||
if (statusElement && service.statusUrl) {
|
||||
// Create image element
|
||||
const img = document.createElement('img');
|
||||
img.src = service.statusUrl;
|
||||
img.alt = `Status for ${service.name}`;
|
||||
img.style.height = '20px';
|
||||
img.style.verticalAlign = 'middle';
|
||||
|
||||
// Handle load error
|
||||
img.onerror = function() {
|
||||
statusElement.innerHTML = '<span class="badge badge-warning">Unknown</span>';
|
||||
};
|
||||
|
||||
// Replace loading badge with image
|
||||
statusElement.innerHTML = '';
|
||||
statusElement.appendChild(img);
|
||||
} else if (statusElement) {
|
||||
// No status URL available
|
||||
statusElement.innerHTML = '<span class="badge badge-warning">No Status</span>';
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
Reference in New Issue
Block a user