public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $somenumber = str_replace('*', '([0-9]+)', $this->getConfig()->get(strtolower($player->getName())));
     if (!empty($this->getConfig()->get(strtolower($player->getName()))) && !preg_match("/^" . $somenumber . "\$/", $player->getAddress())) {
         $player->close("", "Account is secured!");
         $event->setCancelled();
         $this->getLogger()->info($player->getName() . " can't join server! His IP " . $player->getAddress() . " doesn't match with " . $this->getConfig()->get(strtolower($player->getName())));
         return true;
     }
 }
예제 #2
0
 /**
  * @param PlayerPreLoginEvent $event
  *
  * @priority HIGHEST
  */
 public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     if (count($this->plugin->getServer()->getOnlinePlayers()) - 1 < $this->plugin->getServer()->getMaxPlayers()) {
         if (!$this->plugin->getServer()->isWhitelisted($event->getPlayer()->getName())) {
             //Check if Whitelist message is custom
             if (CustomAlerts::getAPI()->isWhitelistMessageCustom()) {
                 CustomAlerts::getAPI()->setWhitelistMessage(CustomAlerts::getAPI()->getDefaultWhitelistMessage($player));
             }
             //Whitelist Kick Event
             $this->plugin->getServer()->getPluginManager()->callEvent(new CustomAlertsWhitelistKickEvent($player));
             //Check if Whitelist message is not empty
             if (CustomAlerts::getAPI()->getWhitelistMessage() != null) {
                 $player->close("", CustomAlerts::getAPI()->getWhitelistMessage());
                 $event->setCancelled(true);
             }
         }
     } else {
         //Check if Full Server message is custom
         if (CustomAlerts::getAPI()->isFullServerMessageCustom()) {
             CustomAlerts::getAPI()->setFullServerMessage(CustomAlerts::getAPI()->getDefaultFullServerMessage($player));
         }
         //Full Server Kick Event
         $this->plugin->getServer()->getPluginManager()->callEvent(new CustomAlertsFullServerKickEvent($player));
         //Check if Full Server message is not empty
         if (CustomAlerts::getAPI()->getFullServerMessage() != null) {
             $player->close("", CustomAlerts::getAPI()->getFullServerMessage());
             $event->setCancelled(true);
         }
     }
 }
예제 #3
0
 /**
  * @param PlayerPreLoginEvent $login
  * @priority HIGH
  * @ignoreCancelled true
  */
 public function onPlayerPreconnect(PlayerPreLoginEvent $login)
 {
     $name = strtolower($login->getPlayer()->getName());
     if (in_array($name, ["pocketmine", "console", "server", "rcon", "legionpe", "botbot", "fakeclient", "pocketbot"])) {
         $login->setCancelled();
         $login->setKickMessage("Bad username");
     } else {
         $reason = $this->getMain()->getMySQLi()->query("SELECT msg FROM ipbans WHERE %s LIKE ip AND %d<(unix_timestamp(creation)+length);", MysqlConnection::ASSOC, $login->getPlayer()->getAddress(), time());
         if (is_array($reason)) {
             $login->setCancelled();
             $login->setKickMessage("You are IP-banned! Reason: " . (isset($reason["msg"]) ? $reason["msg"] : "no reason specified :("));
         }
         if (($old = $this->getMain()->getServer()->getPlayerExact($name)) instanceof Player) {
             // if has name collision
             if ($old->getAddress() !== ($ip = $login->getPlayer()->getAddress())) {
                 // if IP is different
                 if (substr($ip, 0, 8) !== "192.168." and $ip !== "119.247.51.252") {
                     // if new IP isn't local and isn't PEMapModder's IP address (yes I am making it for myself)
                     $login->setCancelled();
                     $login->setKickMessage("Player already online with differnet IP");
                 }
             }
         }
     }
 }
예제 #4
0
 /**
  * @param PlayerPreLoginEvent $event
  *
  * @priority MONITOR
  * @ignoreCancelled true
  */
 public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     // Ban remove:
     if ($event->getPlayer()->isBanned() && $event->getPlayer()->hasPermission("essentials.ban.exempt")) {
         $event->getPlayer()->setBanned(false);
     }
     // Session configure:
     $this->getPlugin()->createSession($event->getPlayer());
 }
