-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
79 lines (70 loc) · 2.2 KB
/
app.js
File metadata and controls
79 lines (70 loc) · 2.2 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
//importing the libraries
const express = require('express');
const session = require("express-session");
const MongoStore = require("connect-mongo")(session)
const flash = require("connect-flash")
const markdown = require("marked")
const csrf = require("csurf")
const app = express();
const sanitizeHtml = require('sanitize-html')
app.use(express.urlencoded({extended:false}));
app.use(express.json());
app.use("/api" ,require('./router-api'))
let sessionOptions = session({
secret : "this is secret",
store: new MongoStore({client: require("./db")}),
resave : false,
saveUninitialized: false,
cookie:{maxAge:1000*60*60*24,httpOnly:true}
})
app.use(flash())
app.use(sessionOptions)
app.use(function (req,res,next) {
res.locals.filterUserHTML = function(content){
return(markdown(content))
}
res.locals.errors = req.flash("errors")
res.locals.success = req.flash("success")
if(req.session.user){req.visitorId = req.session.user._id}
else{req.visitorId=0}
res.locals.user = req.session.user
next();
})
const router = require("./router");
app.use(express.static("public"));
app.set('views','views');
app.set('view engine','ejs');
app.use(csrf())
app.use(function (req,res,next) {
res.locals.csrfToken = req.csrfToken()
next();
})
app.use("/",router);
app.use(function (err, req,res,next) {
if(err){
if(err.code === "EBADCSRFTOKEN"){
req.flash("errors" ,"Cross site frogery detected.")
req.session.save(()=>res.redirect('/'))
}
else{
res.render('404')
}
}
})
const server = require('http').createServer(app)
const io = require('socket.io')(server)
io.use(function(socket, next) {
sessionOptions(socket.request, socket.request.res, next)
})
io.on('connection' ,(socket)=>
{
if(socket.request.session.user){
let user = socket.request.session.user
socket.emit("welcome",{username: user.username, dp: user.dp})
socket.request.session.user
socket.on('chatmessagefrombrowser', function(data) {
socket.broadcast.emit('chatmessagefrombrowser', {message: sanitizeHtml(data.message, allowedTags = [],allowedAttributes = {}), username: user.username, dp: user.dp})
})
}
})
module.exports = server;