PtokaX forum

Archive => Archived 4.0 boards => Request for Lua 4 scripts => Topic started by: sylvi on 25 November, 2004, 12:10:27

Title: change Blocker Made by nErBoS
Post by: sylvi on 25 November, 2004, 12:10:27
is it possible to change the downloadblocker in this way: All users are blocked to download from user "Server" until they are x hours online.
Title:
Post by: nErBoS on 25 November, 2004, 14:45:39
Hi,

Show us what download blocker are you using.

Best regards, nErBoS
Title:
Post by: sylvi on 25 November, 2004, 15:48:54
hi nErBoS

this Script

--## Big BUG Fixed (thanks Skyhawk for bugging me :D )
--## 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 = "Block"

arrUser = {}
arrRC = {}
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") then
      local s,e,to,ip = strfind(data, "$ConnectToMe%s+(%S+)%s+(%d+%.%d+%.%d+%.%d+):")
      if (arrRC[to] == 1) then
         arrRC[to] = nil
      elseif (not user.bOperator and type(arrUser[strlower(to)]) == "table" and arrUser[strlower(to)][strlower(user.sName)] == nil) then
         user:SendPM(sBot, "You can't download from "..to..". If you have any doubt talk with a OP.")
         return 1
      end
   end

   if (strsub(data,1,15) == "$RevConnectToMe") then
      data = strsub(data,1,strlen(data)-1)
      local s,e,from = strfind(data, "$RevConnectToMe%s+%S+%s+(%S+)")
      if (not user.bOperator and type(arrUser[strlower(from)]) == "table" and arrUser[strlower(from)][strlower(user.sName)] == nil) then
         user:SendPM(sBot, "You can't download from "..from..". If you have any doubt talk with a OP.")
         return 1
      end
      arrRC[user.sName] = 1
   end
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
Title:
Post by: Themaster on 25 November, 2004, 16:08:06
Hello next time do it like this

[ code]

The script

[/ code]
Title:
Post by: nErBoS on 26 November, 2004, 00:44:09
Hi,

This is not a download blocker, its an upload blocker.

Best regards, nErBoS
Title:
Post by: sylvi on 26 November, 2004, 10:47:36
Hi nErBoS,

big thx for the info but it don?t help me - what i?m looking for is a script that block all user to download from the hubserver until they reach the minimum uptime in the hub
Title:
Post by: nErBoS on 26 November, 2004, 14:08:59
Hi,

Make a search in the "Finished Scripts" section for download blocker.

Best regards, nErBoS