PtokaX forum

Archive => Archived 4.0 boards => Request for Lua 4 scripts => Topic started by: Pieltre on 22 January, 2004, 09:03:43

Title: anti-advert without the main chat
Post by: Pieltre on 22 January, 2004, 09:03:43
Hi,

I got this anti-advert script, but it does the job too well. I'd like to edit it so it doesn't kick user when they mention other hubs or servers in the main chat, only when they do in PMs.  Here's the script:

-Lucifer 6.6.6-- updated version

--This is a Powerful AntiAdvertising Script
--Powered by Demone.Astaroth and OpiumVolage

--History: Base='multiline antiadvertise' by OpiumVolage (your tables simplify the work I did until that moment). Here its features:
--             1)Script can block this types of advertisement: A) example.no-ip.com
--                      B) e x a m p l e . n o - i p . c o m
--                      C)example.
--                         no-
--                         ip.
--                         com
--                      D)e
--                         x
--                         a
--                         m
--                         p
--                         l
--                         e
--                         .
--                         n
--                         o
--                         -                     
--                         i
--                         p
--                         .
--                         c
--                         o
--                         m
--             2)You can insert valid addresses (like yours) in trigs, so bot won't kick you
--             3)Users conversating with ops don't get kicked
--             4)Why the Timer? It cleans memory.

--             Demone.Astaroth addons: 1)added an huge list of addresses
--                  2)When advertising: user advised on Pm before disconnection; Bot sends to all in main chat the kicking

message (without IP);
--                                            advertise-infos send to Op-chat directly without troubling any Op with Pms! Infos contain user's IP, user

To(if PM) and last message
--                  Just replace INSERT.HERE.YOUR.OP-CHAT.NAME fields with yours.
--                                 3)inserted Disconnect and TimeBan (15 minutes) instead of gagging user
--                  4)Prevented very splitted addresses (with more tabAdvert lines)
--                                         5)added Control-addresses: user isn't kicked for these addresses but Ops are informed in any case.
--                                                                                      this is useful for friend-hubs addresses, if u also want to control them
--                                          6)added ControlUser status: if u're scary about your vips advertising their hubs and stealing you user,
--                                                                                        you can't insert the tag [VIP] or anything else in the specific space: they will not
--                                                                                          get kicked for any addresses, but in case of typing a Control-address, Ops will be
--                                                                                             informed.
--                                         7)Fixed some bug (Thanks Opium)
--               8)Added a new string-pieces find way to catch advertises

BotName = "Wolland"

advtrigs = {"dns2go","myftpsite","servebeer","mine.nu","ip.com","dynip","depecheconnect.com","zapto.org",
   "staticip","serveftp","ipactive","ip.org","no-ip","servegame","gotdns.org","ip.net","ip.co.uk",
   "ath.cx","dyndns","68.67.18.75","clanpimp","idlegames","sytes","unusualperson.com",
   "24.184.64.48","uni.cc","151.198.149.60","homeunix","24.209.232.97","ciscofreak.com",
   "deftonzs.com","24.187.50.121","flamenap","xs4all","serveftp","point2this.com","ip.info",
   "myftp","d2g","151.198.149.60","24.184.64.48","orgdns","myip.org","stufftoread.com",
   "ip.biz","dynu.com","mine.org","kick-ass.net","darkdata.net","ipme.net","udgnet.com","homeip.net",
   "e-net.lv","newgnr.com","bst.net","bsd.net","ods.org","x-host","bounceme.net","myvnc.com",
   "kyed.com","lir.dk","finx.org","sheckie.net","vizvaz.net","snygging.net","kicks-ass.com","nerdcamp.net",
   "cicileu.","3utilities.com","myftp.biz","redirectme.net","servebeer.com","servecounterstrike.com",
   "servehalflife.com","servehttp.com","serveirc.com","servemp3.com","servepics.com","servequake.com",
   "damnserver.com","ditchyourip.com","dnsiskinky.com","geekgalaxy.com","net-freaks.com","ip.ca",
   "securityexploits.com","securitytactics.com","servehumour.com","servep2p.com","servesarcasm.com",
   "workisboring.com","hopto","64.246.26.135","213.145.29.222","dnsalias"}

