Advertisement
Guest User

Untitled

a guest
Jul 1st, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.30 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("You have been", "logged by Ip", 20, 20, 20);
  71.  
  72.  
  73.             }else{
  74.                 $this->isLogin($player, false);
  75.                 $player->sendTitle("Welcome Use", "/login <password>", 20, 20, 20);
  76.  
  77.  
  78.             }
  79.  
  80.         }else{
  81.             $this->isLogin($player, false);
  82.             $player->sendTitle("Welcome Use", "/register <password> to logged in", 20, 20, 20);
  83.  
  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("You have been", "logged in", 20, 20, 20);
  103.  
  104.  
  105.                     }else{
  106.                         $sender->sendTitle("Use", "/register <password>", 20, 20, 20);
  107.  
  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.                         $player->sendTitle("You have been", "logged in", 20, 20, 20);
  125.  
  126.  
  127.                     }else{
  128.                    
  129.                          $player->sendTitle("Wrong", "password", 20, 20, 20);
  130.  
  131.  
  132.                     }
  133.  
  134.                 }
  135.  
  136.             break;
  137.  
  138.             case "unregister": //op
  139.                 if($sender->isOp() && !empty($args[0])){
  140.  
  141.                     if($this->unRegister($args[0]) == true){
  142.                         $sender->sendMessage($this->getConfig()->get("unregister.success.message"));
  143.  
  144.                     }else{
  145.                         $sender->sendMessage($this->getConfig()->get("unregister.error.message"));
  146.  
  147.                     }
  148.  
  149.                 }
  150.  
  151.             break;
  152.  
  153.         }
  154.  
  155.     }
  156.  
  157.  
  158.     public function isRegister(Player $player){
  159.         $name = $player->getName();
  160.  
  161.         if($this->getConfig()->get("mysqli.work.?") == false){
  162.  
  163.             if(file_exists($this->getDataFolder()."Players"."/".$name.".yml")){
  164.                 return true;
  165.            
  166.             }else{
  167.                 return false;
  168.  
  169.             }
  170.  
  171.         }else{
  172.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  173.  
  174.             if($mysqli->query("SELECT * FROM "."Auth"." WHERE PLAYER = '$name'")->num_rows > 0){
  175.                 return true;
  176.            
  177.             }else{
  178.                 return false;
  179.  
  180.             }
  181.  
  182.         }
  183.  
  184.     }
  185.  
  186.     public function isLoginIp(Player $player){
  187.         $address = $player->getAddress();
  188.         $name = $player->getName();
  189.  
  190.         if($this->getConfig()->get("mysqli.work.?") == false){
  191.  
  192.             $file = new Config($this->getDataFolder()."Players"."/".$name.".yml", Config::YAML);
  193.  
  194.             if($address == $file->get("IP")){
  195.                 return true;
  196.            
  197.             }else{
  198.                 return false;
  199.  
  200.             }
  201.  
  202.         }else{
  203.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  204.             $info = mysqli_fetch_row($mysqli->query("SELECT * FROM "."Auth"." WHERE PLAYER = '$name'"));
  205.  
  206.             if($address == $info[1]){
  207.                 return true;
  208.            
  209.             }else{
  210.                 return false;
  211.  
  212.             }
  213.  
  214.         }
  215.  
  216.  
  217.  
  218.     }
  219.  
  220.     public function isLogin(Player $player, $valid){
  221.         $player->setImmobile(false);
  222.         $player->setGamemode(0);
  223.  
  224.         if($valid == false){
  225.             $player->setImmobile(true);
  226.             $player->setGamemode(0);
  227.            
  228.         }
  229.  
  230.     }
  231.  
  232.     public function changeIp(Player $player){
  233.         $address = $player->getAddress();
  234.         $name = $player->getName();
  235.  
  236.         if($this->getConfig()->get("mysqli.work.?") == false){
  237.  
  238.             $file = new Config($this->getDataFolder()."Players"."/".$player->getName().".yml", Config::YAML);
  239.  
  240.             $file->set("IP", $address);
  241.             $file->save();
  242.  
  243.         }else{
  244.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  245.  
  246.             $mysqli->query("UPDATE "."Auth"." SET IP = '$address' WHERE PLAYER = '$name'");
  247.  
  248.         }
  249.  
  250.     }
  251.  
  252.     public function Register(Player $player, $password){
  253.         $address = $player->getAddress();
  254.         $name = $player->getName();
  255.         $passmd5 = md5($password);
  256.  
  257.         if($this->getConfig()->get("mysqli.work.?") == false){
  258.  
  259.             $file = new Config($this->getDataFolder()."Players"."/".$player->getName().".yml", Config::YAML);
  260.  
  261.             $file->set("IP", $player->getAddress());
  262.             $file->set("PASSWORD", $passmd5);
  263.             $file->save();
  264.  
  265.         }else{
  266.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  267.  
  268.             $mysqli->query("INSERT INTO "."Auth"."(PLAYER, IP, PASSWORD) VALUES ('$name', '$address', '$passmd5')");
  269.  
  270.         }
  271.  
  272.     }
  273.  
  274.     public function Login(Player $player, $password){
  275.         $name = $player->getName();
  276.         $passmd5 = md5($password);
  277.  
  278.         if($this->getConfig()->get("mysqli.work.?") == false){
  279.  
  280.             $file = new Config($this->getDataFolder()."Players"."/".$name.".yml", Config::YAML);
  281.  
  282.             if($passmd5 == $file->get("PASSWORD")){
  283.                 return true;
  284.            
  285.             }else{
  286.                 return false;
  287.  
  288.             }
  289.  
  290.         }else{
  291.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  292.             $info = mysqli_fetch_row($mysqli->query("SELECT PLAYER, IP, PASSWORD FROM "."Auth"." WHERE PLAYER = '$name'"));
  293.  
  294.             if($passmd5 == $info[2]){
  295.                 return true;
  296.            
  297.             }else{
  298.                 return false;
  299.  
  300.             }
  301.  
  302.         }
  303.  
  304.     }
  305.  
  306.     public function unRegister($name){
  307.         $i = $this->getServer()->getPlayer($name);
  308.  
  309.         if($i){
  310.             $i->kick($this->getConfig()->get("kick.player.message"));
  311.  
  312.         }
  313.  
  314.         if($this->getConfig()->get("mysqli.work.?") == false){
  315.  
  316.             if(file_exists($this->getDataFolder()."Players"."/".$name.".yml")){
  317.                 unlink($this->getDataFolder()."Players"."/".$name.".yml");
  318.  
  319.                 return true;
  320.  
  321.             }else{
  322.                 return false;
  323.  
  324.             }
  325.    
  326.         }else{
  327.             $mysqli = new \mysqli($this->HOST, $this->USER, $this->PASS, "Auth");
  328.  
  329.             if($mysqli->query("SELECT * FROM "."Auth"." WHERE PLAYER = '$name'")->num_rows > 0){
  330.                 $mysqli->query("DELETE FROM "."Auth"." WHERE PLAYER = '$name'");
  331.  
  332.                 return true;
  333.            
  334.             }else{
  335.                 return false;
  336.  
  337.             }
  338.  
  339.         }
  340.  
  341.     }
  342.  
  343.     public function logJoin(PlayerJoinEvent $event){ $event->setjoinMessage(null); }
  344.    
  345.     public function logQuit(PlayerQuitEvent $event){ $event->setquitMessage(null); }
  346.  
  347. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement