HiddenMotives / VPNGuard

PocketMine-MP Plugin: VPNGuard will prevent players from joining your server behind any type of anonymizer.
MIT License
20 stars 12 forks source link

[Crash Server] Trying to get permissions of closed player" (EXCEPTION) in "src/pocketmine/Player" at line 623 #17

Closed teracube closed 5 years ago

teracube commented 5 years ago

@HiddenMotives @DarkWav

server crash when a banned ip player try to connect to the server with a new name account

62.XXX.107.16 is a banned ip in the config banned.yml =) 62.XXX.107.16/32 62.XXX.107.16 is not a VPN IP theo666 is the new name of the banned player player try to connect 2 times at same time

https://poggit.pmmp.io/r/43245/VPNGuard_dev-16.phar https://jenkins.pmmp.io/job/PocketMine-MP/1642/artifact/PocketMine-MP.phar

2018-12-02 [09:30:33] [Server thread/NOTICE]: Player data not found for "theo666", creating new profile
2018-12-02 [09:30:34] [Server thread/INFO]: theo666[/62.XXX.107.166:59391] logged in with entity id 47765 at (lobby, 0, 6, 0)
2018-12-02 [09:30:36] [Server thread/INFO]: [VPNGuard] Player theo666 has connected with the IP: 62.XXX.107.166
2018-12-02 [09:30:36] [Server thread/INFO]: [09:30:36] theo666 [-]
2018-12-02 [09:30:36] [Server thread/INFO]: theo666[/62.XXX.107.166:59391] logged out due to Votre sous-réseau IP est banni !
2018-12-02 [09:30:36] [Server thread/INFO]: [VPNGuard] theo666 has been disconnected for being in the subnet 62.XXX.107.166/32 which is banned.
2018-12-02 [09:30:36] [Server thread/INFO]: [09:30:36] theo666 [+]
2018-12-02 [09:30:36] [Server thread/CRITICAL]: InvalidStateException: "Trying to get permissions of closed player" (EXCEPTION) in "src/pocketmine/Player" at line 623
2018-12-02 [09:30:36] [Server thread/DEBUG]: #0 src/pocketmine/Player(1057): pocketmine\Player->hasPermission(string pocketmine.broadcast.admin)
2018-12-02 [09:30:36] [Server thread/DEBUG]: #1 src/pocketmine/Player(985): pocketmine\Player->doFirstSpawn()
2018-12-02 [09:30:36] [Server thread/DEBUG]: #2 src/pocketmine/level/Level(2464): pocketmine\Player->sendChunk(integer -2, integer 3, pocketmine\network\mcpe\protocol\BatchPacket object)
2018-12-02 [09:30:36] [Server thread/DEBUG]: #3 src/pocketmine/level/Level(2488): pocketmine\level\Level->sendChunkFromCache(integer -2, integer 3)
2018-12-02 [09:30:36] [Server thread/DEBUG]: #4 src/pocketmine/level/Level(792): pocketmine\level\Level->processChunkRequest()
2018-12-02 [09:30:36] [Server thread/DEBUG]: #5 src/pocketmine/Server(2370): pocketmine\level\Level->doTick(integer 248782)
2018-12-02 [09:30:36] [Server thread/DEBUG]: #6 src/pocketmine/Server(2519): pocketmine\Server->checkTickUpdates(integer 248782, double 1543739436.5459)
2018-12-02 [09:30:36] [Server thread/DEBUG]: #7 src/pocketmine/Server(2265): pocketmine\Server->tick()
2018-12-02 [09:30:36] [Server thread/DEBUG]: #8 src/pocketmine/Server(2135): pocketmine\Server->tickProcessor()
2018-12-02 [09:30:36] [Server thread/DEBUG]: #9 src/pocketmine/Server(1701): pocketmine\Server->start()
2018-12-02 [09:30:36] [Server thread/DEBUG]: #10 src/pocketmine/PocketMine(249): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /home/myserver/, string /home/myserver/plugins/)
2018-12-02 [09:30:36] [Server thread/DEBUG]: #11 /home/myserver/PocketMine-MP.phar(1): require(string phar:///home/myserver/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
2018-12-02 [09:30:36] [Server thread/EMERGENCY]: An unrecoverable error has occurred and the server has crashed. Creating a crash dump
2018-12-02 [09:30:36] [Server thread/EMERGENCY]: Please upload the "/home/myserver/crashdumps/Sun_Dec_2-09.30.36-CET_2018.log" file to the Crash Archive and submit the link to the Bug Reporting page. Give as much info as you can.
PocketMine-MP Crash Dump Sun Dec 2 09:30:36 CET 2018

Error: Trying to get permissions of closed player
File: src/pocketmine/Player
Line: 623
Type: InvalidStateException