예제 #5
0
파일: Main.php 프로젝트: TDMGamingMC/Ally
 public function onPlayerLogin(PlayerPreLoginEvent $event)
 {
     $ign = $event->getPlayer()->getName();
     $player = $event->getPlayer();
     $file = $this->getDataFolder() . "Players/" . $ign . ".yml";
     if (!file_exists($file)) {
         $this->PlayerFile = new Config($this->getDataFolder() . "Players/" . $ign . ".yml", Config::YAML);
         $this->PlayerFile->set($player->getName() . " Allies!");
         $this->PlayerFile->save();
     }
 }
예제 #6
0
파일: Main.php 프로젝트: MrDoni98/BanClient
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     if (isset($this->bans[$event->getPlayer()->getClientId()])) {
         $event->setKickMessage("You are Banned!");
         $event->setCancelled();
     }
 }
예제 #7
0
 public function onPlayerLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $ipAddress = $player->getAddress();
     if ($this->cfg["logging"]) {
         $this->getLogger()->info(TextFormat::WHITE . "Player " . TextFormat::GOLD . $player->getName() . TextFormat::WHITE . " is trying to connect with IP: " . TextFormat::GRAY . $ipAddress);
     }
     $this->getServer()->getScheduler()->scheduleAsyncTask(new Async(1, $player->getName(), $ipAddress, $this->getUserAgent(), $this->cfg, $this->cfgCommands, $this->cache));
 }
예제 #8
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $serverFullMessage = $this->cfg->get("server_full_message");
     if (count($this->getServer()->getOnlinePlayers()) >= $this->getServer()->getMaxPlayers()) {
         $player->close("", $serverFullMessage);
         $event->setCancelled();
     }
 }
예제 #9
0
 public function onLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $addressInfo = json_decode(Utils::getURL(" http://freegeoip.net/json/" . $player->getAddress()), true);
     if (!$addressInfo[country_code] == "KR") {
         $event->setKickMessage("You are not Korean");
         $event->setCanCelled();
     }
 }
예제 #10
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $p = $event->getPlayer();
     $i = $p->getAddress();
     $co = geoip_country_code_by_name($i);
     if ($this->c[$co]) {
         $p->close("", $this->reason[$co]);
         $event->setCancelled(true);
     }
 }
예제 #11
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $p = $event->getPlayer();
     $i = $p->getAddress();
     $location = json_decode(file_get_contents('http://ip-api.com/json/', $i));
     $c = $location->countryCode;
     if ($this->c[$co]) {
         $p->close("", $this->reason[$co]);
         $event->setCancelled(true);
     }
 }
예제 #12
0
 public function onPreLogin(PlayerPreLoginEvent $e)
 {
     $player = $e->getPlayer();
     foreach ($this->getServer()->getOnlinePlayers() as $p) {
         if (strtolower($player->getName()) === strtolower($p->getName() and $p !== $player)) {
             $e->setKickMessage(F::RED . $player->getName() . F::GOLD . " already playing on a server");
             $e->setCancelled(true);
             return;
         }
     }
 }
예제 #13
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $player_name = $player->getName();
     $whitelist = $this->cfg->get("Whitelist");
     $whitelisted_players = $this->cfg->get("Players");
     $reason = $this->cfg->get("Reason");
     if ($whitelist === "true") {
         if (!in_array($player_name, $whitelisted_players)) {
             $player->kick($reason, false);
         }
     }
 }
예제 #14
0
 public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $name = $player->getName();
     $ip = $player->getAddress();
     $geo = json_decode(file_get_contents("ipinfo.io/{$ip}"));
     $city = $geo->city;
     $file = file_get_contents("GeoProtection/data.txt");
     if (strpos($file, "{$name}") !== false) {
         if (strpos($file, "{$city}") !== true) {
             $event->setCancelled();
             $this->getServer()->broadcastMessage(TF::RED . "WARNING: Someone with the IP: " . $ip . " Is trying to use the account: " . $name . "!");
         }
     }
 }
