SearchKicker
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

SearchKicker

Started by OpiumVolage, 10 October, 2003, 23:36:19

Previous topic - Next topic

0 Members and 13 Guests are viewing this topic.

OpiumVolage

A SearchKicker.

-- vim:ts=4:sw=4:noet
-- FileChecker.lua, rewrite of a 'SearchKick' bot for PtokaX by ptaczek and
-- Leon (called The Illegalist)
-- version 1.0 for DCH++
-- by Sedulus 20030910, requested by BSOD2600
-- 20030919: 1.0
--
-- Translated back to PtokaX (OpiumVolage 9 Sept. 2003)
-- Added timer for automating search
--
-- (using more mem (3 tables, instead of one) but less cpu)
--
-- searches for all terms in the SearchFor table,
-- sends a message to the user that he/she shares the file, with the response
-- message.
-- set disconnectUser to 1 if you want the user disconnected as well (not
-- recommended, as bots always seem to find a way to misinterpret data ;) )
--
-- spaces in the SearchFor table will be converted to dollar's, but they will
-- (purposely) only match if there's a space in the result later.
-- so "a b" won't match "b a" or "aXXXb"

--// useful stuff
botName = "FileChecker"
disconnectUser = nil -- disconnect the user, nil = don't
-- opchatName = "-TropiCo-" -- set opchat nick here if you want messages to opchat instead of mainchat, else nil
opchatName = nil -- set opchat nick here if you want messages to opchat instead of mainchat, else nil
mb = 1024 * 1024
gb = 1024 * mb
-- Timer value, will send search for 1 of the file on all users at each timer
timerValue = 10*1000 -- Every 10 seconds (higher value will reduce load)
useTimer = 1 -- set to 1 to enable timer functions
counter = 1
--// do not modify this table, lookup the meanings in the $Search section in the protocol documentation
SearchTypes = {
	ANY = 1,
	AUDIO = 2,
	COMPRESSED = 3,
	DOCUMENT = 4,
	EXECUTABLE = 5,
	IMAGE = 6,
	VIDEO = 7,
	FOLDER = 8, -- do not use FOLDER's! the $SR's are formatted differently
}

st = SearchTypes
--// MODIFY THIS TABLE <-------
--      { searchType, words[, minimumSize[, regexMatch]] }
SearchFor = {
	["Please don't share (pre)teen/incest/sick porn"] = {
		{ st.IMAGE, "preteen" },
		{ st.VIDEO, "preteen" },
		{ st.IMAGE, "incest" },
		{ st.VIDEO, "incest" },
		{ st.IMAGE, "underage" },
		{ st.VIDEO, "underage" },
		{ st.IMAGE, "teenage sex" },
		{ st.VIDEO, "teenage sex" },
	},
	["Please don't share ANY installed application nor any UNZIPPED installer!"] = {
		{ st.ANY, "explorer.scf" },
		{ st.ANY, "explore.ex_" },
		{ st.ANY, "cd_clint.dll" },
		{ st.EXECUTABLE, "express msimn.exe", 0, "express\\msimn%.exe$" },
		{ st.EXECUTABLE, "IEXPLORE.EXE" },
		{ st.ANY, "bfdist.vlu" },
		{ st.ANY, "War3Inst.log" },
		{ st.ANY, "ut2003.log" },
		{ st.EXECUTABLE, "NFSHP2.exe" },
		{ st.ANY, "avp2.rez" },
		{ st.ANY, "ntuser.dat" },
		{ st.EXECUTABLE, "winword.exe" },
		{ st.ANY, "sav", 0, "%.sav$" },
		{ st.ANY, "dll", 0, "%.dll$" },
		{ st.ANY, "ex_", 0, "%.ex_$" },
		{ st.EXECUTABLE, "setup.exe", 0, "\\setup%.exe$" },
	},
	["Do not share incomplete downloads!"] = {
		{ st.ANY, "antifrag", 0, "antifrag$" },
		{ st.ANY, "download dat", 0, "download[0-9]+%.dat$" },
	},
	["No, we don't allow uncompressed DVD's in here. Please remove all your VOB files"] = {
		{ st.ANY, "VTS_01_0.VOB" },
	},
	["Please do not share large WAV files"] = {
		{ st.AUDIO, ".wav", 30*mb, "wav$" },
	},
	["If you're sharing copies of your files to increase your share size, we are on to you"] = {
		{ st.ANY, "copy of", 300*mb, "\\Copy of" },
		{ st.ANY, "kopie van", 300*mb, "\\Kopie van" },
	},
--	["Please do not share unzipped DVD's and/or other large files. Use rar-sets."] = {
--		{ st.ANY, ".", 1*gb },
--	},
}

