mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			285 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			285 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var Functions = require(pathThumbnails + "/handlers/functions.js");
 | |
| var Notifications = require(pathThumbnails + "/handlers/notifications.js");
 | |
| var crypto = require("crypto");
 | |
| var db = require(pathThumbnails + "/handlers/db.js");
 | |
| 
 | |
| function thumbnail(msg, coll, guid, offline, socket) {
 | |
|   if (
 | |
|     msg.thumbnail != undefined &&
 | |
|     msg.channel &&
 | |
|     msg.channel != undefined &&
 | |
|     Functions.isUrl(msg.thumbnail)
 | |
|   ) {
 | |
|     if (typeof msg.channel != "string" || typeof msg.thumbnail != "string") {
 | |
|       var result = {
 | |
|         channel: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("channel") ? typeof msg.channel : undefined
 | |
|         },
 | |
|         pass: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("pass") ? typeof msg.pass : undefined
 | |
|         },
 | |
|         thumbnail: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("thumbnail")
 | |
|             ? typeof msg.thumbnail
 | |
|             : undefined
 | |
|         },
 | |
|         adminpass: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("adminpass")
 | |
|             ? typeof msg.adminpass
 | |
|             : undefined
 | |
|         }
 | |
|       };
 | |
|       socket.emit("update_required", result);
 | |
|       return;
 | |
|     }
 | |
|     //coll = coll.replace(/ /g,'');
 | |
|     Functions.getSessionAdminUser(Functions.getSession(socket), coll, function(
 | |
|       userpass,
 | |
|       adminpass
 | |
|     ) {
 | |
|       if (userpass != "" || msg.pass == undefined) {
 | |
|         msg.pass = userpass;
 | |
|       } else if (msg.hasOwnProperty("pass")) {
 | |
|         msg.pass = crypto
 | |
|           .createHash("sha256")
 | |
|           .update(Functions.decrypt_string(msg.pass))
 | |
|           .digest("base64");
 | |
|       }
 | |
|       if (adminpass != "" || msg.adminpass == undefined) {
 | |
|         msg.adminpass = Functions.hash_pass(adminpass);
 | |
|       } else {
 | |
|         msg.adminpass = Functions.hash_pass(
 | |
|           Functions.hash_pass(Functions.decrypt_string(msg.adminpass), true)
 | |
|         );
 | |
|       }
 | |
|       if (msg.thumbnail != "") {
 | |
|         msg.thumbnail = msg.thumbnail.replace(/^https?\:\/\//i, "");
 | |
|         if (msg.thumbnail.substring(0, 2) != "//")
 | |
|           msg.thumbnail = "//" + msg.thumbnail;
 | |
|       }
 | |
|       var channel = msg.channel.toLowerCase();
 | |
|       var hash = msg.adminpass;
 | |
|       db.collection(channel + "_settings").find({ id: "config" }, function(
 | |
|         err,
 | |
|         docs
 | |
|       ) {
 | |
|         if (
 | |
|           docs.length > 0 &&
 | |
|           (docs[0].userpass == undefined ||
 | |
|             docs[0].userpass == "" ||
 | |
|             (msg.hasOwnProperty("pass") && docs[0].userpass == msg.pass))
 | |
|         ) {
 | |
|           if (
 | |
|             docs !== null &&
 | |
|             docs.length !== 0 &&
 | |
|             docs[0].adminpass !== "" &&
 | |
|             docs[0].adminpass == hash
 | |
|           ) {
 | |
|             db.collection("suggested_thumbnails").update(
 | |
|               { channel: channel },
 | |
|               { $set: { thumbnail: msg.thumbnail } },
 | |
|               { upsert: true },
 | |
|               function(err, docs) {
 | |
|                 Notifications.requested_change(
 | |
|                   "thumbnail",
 | |
|                   msg.thumbnail,
 | |
|                   channel
 | |
|                 );
 | |
|                 socket.emit("toast", "suggested_thumbnail");
 | |
|               }
 | |
|             );
 | |
|           }
 | |
|         } else {
 | |
|           socket.emit("auth_required");
 | |
|         }
 | |
|       });
 | |
|     });
 | |
|   } else {
 | |
|     socket.emit("toast", "thumbnail_denied");
 | |
|   }
 | |
| }
 | |
| 
 | |
| function description(msg, coll, guid, offline, socket) {
 | |
|   if (msg.description && msg.channel && msg.description.length < 100) {
 | |
|     if (typeof msg.channel != "string" || typeof msg.description != "string") {
 | |
|       var result = {
 | |
|         channel: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("channel") ? typeof msg.channel : undefined
 | |
|         },
 | |
|         pass: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("pass") ? typeof msg.pass : undefined
 | |
|         },
 | |
|         description: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("description")
 | |
|             ? typeof msg.description
 | |
|             : undefined
 | |
|         },
 | |
|         adminpass: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("adminpass")
 | |
|             ? typeof msg.adminpass
 | |
|             : undefined
 | |
|         }
 | |
|       };
 | |
|       socket.emit("update_required", result);
 | |
|       return;
 | |
|     }
 | |
|     //coll = coll.replace(/ /g,'');
 | |
