Compare commits
	
		
			4 Commits
		
	
	
		
			a309997899
			...
			bba074bafb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bba074bafb | |||
| fd812da425 | |||
| 27ccfb467c | |||
| 44f563533e | 
| 
						 | 
					@ -2,7 +2,8 @@ const config = {
 | 
				
			||||||
   BOT_TOKEN: 'YOUR_BOT_TOKEN_GOES_HERE',
 | 
					   BOT_TOKEN: 'YOUR_BOT_TOKEN_GOES_HERE',
 | 
				
			||||||
   CHANNELS_ALLOW: ['123456789012345678', '123456789012345678'],
 | 
					   CHANNELS_ALLOW: ['123456789012345678', '123456789012345678'],
 | 
				
			||||||
   MOD_ROLE: '123456789012345678',
 | 
					   MOD_ROLE: '123456789012345678',
 | 
				
			||||||
   STAFF_ROLE: '123456789012345678'
 | 
					   STAFF_ROLE: '123456789012345678',
 | 
				
			||||||
 | 
					   RESTART_ROLE: '123456789012345678'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = config;
 | 
					module.exports = config;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
const Ping = require('net-ping');
 | 
					const ChildProcess = require('child_process');
 | 
				
			||||||
const Discord = require('discord.js');
 | 
					const Discord = require('discord.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Server {
 | 
					class Server {
 | 
				
			||||||
| 
						 | 
					@ -37,20 +37,13 @@ class Server {
 | 
				
			||||||
        if ( serverObj.active ) this.active = serverObj.active;
 | 
					        if ( serverObj.active ) this.active = serverObj.active;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async hostIsAlive() {
 | 
					    hostIsAlive() {
 | 
				
			||||||
 | 
					        if ( !this.active || (this.rconAddress == "") ) return false;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            if ( !this.active || (this.rconAddress == "") ) return false;
 | 
					            let res = ChildProcess.execSync('ping -c 1 -W 0.25 -q ' + this.rconAddress);
 | 
				
			||||||
            let session = Ping.createSession({retries: 1, timeout: 250});
 | 
					            return true;
 | 
				
			||||||
            let result = await session.pingHost(this.rconAddress, function(error, target) {
 | 
					 | 
				
			||||||
                if ( error ) {
 | 
					 | 
				
			||||||
                    return false;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            return result;
 | 
					 | 
				
			||||||
        } catch (e) {
 | 
					        } catch (e) {
 | 
				
			||||||
            console.log(e);
 | 
					            console.log("Host for " + this.name + " at " + this.rconAddress + " not available");
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -76,4 +69,4 @@ class Server {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = Server;
 | 
					module.exports = Server;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								index.js
									
									
									
									
									
								
							| 
						 | 
					@ -4,6 +4,7 @@ const Discord = require('discord.js');
 | 
				
			||||||
const Rcon = require('rcon');
 | 
					const Rcon = require('rcon');
 | 
				
			||||||
const Query = require("minecraft-query");
 | 
					const Query = require("minecraft-query");
 | 
				
			||||||
const Server = require('./includes/class_server');
 | 
					const Server = require('./includes/class_server');
 | 
				
			||||||
 | 
					const FS = require('fs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const client = new Discord.Client();
 | 
					const client = new Discord.Client();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -96,19 +97,33 @@ client.on('message', async msg => {
 | 
				
			||||||
        msg.channel.send("**Usage:** >>server *slug*");
 | 
					        msg.channel.send("**Usage:** >>server *slug*");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( msg.content.startsWith(">>restart") && Config.CHANNELS_ALLOW.includes(msg.channel.id) ) {
 | 
				
			||||||
 | 
					        if ( msg.member.roles.cache.has(Config.RESTART_ROLE) ) {
 | 
				
			||||||
 | 
					            let cmdParts = msg.content.split(" ");
 | 
				
			||||||
 | 
					            let server = Servers.find(element => element.slug == cmdParts[1]);
 | 
				
			||||||
 | 
					            let restartFile = '/automation/mcrestart/' + server.slug + '.restart';
 | 
				
			||||||
 | 
					            FS.stat(restartFile, function(err, stat) {
 | 
				
			||||||
 | 
					                if ( err == null ) {
 | 
				
			||||||
 | 
					                    msg.channel.send("**Warning:** " + server.name + " is already queued for a restart");
 | 
				
			||||||
 | 
					                } else if ( err.code === 'ENOENT' ) {
 | 
				
			||||||
 | 
					                    FS.closeSync(FS.openSync(restartFile, 'w'));
 | 
				
			||||||
 | 
					                    msg.channel.send("**Notice:** " + server.name + " queued for restart by " + msg.author.username);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            msg.channel.send("**Error:** You do not have permission to restart servers");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( msg.content.startsWith(">>server ") && Config.CHANNELS_ALLOW.includes(msg.channel.id) ) {
 | 
					    if ( msg.content.startsWith(">>server ") && Config.CHANNELS_ALLOW.includes(msg.channel.id) ) {
 | 
				
			||||||
        let cmdParts = msg.content.split(" ");
 | 
					        let cmdParts = msg.content.split(" ");
 | 
				
			||||||
        let server = Servers.find(element => element.slug == cmdParts[1]);
 | 
					        let server = Servers.find(element => element.slug == cmdParts[1]);
 | 
				
			||||||
        if ( server ) {
 | 
					        if ( server ) {
 | 
				
			||||||
            let hostStatus = "Offline";
 | 
					            let hostStatus = "Offline";
 | 
				
			||||||
            try {
 | 
					            if (server.hostIsAlive()) hostStatus = "Online";
 | 
				
			||||||
                if (server.hostIsAlive()) hostStatus = "Online";
 | 
					 | 
				
			||||||
            } catch (e) {
 | 
					 | 
				
			||||||
                console.log(e);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            let serverStatus = "Stopped";
 | 
					            let serverStatus = "Stopped";
 | 
				
			||||||
            let serverTPS = "---";
 | 
					            let serverTPS = "---";
 | 
				
			||||||
            if ( server.rconPort != 0 ) {
 | 
					            if ( (hostStatus == "Online") && (server.rconPort != 0) ) {
 | 
				
			||||||
                var rcon = new Rcon(server.rconAddress, server.rconPort, server.rconPassword);
 | 
					                var rcon = new Rcon(server.rconAddress, server.rconPort, server.rconPassword);
 | 
				
			||||||
		        rcon.on('auth', function() {
 | 
							        rcon.on('auth', function() {
 | 
				
			||||||
                    serverStatus = "Running";
 | 
					                    serverStatus = "Running";
 | 
				
			||||||
| 
						 | 
					@ -145,7 +160,9 @@ client.on('message', async msg => {
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                rcon.connect();
 | 
					                rcon.connect();
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                console.log("No rcon settings for: " + server.name);
 | 
					                if ( server.rconPort != 0 ) {
 | 
				
			||||||
 | 
					                    console.log("No rcon settings for: " + server.name);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                server.sendDetails(msg.channel, hostStatus, serverStatus, serverTPS);
 | 
					                server.sendDetails(msg.channel, hostStatus, serverStatus, serverTPS);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user