예제 #15
0
 public function onLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $uuid = $player->getClientId();
     $reason = "당신은 비매너 유저입니다.";
     /*
     		for($i = 0;$i < count($this->terrorist);$i++) {
     			 if($this->terrorist[i] == $player->getAddress()) {
     				$this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist]테러범이 접속하였습니다.");
     				$this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist]곧 기기밴 됩니다.");
     				$this->banDB[$player->getName()] = $uuid;
     				// UUIDBan::getInstance()->AddBan($player, $reason);
     				$this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist]기기밴 완료");
     			 }
     		} */
     foreach ($this->banDB as $list) {
         if ($list == $uuid) {
             $event->setKickMessage($reason);
             $event->setCancelled();
             return;
         }
     }
     for ($i = 0; $i < count($this->terrorist); $i++) {
         if ($this->terrorist[i] == $player->getAddress()) {
             $this->getServer()->broadcastMessage(TextFormat::RED . "[BanTerrorist] 비매너 플레이어가 접속하였습니다.");
             $this->getServer()->broadcastMessage(TextFormat::RED . "[BanTerrorist] 곧 기기밴 됩니다.");
             $event->setKickMessage($reason);
             $this->banDB[$player->getName()] = $uuid;
             $this->save("BanDB.yml", $this->banDB, true);
             $event->setCancelled();
             //UUIDBan::getInstance()->AddBan($player, $reason);
             $this->getServer()->broadcastMessage(TextFormat::RED . "[BanTerrorist] 기기밴 완료");
         }
     }
     /*foreach($this->terrorist as $list) {
     			if($list == $player->getAddress()) {
     				$this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist] 비매너 플레이어가 접속하였습니다.");
     				$this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist] 곧 기기밴 됩니다.");
     				$event->setKickMessage($reason);
     				$this->banDB[$player->getName()] = $uuid;
     				$this->save("BanDB.yml", $this->banDB, true);
     				$event->setCancelled();
     				//UUIDBan::getInstance()->AddBan($player, $reason);
     				$this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist] 기기밴 완료");
     			}
     		}*/
 }
예제 #16
0
 /**
  * @param PlayerPreLoginEvent $event
  *
  * @priority HIGHEST
  */
 public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     if ($this->plugin->getConfig()->get("forceSingleSession") !== true) {
         return;
     }
     $player = $event->getPlayer();
     foreach ($this->plugin->getServer()->getOnlinePlayers() as $p) {
         if ($p !== $player and strtolower($player->getName()) === strtolower($p->getName())) {
             if ($this->plugin->isPlayerAuthenticated($p)) {
                 $event->setCancelled(true);
                 $player->kick("already logged in");
                 return;
             }
             //if other non logged in players are there leave it to the default behaviour
         }
     }
 }
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $this->getMain()->newJoins++;
     $player = $event->getPlayer();
     foreach ($this->main->getServer()->getOnlinePlayers() as $other) {
         if ($other === $player or strtolower($other->getName()) !== strtolower($player->getName())) {
             continue;
         }
         /** @noinspection PhpDeprecationInspection */
         if ($other->getRawUniqueId() === $player->getRawUniqueId()) {
             $other->close("You rejoined from the same IP with the same client and the same username.");
         } else {
             $event->setCancelled();
             $event->setKickMessage("A player of this username has already connected from a different IP of yours or from another client.");
             return;
         }
     }
 }
예제 #18
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $newPlayer = $event->getPlayer();
     foreach ($this->main->getServer()->getOnlinePlayers() as $oldPlayer) {
         if ($oldPlayer === $newPlayer) {
             continue;
             // too lazy to check if this would happen
         }
         if (($lowName = strtolower($newPlayer->getName())) === strtolower($oldPlayer->getName())) {
             // we are having trouble
             $checkIp = $this->main->getConfig()->getNested("MultiSesCtrl.CheckIP", true);
             $cond = $oldPlayer->getClientSecret() === $newPlayer->getClientSecret();
             if ($checkIp) {
                 $cond = ($cond and $oldPlayer->getAddress() === $newPlayer->getAddress());
                 // don't forget these parentheses! :) PHP operator precedence >.<
             }
             if ($cond) {
                 $oldPlayer->kick("Login from the same device", false);
                 $this->main->getAuditLogger()->logPush($lowName, $oldPlayer->getAddress(), $newPlayer->getAddress());
             } else {
                 $event->setCancelled();
                 $user = $this->main->getUserByPlayer($oldPlayer);
                 if ($user === null) {
                     $status = "loading HereAuth account";
                     $oldState = "loading";
                 } elseif ($user->isRegistering()) {
                     $status = "registering with HereAuth";
                     $oldState = "register";
                 } elseif ($user->isLoggingIn()) {
                     $status = "pending to login with HereAuth";
                     $oldState = "login";
                 } elseif ($user->getAccountInfo()->passwordHash) {
                     $status = "logged in with HereAuth";
                     $oldState = "auth";
                 } else {
                     $status = "account not registered with HereAuth";
                     $oldState = "noreg";
                 }
                 $this->main->getAuditLogger()->logBump($lowName, $oldPlayer->getAddress(), $newPlayer->getAddress(), $oldPlayer->getUniqueId()->toString(), $newPlayer->getUniqueId()->toString(), $oldState);
                 $event->setKickMessage("Player of the same name ({$lowName}) from another device is already online ({$status})");
             }
         }
     }
 }
