403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /opt/push-server/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /opt/push-server/server.js
const http = require("http");
const https = require("https");
const fs = require("fs");
const util = require("util");
const path = require("path");

const app = require("./lib/application");

const config = require("./config");
const logger = require("./lib/debug");

const Routing = require("./lib/routing");
const License = require("./lib/license");

const WebSocket = require("ws");

config.servers.forEach(serverConfig => {
	const routing = new Routing(app, serverConfig);
	let server;
	if (serverConfig.ssl)
	{
		server = https.createServer({
			key: fs.readFileSync(path.resolve(__dirname, serverConfig.ssl.key)),
			cert: fs.readFileSync(path.resolve(__dirname, serverConfig.ssl.cert)),
			ciphers: serverConfig.ssl.ciphers,
			dhparam: serverConfig.ssl.dhparam,
			honorCipherOrder: serverConfig.ssl.honorCipherOrder
		});

		server.on("secureConnection", logger.initTLSSocket);
	}
	else
	{
		server = http.createServer();
	}

	server.listen({
		port: serverConfig.port,
		hostname: serverConfig.hostname,
		backlog: serverConfig.backlog,
		path: serverConfig.path,
	});

	server.on("connection", logger.initSocket);
	server.on("request", routing.processRequest.bind(routing));
	server.on("listening", () => {
		logger.info("%s listening at %s://%s:%s PID: %s",
			serverConfig.name,
			serverConfig.ssl ? "https" : "http",
			server.address().address,
			server.address().port,
			process.pid
		);
	});

	if (serverConfig.routes && serverConfig.routes.sub)
	{
		const wsServer = new WebSocket.Server({
			noServer: true,
			clientTracking: false,
			perMessageDeflate: false,
			disableHixie: true,
			path: serverConfig.routes.sub,
			maxPayload: config.limits.maxPayload
		});

		wsServer.on("connection", (websocket, request, license) => {
			logger.debugWebsocket(request, websocket);
			app.subscribeWebsocket(request, websocket, license);
		});

		server.on("upgrade", async (request, socket, head) => {
			let license;
			if (config.cloudMode)
			{
				license = await License.getByRequest(request);
				if (license === null)
				{
					socket.write(`HTTP/1.1 400 ${http.STATUS_CODES[400]}\r\n\r\n4036: Wrong Client Id.`);
					socket.destroy();
					return;
				}
			}

			logger.debugHttpRequest(request);

			wsServer.handleUpgrade(request, socket, head, (websocket) => {
				wsServer.emit("connection", websocket, request, license);
			});
		});
	}
});

//Debug
process.stdin.on("data", function (data) {
	data = (data + "").trim().toLowerCase();
	if (data === "cc")
	{
		console.log(util.inspect(app.adapter.connections, { colors: true, depth: 2 }));
	}
	else if (data === "pp")
	{
		console.log(util.inspect(app.adapter.pubChannels, { colors: true, depth: 2 }));
	}
	else if (data === "heap")
	{
		var heapdump = require("heapdump");
		var file = path.resolve(__dirname, "logs/" + Date.now() + ".heapsnapshot");
		heapdump.writeSnapshot(file, function(err) {
			if (err)
			{
				console.error(err);
			}
			else
			{
				console.error("Wrote snapshot: " + file);
			}
		});
	}
	else if (data === "memory")
	{
		var memory = process.memoryUsage();
		for (var key in memory)
		{
			console.log(key, (memory[key] / 1024 / 1024) + "Mb");
		}
	}
	else if (data === "gc" && typeof(gc) !== "undefined")
	{
		gc(); //requires --expose-gc parameter
	}

	console.log("PID", process.pid);

});

Youez - 2016 - github.com/yon3zu
LinuXploit