/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/webchat@0.3.3/server.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var express=require("express"),app=express(),server=require("http").createServer(app),io=require("socket.io").listen(server),connect=require("express/node_modules/connect"),cookie=require("express/node_modules/cookie"),MongoClient=require("mongodb").MongoClient,crypto=require("crypto"),collection=null;function auth(e,o,s){collection.findOne({_id:e,pw:crypto.createHash("sha256").update(o).digest("hex")},(function(e,o){if(e)throw e;s(!!o)}))}function createUser(e,o,s,n){collection.insert({_id:e,pw:crypto.createHash("sha256").update(o).digest("hex"),name:s,email:n},(function(e,o){if(e)throw e;console.log("Record added:"+JSON.stringify(o))}))}server.listen(80),app.use(express.compress()),app.use("/js",express.static(__dirname+"/js")),app.use("/css",express.static(__dirname+"/css")),app.use(express.json()),app.use(express.urlencoded()),app.use(express.cookieParser("my super secret for session")),app.use(express.session({key:"express.sid"})),MongoClient.connect("mongodb://127.0.0.1:27017/test",(function(e,o){if(e)throw e;o.collection("users",(function(e,o){if(e)throw e;collection=o,console.log("Mongodb collection obtained!")}))})),app.get("/server.js",(function(e,o){o.send(500,"Error loading "+e.url)})),app.get("/",(function(e,o){e.session&&e.session.name?o.sendfile(__dirname+"/index.htm",(function(s){s&&o.send(500,"Error loading "+e.url)})):o.redirect("/login")})),app.get("/login",(function(e,o){e.session&&e.session.name?o.redirect("/"):null!=e.query.err?o.sendfile(__dirname+"/error.htm",(function(s){s&&o.send(500,"Error loading "+e.url)})):o.sendfile(__dirname+"/login.htm",(function(s){s&&o.send(500,"Error loading "+e.url)}))})),app.get("/register",(function(e,o){e.session&&e.session.name?o.redirect("/"):o.sendfile(__dirname+"/register.htm",(function(s){s&&o.send(500,"Error loading "+e.url)}))})),app.get("/conference",(function(e,o){e.session&&e.session.name?o.sendfile(__dirname+"/conference.htm",(function(s){s&&o.send(500,"Error loading "+e.url)})):o.redirect("/login")})),app.get("/brainstorm",(function(e,o){e.session&&e.session.name?o.sendfile(__dirname+"/brainstorm.htm",(function(s){s&&o.send(500,"Error loading "+e.url)})):o.redirect("/login")})),app.post("/login",(function(e,o){e.body.uid&&e.body.pw?auth(e.body.uid,e.body.pw,(function(s){s?(e.session.name=e.body.uid,o.cookie("name",e.body.uid,{signed:!0}),o.redirect("/")):o.redirect("/login?err")})):(console.log("Received invalid login request: "+JSON.stringify(e.body)),o.redirect("/login"))})),app.post("/register",(function(e,o){e.body.uid&&e.body.pw&&e.body.pw2&&e.body.email&&e.body.fname?e.body.uid.match(/^\w+$/)&&e.body.email.match(/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b$/)&&e.body.pw==e.body.pw2?(createUser(e.body.uid,e.body.pw,e.body.fname,e.body.email),o.redirect("/")):(console.log("Received an illegal register request"),o.redirect("/register")):(console.log("Received an invalid login request: "+JSON.stringify(e.body)),o.redirect("/register"))})),io.set("authorization",(function(e,o){return e.headers.cookie?(e.cookie=cookie.parse(e.headers.cookie),e.cookie["express.sid"]&&e.cookie.name?(e.sessionID=connect.utils.parseSignedCookie(e.cookie["express.sid"],"my super secret for session"),e.name=connect.utils.parseSignedCookie(e.cookie.name,"my super secret for session"),e.sessionID&&e.name&&e.cookie["express.sid"]!=e.sessionID?(console.log(e.name+" is authed!"),void o(null,!0)):o("Cookie data is invalid.",!1)):o("Cookie is invalid.",!1)):o("No cookie transmitted.",!1)})),io.sockets.on("connection",(function(e){for(var o in io.sockets.sockets[e.handshake.name]&&io.sockets.sockets[io.sockets.sockets[e.handshake.name]].disconnect(),io.sockets.sockets[e.handshake.name]=e.id,console.log(e.handshake.name+"(socket id: "+e.id+") is logged on!"),e.broadcast.emit("online",e.handshake.name),io.sockets.sockets)"object"!=typeof io.sockets.sockets[o]&&io.sockets.sockets[o]!=e.id&&e.emit("online",o);e.on("offer",(function(o,s){return o.callee&&io.sockets.sockets[o.callee]?io.sockets.sockets[io.sockets.sockets[o.callee]]==e?(console.log("Not going to send the offer back to itself!"),void s(null)):o.type&&o.rtc?(console.log("Calling "+o.callee+"("+o.type+")\nSession Desc:"+o.rtc),console.log(o.callee+"'s id: "+io.sockets.sockets[o.callee]),void io.sockets.sockets[io.sockets.sockets[o.callee]].emit("offer",{caller:e.handshake.name,type:o.type,rtc:o.rtc},(function(n){console.log("Received answer from "+o.callee+" to "+e.handshake.name+": "+JSON.stringify(n)),s(n||null)}))):(console.log((o.type?"data.rtc":o.rtc?"data.type":"data.type and data.rtc")+" not found!"),void s(null)):(console.log((o.callee?o.callee:"data.callee")+" not found!"),void s(null))})),e.on("ice",(function(o){o.to&&null!=io.sockets.sockets[o.to]?io.sockets.sockets[io.sockets.sockets[o.to]].emit("ice",{peer:e.handshake.name,candidate:o.icecandidate}):console.log((o.to?o.to:"data.to")+" not found!")})),e.on("disconnect",(function(o){console.log(e.handshake.name+" is disconnected!"),e.broadcast.emit("offline",e.handshake.name),delete io.sockets.sockets[e.handshake.name]})),e.on("bye",(function(o){io.sockets.sockets[o]&&io.sockets.sockets[io.sockets.sockets[o]]&&io.sockets.sockets[io.sockets.sockets[o]].emit("bye",e.handshake.name)})),e.on("conference",(function(o){if(Array.isArray(o)){-1==o.indexOf(e.handshake.name)?o.unshift(e.handshake.name):0!=o.indexOf(e.handshake.name)&&(o[0]=o.splice(o.indexOf(e.handshake.name),1,o[0])[0]);for(var s=0;s<o.length;s++)if("string"==typeof o[s]&&o[s]!=e.handshake.name&&io.sockets.sockets[o[s]]&&io.sockets.sockets[io.sockets.sockets[o[s]]]){var n=o.slice(0);n.splice(s,1),io.sockets.sockets[io.sockets.sockets[o[s]]].emit("conference",n)}}})),e.on("brainstorm",(function(o){if(Array.isArray(o)){-1==o.indexOf(e.handshake.name)?o.unshift(e.handshake.name):0!=o.indexOf(e.handshake.name)&&(o[0]=o.splice(o.indexOf(e.handshake.name),1,o[0])[0]);for(var s=0;s<o.length;s++)if("string"==typeof o[s]&&o[s]!=e.handshake.name&&io.sockets.sockets[o[s]]&&io.sockets.sockets[io.sockets.sockets[o[s]]]){var n=o.slice(0);n.splice(s,1),io.sockets.sockets[io.sockets.sockets[o[s]]].emit("brainstorm",n)}}}))}));
//# sourceMappingURL=/sm/8f20df29208dfce4a01fb83ad064a0022505c1aba0c9fb251820e25590dce532.map