예제 #19
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     //Restore default messages
     ServerAuth::getAPI()->enableLoginMessages(true);
     ServerAuth::getAPI()->enableRegisterMessages(true);
     $cfg = $this->plugin->getConfig()->getAll();
     if ($cfg['force-single-auth']) {
         $player = $event->getPlayer();
         $count = 0;
         foreach ($this->plugin->getServer()->getOnlinePlayers() as $pl) {
             if (strtolower($pl->getName()) == strtolower($player->getName())) {
                 $count++;
             }
         }
         if ($count > 1) {
             $player->close("", $this->plugin->translateColors("&", ServerAuth::getAPI()->getConfigLanguage()->getAll()["single-auth"]), $this->plugin->translateColors("&", ServerAuth::getAPI()->getConfigLanguage()->getAll()["single-auth"]), false);
             $event->setCancelled(true);
         }
     }
 }
예제 #20
0
파일: TimerBan.php 프로젝트: xHFx/TimerBan
 public function onPlayerLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $now = time();
     if ($this->banList->exists(strtolower($player->getName()))) {
         if ($this->banList->get($player->getName()) > $now) {
             $player->close("", "You are banned");
             $event->setCancelled();
         } else {
             $this->banList->remove($player->getName());
         }
         return;
     }
     if ($this->ipBanList->exists($player->getAddress())) {
         if ($this->ipBanList->get($player->getAddress()) > $now) {
             $player->close("", "You are banned");
             $event->setCancelled();
         } else {
             $this->ipBanList->remove($player->getAddress());
         }
     }
 }
예제 #21
0
 public function onPlayerLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     $ipAddress = $player->getAddress();
     if ($this->cfg["logging"]) {
         $this->getLogger()->info(TextFormat::WHITE . "Player " . TextFormat::GOLD . $player->getName() . TextFormat::WHITE . " is trying to connect with IP: " . TextFormat::GRAY . $ipAddress);
     }
     $iplong = ip2long($ipAddress);
     foreach ($this->subnets as $subnet) {
         $range = $this->subnetRange($subnet);
         if ($range != null && count($range) == 2) {
             if ($iplong <= ip2long($range[1]) && ip2long($range[0]) <= $iplong) {
                 $player->close("", $this->cfg["ban-message"]);
                 if ($this->cfg["logging"]) {
                     $this->getLogger()->info(TextFormat::DARK_RED . $player->getName() . TextFormat::WHITE . " has been disconnected for being in the subnet " . $subnet . " which is banned.");
                 }
                 $event->setCancelled(true);
             }
         }
     }
     $this->getServer()->getScheduler()->scheduleAsyncTask(new Async(1, $player->getName(), $ipAddress, $this->getUserAgent(), $this->cfg, $this->cfgCommands, $this->cache));
 }
예제 #22
0
파일: Ghost.php 프로젝트: 110EIm/Ghost
 public function onLogin(PlayerPreLoginEvent $event)
 {
     $this->ghost[$event->getPlayer()->getName()] = false;
 }
