Initial commit: IT Nexus Web-App

This commit is contained in:
2026-06-01 20:49:07 +02:00
commit 8023765e6c
387 changed files with 106900 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
const ExternalAlert = require('../models/ExternalAlert');
const Ticket = require('../models/Ticket');
const getAll = (req, res) => {
try {
const acknowledged = req.query.acknowledged !== undefined
? req.query.acknowledged === 'true'
: undefined;
const alerts = ExternalAlert.getAll({ acknowledged });
res.json({ status: 'success', data: alerts });
} catch (err) {
res.status(500).json({ status: 'error', message: err.message });
}
};
const acknowledge = (req, res) => {
try {
const alert = ExternalAlert.acknowledge(req.params.id);
if (!alert) return res.status(404).json({ status: 'error', message: 'Alert nicht gefunden' });
res.json({ status: 'success', data: alert });
} catch (err) {
res.status(500).json({ status: 'error', message: err.message });
}
};
const createTicket = (req, res) => {
try {
const alert = ExternalAlert.getById(req.params.id);
if (!alert) return res.status(404).json({ status: 'error', message: 'Alert nicht gefunden' });
const priorityMap = { CRIT: 'kritisch', WARN: 'hoch', OK: 'niedrig', UNKNOWN: 'mittel' };
const title = alert.device
? `[${alert.source?.toUpperCase()}] ${alert.device} ${alert.message || alert.state_transition}`.substring(0, 200)
: (alert.message || 'Monitoring Alert').substring(0, 200);
const description = [
alert.device ? `**Gerät:** ${alert.device}` : '',
alert.service ? `**Service:** ${alert.service}` : '',
alert.state_transition ? `**Status:** ${alert.state_transition}` : '',
alert.severity ? `**Severity:** ${alert.severity}` : '',
alert.message ? `\n**Meldung:** ${alert.message}` : '',
alert.customer ? `**Kunde:** ${alert.customer}` : '',
alert.monitored_by ? `**Überwacht von:** ${alert.monitored_by}` : '',
alert.state_time ? `**Zeitpunkt:** ${alert.state_time}` : '',
].filter(Boolean).join('\n');
const ticket = Ticket.create({
title,
description,
source: 'monitoring',
category: 'Netzwerk',
priority: priorityMap[alert.severity] || 'mittel',
status: 'offen',
});
ExternalAlert.setTicket(alert.id, ticket.id);
res.json({ status: 'success', data: { ticket, alert: ExternalAlert.getById(alert.id) } });
} catch (err) {
res.status(500).json({ status: 'error', message: err.message });
}
};
const remove = (req, res) => {
try {
ExternalAlert.delete(req.params.id);
res.json({ status: 'success' });
} catch (err) {
res.status(500).json({ status: 'error', message: err.message });
}
};
module.exports = { getAll, acknowledge, createTicket, remove };