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',
 | 
			
		||||
   CHANNELS_ALLOW: ['123456789012345678', '123456789012345678'],
 | 
			
		||||
   MOD_ROLE: '123456789012345678',
 | 
			
		||||
   STAFF_ROLE: '123456789012345678'
 | 
			
		||||
   STAFF_ROLE: '123456789012345678',
 | 
			
		||||
   RESTART_ROLE: '123456789012345678'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = config;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
const Ping = require('net-ping');
 | 
			
		||||
const ChildProcess = require('child_process');
 | 
			
		||||
const Discord = require('discord.js');
 | 
			
		||||
 | 
			
		||||
class Server {
 | 
			
		||||
| 
						 | 
				
			
			@ -37,20 +37,13 @@ class Server {
 | 
			
		|||
        if ( serverObj.active ) this.active = serverObj.active;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async hostIsAlive() {
 | 
			
		||||
        try {
 | 
			
		||||
    hostIsAlive() {
 | 
			
		||||
        if ( !this.active || (this.rconAddress == "") ) return false;
 | 
			
		||||
            let session = Ping.createSession({retries: 1, timeout: 250});
 | 
			
		||||
            let result = await session.pingHost(this.rconAddress, function(error, target) {
 | 
			
		||||
                if ( error ) {
 | 
			
		||||
                    return false;
 | 
			
		||||
                } else {
 | 
			
		||||
        try {
 | 
			
		||||
            let res = ChildProcess.execSync('ping -c 1 -W 0.25 -q ' + this.rconAddress);
 | 
			
		||||
            return true;
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            return result;
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
            console.log(e);
 | 
			
		||||
            console.log("Host for " + this.name + " at " + this.rconAddress + " not available");
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										27
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								index.js
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -4,6 +4,7 @@ const Discord = require('discord.js');
 | 
			
		|||
const Rcon = require('rcon');
 | 
			
		||||
const Query = require("minecraft-query");
 | 
			
		||||
const Server = require('./includes/class_server');
 | 
			
		||||
const FS = require('fs');
 | 
			
		||||
 | 
			
		||||
const client = new Discord.Client();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -96,19 +97,33 @@ client.on('message', async msg => {
 | 
			
		|||
        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) ) {
 | 
			
		||||
        let cmdParts = msg.content.split(" ");
 | 
			
		||||
        let server = Servers.find(element => element.slug == cmdParts[1]);
 | 
			
		||||
        if ( server ) {
 | 
			
		||||
            let hostStatus = "Offline";
 | 
			
		||||
            try {
 | 
			
		||||
            if (server.hostIsAlive()) hostStatus = "Online";
 | 
			
		||||
            } catch (e) {
 | 
			
		||||
                console.log(e);
 | 
			
		||||
            }
 | 
			
		||||
            let serverStatus = "Stopped";
 | 
			
		||||
            let serverTPS = "---";
 | 
			
		||||
            if ( server.rconPort != 0 ) {
 | 
			
		||||
            if ( (hostStatus == "Online") && (server.rconPort != 0) ) {
 | 
			
		||||
                var rcon = new Rcon(server.rconAddress, server.rconPort, server.rconPassword);
 | 
			
		||||
		        rcon.on('auth', function() {
 | 
			
		||||
                    serverStatus = "Running";
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +160,9 @@ client.on('message', async msg => {
 | 
			
		|||
                });
 | 
			
		||||
                rcon.connect();
 | 
			
		||||
            } else {
 | 
			
		||||
                if ( server.rconPort != 0 ) {
 | 
			
		||||
                    console.log("No rcon settings for: " + server.name);
 | 
			
		||||
                }
 | 
			
		||||
                server.sendDetails(msg.channel, hostStatus, serverStatus, serverTPS);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user