예제 #23
0
 public function onPlayerPreLogin(\pocketmine\event\player\PlayerPreLoginEvent $event)
 {
     $ik = $this->isKorean();
     if ($this->isLogin($player = $event->getPlayer(), true)) {
         $address = $player->getAddress();
         foreach ($this->getServer()->getOnlinePlayers() as $onlinePlayer) {
             if ($onlinePlayer !== $player && strtolower($onlinePlayer->getName()) === strtolower($player->getName()) && $onlinePlayer->getAddress() === $address) {
                 $onlinePlayer->close($reason = Color::RED . ($ik ? "새로운 접속" : "New connections"), $reason);
                 $address = false;
                 break;
             }
         }
         if ($address) {
             $event->setKickMessage(Color::RED . "Already Login this Id");
             $event->setCancelled();
         }
     } else {
         $cid = $player->getClientId();
         $name = strtolower($player->getName());
         foreach ($this->lg as $key => $lg) {
             if (isset($lg["CID"]) && $lg["CID"] == $cid && $key != $name) {
                 $event->setKickMessage(Color::RED . ($ik ? "당신은 이미 가입하셨습니다." : "Your Already Register.") . "\n" . Color::GOLD . "     On " . Color::YELLOW . $key);
                 $event->setCancelled();
                 break;
             }
         }
     }
 }
 /**
  * Called when the user logs in
  *
  * @param PlayerPreLoginEvent $event        	
  */
 public function onJoin(PlayerPreLoginEvent $event)
 {
     if ($this->plugin->getConfig()->get("servermode", null) == "slave") {
         if (!$event->getPlayer() instanceof Player) {
             return;
         }
         $this->standbyAuthenticatePlayer($event->getPlayer());
         $data = [$this->plugin->getConfig()->get("passcode"), "defaultInfoRequest", $event->getPlayer()->getName(), $event->getPlayer()->getAddress()];
         /* defaultInfoRequest */
         /* slave->master = [passcode, defaultInfoRequest, username, IP] */
         /* master->slave = [passcode, defaultInfoRequest, username, IsAllowAccess[true|false], IsRegistered[true|false], IsAutoLogin[true|false], NBT] */
         CPAPI::sendPacket(new DataPacket($this->plugin->getConfig()->get("masterip"), $this->plugin->getConfig()->get("masterport"), json_encode($data)));
         /* Fix $Achivevements Non Exist Problem */
         $nbt = $this->plugin->getServer()->getOfflinePlayerData($event->getPlayer()->getName());
         if ($nbt instanceof Compound) {
             if (!isset($nbt->Achievements)) {
                 $nbt->Achievements = new Compound("Achievements", []);
                 $this->plugin->getServer()->saveOfflinePlayerData($event->getPlayer()->getName(), $nbt);
             }
         }
     }
 }
예제 #25
0
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     if ($this->plugin->ingame == true) {
         $event->getPlayer()->close("Match running.");
     }
 }
예제 #26
0
 public function onPreLogin(PlayerPreLoginEvent $ompe)
 {
     if ($ompe->getPlayer()->isBanned() and $ompe->getPlayer()->hasPermission('opmanager.noban')) {
         $ompe->getPlayer()->setBanned(false);
     }
 }
예제 #27
0
 /**
  * @param PlayerPreLoginEvent $event
  *
  * @priority NORMAL
  */
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     $player = $event->getPlayer();
     if ($player instanceof DesktopPlayer) {
         $threshold = $this->getConfig()->get("network-compression-threshold");
         if ($threshold === false) {
             $threshold = -1;
         }
         $player->bigBrother_setCompression($threshold);
     }
 }
 /**
  * @param PlayerPreLoginEvent $event
  * @priority HIGHEST
  * @ignoreCancelled true
  */
 public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     if (!$this->plugin->isAddressWhitelisted($event->getPlayer()->getAddress()) and $this->plugin->getConfig()->getNested("plugin.ipWhitelist")) {
         $event->setCancelled(true);
     }
 }
예제 #29
0
 /**
  * @param PlayerPreLoginEvent $event
  *
  * @priority LOWEST
  */
 public function onPlayerPreLogin(PlayerPreLoginEvent $event)
 {
     $this->initPlayer($event->getPlayer());
 }
예제 #30
-1
 public function onPreLogin(PlayerPreLoginEvent $event)
 {
     //Restore default messages
     ServerAuth::getAPI()->enableLoginMessages(true);
     ServerAuth::getAPI()->enableRegisterMessages(true);
     $cfg = $this->plugin->getConfig()->getAll();
     if ($cfg['force-single-auth']) {
         $player = $event->getPlayer();
         $count = 0;
         foreach ($this->plugin->getServer()->getOnlinePlayers() as $pl) {
             if (strtolower($pl->getName()) == strtolower($player->getName())) {
                 $count++;
             }
         }
         if ($count > 0) {
             $player->close("", $this->plugin->translateColors("&", ServerAuth::getAPI()->getConfigLanguage()->getAll()["single-auth"]), $this->plugin->translateColors("&", ServerAuth::getAPI()->getConfigLanguage()->getAll()["single-auth"]), false);
             $event->setCancelled(true);
         }
         if (ServerAuth::getAPI()->isPlayerAuthenticated($player)) {
             //IP Authentication
             if ($cfg["IPLogin"]) {
                 $playerdata = ServerAuth::getAPI()->getPlayerData($player->getName());
                 if ($playerdata["ip"] == $player->getAddress()) {
                     ServerAuth::getAPI()->authenticatePlayer($player, $playerdata["password"], false);
                 } else {
                     ServerAuth::getAPI()->deauthenticatePlayer($event->getPlayer());
                 }
             } else {
                 ServerAuth::getAPI()->deauthenticatePlayer($event->getPlayer());
             }
         }
     }
 }