mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	Prettified som more files and fixed some logging of missing files so they are more similar in fashion
This commit is contained in:
		
							
								
								
									
										243
									
								
								server/app.js
									
									
									
									
									
								
							
							
						
						
									
										243
									
								
								server/app.js
									
									
									
									
									
								
							| @@ -1,146 +1,155 @@ | ||||
| var cluster = require('cluster'), | ||||
| net = require('net'), | ||||
| path = require('path'), | ||||
| //publicPath = path.join(__dirname, 'public'), | ||||
| http = require('http'), | ||||
| port = 8080, | ||||
| //farmhash = require('farmhash'), | ||||
| uniqid = require('uniqid'), | ||||
| num_processes = require('os').cpus().length; | ||||
| var cluster = require("cluster"), | ||||
|   net = require("net"), | ||||
|   path = require("path"), | ||||
|   //publicPath = path.join(__dirname, 'public'), | ||||
|   http = require("http"), | ||||
|   port = 8080, | ||||
|   //farmhash = require('farmhash'), | ||||
|   uniqid = require("uniqid"), | ||||
|   num_processes = require("os").cpus().length; | ||||
|  | ||||
| publicPath = path.join(__dirname, 'public'); | ||||
| publicPath = path.join(__dirname, "public"); | ||||
| pathThumbnails = __dirname; | ||||
|  | ||||
|  | ||||
| try { | ||||
|     var redis = require("redis"); | ||||
|     var client = redis.createClient({host: "localhost", port: 6379}); | ||||
|     client.on("error", function (err) { | ||||
|         console.log("Couldn't connect to redis-server, assuming non-clustered run"); | ||||
|         num_processes = 1; | ||||
|         startSingle(false, false); | ||||
|         client.quit(); | ||||
|     }); | ||||
|     client.on("connect", function() { | ||||
|         startClustered(true); | ||||
|         client.quit(); | ||||
|     }); | ||||
| } catch(e) { | ||||
|   var redis = require("redis"); | ||||
|   var client = redis.createClient({ host: "localhost", port: 6379 }); | ||||
|   client.on("error", function(err) { | ||||
|     console.log("Couldn't connect to redis-server, assuming non-clustered run"); | ||||
|     num_processes = 1; | ||||
|     startSingle(false, false); | ||||
|     client.quit(); | ||||
|   }); | ||||
|   client.on("connect", function() { | ||||
|     startClustered(true); | ||||
|     client.quit(); | ||||
|   }); | ||||
| } catch (e) { | ||||
|   console.log("Couldn't connect to redis-server, assuming non-clustered run"); | ||||
|   num_processes = 1; | ||||
|   startSingle(false, false); | ||||
| } | ||||
|  | ||||
| function startClustered(redis_enabled) { | ||||
|     //Found https://stackoverflow.com/questions/40885592/use-node-js-cluster-with-socket-io-chat-application | ||||
|     if (cluster.isMaster) { | ||||
|         var workers = []; | ||||
|         var spawn = function(i) { | ||||
|             workers[i] = cluster.fork(); | ||||
|             workers[i].on('exit', function(code, signal) { | ||||
|                 if(code == 1) { | ||||
|                     process.exit(1); | ||||
|                     return; | ||||
|                 } | ||||
|                 console.log('respawning worker', i); | ||||
|                 spawn(i); | ||||
|             }); | ||||
|         }; | ||||
|  | ||||
|         for (var i = 0; i < num_processes; i++) { | ||||
|             spawn(i); | ||||
|   //Found https://stackoverflow.com/questions/40885592/use-node-js-cluster-with-socket-io-chat-application | ||||
|   if (cluster.isMaster) { | ||||
|     var workers = []; | ||||
|     var spawn = function(i) { | ||||
|       workers[i] = cluster.fork(); | ||||
|       workers[i].on("exit", function(code, signal) { | ||||
|         if (code == 1) { | ||||
|           process.exit(1); | ||||
|           return; | ||||
|         } | ||||
|         console.log("respawning worker", i); | ||||
|         spawn(i); | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|         var worker_index = function(ip, len) { | ||||
|             //console.log(ip); | ||||
|             var s = ''; | ||||
|             if(ip == undefined) ip = uniqid.time(); | ||||
| 	    for (var i = 0, _len = ip.length; i < _len; i++) { | ||||
|                 if(!isNaN(ip[i])) { | ||||
|                     s += ip[i]; | ||||
|                 } | ||||
|             } | ||||
|             return Number(s)%len; | ||||
|             //eturn farmhash.fingerprint32(ip) % len; | ||||
|         }; | ||||
|  | ||||
|         var server = net.createServer({ pauseOnConnect: true }, function(connection, a) { | ||||
|             var worker = workers[worker_index(connection.remoteAddress, num_processes)]; | ||||
|             worker.send('sticky-session:connection', connection); | ||||
|         }).listen(port); | ||||
|     } else { | ||||
|         startSingle(true, redis_enabled); | ||||
|     for (var i = 0; i < num_processes; i++) { | ||||
|       spawn(i); | ||||
|     } | ||||
|  | ||||
|     var worker_index = function(ip, len) { | ||||
|       //console.log(ip); | ||||
|       var s = ""; | ||||
|       if (ip == undefined) ip = uniqid.time(); | ||||
|       for (var i = 0, _len = ip.length; i < _len; i++) { | ||||
|         if (!isNaN(ip[i])) { | ||||
|           s += ip[i]; | ||||
|         } | ||||
|       } | ||||
|       return Number(s) % len; | ||||
|       //eturn farmhash.fingerprint32(ip) % len; | ||||
|     }; | ||||
|  | ||||
|     var server = net | ||||
|       .createServer({ pauseOnConnect: true }, function(connection, a) { | ||||
|         var worker = | ||||
|           workers[worker_index(connection.remoteAddress, num_processes)]; | ||||
|         worker.send("sticky-session:connection", connection); | ||||
|       }) | ||||
|       .listen(port); | ||||
|   } else { | ||||
|     startSingle(true, redis_enabled); | ||||
|   } | ||||
| } | ||||
|  | ||||
| function startSingle(clustered, redis_enabled) { | ||||
|     var server; | ||||
|     var client = require('./apps/client.js'); | ||||
|   var server; | ||||
|   var client = require("./apps/client.js"); | ||||
|   try { | ||||
|     var cert_config = require(path.join( | ||||
|       path.join(__dirname, "config"), | ||||
|       "cert_config.js" | ||||
|     )); | ||||
|     var fs = require("fs"); | ||||
|     var privateKey = fs.readFileSync(cert_config.privateKey).toString(); | ||||
|     var certificate = fs.readFileSync(cert_config.certificate).toString(); | ||||
|     var ca = fs.readFileSync(cert_config.ca).toString(); | ||||
|     var credentials = { | ||||
|       key: privateKey, | ||||
|       cert: certificate, | ||||
|       ca: ca | ||||
|     }; | ||||
|     var https = require("https"); | ||||
|     server = https.Server(credentials, routingFunction); | ||||
|   } catch (err) { | ||||
|     console.log("Starting without https (probably on localhost)"); | ||||
|     server = http.createServer(routingFunction); | ||||
|   } | ||||
|  | ||||
|   if (clustered) { | ||||
|     server.listen(onListen); | ||||
|   } else { | ||||
|     server.listen(port, onListen); | ||||
|   } | ||||
|  | ||||
|   var socketIO = client.socketIO; | ||||
|  | ||||
|   if (redis_enabled) { | ||||
|     var redis = require("socket.io-redis"); | ||||
|     try { | ||||
|         var cert_config = require(path.join(path.join(__dirname, 'config'), 'cert_config.js')); | ||||
|         var fs = require('fs'); | ||||
|         var privateKey  = fs.readFileSync(cert_config.privateKey).toString(); | ||||
|         var certificate = fs.readFileSync(cert_config.certificate).toString(); | ||||
|         var ca          = fs.readFileSync(cert_config.ca).toString(); | ||||
|         var credentials = { | ||||
|             key: privateKey, | ||||
|             cert: certificate, | ||||
|             ca: ca | ||||
|         }; | ||||
|         var https = require('https'); | ||||
|         server = https.Server(credentials, routingFunction); | ||||
|     } catch(err){ | ||||
|         console.log("Starting without https (probably on localhost)"); | ||||
|         server = http.createServer(routingFunction); | ||||
|       socketIO.adapter(redis({ host: "localhost", port: 6379 })); | ||||
|     } catch (e) { | ||||
|       console.log("No redis-server to connect to.."); | ||||
|     } | ||||
|   } | ||||
|   socketIO.listen(server); | ||||
|  | ||||
|     if(clustered) { | ||||
|         server.listen(onListen); | ||||
|     } else { | ||||
|         server.listen(port, onListen); | ||||
|   process.on("message", function(message, connection) { | ||||
|     if (message !== "sticky-session:connection") { | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     var socketIO = client.socketIO; | ||||
|  | ||||
|     if(redis_enabled) { | ||||
|         var redis = require('socket.io-redis'); | ||||
|         try { | ||||
|             socketIO.adapter(redis({ host: 'localhost', port: 6379 })); | ||||
|         } catch(e) { | ||||
|             console.log("No redis-server to connect to.."); | ||||
|         } | ||||
|     } | ||||
|     socketIO.listen(server); | ||||
|  | ||||
|     process.on('message', function(message, connection) { | ||||
|         if (message !== 'sticky-session:connection') { | ||||
|             return; | ||||
|         } | ||||
|         server.emit('connection', connection); | ||||
|         connection.resume(); | ||||
|     }); | ||||
|     server.emit("connection", connection); | ||||
|     connection.resume(); | ||||
|   }); | ||||
| } | ||||
|  | ||||
| function onListen() { | ||||
|     console.log("Started with pid [" + process.pid + "]"); | ||||
|   console.log("Started with pid [" + process.pid + "]"); | ||||
| } | ||||
|  | ||||
| function routingFunction(req, res, next) { | ||||
|     var client = require('./apps/client.js'); | ||||
|     var admin = require('./apps/admin.js'); | ||||
|     try { | ||||
|         var url = req.headers['x-forwarded-host'] ? req.headers['x-forwarded-host'] : req.headers.host.split(":")[0]; | ||||
|         var subdomain = req.headers['x-forwarded-host'] ? req.headers['x-forwarded-host'].split(".") : req.headers.host.split(":")[0].split("."); | ||||
|   var client = require("./apps/client.js"); | ||||
|   var admin = require("./apps/admin.js"); | ||||
|   try { | ||||
|     var url = req.headers["x-forwarded-host"] | ||||
|       ? req.headers["x-forwarded-host"] | ||||
|       : req.headers.host.split(":")[0]; | ||||
|     var subdomain = req.headers["x-forwarded-host"] | ||||
|       ? req.headers["x-forwarded-host"].split(".") | ||||
|       : req.headers.host.split(":")[0].split("."); | ||||
|  | ||||
|         if(subdomain.length > 1 && subdomain[0] == "admin") { | ||||
|             admin(req, res, next); | ||||
|         } else { | ||||
|             client(req, res, next); | ||||
|         } | ||||
|     } catch(e) { | ||||
|         console.log("Bad request for " + req.headers.host + req.url, e); | ||||
|         res.statusCode = 500; | ||||
|         res.write('Bad request'); //write a response to the client | ||||
|         res.end(); //end the response | ||||
|     if (subdomain.length > 1 && subdomain[0] == "admin") { | ||||
|       admin(req, res, next); | ||||
|     } else { | ||||
|       client(req, res, next); | ||||
|     } | ||||
|   } catch (e) { | ||||
|     console.log("Bad request for " + req.headers.host + req.url, e); | ||||
|     res.statusCode = 500; | ||||
|     res.write("Bad request"); //write a response to the client | ||||
|     res.end(); //end the response | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user