|     Functions.getSessionAdminUser(Functions.getSession(socket), coll, function(
 | |
|       userpass,
 | |
|       adminpass,
 | |
|       gotten
 | |
|     ) {
 | |
|       if (userpass != "" || msg.pass == undefined) {
 | |
|         msg.pass = userpass;
 | |
|       } else if (msg.hasOwnProperty("pass")) {
 | |
|         msg.pass = crypto
 | |
|           .createHash("sha256")
 | |
|           .update(Functions.decrypt_string(msg.pass))
 | |
|           .digest("base64");
 | |
|       }
 | |
|       if (adminpass != "" || msg.adminpass == undefined) {
 | |
|         msg.adminpass = Functions.hash_pass(adminpass);
 | |
|       } else {
 | |
|         msg.adminpass = Functions.hash_pass(
 | |
|           Functions.hash_pass(Functions.decrypt_string(msg.adminpass), true)
 | |
|         );
 | |
|       }
 | |
|       var channel = msg.channel.toLowerCase();
 | |
|       var hash = msg.adminpass;
 | |
|       db.collection(channel + "_settings").find({ id: "config" }, function(
 | |
|         err,
 | |
|         docs
 | |
|       ) {
 | |
|         if (
 | |
|           docs.length > 0 &&
 | |
|           (docs[0].userpass == undefined ||
 | |
|             docs[0].userpass == "" ||
 | |
|             (msg.hasOwnProperty("pass") && docs[0].userpass == msg.pass))
 | |
|         ) {
 | |
|           if (
 | |
|             docs !== null &&
 | |
|             docs.length !== 0 &&
 | |
|             docs[0].adminpass !== "" &&
 | |
|             docs[0].adminpass == hash
 | |
|           ) {
 | |
|             db.collection("suggested_descriptions").update(
 | |
|               { channel: channel },
 | |
|               { $set: { description: msg.description } },
 | |
|               { upsert: true },
 | |
|               function(err, docs) {
 | |
|                 Notifications.requested_change(
 | |
|                   "description",
 | |
|                   msg.description,
 | |
|                   channel
 | |
|                 );
 | |
|                 socket.emit("toast", "suggested_description");
 | |
|               }
 | |
|             );
 | |
|           }
 | |
|         } else {
 | |
|           socket.emit("auth_required");
 | |
|         }
 | |
|       });
 | |
|     });
 | |
|   } else {
 | |
|     socket.emit("toast", "description_denied");
 | |
|   }
 | |
| }
 | |
| 
 | |
| function rules(msg, coll, guid, offline, socket) {
 | |
|   if (msg.rules && msg.channel && msg.rules.length < 250) {
 | |
|     if (typeof msg.channel != "string" || typeof msg.rules != "string") {
 | |
|       var result = {
 | |
|         channel: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("channel") ? typeof msg.channel : undefined
 | |
|         },
 | |
|         pass: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("pass") ? typeof msg.pass : undefined
 | |
|         },
 | |
|         rules: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("rules") ? typeof msg.rules : undefined
 | |
|         },
 | |
|         adminpass: {
 | |
|           expected: "string",
 | |
|           got: msg.hasOwnProperty("adminpass")
 | |
|             ? typeof msg.adminpass
 | |
|             : undefined
 | |
|         }
 | |
|       };
 | |
|       socket.emit("update_required", result);
 | |
|       return;
 | |
|     }
 | |
|     //coll = coll.replace(/ /g,'');
 | |
|     Functions.getSessionAdminUser(Functions.getSession(socket), coll, function(
 | |
|       userpass,
 | |
|       adminpass,
 | |
|       gotten
 | |
|     ) {
 | |
|       if (userpass != "" || msg.pass == undefined) {
 | |
|         msg.pass = userpass;
 | |
|       } else if (msg.hasOwnProperty("pass")) {
 | |
|         msg.pass = crypto
 | |
|           .createHash("sha256")
 | |
|           .update(Functions.decrypt_string(msg.pass))
 | |
|           .digest("base64");
 | |
|       }
 | |
|       if (adminpass != "" || msg.adminpass == undefined) {
 | |
|         msg.adminpass = Functions.hash_pass(adminpass);
 | |
|       } else {
 | |
|         msg.adminpass = Functions.hash_pass(
 | |
|           Functions.hash_pass(Functions.decrypt_string(msg.adminpass), true)
 | |
|         );
 | |
|       }
 | |
|       var channel = msg.channel.toLowerCase();
 | |
|       var hash = msg.adminpass;
 | |
|       db.collection(channel + "_settings").find({ id: "config" }, function(
 | |
|         err,
 | |
|         docs
 | |
|       ) {
 | |
|         if (
 | |
|           docs.length > 0 &&
 | |
|           (docs[0].userpass == undefined ||
 | |
|             docs[0].userpass == "" ||
 | |
|             (msg.hasOwnProperty("pass") && docs[0].userpass == msg.pass))
 | |
|         ) {
 | |
|           if (
 | |
|             docs !== null &&
 | |
|             docs.length !== 0 &&
 | |
|             docs[0].adminpass !== "" &&
 | |
|             docs[0].adminpass == hash
 | |
|           ) {
 | |
|             db.collection("suggested_rules").update(
 | |
|               { channel: channel },
 | |
|               { $set: { rules: msg.rules } },
 | |
|               { upsert: true },
 | |
|               function(err, docs) {
 | |
|                 Notifications.requested_change("rules", msg.rules, channel);
 | |
|                 socket.emit("toast", "suggested_rules");
 | |
|               }
 | |
|             );
 | |
|           }
 | |
|         } else {
 | |
|           socket.emit("auth_required");
 | |
|         }
 | |
|       });
 | |
|     });
 | |
|   } else {
 | |
|     socket.emit("toast", "rules_denied");
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports.thumbnail = thumbnail;
 | |
| module.exports.description = description;
 | |
| module.exports.rules = rules;
 |