require('dotenv').config(); const fs = require('fs'); // nuovo const hlsRouter = require('./routes/hls'); // nuovo const express = require('express'); const path = require('path'); const config = require('./api_v1/config'); const { jwtMiddleware } = require('./middleware/jwt'); const staticMiddleware = require('./middleware/static'); const authRouter = require('./routes/auth'); const configRouter = require('./routes/config'); const scanRouter = require('./routes/scan'); const autoScanRouter = require('./routes/autoScan'); const shareRouter = require('./routes/share'); const photosRouter = require('./routes/photos'); const activitiesRouter = require('./routes/activities'); const scanActivitiesRouter = require('./routes/scanActivities'); const scanStatusRouter = require('./routes/scanStatus'); const usersRouter = require('./routes/users'); const server = express(); // Base directory per gli output HLS (puoi sovrascriverla con env HLS_BASE) const HLS_BASE = process.env.HLS_BASE || path.join(process.cwd(), 'hls_output'); fs.mkdirSync(HLS_BASE, { recursive: true }); // Statici pubblici server.use(staticMiddleware); // serve i file HLS generati (master.m3u8 e .ts) server.use('/hls', express.static(HLS_BASE)); // API per avviare / controllare transcodifiche (routes/hls.js) server.use('/hls', hlsRouter); // Body parser server.use(express.json()); server.use(express.urlencoded({ extended: true })); // Login pubblico server.get('/login', (req, res) => { res.sendFile(path.join(__dirname, 'public/login.html')); }); // Rotte pubbliche server.use('/auth', authRouter); server.use('/config', configRouter); //server.use('/share', shareRouter); // JWT per tutto il resto server.use( /^(?!\/auth)(?!\/share)(?!\/login)(?!\/login.html)(?!\/css)(?!\/js)(?!\/img)(?!\/fonts)(?!\/favicon).*$/, jwtMiddleware ); // Rotte protette server.use('/share', shareRouter); server.use('/users', usersRouter); server.use('/photos', photosRouter); server.use('/activities', activitiesRouter); server.use('/scan', scanRouter); server.use('/scanActivities', scanActivitiesRouter); server.use('/api_v1/auto_scan', autoScanRouter); server.use('/scanStatus', scanStatusRouter); // Home server.get('/', (req, res) => { res.sendFile(path.resolve('public/index.html')); }); server.listen(config.PORT, () => { console.log(`Server running on port ${config.PORT}`); });