From de202f5faaf51d169c91a28f3c731a3ce18e8d22 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Mon, 7 Dec 2015 23:47:53 +0100 Subject: [PATCH] fix commands to support /ban-ip , add /pardon-ip --- src/lib/command.js | 37 +++++++++++++---------------------- src/lib/plugins/moderation.js | 21 +++++++++++++++----- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/lib/command.js b/src/lib/command.js index 05fa032..2e827ba 100644 --- a/src/lib/command.js +++ b/src/lib/command.js @@ -8,42 +8,33 @@ class Command { } find(command) { - var res; - for(var key in this.hash) { - var space = this.hash[key].space(true); - if(space) space += '?'; - - var ended = space + '(.*)'; - - var found = command.match(new RegExp('^' + key + ended)); - if(found) { - res = [this.hash[key], found]; - } - } - - return res; + var parts=command.split(" "); + var c=parts.shift(); + var pars=parts.join(" "); + if(this.hash[c]) + return [this.hash[c], pars]; + return undefined; } async use(command, op=true) { var res = this.find(command); if(res) { - if (res[0].params.op && !op) return 'You do not have permission to use this command'; - var parse = res[0].params.parse; + var [com,pars]=res; + if (com.params.op && !op) return 'You do not have permission to use this command'; + var parse = com.params.parse; if(parse) { if(typeof parse == 'function') { - res[1] = parse(res[1][1]); - if(res[1] === false) { - return res[0].params.usage ? 'Usage: ' + res[0].params.usage : 'Bad syntax'; + pars = parse(pars); + if(pars === false) { + return com.params.usage ? 'Usage: ' + com.params.usage : 'Bad syntax'; } } else { - res[1] = res[1][1].match(parse); + pars = pars.match(parse); } - } else { - res[1].shift(); } - res = await res[0].params.action(res[1]); + res = await com.params.action(pars); if(res) return '' + res; } else { return 'Command not found'; diff --git a/src/lib/plugins/moderation.js b/src/lib/plugins/moderation.js index e82e546..91a9ef2 100644 --- a/src/lib/plugins/moderation.js +++ b/src/lib/plugins/moderation.js @@ -49,7 +49,7 @@ module.exports.server=function(serv) serv.pardonIP = (IP) => { return serv.bannedIPs[IP] ? delete serv.bannedIPs[IP] : false - } + }; function pardon(uuid) { if (serv.bannedPlayers[uuid]) { @@ -145,12 +145,12 @@ module.exports.player=function(player,serv) }); player.commands.add({ - base: 'ipban', + base: 'ban-ip', info: 'bans a specific IP', usage: '/ban-ip [reason]', op: true, parse(str){ - var argv = str.split(' ') + var argv = str.split(' '); if(argv.length < 1) return; return { @@ -159,10 +159,21 @@ module.exports.player=function(player,serv) } }, action({IP, reason}){ - serv.banIP(IP, reason) + serv.banIP(IP, reason); player.chat("" + IP + " was IP banned") } - }) + }); + + player.commands.add({ + base: 'pardon-ip', + info: 'to pardon a player by ip', + usage: '/pardon-ip ', + op: true, + action(IP) { + var result=serv.pardonIP(IP); + player.chat(result ? IP + " was IP pardonned" : IP+" is not banned"); + } + }); player.commands.add({ base: 'pardon',