require('dotenv').config(); const express = require('express'); const path = require('path'); const fs = require('fs'); const config = require('./api_v1/config'); const { jwtMiddleware } = require('./middleware/jwt'); const staticMiddleware = require('./middleware/static'); // removed old hls middleware // const hlsMiddleware = require('./middleware/hls'); 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 faceReviewRouter = require('./routes/faceReview'); // nuovo: router HLS che sta in routes/hls.js const hlsRouter = require('./routes/hls'); const server = express(); // Statici pubblici (mantieni il tuo middleware statico) server.use(staticMiddleware); // Body parser (deve essere prima delle route che leggono JSON) server.use(express.json()); server.use(express.urlencoded({ extended: true })); // 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 }); // Serve i file HLS generati (master.m3u8 e .ts) pubblicamente su /hls server.use('/hls', express.static(HLS_BASE)); // 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 (mantieni la tua regex) server.use( /^(?!\/auth)(?!\/share)(?!\/login)(?!\/login.html)(?!\/css)(?!\/js)(?!\/img)(?!\/fonts)(?!\/favicon).*$/, jwtMiddleware ); // Monta il router HLS dopo il jwtMiddleware in modo che le API siano protette // GET statici /hls/ sono giĆ  serviti pubblicamente dalla express.static sopra server.use('/hls', hlsRouter); // Rotte protette server.use('/share', shareRouter); server.use('/users', usersRouter); server.use('/face-review', faceReviewRouter); 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}`); });