Advertisement
Guest User

Untitled

a guest
Jun 30th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.06 KB | None | 0 0
  1. <?php
  2. namespace Auth;
  3.  
  4. use pocketmine\Player;
  5. use pocketmine\utils\Config;
  6. use pocketmine\event\Listener;
  7. use pocketmine\command\Command;
  8. use pocketmine\utils\TextFormat;
  9. use pocketmine\plugin\PluginBase;
  10. use pocketmine\command\CommandSender;
  11. use pocketmine\event\player\PlayerJoinEvent;
  12. use pocketmine\event\player\PlayerQuitEvent;
  13. use pocketmine\event\player\PlayerCommandPreprocessEvent;
  14.  
  15. class Auth extends PluginBase implements Listener{
  16.  
  17.     public $login = [];
  18.    
  19.     public function onEnable(){
  20.         $this->getServer()->getPluginManager()->registerEvents($this, $this);
  21.         $this->exec();
  22.  
  23.     }
  24.  
  25.     public function exec(){
  26.         $this->getLogger()->info(TextFormat::YELLOW."(Multi-Serv) Working...");
  27.  
  28.         @mkdir($this->getDataFolder());
  29.         @mkdir($this->getDataFolder()."Players");
  30.        
  31.         $this->saveDefaultConfig();
  32.         $this->getResource("config.yml");
  33.  
  34.         $this->HOST = $this->getConfig()->get("HOST");
  35.  
  36.         if($this->getConfig()->get("mysqli.work.?") != false){
  37.            
  38.             $this->getLogger()->info(TextFormat::GREEN."Mysql is activated.");
  39.  
  40.             $this->USER = $this->getConfig()->get("USER");
  41.             $this->PASS = $this->getConfig()->get("PASS");
  42.  
  43.             $this->TABLE = "Auth"."(PLAYER VARCHAR(255), IP VARCHAR(30), PASSWORD VARCHAR(65536))";
  44.  
  45.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS);
  46.                 $mysqli->query("CREATE DATABASE IF NOT EXISTS "."Auth");
  47.  
  48.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  49.                 $mysqli->query("CREATE TABLE IF NOT EXISTS ".$this->TABLE);
  50.  
  51.         }else{
  52.             $this->getLogger()->info(TextFormat::GOLD."Mysql is disabled, check in config.yml if you want activate it.");
  53.  
  54.         }
  55.  
  56.     }
  57.  
  58.     public function Join(PlayerJoinEvent $event){
  59.         $player = $event->getPlayer();
  60.  
  61.         $this->login[$player->getName()] = false;
  62.  
  63.         if($this->isRegister($player) == true){ //Player is register ?
  64.  
  65.             if($this->isLoginIp($player) == true){ // Player is login ip ?
  66.                 $this->isLogin($player, true);
  67.  
  68.                 $this->login[$player->getName()] = true;
  69.  
  70.                 $player->sendTitle($this->getConfig()->get("login.success.ip.message"));
  71.                 $player->sendTitle($this->getConfig()->get("login.success.ip.Submessage", "subtitle", 20, 20, 20));
  72.  
  73.             }else{
  74.                 $this->isLogin($player, false);
  75.                 $player->sendTitle($this->getConfig()->get("login.join.message"));
  76.                 $player->sendTitle($this->getConfig()->get("login.join.Submessage", "subtitle", 20, 20, 20));
  77.  
  78.             }
  79.  
  80.         }else{
  81.             $this->isLogin($player, false);
  82.             $player->sendTitle($this->getConfig()->get("register.join.message"));
  83.             $player->sendTitle($this->getConfig()->get("register.join.Submessage", "subtitle", 20, 20, 20));
  84.  
  85.         }
  86.  
  87.     }
  88.  
  89.     public function onCommand(CommandSender $sender, Command $command, $label, array $args){
  90.  
  91.         switch($command->getName()){
  92.  
  93.             case "register": //all
  94.                 if($sender instanceOf Player && $this->isRegister($sender) == false && $this->login[$sender->getName()] == false){
  95.  
  96.                     if(!empty($args[0])){
  97.                         $this->Register($sender, $args[0]);
  98.                         $this->isLogin($sender, true);
  99.  
  100.                         $this->login[$sender->getName()] = true;
  101.  
  102.                         $sender->sendTitle($this->getConfig()->get("register.success.message"));
  103.                         $player->sendTitle($this->getConfig()->get("register.success.Submessage", "subtitle", 20, 20, 20));
  104.  
  105.                     }else{
  106.                         $sender->sendTitle($this->getConfig()->get("register.error.message"));
  107.                         $player->sendTitle($this->getConfig()->get("register.error.Submessage", "subtitle", 20, 20, 20));
  108.  
  109.                     }
  110.  
  111.                 }
  112.  
  113.             break;
  114.  
  115.             case "login": //all
  116.                 if($sender instanceOf Player && $this->isRegister($sender) == true && $this->login[$sender->getName()] == false){
  117.                    
  118.                     if(!empty($args[0]) && $this->Login($sender, $args[0]) == true){
  119.                         $this->isLogin($sender, true);
  120.                         $this->changeIp($sender);
  121.  
  122.                         $this->login[$sender->getName()] = true;
  123.  
  124.                         $sender->sendTitle($this->getConfig()->get("login.success.message"));
  125.                         $player->sendTitle($this->getConfig()->get("login.success.Submessage", "subtitle", 20, 20, 20));
  126.  
  127.                     }else{
  128.                         $sender->sendTitle($this->getConfig()->get("login.error.message"));
  129.                         $player->sendTitle($this->getConfig()->get("login.error.Submessage", "subtitle", 20, 20, 20));
  130.  
  131.                     }
  132.  
  133.                 }
  134.  
  135.             break;
  136.  
  137.             case "unregister": //op
  138.                 if($sender->isOp() && !empty($args[0])){
  139.  
  140.                     if($this->unRegister($args[0]) == true){
  141.                         $sender->sendTitle($this->getConfig()->get("unregister.success.message"));
  142.  
  143.                     }else{
  144.                         $sender->sendTitle($this->getConfig()->get("unregister.error.message"));
  145.  
  146.                     }
  147.  
  148.                 }
  149.  
  150.             break;
  151.  
  152.         }
  153.  
  154.     }
  155.  
  156.  
  157.     public function isRegister(Player $player){
  158.         $name = $player->getName();
  159.  
  160.         if($this->getConfig()->get("mysqli.work.?") == false){
  161.  
  162.             if(file_exists($this->getDataFolder()."Players"."/".$name.".yml")){
  163.                 return true;
  164.            
  165.             }else{
  166.                 return false;
  167.  
  168.             }
  169.  
  170.         }else{
  171.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  172.  
  173.             if($mysqli->query("SELECT * FROM "."Auth"." WHERE PLAYER = '$name'")->num_rows > 0){
  174.                 return true;
  175.            
  176.             }else{
  177.                 return false;
  178.  
  179.             }
  180.  
  181.         }
  182.  
  183.     }
  184.  
  185.     public function isLoginIp(Player $player){
  186.         $address = $player->getAddress();
  187.         $name = $player->getName();
  188.  
  189.         if($this->getConfig()->get("mysqli.work.?") == false){
  190.  
  191.             $file = new Config($this->getDataFolder()."Players"."/".$name.".yml", Config::YAML);
  192.  
  193.             if($address == $file->get("IP")){
  194.                 return true;
  195.            
  196.             }else{
  197.                 return false;
  198.  
  199.             }
  200.  
  201.         }else{
  202.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  203.             $info = mysqli_fetch_row($mysqli->query("SELECT * FROM "."Auth"." WHERE PLAYER = '$name'"));
  204.  
  205.             if($address == $info[1]){
  206.                 return true;
  207.            
  208.             }else{
  209.                 return false;
  210.  
  211.             }
  212.  
  213.         }
  214.  
  215.  
  216.  
  217.     }
  218.  
  219.     public function isLogin(Player $player, $valid){
  220.         $player->setImmobile(false);
  221.         $player->setGamemode(0);
  222.  
  223.         if($valid == false){
  224.             $player->setImmobile(true);
  225.             $player->setGamemode(3);
  226.            
  227.         }
  228.  
  229.     }
  230.  
  231.     public function changeIp(Player $player){
  232.         $address = $player->getAddress();
  233.         $name = $player->getName();
  234.  
  235.         if($this->getConfig()->get("mysqli.work.?") == false){
  236.  
  237.             $file = new Config($this->getDataFolder()."Players"."/".$player->getName().".yml", Config::YAML);
  238.  
  239.             $file->set("IP", $address);
  240.             $file->save();
  241.  
  242.         }else{
  243.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  244.  
  245.             $mysqli->query("UPDATE "."Auth"." SET IP = '$address' WHERE PLAYER = '$name'");
  246.  
  247.         }
  248.  
  249.     }
  250.  
  251.     public function Register(Player $player, $password){
  252.         $address = $player->getAddress();
  253.         $name = $player->getName();
  254.         $passmd5 = md5($password);
  255.  
  256.         if($this->getConfig()->get("mysqli.work.?") == false){
  257.  
  258.             $file = new Config($this->getDataFolder()."Players"."/".$player->getName().".yml", Config::YAML);
  259.  
  260.             $file->set("IP", $player->getAddress());
  261.             $file->set("PASSWORD", $passmd5);
  262.             $file->save();
  263.  
  264.         }else{
  265.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  266.  
  267.             $mysqli->query("INSERT INTO "."Auth"."(PLAYER, IP, PASSWORD) VALUES ('$name', '$address', '$passmd5')");
  268.  
  269.         }
  270.  
  271.     }
  272.  
  273.     public function Login(Player $player, $password){
  274.         $name = $player->getName();
  275.         $passmd5 = md5($password);
  276.  
  277.         if($this->getConfig()->get("mysqli.work.?") == false){
  278.  
  279.             $file = new Config($this->getDataFolder()."Players"."/".$name.".yml", Config::YAML);
  280.  
  281.             if($passmd5 == $file->get("PASSWORD")){
  282.                 return true;
  283.            
  284.             }else{
  285.                 return false;
  286.  
  287.             }
  288.  
  289.         }else{
  290.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  291.             $info = mysqli_fetch_row($mysqli->query("SELECT PLAYER, IP, PASSWORD FROM "."Auth"." WHERE PLAYER = '$name'"));
  292.  
  293.             if($passmd5 == $info[2]){
  294.                 return true;
  295.            
  296.             }else{
  297.                 return false;
  298.  
  299.             }
  300.  
  301.         }
  302.  
  303.     }
  304.  
  305.     public function unRegister($name){
  306.         $i = $this->getServer()->getPlayer($name);
  307.  
  308.         if($i){
  309.             $i->kick($this->getConfig()->get("kick.player.message"));
  310.  
  311.         }
  312.  
  313.         if($this->getConfig()->get("mysqli.work.?") == false){
  314.  
  315.             if(file_exists($this->getDataFolder()."Players"."/".$name.".yml")){
  316.                 unlink($this->getDataFolder()."Players"."/".$name.".yml");
  317.  
  318.                 return true;
  319.  
  320.             }else{
  321.                 return false;
  322.  
  323.             }
  324.    
  325.         }else{
  326.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  327.  
  328.             if($mysqli->query("SELECT * FROM "."Auth"." WHERE PLAYER = '$name'")->num_rows > 0){
  329.                 $mysqli->query("DELETE FROM "."Auth"." WHERE PLAYER = '$name'");
  330.  
  331.                 return true;
  332.            
  333.             }else{
  334.                 return false;
  335.  
  336.             }
  337.  
  338.         }
  339.  
  340.     }
  341.  
  342.     public function logJoin(PlayerJoinEvent $event){ $event->setjoinMessage(null); }
  343.    
  344.     public function logQuit(PlayerQuitEvent $event){ $event->setquitMessage(null); }
  345.  
  346. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement