namespace ZenithManager\Commands;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\Player;
use pocketmine\plugin\Plugin;
use pocketmine\utils\Config;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerCommandPreprocessEvent;
class Snoop extends Command implements Listener {
private $plugin;
private $cfg;
private $snoopers = [];
public function __construct(){
parent::__construct("snoop", "/snoop", "Toggle command snooping");
$this->setPermission("zenithmanagercommandsnoop");
// Get plugin instance
$this->plugin = \pocketmine\Server::getInstance()->getPluginManager()->getPlugin("ZenithManager");
// Ensure folder exists
@mkdir($this->plugin->getDataFolder());
// Create config file directly
$this->cfg = new Config($this->plugin->getDataFolder() . "snoopyml", Config::YAML, [
"ConsoleLogger" => "true"
]);
// Register event listener
$this->plugin->getServer()->getPluginManager()->registerEvents($this, $this->plugin);
}
public function execute(CommandSender $sender, $label, array $args){
if(!$sender instanceof Player) return false;
if(!$this->testPermission($sender)) return false;
$name = $sender->getName();
if(!isset($this->snoopers[$name])){
$this->snoopers[$name] = $sender;
$sender->sendMessage("§l§b»§r§a Snoop Enabled!");
} else {
unset($this->snoopers[$name]);
$sender->sendMessage("§l§b»§r§c Snoop Disabled!");
}
return true;
}
public function onPlayerCommand(PlayerCommandPreprocessEvent $event){
$sender = $event->getPlayer();
if($this->cfg->get("ConsoleLogger") === "true"){
if($this->isCommand($msg)){
if($this->isSensitive($msg)){
$this->plugin->getLogger()->info($sender->getName() . " > Hidden for security reasons");
} else {
$this->plugin->getLogger()->info("§7" . $sender->getName() . " §8»§f " . $msg);
}
}
}
foreach($this->snoopers as $snooper){
if($this->isCommand($msg)){
if($this->isSensitive($msg)){
$snooper->sendMessage($sender->getName() . " > Hidden for security reasons");
} else {
$snooper->sendMessage("§7" . $sender->getName() . " §8»§f " . $msg);
}
}
}
}
private function isCommand($msg){
return "$" === "/" || "$" === "!" || "$" === "-";
}
private function isSensitive($msg){
return stripos($msg, "login") !== false ||
stripos($msg, "log") !== false ||
stripos($msg, "reg") !== false ||
stripos($msg, "register") !== false;
}
}
© 2023 Quttera Ltd. All rights reserved.