Füge Import- und Exportfunktionen für Gottesdienste hinzu: Implementiere die Möglichkeit, Gottesdienste aus .doc und .docx-Dateien zu importieren und in verschiedenen Formaten zu exportieren. Verbessere die Benutzeroberfläche des Worship Management-Formulars mit neuen Schaltflächen für Import und Export sowie Dialogen zur Bearbeitung importierter Daten. Aktualisiere die Datenbankstruktur, um neue Felder für die Genehmigung und das Orgelspiel zu unterstützen.
This commit is contained in:
66
server.js
66
server.js
@@ -2,8 +2,14 @@ const express = require('express');
|
||||
const bodyParser = require('body-parser');
|
||||
const cors = require('cors');
|
||||
const https = require('https');
|
||||
const http = require('http');
|
||||
const fs = require('fs');
|
||||
require('dotenv').config();
|
||||
|
||||
// Erhöhe maxHttpHeaderSize für Node.js (Standard ist 8KB, erhöhe auf 16KB)
|
||||
if (http.maxHeaderSize !== undefined) {
|
||||
http.maxHeaderSize = 16384;
|
||||
}
|
||||
const sequelize = require('./config/database');
|
||||
const authRouter = require('./routes/auth');
|
||||
const eventTypesRouter = require('./routes/eventtypes');
|
||||
@@ -31,9 +37,50 @@ const allowedOrigins = (process.env.ALLOWED_ORIGINS || '')
|
||||
|
||||
app.use(cors({
|
||||
origin: (origin, callback) => {
|
||||
if (!origin) return callback(null, true); // z.B. Healthchecks/curl/Server-zu-Server
|
||||
if (allowedOrigins.length === 0) return callback(null, true); // Fallback: alles erlauben
|
||||
if (allowedOrigins.includes(origin)) return callback(null, true);
|
||||
if (!origin) {
|
||||
return callback(null, true); // z.B. Healthchecks/curl/Server-zu-Server
|
||||
}
|
||||
|
||||
if (allowedOrigins.length === 0) {
|
||||
return callback(null, true); // Fallback: alles erlauben
|
||||
}
|
||||
|
||||
// Prüfe exakte Übereinstimmung
|
||||
if (allowedOrigins.includes(origin)) {
|
||||
return callback(null, true);
|
||||
}
|
||||
|
||||
// Für Entwicklung: Erlaube localhost und torstens auf jedem Port
|
||||
try {
|
||||
const originUrl = new URL(origin);
|
||||
const hostname = originUrl.hostname.toLowerCase();
|
||||
const isLocalhost = hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1';
|
||||
const isTorstens = hostname === 'torstens' || hostname.includes('torstens');
|
||||
|
||||
if (isLocalhost || isTorstens) {
|
||||
return callback(null, true);
|
||||
}
|
||||
} catch (e) {
|
||||
// Falls URL-Parsing fehlschlägt, prüfe mit Regex
|
||||
const isLocalhost = /^https?:\/\/(localhost|127\.0\.0\.1|::1)(:\d+)?$/.test(origin);
|
||||
const isTorstens = /^https?:\/\/torstens(:\d+)?/.test(origin);
|
||||
|
||||
if (isLocalhost || isTorstens) {
|
||||
return callback(null, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Prüfe auch ohne Port (für Flexibilität)
|
||||
const originWithoutPort = origin.replace(/:\d+$/, '');
|
||||
const allowedWithoutPort = allowedOrigins.some(allowed => {
|
||||
const allowedWithoutPort = allowed.replace(/:\d+$/, '');
|
||||
return originWithoutPort === allowedWithoutPort;
|
||||
});
|
||||
|
||||
if (allowedWithoutPort) {
|
||||
return callback(null, true);
|
||||
}
|
||||
|
||||
return callback(new Error('Not allowed by CORS'), false);
|
||||
},
|
||||
credentials: true,
|
||||
@@ -42,7 +89,14 @@ app.use(cors({
|
||||
}));
|
||||
app.options('*', cors());
|
||||
|
||||
app.use(bodyParser.json());
|
||||
// Erhöhe Header-Limits für große Requests
|
||||
app.use(bodyParser.json({ limit: '50mb' }));
|
||||
app.use(bodyParser.urlencoded({ extended: true, limit: '50mb' }));
|
||||
|
||||
// Erhöhe maxHttpHeaderSize (Node.js 18.3.0+)
|
||||
if (process.versions.node.split('.')[0] >= 18) {
|
||||
require('http').maxHeaderSize = 16384; // 16KB (Standard ist 8KB)
|
||||
}
|
||||
|
||||
app.use('/api/auth', authRouter);
|
||||
app.use('/api/event-types', eventTypesRouter);
|
||||
@@ -69,7 +123,7 @@ sequelize.sync().then(() => {
|
||||
/* https.createServer(options, app).listen(PORT, () => {
|
||||
console.log(`Server läuft auf Port ${PORT}`);
|
||||
});*/
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server läuft auf Port ${PORT}`);
|
||||
app.listen(PORT, '0.0.0.0', () => {
|
||||
console.log(`Server läuft auf Port ${PORT} (IPv4 und IPv6)`);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user