Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. namespace aAuth;
  4.  
  5. use pocketmine\plugin\PluginBase;
  6. use pocketmine\utils\Config;
  7. use pocketmine\utils\TextFormat as F;
  8. use pocketmine\command\Command;
  9. use pocketmine\command\CommandSender;
  10. use pocketmine\event\Listener;
  11. use pocketmine\event\player\PlayerMoveEvent;
  12. use pocketmine\event\player\PlayerChatEvent;
  13. use pocketmine\event\player\PlayerDropItemEvent;
  14. use pocketmine\event\player\PlayerJoinEvent;
  15. use pocketmine\event\player\PlayerQuitEvent;
  16. use pocketmine\event\player\PlayerCommandPreprocessEvent;
  17. use pocketmine\Player;
  18. use pocketmine\Server;
  19. use pocketmine\event\block\BlockBreakEvent;
  20. use pocketmine\event\player\PlayerInteractEvent;
  21.  
  22. class wAuth extends PluginBase implements Listener {
  23. private $db, $users = array(), $reg = array();
  24.  
  25. public function onEnable() {
  26. if(!is_dir($this->getDataFolder()))
  27. @mkdir($this->getDataFolder());
  28. $this->config = (new Config($this->getDataFolder()."config.yml", Config::YAML, ["salt" => "bbsecktechworld"]))->getAll();
  29. $this->db = new \SQLite3($this->getDataFolder()."users.db");
  30. $this->db->exec(stream_get_contents($this->getResource("database.sql")));
  31. $this->getServer()->getPluginManager()->registerEvents($this, $this);
  32. $this->getLogger()->info(F::GREEN."vAuth ON");
  33. }
  34.  
  35. public function onPlayerMove(PlayerMoveEvent $event) {
  36. if(!isset($this->users[strtolower($event->getPlayer()->getName())]))
  37. $event->setCancelled(true);
  38. }
  39. public function onDrop(PlayerDropItemEvent $e){
  40. if(!isset($this->users[strtolower($e->getPlayer()->getName())]))
  41. $e->setCancelled(true);
  42. }
  43. public function onBreak(BlockBreakEvent $e){
  44. if(!isset($this->users[strtolower($e->getPlayer()->getName())]))
  45. $e->setCancelled(true);
  46. }
  47.  
  48. public function onTap( PlayerInteractEvent $e){
  49. if(!isset($this->users[strtolower($e->getPlayer()->getName())]))
  50. $e->setCancelled(true);
  51. }
  52. public function onPlayerJoin(PlayerJoinEvent $event) {
  53. $player = $event->getPlayer();
  54. $sql = $this->db->prepare("SELECT * FROM `users` WHERE `nickname` = :nickname");
  55. $sql->bindValue(":nickname", strtolower($player->getName()), SQLITE3_TEXT);
  56. $sql = $sql->execute();
  57. $user = $sql->fetchArray(SQLITE3_ASSOC);
  58. if(isset($user["nickname"])) {
  59. $ip = $player->getAddress();
  60. if($ip == $user["ipLast"]) {
  61. $this->users[strtolower($player->getName())] = [
  62. "pass" => $user["password"],
  63. "ip" => $ip
  64. ];
  65. $player->sendMessage("§7[§a§fTechnologyWorld§7] §cВаш IP adress уже был запечатлен сегодня на сервере,поэтому вам уже не надо логиниться§f! ");
  66. } else
  67. $player->sendMessage("§7[§a§fTechnologyWorld§7] §cНапиши свой пароль в чат, чтобы авторизироваться на проекте TechnologyWorld§f! ");
  68. } else $player->sendMessage("§7[§a§fTechnologyWorld§7] §cНапиши любой пароль в чат, а дальше запиши его на листочек или запомни§f! ");
  69. $sql->finalize();
  70. }
  71.  
  72. public function onPlayerQuit(PlayerQuitEvent $event) {
  73. unset($this->users[strtolower($event->getPlayer()->getName())]);
  74. }
  75.  
  76. public function onPlayerCommandPreprocess(PlayerCommandPreprocessEvent $event) {
  77. $login = "§7[§a§fTechnologyWorld§7] §cНапиши свой пароль в чат, чтобы авторизироваться на TechnologyWorld§f!";
  78. $player = $event->getPlayer();
  79. $name = strtolower($player->getName());
  80. $ip = $player->getAddress();
  81. $msg = $event->getMessage();
  82. if(!isset($this->users[$name])) {
  83. if(count(explode("/", $msg)) > 1) {
  84. $event->setCancelled(true);
  85. $player->sendMessage($login);
  86. } else {
  87. $msg = explode(" ", $msg);
  88. if(count($msg) == 1) {
  89. $sql = $this->db->prepare("SELECT * FROM `users` WHERE `nickname` = :nickname");
  90. $sql->bindValue(":nickname", $name, SQLITE3_TEXT);
  91. $sql = $sql->execute();
  92. if($sql instanceof \SQLite3Result) {
  93. $pass = crypt(md5($msg[0]), sha1($this->config["salt"]));
  94. $user = $sql->fetchArray(SQLITE3_ASSOC);
  95. if(!empty($user["nickname"])) {
  96. if($pass == $user["password"]) {
  97. $upd = $this->db->prepare("UPDATE `users` SET `ipLast` = :ip WHERE `nickname` = :nickname");
  98. $upd->bindValue(":ip", $ip);
  99. $upd->bindValue(":nickname", $name);
  100. $upd = $upd->execute();
  101. $upd->finalize();
  102. $this->users[$name] = [
  103. "pass" => $pass,
  104. "ip" => $ip
  105. ];
  106. $player->sendMessage("§7[§a§fTechnologyWorld§7] §cВы успешно авторизировались на проекте TechnologyWorld§f!");
  107. } else $player->sendMessage(F::RED."§7[§a§fTechnologyWorld§7] §cТы ввел неправильный пароль. Не смей никого взламывать§f!");
  108. } else {
  109. if(!isset($this->reg[$name])) {
  110. $this->reg[$name] = $pass;
  111. $player->sendMessage(F::GRAY."§7[§a§fTechnologyWorld§7] §cДля подтверждения введи еще раз свой пароль§f! ");
  112. } else {
  113. if($pass == $this->reg[$name]) {
  114. $add = $this->db->prepare("INSERT INTO `users`(`nickname`, `password`, `ipReg`, `ipLast`) VALUES(:nickname, :password, :ip, :ip)");
  115. $add->bindValue(":nickname", $name);
  116. $add->bindValue(":password", $pass);
  117. $add->bindValue(":ip", $ip);
  118. $add = $add->execute();
  119. $add->finalize();
  120. $this->users[$name] = [
  121. "pass" => $pass,
  122. "ip" => $ip
  123. ];
  124. $player->sendMessage("§7[§a§fTechnologyWorld§7] §cВы успешно зарегистрировались на проекте TechnologyWorld§f!");
  125. } else {
  126. unset($this->reg[$name]);
  127. $player->sendMessage("§7[§a§fTechnologyWorld§7] §cТы ввел неверный пароль. Не смей никого взламывать.");
  128. }
  129. }
  130. }
  131. }
  132. $sql->finalize();
  133. } else $player->sendMessage($login);
  134. }
  135. $event->setCancelled(true);
  136. } else {
  137. if($ip != $this->users[$name]["ip"]) {
  138. $event->setCancelled(true);
  139. $player->sendMessage($login);
  140. }
  141. }
  142. }
  143. }
  144.  
  145. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement