const express = require('express'); require('dotenv').config(); const ExifImage = require('exif').ExifImage; const app = express(); const fs = require('fs'); const path = require('path'); const port = process.env.PORT || 3000; const picsLocation = process.env.PICS_LOCATION || 'pics'; app.set('view engine', 'ejs'); app.use(express.static('src')); app.use(express.static(picsLocation)); app.get('/', (req, res) => { fs.readdir(picsLocation, (err, files) => { if (err) { console.log(err); res.status(500).send('Internal Server Error'); } else { console.log(files); var renderedHtml = ''; for (let i = 0; i < files.length; i++) { if (files[i].includes(".")) { continue; } else { renderedHtml += `${files[i]}
`; } } res.render('index', { links: renderedHtml }); } }); }); app.get('/:folder', (req, res) => { const folder = req.params.folder; fs.readdir(picsLocation + '/' + folder, (err, files) => { if (err) { console.log(err); res.status(500).send('Internal Server Error'); } else { console.log(files); var renderedHtml = ''; for (let i = 0; i < files.length; i++) { if (files[i].includes(".") == false) { continue; } else { renderedHtml += ``; } } console.log(renderedHtml); res.render('folder', { img: renderedHtml, name: folder}); } }); }) app.get('/pic/:folder/:pic', (req, res) => { const folder = req.params.folder; const pic = req.params.pic; try { var path = picsLocation + '/' + folder + '/' + pic; if (path.includes("..")) { res.status(500).send('Internal Server Error'); return } if (pic.toLowerCase().includes(".jpg") == false && pic.toLowerCase().includes(".jpeg") == false && pic.toLowerCase().includes(".png") == false) { res.status(500).send('Internal Server Error'); return } new ExifImage({ image : path }, function (error, exifData) { if (error) { res.status(500).send('Internal Server Error'); return } else { exif = exifData; exif.exif.ExposureTime = "1/" + Math.round(1/exif.exif.ExposureTime); exif.exif.FNumber = "f/" + exif.exif.FNumber; img = ``; res.render('pic', { folder: folder, pic: pic, exif: exif, img: img }); return } }); } catch (error) { res.status(500).send('Internal Server Error'); return } }) app.listen(port, () => { console.log("Server is running on port: " + port); });