Code:
[614]   /**
[615]    * @param permission\Permission|string $name
[616]    *
[617]    * @return bool
[618]    *
[619]    * @throws \InvalidStateException if the player is closed
[620]    */
[621]   public function hasPermission($name) : bool{
[622]       if($this->closed){
[623]           throw new \InvalidStateException("Trying to get permissions of closed player");
[624]       }
[625]       return $this->perm->hasPermission($name);
[626]   }
[627] 
[628]   /**
[629]    * @param Plugin $plugin
[630]    * @param string $name
[631]    * @param bool   $value
[632]    *
[633]    * @return PermissionAttachment

Backtrace:
#0 src/pocketmine/Player(1057): pocketmine\Player->hasPermission(string pocketmine.broadcast.admin)
#1 src/pocketmine/Player(985): pocketmine\Player->doFirstSpawn()
#2 src/pocketmine/level/Level(2464): pocketmine\Player->sendChunk(integer -2, integer 3, pocketmine\network\mcpe\protocol\BatchPacket object)
#3 src/pocketmine/level/Level(2488): pocketmine\level\Level->sendChunkFromCache(integer -2, integer 3)
#4 src/pocketmine/level/Level(792): pocketmine\level\Level->processChunkRequest()
#5 src/pocketmine/Server(2370): pocketmine\level\Level->doTick(integer 248782)
#6 src/pocketmine/Server(2519): pocketmine\Server->checkTickUpdates(integer 248782, double 1543739436.5459)
#7 src/pocketmine/Server(2265): pocketmine\Server->tick()
#8 src/pocketmine/Server(2135): pocketmine\Server->tickProcessor()
#9 src/pocketmine/Server(1701): pocketmine\Server->start()
#10 src/pocketmine/PocketMine(249): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /home/gsp_1485/g3.hmserv.eu-19144/, string /home/gsp_1485/g3.hmserv.eu-19144/plugins/)
#11 /home/gsp_1485/g3.hmserv.eu-19144/PocketMine-MP.phar(1): require(string phar:///home/gsp_1485/g3.hmserv.eu-19144/PocketMine-MP.phar/src/pocketmine/PocketMine.php)

PocketMine-MP version: 3.3.2 [Protocol 291]
Git commit: 200de3fe8460d180a4fd9f5a0e0768bd3085fd50
uname -a: Linux g1 4.5.0-0.bpo.2-amd64 #1 SMP Debian 4.5.4-1~bpo8+1 (2016-05-13) x86_64
PHP Version: 7.2.9
Zend version: 3.2.0
OS : Linux, linux
teracube commented 5 years ago

another example. same crash, same issue

2018-12-01 [13:11:21] [Server thread/INFO]: [VPNGuard] Player IComeBack1 has connected with the IP: 207.XXX.0.34
2018-12-01 [13:11:21] [Server thread/INFO]: [13:11:21] IComeBack1 [-]
2018-12-01 [13:11:21] [Server thread/INFO]: IComeBack1[/207.XXX.0.34:40081] logged out due to Votre sous-réseau IP est banni !
2018-12-01 [13:11:21] [Server thread/INFO]: [VPNGuard] IComeBack1 has been disconnected for being in the subnet 207.XXX.0.34/32 which is banned.
2018-12-01 [13:11:21] [Server thread/INFO]: [13:11:21] IComeBack1 [+]
2018-12-01 [13:11:21] [Server thread/CRITICAL]: InvalidStateException: "Trying to get permissions of closed player" (EXCEPTION) in "src/pocketmine/Player" at line 623
2018-12-01 [13:11:21] [Server thread/DEBUG]: #0 src/pocketmine/Player(1057): pocketmine\Player->hasPermission(string pocketmine.broadcast.admin)
2018-12-01 [13:11:21] [Server thread/DEBUG]: #1 src/pocketmine/Player(985): pocketmine\Player->doFirstSpawn()
2018-12-01 [13:11:21] [Server thread/DEBUG]: #2 src/pocketmine/level/Level(2464): pocketmine\Player->sendChunk(integer -2, integer 3, pocketmine\network\mcpe\protocol\BatchPacket object)
2018-12-01 [13:11:21] [Server thread/DEBUG]: #3 src/pocketmine/level/Level(2488): pocketmine\level\Level->sendChunkFromCache(integer -2, integer 3)
2018-12-01 [13:11:21] [Server thread/DEBUG]: #4 src/pocketmine/level/Level(792): pocketmine\level\Level->processChunkRequest()
2018-12-01 [13:11:21] [Server thread/DEBUG]: #5 src/pocketmine/Server(2370): pocketmine\level\Level->doTick(integer 600655)
2018-12-01 [13:11:21] [Server thread/DEBUG]: #6 src/pocketmine/Server(2519): pocketmine\Server->checkTickUpdates(integer 600655, double 1543666281.5289)
2018-12-01 [13:11:21] [Server thread/DEBUG]: #7 src/pocketmine/Server(2265): pocketmine\Server->tick()
2018-12-01 [13:11:21] [Server thread/DEBUG]: #8 src/pocketmine/Server(2135): pocketmine\Server->tickProcessor()
2018-12-01 [13:11:21] [Server thread/DEBUG]: #9 src/pocketmine/Server(1701): pocketmine\Server->start()
2018-12-01 [13:11:21] [Server thread/DEBUG]: #10 src/pocketmine/PocketMine(249): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /home/myserver/, string /home/myserver/plugins/)
2018-12-01 [13:11:21] [Server thread/DEBUG]: #11 /home/myserver/PocketMine-MP.phar(1): require(string phar:///home/myserver/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
2018-12-01 [13:11:21] [Server thread/EMERGENCY]: An unrecoverable error has occurred and the server has crashed. Creating a crash dump
2018-12-01 [13:11:21] [Server thread/EMERGENCY]: Please upload the "/home/myserver/crashdumps/Sat_Dec_1-13.11.21-CET_2018.log" file to the Crash Archive and submit the link to the Bug Reporting page. Give as much info as you can.
DarkWav commented 5 years ago

This seems to be a problem of pocketmine itself at first sight, however, I will take a look at this. Since pocketmine does not report anything usefull in the crash report, It will require a quite complicated workaround.....

DarkWav commented 5 years ago

I tried to address your issue in VPNGuard 1.0.7-patch1 which you can find in my repository. If you need a version for API 4.0.0, please notify me down below.

teracube commented 5 years ago

@DarkWav v1.0.7-patch1 works on test on my server since 1 day and no error ok for me thanks

DarkWav commented 5 years ago

OK, then I will update the version for API-4.0.0 aswell and request the patch to be pushed upstream.

teracube commented 5 years ago

@DarkWav thank you very much TeraCube