validtrigs = {"myhub.no-ip.com","multihub2.no-ip.com", "greatfriend.no-ip.com"} --insert here your addresses (like yours or multihub ones or

great friend's hub ;) )

controltrigs={["classicalmusicke.no-ip.info"]=1,["grandclassic.serveftp.org"]=2,["pieltre.serveftp.com"]=3, ["hub4"]=4, ["hub5"]=5} --insert here

addresses you want to be informed (no kick)

tabAdvert = {}

function Main()
   frmHub:RegBot(BotName)
   SetTimer(60000)
   StartTimer()
end

function OnTimer()
   for key, value in tabAdvert do
      if (tabAdvert[key].iClock > clock()+60) then
         tabAdvert[key]=nil
      end
   end
end

function DataArrival(user, data)
   if not user.bOperator then
      if strsub(data, 1, 1) == "<" then
         local _, _, msg = strfind(data, "^%b<>%s+(.*)|")
         if Verify(user.sName, msg) then
            catch=strsub(user.sName,1,5)         --5 is counting chars of the tag below: if u change [VIP], change it!
            if catch=="[VIP]" then                  --ControlUser status : insert users Tag u don't want to get kicked
            else
               tabAdvert[user.sName]=nil
               SendToAll( BotName, user.sName.." get slaughtered by Lucifer for advertising!")
               user:SendPM(BotName, "Please don't advertise for other hubs!")
               user:Disconnect();
               user:TimeBan(15);
               s,e,onlymes = strfind(data, "%b<> (.*)")
               SendPmToOps ("Pythia", "User "..user.sName.." with IP "..user.sIP.." advertised in main chat

saying: "..onlymes.."")
            end
         end
         for key, value in controltrigs do
            if( strfind( strlower(data), key) ) then
               s,e,onlymes = strfind(data, "%b<> (.*)")
               SendPmToOps ("Pythia", "Control: User "..user.sName.." with IP "..user.sIP.." told in main:

"..onlymes.."")
            end
         end

         spam=0
         if( strfind( strlower(data), "no",1,1) ) and ( strfind( strlower(data), "ip.",1,1) ) then
            if ( strfind( strlower(data), "com",1,1) ) or ( strfind( strlower(data), "org",1,1) ) or ( strfind( strlower(data),

"info",1,1) ) then
         spam=spam+1; end; end;

         if( strfind( strlower(data), "dns",1,1) ) and ( strfind( strlower(data), "2",1,1) ) and ( strfind( strlower(data), "go",1,1) )

then
         spam=spam+1; end

         if( strfind( strlower(data), "dy",1,1) ) and ( strfind( strlower(data), "nu",1,1) ) then
            if( strfind( strlower(data), ".net",1,1) ) or ( strfind( strlower(data), ".com",1,1) ) then
         spam=spam+1;end; end

         if( strfind( strlower(data), "d n s a",1,1) ) or ( strfind( strlower(data), "d n s .",1,1) ) or ( strfind( strlower(data), "d n s

2",1,1) ) or ( strfind( strlower(data), "o d s .",1,1) ) or ( strfind( strlower(data), "d y n",1,1) ) then
         spam=spam+1;end
   
         if spam>0 then
               SendToAll( BotName, user.sName.." get slaughtered by Lucifer for advertising!")
               user:SendPM(BotName, "I slaughtered you! Don't try again to advertise!")
               user:Disconnect();
               user:TimeBan(15);
               s,e,onlymes = strfind(data, "%b<> (.*)")
               SendPmToOps ("Pythia", "User "..user.sName.." with IP "..user.sIP.." advertised in main chat

saying: "..onlymes.."")
         end






      elseif strsub(data, 1, 4) == "$To:" then
         local _, _, to, from, msg = strfind(data, "^%$To:%s+(%S+)%s+From:%s+(%S+)%s-%$%b<>%s+(.*)|")
         local nick = GetItemByName(to)
         if not nick.bOperator then
            local userdata = to.." "..from
            if Verify(userdata, msg) then
               catch=strsub(user.sName,1,16)
               if catch=="['??SemiDeus??']" then
               else
                  tabAdvert[userdata] = nil
                  SendToAll( BotName, user.sName.." get slaughtered by Lucifer for advertising!")
                  user:SendPM(BotName, "I slaughtered you! Don't try again to advertise!")
                  user:Disconnect();
                  user:TimeBan(15);
                  s,e,whoTo,from,mes =

strfind(data,"$To:%s+(%S+)%s+From:%s+(%S+)%s+$%b<>%s+(.*)")  
                  SendPmToOps ("INSERT.HERE.YOUR.OP-CHAT.NAME", "User "..user.sName.."

with IP "..user.sIP.." advertised in main chat saying to "..whoTo.." this: "..mes.."")
               end
            end
            for key, value in controltrigs do
               if( strfind( strlower(data), key) ) then
                  s,e,whoTo,from,mes =

strfind(data,"$To:%s+(%S+)%s+From:%s+(%S+)%s+$%b<>%s+(.*)")  
                  SendPmToOps ("INSERT.HERE.YOUR.OP-CHAT.NAME", "Control: User

"..user.sName.." with IP "..user.sIP.." said to "..whoTo.." this: "..mes.."")
               end
            end

            spam=0
            if( strfind( strlower(data), "no",1,1) ) and ( strfind( strlower(data), "ip.",1,1) ) then
               if ( strfind( strlower(data), "com",1,1) ) or ( strfind( strlower(data), "org",1,1) ) or ( strfind(

strlower(data), "info",1,1) ) then
            spam=spam+1; end; end;

            if( strfind( strlower(data), "dns",1,1) ) and ( strfind( strlower(data), "2",1,1) ) and ( strfind( strlower(data),

"go",1,1) ) then
            spam=spam+1; end
   
            if( strfind( strlower(data), "dy",1,1) ) and ( strfind( strlower(data), "nu",1,1) ) then
               if( strfind( strlower(data), ".net",1,1) ) or ( strfind( strlower(data), ".com",1,1) ) then
            spam=spam+1;end; end
   
            if( strfind( strlower(data), "d n s a",1,1) ) or ( strfind( strlower(data), "d n s .",1,1) ) or ( strfind(

strlower(data), "d n s 2",1,1) ) or ( strfind( strlower(data), "o d s .",1,1) ) or ( strfind( strlower(data), "d y n",1,1) ) then
            spam=spam+1;end
      
            if spam>0 then
                  SendToAll( BotName, user.sName.." get slaughtered by Lucifer for advertising!")
                  user:SendPM(BotName, "I slaughtered you! Don't try again to advertise!")
                  user:Disconnect();
                  user:TimeBan(15);
                  s,e,whoTo,from,mes =

strfind(data,"$To:%s+(%S+)%s+From:%s+(%S+)%s+$%b<>%s+(.*)")  
                  SendPmToOps ("INSERT.HERE.YOUR.OP-CHAT.NAME", "User "..user.sName.."

with IP "..user.sIP.." advertised in main chat saying to "..whoTo.." this: "..mes.."")
            end
         end
      end
   end
end

function Verify(userdata, msg)
   if not msg then return end
   tmp =""
   gsub(strlower(msg), "([a-z0-9.:%-])", function(x) tmp = tmp..x end)
   if not tabAdvert[userdata] then
      tabAdvert[userdata] = { iClock = clock(), l1 = "", l2 = "", l3 = "", l4= "", l5= "",l6= "",l7= "",l8= "",l9 = tmp}
   else
      tabAdvert[userdata].iClock = clock()
      tabAdvert[userdata].l1 = tabAdvert[userdata].l2
      tabAdvert[userdata].l2 = tabAdvert[userdata].l3
      tabAdvert[userdata].l3 = tabAdvert[userdata].l4
      tabAdvert[userdata].l4 = tabAdvert[userdata].l5
      tabAdvert[userdata].l5 = tabAdvert[userdata].l6
      tabAdvert[userdata].l6 = tabAdvert[userdata].l7
      tabAdvert[userdata].l7 = tabAdvert[userdata].l8
      tabAdvert[userdata].l8 = tabAdvert[userdata].l9
      tabAdvert[userdata].l9 = tmp
   end
   local Lines =

tabAdvert[userdata].l1..tabAdvert[userdata].l2..tabAdvert[userdata].l3..tabAdvert[userdata].l4..tabAdvert[userdata].l5..tabAdvert[userdata].l6..tabAd

vert[userdata].l7..tabAdvert[userdata].l8..tabAdvert[userdata].l9
   for key, value in advtrigs do
      if (strfind(Lines, strlower(value), 1, 1)) then
         for key2, value2 in validtrigs do
            if (strfind(Lines, strlower(value2), 1, 1)) then
               return nil
            end
         end
         return 1
      end
   end
end


thanks in advance,
pieltre
Title:
Post by: NightLitch on 22 January, 2004, 13:12:49
Well I must say that this script doesn't do the work it should... Yes it kicks when typing advertising's, BUT!

It also kicks users IF the type an Allowed HUBADDRESS or SITE.

This is a powerfull script indeed but test my advise and be a user
a type an allowed hubaddress you will get kicked for it.
Title:
Post by: Pieltre on 22 January, 2004, 20:06:22
Hi,

thanks for your reply. I was wondering if you knew of one that worked well, from your own experience.  Of course, as you imagine, I already checked myself, but since i'm rather lua illiterate, I can't really tell if the script works or not, until I see my users go mad or I hear from a user on a board that I've used a dead dumb script...

cheers,
pieltre
Title:
Post by: plop on 22 January, 2004, 23:44:29
QuoteOriginally posted by Pieltre
Hi,

thanks for your reply. I was wondering if you knew of one that worked well, from your own experience.  Of course, as you imagine, I already checked myself, but since i'm rather lua illiterate, I can't really tell if the script works or not, until I see my users go mad or I hear from a user on a board that I've used a dead dumb script...

cheers,
pieltre
this (http://board.univ-angers.fr/thread.php?threadid=815&boardid=12) works well and can easely be modified 2 only filter pm's.
and it's friendlyer, doesn't kick @ all.
works by replacing the url's for your own.

plop