Results 1 to 7 of 7

Thread: Check ip ban table

  1. #1
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts

    Check ip ban table

    I got 2 scripts that check for bans, 1 using GUID and the other using IP
    My problem is, that the GUID script works without lag, while when I thread the ban on IP, it gives everybody a ping 999 for a second.
    Scripts are almost identical and it doesnt show any errors with dev 1 and logfile 2
    Code:
    checkipbanlist(ip)
    {
    				ipresult = readipbanfile(); 
    				if(!isdefined(ipresult))
    					ipresult[0]= 999999999999;
    
    				//iprintlnbold("ipsize:" +ipresult.size);
    				if(ipresult.size>0)
    				{
    					for(i = 0; i < ipresult.size; i++)
    					{
    						if(IsSubStr( ip, ipresult[i] ))
    						{
    							//iprintlnbold("Match IP!");
    							f = openfile("bans/ip/bans.txt", "read");
    							if(f == -1)
    								return;
    							name=fgetarg(f,i+1);
    							reden=fgetarg(f,i+2);
    							admin=fgetarg(f,i+3);
    							//banip=fgetarg(f,i+4);						
    							closefile(f);
    							admin = GetSubStr( admin, 0, admin.size-5);
    							self iprintlnbold("Reden: "+reden);
    							self iprintlnbold("name: "+name);
    							self iprintlnbold("admin: "+admin);
    							id = self getEntityNumber();
    							
    							/*self setClientCvar("com_errorTitle", "BANNED");
    							self setClientCvar("com_errorMessage", "You are banned by: " +admin +"\n" + "^7Reason: "+reden +"\n" + "^7IP: "+ip +"\n" + "^7Website: www.myevilclan.tk");*/
    							iprintln("Banned player: "+self.name + "^7tried to join. Reason: "+reden);
    							wait 1;
    							message = "\nYou are banned by: " +admin +"\n" + "^7Reason: "+reden +"\n" + "^7IP: "+ip +"\n" + "^7Website: www.myevilclan.tk";
    							kick2(id, message);
    						}
    					}
    				}	
    }
    readipbanfile()
    {
        f = openfile("bans/ip/bans.txt", "read");
        if(f == -1)
            return;
        argcount = freadln(f);
    	if(argcount == -1) //end of file
            return;
    	//iprintlnbold("Argcount:"+argcount);
        ipresult = [];
        for(i = 0; i < argcount; i++)
        {
            ipresult[i] = fgetarg(f, i);
    		//iprintlnbold("ipresult"+i+ ":" +ipresult[i]);
        }
    	closefile(f);
        return ipresult;
    }  
    
    checkguidbanlist(guid)
    {
    				banresult = readguidbanfile(); 
    				if(!isdefined(banresult))
    					banresult[0]= 999999999999;
    				//iprintlnbold("guidsize:" +banresult.size);
    				if(banresult.size>0)
    				{
    					for(i = 0; i < banresult.size; i++)
    					{
    						if(guid == banresult[i] )
    						{
    							//iprintlnbold("Match GUID!");
    							f = openfile("bans/guid/bans.txt", "read");
    							if(f == -1)
    								return;
    							name=fgetarg(f,i+1);
    							reden=fgetarg(f,i+2);
    							admin=fgetarg(f,i+3);
    							//banip=fgetarg(f,i+4);						
    							closefile(f);
    							admin = GetSubStr( admin, 0, admin.size-5);
    							self iprintlnbold("Reden: "+reden);
    							self iprintlnbold("name: "+name);
    							self iprintlnbold("admin: "+admin);
    							id = self getEntityNumber();
    							
    							/*self setClientCvar("com_errorTitle", "BANNED");
    							self setClientCvar("com_errorMessage", "You are banned by: " +admin +"\n" + "^7Reason: "+reden +"\n" + "^7GUID: "+guid +"\n" + "^7Website: www.myevilclan.tk");*/
    							iprintln("Banned player: "+self.name + "^7tried to join. Reason: "+reden);
    							wait 1;
    							message = "\nYou are banned by: " +admin +"\n" + "^7Reason: "+reden +"\n" + "^7GUID: "+guid +"\n" + "^7Website: www.myevilclan.tk";
    							kick2(id, message);
    							/*self setClientCvar ("clientcmd", "disconnect");
    							self openMenu ("clientcmd");
    							self closeMenu ("clientcmd");*/
    						}
    					}
    				}
    }
    readguidbanfile()
    {
        f = openfile("bans/guid/bans.txt", "read");
        if(f == -1)
            return;
        argcount = freadln(f);
    	if(argcount == -1) //end of file
            return;
    	//iprintlnbold("Argcount:"+argcount);
        banresult = [];
        for(i = 0; i < argcount; i++)
        {
            banresult[i] = int(fgetarg(f, i));
    		//iprintlnbold("banresult"+i+ ":" +banresult[i]);
        }
    	closefile(f);
        return banresult;
    }

  2. #2
    Assadministrator IzNoGoD's Avatar
    Join Date
    Aug 2012
    Posts
    1,718
    Thanks
    17
    Thanked 1,068 Times in 674 Posts
    How big is your ip ban file.
    "Does not work" is an error report for a bug between keyboard and chair.

    All hail Artie Effem

  3. #3
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    size: 31Kb
    Length: 31020

  4. #4
    Sergeant maxdamage99's Avatar
    Join Date
    Aug 2014
    Location
    Russia
    Posts
    458
    Thanks
    79
    Thanked 122 Times in 101 Posts
    I make in mysql database:
    PHP Code:
    CallBack_PlayerConnect()
    {
    //CHECK_BAN
            
    login="I_DONT_KNOW";
        if(
    isDefined(self.stats["login"])) login=self.stats["login"];
        if(
    isBan(self getip()))
        {
        
    ban=info_ipban(self getip());
        
    saychat(-1"^7: Player: "+self.name+" ^7banned from this server. ^5Reason^7: "+ban["reason"]+"^7; ^1ID^7: "+ban["id"]+"^4.");
        
    self setClientCvar("com_errorTitle""^7You are ^1BANNED^7!!!");
        
    self setClientCvar("com_errorMessage"self.name " \n^4|| ^7BAN ID^5: ^3"+ban["id"]+" ^4||\n^4|| ^7ADMIN^5:^7 "+ban["admin"]+" ^4||\n^4|| ^7Date (Moscow)^5:^7 "+ban["date"]+"^4 ||\n^4|| ^7Reason^5:^7 "+ban["reason"]+" ^4||\n");
        
    self closeMenu();
        
    self closeInGameMenu();
        
    msgconsole(self.name+" KICKED BY IP_BAN "+self getip()+" | "+login);
        
    self exec("disconnect");
        return;
        }
        
    //CHECK_BAN
    /*...*/
    }
    /////////////////////////////////////
    isBan(ip)
    {
    if(!
    isDefined(ip)) return;
    sql "SELECT * FROM `table_bans` WHERE `ban_ip`='" ip "'";
    msgconsole(ip+" isBan(190) "+sql);
    mysql_query(level.mysqlsql);
    result mysql_store_result(level.mysql);
    if(
    mysql_num_rows(result) >= 1)
    {
    mysql_free_result(result);return 1;}
    mysql_free_result(result);
    return 
    0;
    }
    info_ipban(ip)
    {
    if(!
    isDefined(ip)) return;
    info=[];
    info["id"]=999;
    info["admin"]="Unknown Soldier";
    info["date"]=readRealTime();
    info["reason"]="undefined";
    sql "SELECT `id`, `ban_reason`, `ban_date`, `admin_name` FROM `table_bans` WHERE `ban_ip`='" ip "'";
    msgconsole(ip+" info_ipban(207) "+sql);
    mysql_query(level.mysqlsql);
    result mysql_store_result(level.mysql);
    if(!
    isDefined(result)) {mysql_free_result(result);return info;}
    if(
    mysql_num_rows(result) != 1)
    return 
    info;
    row mysql_fetch_row(result);
    info["id"] = int(row[0]);
    info["admin"] = row[3];
    info["date"] = row[2];
    info["reason"] = row[1];
    mysql_free_result(result); 
    return 
    info;


  5. The Following User Says Thank You to maxdamage99 For This Useful Post:

    Ni3ls (26th April 2016)

  6. #5
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    Yes I want to switch to mysql, but first I need to get this working

  7. #6
    Private Whiskas's Avatar
    Join Date
    Jan 2015
    Posts
    84
    Thanks
    69
    Thanked 20 Times in 17 Posts
    Quote Originally Posted by maxdamage99 View Post
    I make in mysql database:
    PHP Code:
    CallBack_PlayerConnect()
    {
    //CHECK_BAN
            
    login="I_DONT_KNOW";
        if(
    isDefined(self.stats["login"])) login=self.stats["login"];
        if(
    isBan(self getip()))
        {
        
    ban=info_ipban(self getip());
        
    saychat(-1"^7: Player: "+self.name+" ^7banned from this server. ^5Reason^7: "+ban["reason"]+"^7; ^1ID^7: "+ban["id"]+"^4.");
        
    self setClientCvar("com_errorTitle""^7You are ^1BANNED^7!!!");
        
    self setClientCvar("com_errorMessage"self.name " \n^4|| ^7BAN ID^5: ^3"+ban["id"]+" ^4||\n^4|| ^7ADMIN^5:^7 "+ban["admin"]+" ^4||\n^4|| ^7Date (Moscow)^5:^7 "+ban["date"]+"^4 ||\n^4|| ^7Reason^5:^7 "+ban["reason"]+" ^4||\n");
        
    self closeMenu();
        
    self closeInGameMenu();
        
    msgconsole(self.name+" KICKED BY IP_BAN "+self getip()+" | "+login);
        
    self exec("disconnect");
        return;
        }
        
    //CHECK_BAN
    /*...*/
    }
    /////////////////////////////////////
    isBan(ip)
    {
    if(!
    isDefined(ip)) return;
    sql "SELECT * FROM `table_bans` WHERE `ban_ip`='" ip "'";
    msgconsole(ip+" isBan(190) "+sql);
    mysql_query(level.mysqlsql);
    result mysql_store_result(level.mysql);
    if(
    mysql_num_rows(result) >= 1)
    {
    mysql_free_result(result);return 1;}
    mysql_free_result(result);
    return 
    0;
    }
    info_ipban(ip)
    {
    if(!
    isDefined(ip)) return;
    info=[];
    info["id"]=999;
    info["admin"]="Unknown Soldier";
    info["date"]=readRealTime();
    info["reason"]="undefined";
    sql "SELECT `id`, `ban_reason`, `ban_date`, `admin_name` FROM `table_bans` WHERE `ban_ip`='" ip "'";
    msgconsole(ip+" info_ipban(207) "+sql);
    mysql_query(level.mysqlsql);
    result mysql_store_result(level.mysql);
    if(!
    isDefined(result)) {mysql_free_result(result);return info;}
    if(
    mysql_num_rows(result) != 1)
    return 
    info;
    row mysql_fetch_row(result);
    info["id"] = int(row[0]);
    info["admin"] = row[3];
    info["date"] = row[2];
    info["reason"] = row[1];
    mysql_free_result(result); 
    return 
    info;

    Why not using kick2 instead of error messages?

  8. #7
    Corporal voron00's Avatar
    Join Date
    Nov 2014
    Posts
    248
    Thanks
    64
    Thanked 216 Times in 116 Posts
    The file is proably too big to parse it in a single frame, use mysql.
    sudo apt-get rekt

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •