we have a script that might cause this problem

RatioChecker.lua

--[[

        HSS Check 1.0b LUA 5.1x [Strict] [API 2]
        
        Hub Share Slot Check
        By Mutor                12/25/07

        Provides limits per profile for:
                -Minimum share
                -Maximum hubs
                -Minimum slot:hub ratio
        Option for disconnect,kick or ban
        Messages user before removal
        Reports to: Nick, Ops or All
        Checks for myinfo changes after login
        Protect by nick option
        Action taken if MyINFO is invalid
        
        +Changes from 1.0       12/27/07
                +Added option to use hub/slot ratio or max slot setting
                +Added clean hub on script start
                ~Changed MyINFO checking [checked only after connection]
                
]]

-- Reporting function
-- 0 = Disabled 1 = SendToNick 2 = SendToOps, 3 = SendToAll
local Report = 3
-- If Report = 0, then set Nick
local OpNick = ""--"Mutor"
-- Name for Bot
local Bot = SetMan.GetString(21)
-- Penalty for offenders 1=Disconnect, 2 = Kick[default tempban], 3 = Ban
local Penalty = 1
-- Set Your Profiles
-- [#] = {MinShare in GB,MaxHubs,*Slot/Hub Ratio OR Max Slots},
local Profiles = {
        [-1] = {30960,0,0},
        [0] = {0,0,0},
        [1] = {0,0,0},
        [2] = {0,0,0},
        [3] = {0,0,0},
        [4] = {0,0,0},
        [5] = {512,0,0},
        [6] = {1024,0,0},
        [7] = {10,0,0},
        }
-- *Use slot count as a ratio? [3rd value in the Profiles array] true/false
-- *If set to false slot count is max slot limit set Profiles array accordingly
local Ratio = false
local SafeNicks = {
        ["[10Mbit]Ben"] = true,
        ["WebReg"] = true,
        ["ruler"] = true,
        ["123Rizzo"] = true,
        }

OnStartup  = function()
        for _,user in ipairs(Core.GetOnlineUsers()) do
                CheckUser(user)
        end
        collectgarbage("collect")
end

UserConnected = function(user)
        CheckUser(user)
end
OpConnected,RegConnected = UserConnected,UserConnected

MyINFOArrival = function(user,data)
        if Core.GetUserValue(user,9) then
                CheckUser(user)
        end
end

CheckUser = function(user)
        if not SafeNicks[user.sNick] then
                local t = {}
                for i = 16, 21 do
                        if i < 18 or i > 20 then
                                local x = Core.GetUserValue(user,i)
                                if x then
                                        table.insert(t,tonumber(x))
                                end
                        end
                end
                if #t == 3 then
                        local tab = Profiles[user.iProfile]
                        if tab then
                                local rsn
                                local p,m,z,x = GetProf(user.iProfile),"",1024^3
                                if tab[1] > 0 and t[1] < (tab[1]* z) then
                                        rsn = "Under minimum share limit"
                                        m,x = FmtSz((tab[1]* z) - t[1]).." 
short of minimum share of "..
                                        FmtSz(tab[1] * z).." for "..p.."s.",true
                                elseif tab[2] > 0 and t[2] > tab[2] then
                                        rsn = "Over maximum hub limit."
                                        m,x = t[2] - tab[2].." too many hubs 
(Max: "..tostring(tab[2])..
                                        " ) for "..p.."s.",true
                                else
                                        if Ratio then
                                                --if tab[3]> 0 and (t[3]/t[2] < 
tab[3]*t[2]) then
                                                if t[2] < 1 and t[3] < 1 or 
tab[3]> 0 and (t[3]/t[2] < tab[3]*t[2]) then
                                                        rsn = "Under minimum 
slot:hub ratio"
                                                        local hs,cs = 
tab[3]*t[2],math.ceil((tab[3]*t[2]) - t[3])
                                                        m,x = tostring(cs).." 
too few slots for "..p.."s. "..
                                                        "You're logged on to 
"..tostring(t[2]).." hubs which requires "..
                                                        "you to have 
"..tostring(hs).." slots.",true
                                                end
                                        else
                                                if tab[3] > 0 and t[3] > tab[3] 
then
                                                        rsn = "Over maximum 
slot allowance"
                                                        local hs,cs = 
tab[3],t[3] - tab[3]
                                                        m,x = tostring(cs).." 
too many slots for "..p.."s. "..
                                                        "You are only allowed 
"..tostring(hs).." slots.",true
                                                end
                                        end
                                end
                                if x then
                                        local nick = user.sNick
                                        Txt = {"disconnected","kicked","banned"}
                                        local umsg = nick..", you will be 
"..Txt[Penalty]..
                                        " for the offense: "..m
                                        if DumpUser(user,umsg,rsn) then
                                                m = 
m:lower():gsub("you're",nick.." is")
                                                m = m:lower():gsub("you",nick)
                                                Send(nick.." was 
"..Txt[Penalty].." for "..m,0)
                                        end
                                        return true
                                end
                        end
                else
                        local msg,nick = "Your client is invalid. You may 
return with a proper "..
                        "NMDC protocol compliant client, You will now be 
disconencted|",user.sNick
                        if DumpUser(user,msg) then
                                Send(nick.." was disconnected for bad client",0)
                        end
                        return true
                end
        end
end

DumpUser = function(user,msg,rsn)
        local nick = user.sNick
        Core.SendToUser(user,msg)
        local Action = {
                [1] = function(user) return Core.Disconnect(user) end,
                [2] = function(user,msg,rsn) return Core.Kick(user,Bot,rsn) end,
                [3] = function(user,msg,rsn) return 
BanMan.Ban(user,rsn,Bot,false) end,
        }
        local x = Action[Penalty](user,msg,rsn)
        if x and not Core.GetUser(nick) then
                return true
        end
end

GetProf = function(i)
        local Prof = "Unregistered User"
        if i >= 0 then
                Prof = ProfMan.GetProfile(i).sProfileName
        end
        return Prof
end

Send = function(msg,arg)
        if not arg then arg = Report end
                if arg > 0 then
                if arg == 1 then
                        if OpNick:len() > 0 then
                                local user = Core.GetUser(OpNick)
                                if user then
                                        Core.SendToUser(user,"<"..Bot.."> 
"..msg.."|")
                                else
                                        Send(msg,1)
                                end
                        else
                                return
                        end
                elseif arg == 2 then
                        Core.SendToOps("<"..Bot.."> "..msg.."|")
                elseif arg == 3 then
                        Core.SendToAll(msg.."|")
                end
        end
end

FmtSz = function(int)
        local i,u,x = int or 0,{"","K","M","G","T","P"},1
        while i > 1024 do i,x = i/1024,x+1 end return string.format("%.2f 
%sB.",i,u[x])
end


the rest is most text files like rules

-- 
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to ADCH++.
https://bugs.launchpad.net/bugs/1203313

Title:
  Adch++ goes down

Status in ADCH++:
  New

Bug description:
  Hub goes down sometimes for some reason.why we do not know, it may be that we 
have too many users in the Hub we have 600-1100 users.we can not see anything 
in the log
  any idea why it goes down??

  ADCH++ 2.10.1 (r646) Release

  
  Janne

To manage notifications about this bug go to:
https://bugs.launchpad.net/adchpp/+bug/1203313/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~linuxdcpp-team
Post to     : linuxdcpp-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~linuxdcpp-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to