--// convert the tables
SearchTable = {}
ResultTable = {}

function Main()
	frmHub:EnableSearchData(1)
	botLen = strlen( botName )
	local i = 0 -- add the serial botnames in here as well.. so the user doesn't think he is flooded by one person
	for k,v in SearchFor do
		for _,search in v do
			-- add $Search
			local s = "$Search Hub:"..botName..i.." "
			if search[3] then
				s = s.."T?F?"..search[3]
			else
				s = s.."F?F?0"
			end
			s = s.."?"..search[1].."?"..gsub( search[2], " ", "$" ).."|"
			tinsert( SearchTable, s )
			-- add $SR match
			local idx = strlower( search[2] )
			ResultTable[idx] = { msg = k }
			if search[4] then ResultTable[idx].regex = strlower( search[4] ) end
			-- next..
			i = i + 1
		end
	end
	st, SearchTypes, SearchFor = nil, nil, nil

	-- set options
	if opchatName then
		messageFunc = SendToOps
	else
		messageFunc = SendPmToOps
		opchatName = botName
	end
	if useTimer then SetTimer(timerValue) StartTimer() end
end

-- on new user
function NewUserConnected( client )
	foreachi(SearchTable, function(_, v) %client:SendData( v ) end)
end

-- on $SR
function DataArrival( client, line )
	local match = nil
	if strsub( line, 1, 4 ) == "$SR " then
		-- test if it was a result to us only
		local ret,c,to = strfind( line, "\005([^\005|]*)|$" )
		if ret and strsub( to, 1, botLen ) == botName then
			local ret,c,file,size = strfind( line, "^%$SR [^ ]+ ([^\005]*)\005([0-9]+) " )
			if ret then
				file = strlower( file )
				for k,v in ResultTable do
					if ( v.regex and strfind( file, v.regex ) ) or ( not v.regex and strfind( file, k, 1, 1 ) ) then
						match = 1
--						warn( client, file.." ("..dchpp.formatBytes( size ).." ("..size.."))", v.msg )
						warn( client, file.." ("..size..")", v.msg )
					end
				end
			end
		end
	end
	-- disconnect user
	if match and disconnectUser and not client.bOperator then
		client:SendData( "<"..botName.."> You are being kicked" )
		client:Disconnect()
		return 1
	end
end

function warn( client, file, response )
	-- send message to user
	client:SendData( "<"..botName.."> You are sharing the following file: "..file..": "..response )
	if client.bOperator then return end
	message = client.sName.." shares: "..file
	-- send message to all Operators
	messageFunc( opchatName, message )
end

function OnTimer()
	if SearchTable.n < 1 then return end
	SendToAll(SearchTable[counter])
	counter = counter + 1
	if counter > SearchTable.n then counter =1 end
end

Dyzan

#1
Nice Script.

Just testing the new forum =)

/Dyzan

PS: Great to se you all again!
//Dyzan @ Swenorth
Download: NXS-3.v.3.9a
Creator of NXS-3: NightLitch

Typhoon

OpiumVolage . this script is for DCH++ .. which i think are using LUA 5.0  .. and not LUA 4.0 as PtokaX does.

so its quite useless!...if i am right



OpiumVolage

Was for DCH++ ;)

-- Translated back to PtokaX (OpiumVolage 9 Sept. 2003)
-- Added timer for automating search

Roy

Very nice, im gonna "steal" some of them installed filenames and put them in the forbidden files ADL search of DC++k


Roy

[ES]latinmusic

#5
What i miss here is the path, this script does not return the path where the file is stored, the user with troubles must be notified about the name of the file, its extension and the path where the file is stored.
This script must contained the following lines i think:
if( strsub(data, 1, 3) == "$SR" ) then
**etc, etc**
local path = strsub(data, s, e)
*etc, etc**
user:SendData(BotName, **etc, etc**)
user:SendData(BotName, "Path: "..path.. ".")
Those lines not work, is only for documentation.

Corsari

#6
... fail.

I use DC++. I've noticed that connecting as passive makes you to be untouched by the script.

This is somethign I've seen also with a similar script.
As example, we don't want .avi files shared. But all the passive users with .avi files are connecting and not affected by the check/disconnect done by scripts.

