PtokaX forum

Archive => Archived 4.0 boards => Help with Lua 4 scripts => Topic started by: ((UKSN))shad_dow on 04 January, 2005, 22:15:15

Title: Refresh in adding ips to a table in this script Plz
Post by: ((UKSN))shad_dow on 04 January, 2005, 22:15:15
Hi All

right i get to the point cos every sec counts

i found this scaript (below ) , ok i need to be hinted at how to add ips to the Table , ive been away while and need a refresh on it Plz

--------------------------
-- simple ipban script
-- made on request of erik
--------------------------
-- bans are stored in an external file
-- use 1 IP per line
-- or IP|IP for ranges
--------------------------

sBanMsg = "Your ass is banned!!!"

function Main()
   tBanIp = {}
   if readfrom("ipban/ipban.txt") then
      while 1 do
         local line = read()
         if line == nil then
            break
         end
         if strfind(line, "|") then
            local _,_,sStart,sEnd = strfind(line, "^([%.%d])|([%.%d])$")
            tBanIp[(IPtoDec(sStart))]=(IPtoDec(sEnd))
         else
            tBanIp[line]=1
         end
      end
      readfrom()
   else
      execute("mkdir ipban")
      writeto("ipban/ipban.txt")
      writeto()
   end
end

function IPtoDec(IP)
   local s,e,dIP1,dIP2,dIP3,dIP4 = strfind(IP, "^(%d+)%.(%d+)%.(%d+)%.(%d+)$")
   IP = (tonumber(dIP1) * 16777216) + (tonumber(dIP2) *65536) + (tonumber(dIP3) * 256) + (tonumber(dIP4))
   return IP
end

function NewUserConnected(user)
   if tBanIp[user.sIP] then
      user:SendData(sBanMsg)
      user:Disconnect()
   else
      local sIp = IPtoDec(user.sIP)
      for a,b in tBanIp do
         if b ~= 1 and sIp >= a and sIp <= b then
            user:SendData(sBanMsg)
            user:Disconnect()
         end
      end
   end
end

cheers

shad
Title:
Post by: ??????Hawk?????? on 04 January, 2005, 23:46:13
hi m8  ...

your answer is lookin at you  ..
in these 2 lines
tBanIp[(IPtoDec(sStart))]=(IPtoDec(sEnd))

tBanIp[line]=1
you all ready Know how to save a table to a file

so using the commands,

!addip [SingleIP]   using   tBanIp[ip]=1

and

!addrange [Ip1-Ip2]      using     tBanIp[IP1]=Ip2    with a simple    strfind to grab the two ip's using the  -  as a  fix point

then call the  Save Table to file  function..

hope  this helps  :-)


HAVE  FUN...........
Title:
Post by: bastya_elvtars on 05 January, 2005, 00:20:45
ehh saw this a bit late :)

http://www.plop.nl/ptokaxbots/bastya_elvtars/rangefucker.lua

use code from this :)
Title:
Post by: ??????Hawk?????? on 05 January, 2005, 00:25:36
hey  shad  ...  

dont look at  Bastya's link yet  ..  :P

I KNOW  you can  do it ive seen your scripts...

have a look at it once youve  sussed it for yourself..

 :P  :P  :P  :P  :P  :P  :P  :P  :P  :P
Title:
Post by: bastya_elvtars on 05 January, 2005, 00:37:13
QuoteOriginally posted by ??????Hawk??????
hey  shad  ...  

dont look at  Bastya's link yet  ..  :P

I KNOW  you can  do it ive seen your scripts...

have a look at it once youve  sussed it for yourself..

 :P  :P  :P  :P  :P  :P  :P  :P  :P  :P

i knew you posted the right answer but a little self-commercial is never harmful ;p
Title:
Post by: ??????Hawk?????? on 05 January, 2005, 00:47:43
;) ;)  ;)
Title:
Post by: ((UKSN))shad_dow on 05 January, 2005, 01:46:28
ok hawk and bastya_elvtars


i going to give it a whill and if i get stuck il have a loo at range fucker :)

thank u for the convdience

yours

shad
Title:
Post by: ((UKSN))shad_dow on 05 January, 2005, 01:52:18
yo guys


from what i can make out with wot u sugest hawk , should be easy since it read the ip.txt file and loads the ip in to the Table . mmm ok think i found  the way

il post here with my progress

yours

shad
Title:
Post by: ((UKSN))shad_dow on 08 January, 2005, 03:48:31
hi hawk and bastya

