-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
88 lines (74 loc) · 2.02 KB
/
Copy pathserver.js
File metadata and controls
88 lines (74 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const express = require('express');
const http = require('http');
const session = require('express-session');
const socketIo = require('socket.io');
const fs = require('fs');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
// 환경변수에서 사용자 이름과 비밀번호 읽기
const adminUser = process.env.USERNAME;
const adminPassword = process.env.PASSWORD;
// 세션 시크릿
const sessionSecret = process.env.SESSION_SECRET;
// 세션 설정
app.use(session({
secret: sessionSecret,
resave: false,
saveUninitialized: true
}));
// 로그 파일 경로
const logFilePath = './logs/application.log';
app.use(express.urlencoded({ extended: true })); // 폼 데이터를 해석하기 위해
// HTML 파일 제공
app.get('/', (req, res) => {
if (req.session.loggedIn) {
res.sendFile(__dirname + '/index.html');
} else {
res.redirect('/login');
}
});
// 로그인 페이지
app.get('/login', (req, res) => {
res.sendFile(__dirname + '/login.html');
});
// 로그인 처리
app.post('/do-login', (req, res) => {
const { username, password } = req.body;
if (username === adminUser && password === adminPassword) {
req.session.loggedIn = true;
res.redirect('/');
} else {
res.send('Invalid credentials');
}
});
// 로그아웃 처리
app.get('/logout', (req, res) => {
req.session.loggedIn = false;
res.redirect('/login');
});
// WebSocket 연결 설정
io.on('connection', (socket) => {
fs.readFile(logFilePath, 'utf8', (err, data) => {
if(err) {
console.log(err);
return;
}
socket.emit('logUpdated', data);
})
// 로그 파일 변경 감지
fs.watch(logFilePath, (eventType, filename) => {
if (eventType === 'change') {
fs.readFile(logFilePath, 'utf8', (err, data) => {
if (err) {
console.log(err);
return;
}
socket.emit('logUpdated', data);
});
}
});
});
server.listen(3000, () => {
console.log('Listening on port 3000');
});