script need...
 

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

script need...

Started by charlie, 23 August, 2004, 21:04:24

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

charlie

is it possible to change the blocker script to the following tasks...

all user are blocked to download from the user "TEST"

only when an op grand another spezified user to download...  for example "TEST2" by command !grand

So ONLY the user "TEST2" can download something from "TEST" and all other not!

thx for help

BottledHate

are u looking for something client side for your own share? or stand alone ptokax lua script?

-BH
Homepage: www.bottledhate.webhop.org

Compiling  Lua scripts is LAME!!!!!

charlie


nErBoS

#3
Hi,

Here you go...

--## Upload Blocker
--## Requested by charlie
--## Made by nErBoS
--## Commands (only for OPs):
--##	!addblock 	-- Will block uploads from the user (only OPs can download from him)
--##	!delblock 	-- Will remove the block from the user uploads
--##	!allow  	-- Will allow the user "nick" to make downloads from the user "who"
--##	!restrict  	-- Will remove the allow from the user "nick" to make downloads from the user "who"
--##	!blocked		-- Will show all user that are blocked and who is allowed to make downloads from him

sBot = "U-Blocker"

arrUser = {}
fUser = "user.dat"

--## Configuration ##--

uLaterPtokax = 0	-- Choose 0 if you are using a Ptokax version 0.3.3.0 or higher
			-- Choose 1 if you are using a Ptokax version lower then 0.3.3.0

--## END ##--

function Main()
	frmHub:RegBot(sBot)
	frmHub:EnableFullData(1)
	LoadFromFile(fUser)
end

function OnExit()
	SaveToFile(fUser , arrUser , "arrUser")
end

function DataArrival(user, data)
	if (strsub(data,1,1) == "<" or strsub(data,1,5+strlen(sBot)) == "$To: "..sBot) then
		data = strsub(data,1,strlen(data)-1)
		s,e,cmd = strfind(data, "%b<>%s+(%S+)")
		if (cmd == "!addblock" and user.bOperator) then
			local s,e,nick = strfind(data, "%b<>%s+%S+%s+(%S+)")
			if (nick == nil) then
				user:SendPM(sBot, "Syntax Error, !addblock , you must write a nick.")
			elseif (type(arrUser[strlower(nick)]) == "table") then
				user:SendPM(sBot, "The user "..nick.." is already blocked.")
			else
				arrUser[strlower(nick)] ={}
				if (uLaterPtokax == 1) then
					OnExit()
				end
				user:SendPM(sBot, "The user has been added a block. Now only OPs can download from him.")
				user:SendPM(sBot, "If you want a user to download from him just use !allow.")
			end
			return 1
		elseif (cmd == "!delblock" and user.bOperator) then
			local s,e,nick = strfind(data, "%b<>%s+%S+%s+(%S+)")
			if (nick == nil) then
				user:SendPM(sBot, "Syntax Error, !delblock , you must write a nick.")
			elseif (arrUser[strlower(nick)] == nil) then
				user:SendPM(sBot, "The user "..nick.." is not blocked.")
			else
				arrUser[strlower(nick)] = nil
				if (uLaterPtokax == 1) then
					OnExit()
				end
				user:SendPM(sBot, "The user has been removed the block. Now anyone can download from him.")
			end
			return 1
		elseif (cmd == "!allow" and user.bOperator) then
			local s,e,who,nick = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)")
			if (nick == nil or who == nil) then
				user:SendPM(sBot, "Syntax Error, !allow  , you must both nicks.")
			elseif (arrUser[strlower(who)] == nil) then
				user:SendPM(sBot, "The user "..who.." is not blocked.")
			elseif (arrUser[strlower(who)][strlower(nick)] ~= nil) then
				user:SendPM(sBot, "The user "..nick.." is already allow to download from "..who)
			else
				arrUser[strlower(who)][strlower(nick)] = user.sName
				if (uLaterPtokax == 1) then
					OnExit()
				end
				user:SendPM(sBot, "The user "..nick.." has been allowed to download from "..who)
			end
			return 1
		elseif (cmd == "!restrict" and user.bOperator) then
			local s,e,who,nick = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)")
			if (nick == nil or who == nil) then
				user:SendPM(sBot, "Syntax Error, !restrict  , you must both nicks.")
			elseif (arrUser[strlower(who)] == nil) then
				user:SendPM(sBot, "The user "..who.." is not blocked.")
			elseif (arrUser[strlower(who)][strlower(nick)] == nil) then
				user:SendPM(sBot, "The user "..nick.." is not allow to download from "..who)
			else
				arrUser[strlower(who)][strlower(nick)] = nil
				if (uLaterPtokax == 1) then
					OnExit()
				end
				user:SendPM(sBot, "The user "..nick.." is no more allowed to download from "..who)
			end
			return 1
		elseif (cmd == "!blocked" and user.bOperator) then
			local sTmp,usr,aux,usr2 = "The Users the have uploads blocked:"
			for usr, aux in arrUser do
				sTmp = sTmp.."\r\n\r\n--## Users that can download from "..usr..":\r\n\r\n"
				for usr2, aux in arrUser[usr] do
					sTmp = sTmp.."\t"..usr2.." Allowed by: "..aux.."\r\n"
				end
			end
			user:SendPM(sBot, sTmp)
		end
	end

	if (strsub(data,1,12) == "$ConnectToMe" and not user.bOperator) then
		local s,e,from,toip = strfind(data, "$ConnectToMe%s+(%S+)%s+(%d+%.%d+%.%d+%.%d+):")
		if (type(arrUser[strlower(from)]) == "table") then
			if (CheckForPermission(arrUser[strlower(from)],toip) == 0) then
				user:SendPM(sBot, "You can't download from "..from..". If you have any doubt talk with a OP.")
				return 1
				end
		end
	end

	if (strsub(data,1,15) == "$RevConnectToMe" and not user.bOperator) then
		local s,e,to,from = strfind(data, "$RevConnectToMe%s+(%S+)%s+(%S+)")
		if (type(arrUser[strlower(from)]) == "table") then
			if (arrUser[strlower(from)][strlower(to)] == nil) then
				user:SendPM(sBot, "You can't download from "..from..". If you have any doubt talk with a OP.")
				return 1
			end
		end
	end
