Advertisement
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

AntiBot plugin mi potete aiutare per favore :D

Comments in 'Italiano' started by XEmAX32, Aug 3, 2015.

  1. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    Salve gente io ho iniziato a fare un plugin AntiBot così da evitare attacchi di Bot quindi la mia idea iniziale era che quando un player entra nel server segna l'ip e se è il quinto player online con lo stesso ip lo kicka o banna direttamente l'ip dovevo decidere xD comunque alla fine mi è venuto in mente che era infattibile perché ci sarebbe dovuta essere una parte che segnava tutte quanti gli ip delle persone online e che ogni tot tempo veniva rifatta. Quanto detto mi è sembrato abbastanza difficile quindi ho pensato a una seconda possibilità: il plugin starta e usando il PlayerJoinEvent prende quanti player entrano ogni tot secondi e quindi se superano una determinata quantità di secondi il server viene messo in whitelist per tot tempo (pensavo 5 minuti) e dopo questo tempo viene tolta la whitelist.
    Quindi avevo bisogno di sapere un parametro: quello dei secondi per il join.
    Grazie mille
    p.s. domani metto su github il progetto quindi se qualcuno vuole partecipare non esiti :D bye
  2. EvolSoft
    Offline

    EvolSoft Notable Member Plugin Developer

    Joined:
    Sep 10, 2014
    Posts:
    821
    Plugins:
    15
    Minecraft User:
    Flavius12
    Dovresti provare con la funzione microtime();. A dirti la verità non ho mai aggiunto un timer in un evento: ho sempre usato le tasks.
    Riguardo agli IP ho fatto una cosa simile su ServerAuth: il plugin ora dovrebbe bloccare la registrazione di user dallo stesso IP se raggiunto un limite massimo.
    Se vuoi prendi spunto da quella parte di codice https://github.com/EvolSoft/ServerAuth/blob/master/ServerAuth/src/ServerAuth/ServerAuth.php#L539
    Secondo me comunque non ti serve un timer. Dovresti solamente bloccare più di n° accessi confrontando semplicemente i players online.
  3. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    grazie ma il punto è che da quel che so io i bot non si registrano quindi è da usare l'evento del join e non del register
  4. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
  5. fycarman
    Offline

    fycarman Active Member

    Joined:
    Mar 31, 2015
    Posts:
    75
    Minecraft User:
    Fycarman06
    PlayerJoinEvent è quando sono entrati,una volta entrati è come non aver fatto niente...dovresti usare PlayerPreLoginEvent
  6. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    l'idea era che quando avviene il PlayerJoinEvent parte un timer e vede se entro due secondi non c'è un altro PlayerJoinEvent se si mette la Whitelist on e fa partire un altro timer di 5m finiti i 5m toglie la whitelist
  7. fycarman
    Offline

    fycarman Active Member

    Joined:
    Mar 31, 2015
    Posts:
    75
    Minecraft User:
    Fycarman06
    ci ho pensato al fatto del timer e della wl,ma pensa, se il server crashasse e al riavvio i player entrassero tutti insieme? metterebbe in wl,una volta tolta rientrerebbero e continuerebbe così, quindi sarebbe meglio contare gli ip uguali e se sono uguali o maggiori al numero che decidi tu,l'ip viene bannato
  8. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    si ok hai ragione però il problema è come segnare tutti gli ip e come fare il refresh degli ip online comunque quello si potrebbe fare con un altro timer che quando stata fa un timer di toh 10/15 secondi in qui il plugin non funziona
  9. xionbig
    Offline

    xionbig Active Member Plugin Developer

    Joined:
    Jun 11, 2014
    Posts:
    106
    Plugins:
    2
    Minecraft User:
    NikoZazza
    Per segnare tutti gli ip dei giocatori potresti fare cosi:
    PHP:
    $temp = [];
            foreach(\
    pocketmine\Server::getInstance()->getOnlinePlayers() as $player){
                
    $ip $player->getAddress();
                if(isset(
    $temp[$ip]))
                    
    $player->setBanned(true);
                else
                    
    $temp[$ip] = true;
            }
    EvolSoft and fycarman like this.
  10. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    grazie mille xion :D
    xionbig likes this.
  11. EvolSoft
    Offline

    EvolSoft Notable Member Plugin Developer

    Joined:
    Sep 10, 2014
    Posts:
    821
    Plugins:
    15
    Minecraft User:
    Flavius12
    Bella soluzione ;)
    Facile, corta e veloce :)
    xionbig likes this.
  12. xionbig
    Offline

    xionbig Active Member Plugin Developer

    Joined:
    Jun 11, 2014
    Posts:
    106
    Plugins:
    2
    Minecraft User:
    NikoZazza
    Mi sono accorto che il giocatore non viene mai sbannato! Cmq ecco come potresti fare:
    PHP:
    private $temp = [];
        public function 
    __construct(){
            foreach(\
    pocketmine\Server::getInstance()->getOnlinePlayers() as $player){
                
    $ip $player->getAddress();
                if(isset(
    $this->temp[$ip]))
                    
    $player->close("Sei un BOT");
                else
                    
    $this->temp[$ip] = true;
            }
        }
       
        public function 
    playerOnPrespawn(\pocketmine\event\player\PlayerPreLoginEvent $event){
            
    $player $event->getPlayer();
            if(isset(
    $this->temp[$player->getAddress()]))
                
    $player->close("Sei un BOT");
            else
                
    $this->temp[$player->getAddress()] = true;
        }
       
        public function 
    playerQuit(\pocketmine\event\player\PlayerQuitEvent $event){
            
    $player $event->getPlayer();
            if(isset(
    $this->temp[$player->getAddress()]))
                unset(
    $this->temp[$player->getAddress()]);
        }
    Direi che cosi è meglio che fare i ban o mettere i player in whitelist
  13. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    grazie xion oggi se riesco lo metto :D
    Last edited: Aug 5, 2015
    xionbig likes this.
  14. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    lol grazie prendero di sicuro spunto :)
    Last edited: Aug 5, 2015
  15. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    luca senti volevo chiederti posso usare una parte del tuo plugin ed eventualmente modificarla per il mio plugin? la parte è questa:
    public function onPreLog(PlayerPreLoginEvent $event){
    isset($this->IPs[$ip = $event->getPlayer()->getAddress()]) ? $this->IPs[$ip] += 1 : $this->IPs[$ip] = 1;
    if($this->IPs[$ip] > $this->getConfig()->get("max-cons", 5)){
    switch($this->getConfig()->get("action", "ban-ip")){
    case "ban-ip":
    $this->getServer()->getIPBans()->addBan($ip, "Banned by AntiBot");
    foreach($this->getServer()->getOnlinePlayers() as $player){
    if($player->getAddress() === $ip){
    $player->kick("Banned by AntiBot", false);
    }
    }
    p.s. l'idea era anche di pubblicare il plugin così almeno si fermerebbero gli attacchi Bot visto che ad esempio poco tempo fa il mio server era continuamente sotto attacco...
    EvolSoft likes this.
  16. EvolSoft
    Offline

    EvolSoft Notable Member Plugin Developer

    Joined:
    Sep 10, 2014
    Posts:
    821
    Plugins:
    15
    Minecraft User:
    Flavius12
    Bella idea pubblicare il plugin :)
    Certo non bloccherai gli attacchi DDoS ma almeno blocchi i Bot.
  17. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    lo so purtroppo però ehy almeno fuori uno xD
    EvolSoft likes this.
  18. fycarman
    Offline

    fycarman Active Member

    Joined:
    Mar 31, 2015
    Posts:
    75
    Minecraft User:
    Fycarman06
    Beh in fondo per il Ddos c'è il servizio anti Ddos,offerto da tutti gli host
    EvolSoft likes this.
  19. XEmAX32
    Offline

    XEmAX32 Active Member

    Joined:
    Feb 1, 2015
    Posts:
    80
    Minecraft User:
    XEmAX32
    dipende, se prendi una fps non funziona visto che viene attaccata direttamente la porta
  20. fycarman
    Offline

    fycarman Active Member

    Joined:
    Mar 31, 2015
    Posts:
    75
    Minecraft User:
    Fycarman06
    ah,io di vps so proprio poco e niente,non li uso :D

Share This Page

Advertisement