const express = require('express'); const session = require('express-session'); const app = express(); const port = process.env.PORT || 3000; // Middleware app.use(express.json()); app.use(express.static('public')); // Session configuration with Memcache (only in DEV mode when memcached is available) if (process.env.NODE_ENV !== 'production') { try { const MemcachedStore = require('connect-memcached')(session); app.use(session({ store: new MemcachedStore({ hosts: ['localhost:11211'] }), secret: process.env.SESSION_SECRET || 'your-secret-key-change-in-production', resave: false, saveUninitialized: false, cookie: { secure: false, // Allow HTTP in development maxAge: 24 * 60 * 60 * 1000 // 24 hours } })); console.log('Memcached session store initialized'); } catch (err) { console.log('Memcached not available, using memory store'); app.use(session({ secret: process.env.SESSION_SECRET || 'your-secret-key-change-in-production', resave: false, saveUninitialized: false, cookie: { secure: false, maxAge: 24 * 60 * 60 * 1000 } })); } } else { // Production session configuration (expects external session store) app.use(session({ secret: process.env.SESSION_SECRET || 'your-secret-key-change-in-production', resave: false, saveUninitialized: false, cookie: { secure: true, // HTTPS only in production maxAge: 24 * 60 * 60 * 1000 } })); } // Health check endpoint app.get('/ping', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString(), uptime: process.uptime(), version: process.env.npm_package_version || '1.0.0' }); }); // Default route app.get('/', (req, res) => { res.json({ message: 'Cloud Node Container is running!', nodeVersion: process.version, environment: process.env.NODE_ENV || 'development', timestamp: new Date().toISOString() }); }); // Info endpoint app.get('/info', (req, res) => { res.json({ nodeVersion: process.version, platform: process.platform, arch: process.arch, uptime: process.uptime(), memory: process.memoryUsage(), env: process.env.NODE_ENV || 'development' }); }); // Session demo endpoint app.get('/session', (req, res) => { if (!req.session.visits) { req.session.visits = 0; } req.session.visits++; res.json({ sessionId: req.sessionID, visits: req.session.visits, message: 'Session is working with ' + (process.env.NODE_ENV !== 'production' ? 'Memcached' : 'default store') }); }); app.listen(port, () => { console.log(`Server running on port ${port}`); console.log(`Environment: ${process.env.NODE_ENV || 'development'}`); });