end

function CheckForPermission(table,ip)
	local usr,aux
	for usr, aux in table do
		if (GetItemByName(usr) ~= nil and GetItemByName(usr).sIP == ip) then
			return 1
		end
	end
	return 0
end

function Serialize(tTable, sTableName, sTab)
	assert(tTable, "tTable equals nil");
	assert(sTableName, "sTableName equals nil");

	assert(type(tTable) == "table", "tTable must be a table!");
	assert(type(sTableName) == "string", "sTableName must be a string!");

	sTab = sTab or "";
	sTmp = ""

	sTmp = sTmp..sTab..sTableName.." = {\n"

	for key, value in tTable do
		local sKey = (type(key) == "string") and format("[%q]",key) or format("[%d]",key);

		if(type(value) == "table") then
			sTmp = sTmp..Serialize(value, sKey, sTab.."\t");
		else
			local sValue = (type(value) == "string") and format("%q",value) or tostring(value);
			sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue
		end

		sTmp = sTmp..",\n"
	end

	sTmp = sTmp..sTab.."}"
	return sTmp
end

function SaveToFile(file , table , tablename)
	writeto(file)
	write(Serialize(table, tablename))
	writeto()
end

function LoadFromFile(file)
	if (readfrom(file) ~= nil) then
		readfrom(file)
		dostring(read("*all"))
		readfrom()
	end
end

Best regards, nErBoS
--## nErBoS Spot ##--

charlie

nErBoS thx...

great work

BottledHate

nice nErBoS.. i made one.. but it isn't that fancy :p

bleh:
!grant
add user to dl.. once they connect it removes them from
 the list. so they can get filelist and dl shit till they lose
connection. then they need to be re-granted.(this was
on purpose)

-----------------------------------------------
FileServer = "?TeStNiCk" --//the nick w/ the files
------------------------------------------------
function Main()
   frmHub:EnableFullData(1)
end
allowTable={}
function DataArrival(user, data)
   if (strsub(data, 1, 1) == "<" ) then  
      if user.iProfile >=1 then return end
      data=strsub(data,1,strlen(data)-1) 
      _,_,cmd=strfind(data, "%b<>%s+(%S+)")
      _,_,nick=strfind(data, "%b<>%s+%S+%s+(%S+)")
      if (cmd == "!grant") then
         if nick == nil then
            user:SendData("***Error: nick required. Syntax: !grant ***|")
         else
            allowTable[nick] = 1
            user:SendData("***"..nick.." added. 1 connection to "..FileServer.." allowed.***|")
         end
      end
   elseif (strsub(data, 1, 15) == "$RevConnectToMe") then
      local _,_,who = strfind(data, "$RevConnectToMe%s+%S+%s+(%S+)|")
      if (who == FileServer) then
         if allowTable[user.sName] then
            allowTable[user.sName] = nil
         else
            user:SendData("***Error: You must get permission to be able to download from "..FileServer..".***|")
            return 1
         end
      end
   elseif (strsub(data, 1, 12) == "$ConnectToMe") then
      local _,_,who = strfind(data, "$ConnectToMe%s+(%S+)%s+.*|")
      if (who == FileServer) then
         if allowTable[user.sName] then
            allowTable[user.sName] = nil
         else
            user:SendData("***Error: You must get permission to be able to download from "..FileServer..".***|")
            return 1
         end
      end
   end
end

great learning experience to make it at any rate. ;)

-BH
Homepage: www.bottledhate.webhop.org

Compiling  Lua scripts is LAME!!!!!

nErBoS

Hi,

Simple but good :D keep it going.

Best regards, nErBoS
--## nErBoS Spot ##--

SMF spam blocked by CleanTalk