heres the modifed code

--------------------------
-- simple ipban script
-- made on request of erik
--------------------------
-- bans are stored in an external file
-- use 1 IP per line
-- or IP|IP for ranges
--------------------------
-- Modifed By Shad_dow For Therapy-XS
-- Added command !addip
-- Added cammand !addrange
--------------------------

Bot = "Therapy-IPBlocker"
FILE = "ipban/ipban.txt"

function Main()
frmHub:RegBot(Bot)
tBanIp = {}
   if readfrom("ipban/ipban.txt") then
      while 1 do
         local line = read()
         if line == nil then
            break
         end
         if strfind(line, "|") then
            local _,_,sStart,sEnd = strfind(line, "^([%.%d])|([%.%d])$")
            tBanIp[(IPtoDec(sStart))]=(IPtoDec(sEnd))
         else
            tBanIp[line]=1
         end
      end
      readfrom()
   else
      execute("mkdir ipban")
      writeto("ipban/ipban.txt")
     
   end
end



function NewUserConnected(curUser)
   if tBanIp[curUser.sIP] then
      curUser:SendData(sBanMsg)
      curUser:Disconnect()
   else
      local sIp = IPtoDec(curUser.sIP)
      for a,b in tBanIp do
         if b ~= 1 and sIp >= a and sIp <= b then
            curUser:SendData(sBanMsg)
            curUser:Disconnect()
         end
      end
   end
end

function DataArrival (curUser, data)
if (strsub(data,1,1) == "<")  then
data=strsub(data,1,strlen(data)-1)
local s,v, cmd = strfind(data, "%b<>%s+(%S+)")
if curUser.bOperator then
if cmd == "!addip" then
dowritesingle(curUser,data)


return 1

elseif  cmd == "!addrange" then
dowriterange(curUser,data)

return 1
end
end
end

end



function IPtoDec(IP)
   local s,e,dIP1,dIP2,dIP3,dIP4 = strfind(IP, "^(%d+)%.(%d+)%.(%d+)%.(%d+)$")
   IP = (tonumber(dIP1) * 16777216) + (tonumber(dIP2) *65536) + (tonumber(dIP3) * 256) + (tonumber(dIP4))
   return IP
end



function dowriterange(curUser,data)
arg1,arg2 = GetArgs2(data)
if arg1 ~= nil and arg2 ~= nil then
local handle =appendto(FILE)

write(handle,""..arg1.."|"..arg2.."\r\n")
closefile(handle)
SendToAll(Bot,"IP Range Ban Added")
elseif arg1 ~= nil and arg2 ~= nil then
curUser:SendPM(Bot,"Cmdet is !rangeban 0.0.0.1 0.0.0.2")
end
end

function dowritesingle(curUser,data)
arg1 = GetArgs1(data)
if arg1 ~= nil  then

local handle =appendto(FILE)
write(handle,""..arg1.."\r\n")
closefile(handle)
SendToAll(Bot,"IP  Ban Added")

elseif arg1 == nil then
curUser:SendPM(Bot,"Cmdet is !ipban 0.0.0.1")
end
end


function GetArgs1(data)
local _,_, arg1 = strfind(data,"%s+%S+%s+(.+)")
return arg1
end
function GetArgs2(data)
local _,_, arg1,arg2 = strfind(data,"%s+%S+%s+(%S+)%s+(.+)")
return arg1,arg2
end


and heres the prob ipban.txt looks like this

7.0.0.2
6.32.53.1|6.32.53.254

when it lods it back in from main fuction i get this error



Syntax error: bad argument #1 to `strfind' (string expected, got nil)
stack traceback:
   1:  function `strfind' [C]
   2:  function `IPtoDec' at line 82 [file `...okax hubs\test hub\scripts\testingipbanning.lua']
   3:  function `Main' at line 28 [file `...okax hubs\test hub\scripts\testingipbanning.lua']

this is the lines
if strfind(line, "|") then
            local _,_,sStart,sEnd = strfind(line, "^([%.%d])|([%.%d])$")
            tBanIp[(IPtoDec(sStart))]=(IPtoDec(sEnd))
         else
            tBanIp[line]=1
         end
 

any help would be lovly

yours

shad
Title:
Post by: ??????Hawk?????? on 08 January, 2005, 04:34:10
hi m8  

try the strfind  like this:-
local _,_,sStart,sEnd = strfind(line,"(%d+%.%d+%.%d+%.%d+)|(%d+%.%d+%.%d+%.%d+)")