Aufteilung in 2 Tabs
Zugriff auf ionos-Mongo
This commit is contained in:
54
server.js
54
server.js
@@ -4,13 +4,28 @@ import bcrypt from 'bcrypt';
|
||||
import { MongoClient, ObjectId } from 'mongodb';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const app = express();
|
||||
const PORT = process.env.PORT || 3000;
|
||||
const MONGO_URI = process.env.MONGO_URI || 'mongodb://localhost:27017';
|
||||
const MONGO_ROOT_USER = process.env.MONGO_ROOT_USER;
|
||||
const MONGO_ROOT_PASSWORD = process.env.MONGO_ROOT_PASSWORD;
|
||||
let MONGO_URI = process.env.MONGO_URI || 'mongodb://localhost:27017';
|
||||
|
||||
// If credentials are set, inject them into the URI
|
||||
if (MONGO_ROOT_USER && MONGO_ROOT_PASSWORD) {
|
||||
// Remove protocol and host from URI
|
||||
const uriParts = MONGO_URI.split('://');
|
||||
if (uriParts.length === 2) {
|
||||
const protocol = uriParts[0];
|
||||
const rest = uriParts[1];
|
||||
MONGO_URI = `${protocol}://${encodeURIComponent(MONGO_ROOT_USER)}:${encodeURIComponent(MONGO_ROOT_PASSWORD)}@${rest}`;
|
||||
}
|
||||
}
|
||||
const DB_NAME = process.env.DB_NAME || 'espdb';
|
||||
const SESSION_SECRET = process.env.SESSION_SECRET || 'supersecret';
|
||||
|
||||
@@ -44,8 +59,9 @@ await initMongo();
|
||||
|
||||
// Login-Middleware
|
||||
function requireLogin(req, res, next) {
|
||||
if (req.session.userId) return next();
|
||||
res.redirect('/login');
|
||||
// if (req.session.userId) return next();
|
||||
// res.redirect('/login');
|
||||
return next()
|
||||
}
|
||||
|
||||
// Auth-Routen
|
||||
@@ -197,36 +213,6 @@ function getAddress(sensorNumber) {
|
||||
const ADDRESS_SERVICE_URL = process.env.ADDRESS_SERVICE_URL
|
||||
|| 'https://noise.fuerst-stuttgart.de/srv/getaddress';
|
||||
|
||||
// kleine Fetch-Helferfunktion mit Timeout
|
||||
async function fetchWithTimeout(url, ms = 5000) {
|
||||
const ctrl = new AbortController();
|
||||
const id = setTimeout(() => ctrl.abort(), ms);
|
||||
try {
|
||||
const res = await fetch(url, { signal: ctrl.signal, headers: { 'Accept': 'application/json, text/plain;q=0.9, */*;q=0.8' } });
|
||||
return res;
|
||||
} finally {
|
||||
clearTimeout(id);
|
||||
}
|
||||
}
|
||||
|
||||
const normalizeAddressPayload = (contentType, payload) => {
|
||||
try {
|
||||
if (contentType.includes('application/json')) {
|
||||
const data = payload; // schon geparst
|
||||
if (typeof data === 'string') return data.trim();
|
||||
if (data?.address) return String(data.address).trim();
|
||||
if (data?.addr) return String(data.addr).trim();
|
||||
if (data?.result?.address) return String(data.result.address).trim();
|
||||
// Fallback: JSON zu String
|
||||
return JSON.stringify(data);
|
||||
} else {
|
||||
// Text-Antwort
|
||||
return String(payload).trim();
|
||||
}
|
||||
} catch {
|
||||
return '';
|
||||
}
|
||||
};
|
||||
|
||||
// /api/address/:sensorNumber – holt Adresse als String "Straße, PLZ Stadt"
|
||||
app.get('/api/address/:sensorNumber', requireLogin, async (req, res) => {
|
||||
@@ -235,7 +221,7 @@ app.get('/api/address/:sensorNumber', requireLogin, async (req, res) => {
|
||||
return res.status(400).json({ error: 'Ungültige Sensornummer' });
|
||||
}
|
||||
|
||||
const url = `https://noise.fuerst-stuttgart.de/srv/getaddress?sensorid=${encodeURIComponent(sensorNumber)}`;
|
||||
const url = ADDRESS_SERVICE_URL + `?sensorid=${encodeURIComponent(sensorNumber)}`;
|
||||
|
||||
try {
|
||||
const r = await fetch(url, { headers: { 'Accept': 'application/json' } });
|
||||
|
||||
Reference in New Issue
Block a user