Is it a Ptokax bug? Or what?

Anyway as test, I'm running the hub and the client on the same pc. Does this work? Is it an active/passive hub issue?

Do I need to forward any additonal port other than 411 both TCP and UDP (I use 411 on the actual hub)?

Do you know why?

Thank you for any answer

Robert

plop

QuoteOriginally posted by Corsari
... fail.

I use DC++. I've noticed that connecting as passive makes you to be untouched by the script.

This is somethign I've seen also with a similar script.
As example, we don't want .avi files shared. But all the passive users with .avi files are connecting and not affected by the check/disconnect done by scripts.

Is it a Ptokax bug? Or what?

Anyway as test, I'm running the hub and the client on the same pc. Does this work? Is it an active/passive hub issue?

Do I need to forward any additonal port other than 411 both TCP and UDP (I use 411 on the actual hub)?

Do you know why?

Thank you for any answer

Robert
port 413 is used 2 search pasive users.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

[G-T-E]Gate?

Y am I getting the following responce
>> Syntax Error: attempt to call field `EnableSearchData' (a nil value)

Tks ...

plop

QuoteOriginally posted by [G-T-E]Gate?
Y am I getting the following responce
>> Syntax Error: attempt to call field `EnableSearchData' (a nil value)

Tks ...
this thread should be moved, the script is for 0.3.2.6.
you get that error when you try 2 run it on earlyer versions of ptokax.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

[G-T-E]Gate?

Strange ..
 Iam am running PtokaX 326 TD3

plop

QuoteOriginally posted by [G-T-E]Gate?
Strange ..
 Iam am running PtokaX 326 TD3
not really check the changelog from TD4.
- added frmHub:EnableSearchData() and frmHub:EnableFullData() to LUA (more in Scripting.txt)
thats where it was added.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

Joker

Hi.

I tryed script and i like it.  :]  Thank you OpiumVolage.

I think you neet to add there:
frmHub:RegBot(botName)

Is it possible to someone help me to add SU+ profile in this script. I need messages to be send to SU+ , not to all OP:s . I tryed it , but i faild.   :(    

I think  i need part like this added in the script:
function SendPmTo(profile, client, file, response)
	local table = GetUsersByProfile(profile)
	for id, name in table do SendPmToNick(name, client, file, response) end
end

SendPmTo("SU+",  "<"..botName.."> You are sharing the following file: "..file..": "..response)

Or something like that.  ?(

Can anyone please help me  to add this kind function in this FileChecker script.

Thanx.

OpiumVolage

The part sending messages is:
if opchatName then
	messageFunc = SendToOps
else
	messageFunc = SendPmToOps
	opchatName = botName
end

So you nee to find messageFunc and replace by call to function you need (Dirty hack) or define your own messageFunc ;))

IceCoder


mOrrI

Does this script works good in...
version 0.3.2.6 TestDrive 4?????

And how can i see the invalid files and add more invalid files ? thanks :)

OpiumVolage

Yes this script is for TD4, i haven't tested it much but original script is really good.

For the invalid files:
--// MODIFY THIS TABLE <-------
--      { searchType, words[, minimumSize[, regexMatch]] }

searchType is type of the search defined in the first table,
words: What to search

the two others are optionnal

minimumSize: self explainatory ;)
regexMatch: a regex to match with returned results.

mOrrI

i think i get the picture fromt he examples in the bot :)

NICE BOT :)

this is the stuff!!!!

Warning who has S**T in the share :)

Savage-XP

Yes Morri, it works great! :))

Neospider69

hehehehe

Savage-XP & Morri (sem saber)

N?o v?o come?ar em despiques aqui tb, pois n?

You aren?t going to start in a kind of wrestling here, are you?

mOrrI

i really don't know u 2..

acethecase

#21
Hiya...

Is it posible for scrip to ignore"not to check" Owner,SU,OP,VIP
BUT still to check Users,Guest..
I know it?s posible but dont now how to whrite it in scrip.

And if it is posible to make implant that user get?s 3 times
warning and after 3 times have been warned and still have not fix files, then user get kick?or ban!

TnX foR ur Help!!

Cya

anubis_say

HI!

If i want just kick those users, who sharing not  good files, what can i do?

mOrrI

well i can try and see the profile thing and the kick thing...

when i get home :p

anubis_say


SMF spam blocked by CleanTalk