app.js 3.27 KB
const fs = require('fs');
const https = require('https');
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const app = express();
const data = fs.readFileSync('./database.json');
const conf = JSON.parse(data);
const mysql = require('mysql');
const sslport = 23023;
var cookieSession = require('cookie-session')
var schedule = require('node-schedule');


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use('/js', express.static(__dirname + '/js'));
app.use('/css', express.static(__dirname + '/css'));
app.use('/html', express.static(__dirname + '/html'));
app.use('/img', express.static(__dirname + '/img'));

app.set('trust proxy', 1);

app.use(cookieSession({
    name: 'session',
    keys: ['key1', 'key2']
}));

const connection = mysql.createConnection({

    host: conf.host,

    user: conf.user,

    password: conf.password,

    port: conf.port,

    database: conf.database

});

var date = new Date();
let year = date.getFullYear();
let month = date.getMonth();
let day = date.getDate();
var count = 0;

connection.connect();

schedule.scheduleJob({ hour: 23, minute: 59, second: 1 }, function () {
    console.log(year + " " + month + " " + day);
    connection.query(
        `INSERT INTO visiter VALUES (${year}, ${month + 1},${day}, ${count});`
    );
    count = 0;
});

app.get('/', (req, res) => {
    var today = year + " " + month + " " + day;

    console.log(req.session.lastVisit);
    if (req.session.lastVisit != today) {
        req.session.lastVisit = today;
        count++;
    }

    fs.readFile(path.join(__dirname, 'html', 'index.html'), (err, data) => {
        try {
            res.writeHead(200, { 'Content-Type': 'text/html' });
            console.log(count);
            res.end(data);
        } catch (err) {
            res.writeHead(404, () => {
                console.log("Page Not Found!")
            });
        }
    })
});

app.get('/detail.html', (req, res) => {
    fs.readFile(path.join(__dirname, 'html', 'detail.html'), (err, data) => {
        try {
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(data);
        } catch (err) {
            res.writeHead(404, () => {
                console.log("Page Not Found!")
            });
        };
    });
});

app.get('/api/visiters', (req, res) => {
    connection.query(
        'SELECT * FROM  visiter',
        (err, rows, fields) => {
            res.send(rows);
        }
    )
})


app.get('/statistics.html', (req, res) => {
    fs.readFile(path.join(__dirname, 'html', 'statistics.html'), (err, data) => {
        try {
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(data);
        } catch (err) {
            res.writeHead(404, () => {
                console.log("Page Not Found!")
            });
        };
    });
})


try {
    const options = {
        key: fs.readFileSync('./keys/private.pem'),
        cert: fs.readFileSync('./keys/public.pem')
    };

    https.createServer(options, app).listen(sslport, sslport, () => {
        console.log(`[HTTPS] Server is started on port ${sslport}`);
      });

  } catch (error) {
    console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
    console.log(error);
  }