Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ Разделение пользователей на группы по IP

Автор: Jackson 25.5.2009, 23:02

Всем привет!
суть дела такова:

нужно сделать что-бы пользователи из группы 2, ip которых записан в tAllowedRanges, могли соединятся с пользователями из группы 1 и группы 2. но при этом пользователи из группы 1 могли соединятся только с группой 1.

*группа 1 это все остальные пользователи, чьи адреса не записаны в tAllowedRanges

Код
sBot = SetMan.GetString(21)

tAllowedRanges = {
["10.0.1.13"] = "10.0.1.13",
["10.0.2.78"] = "10.0.2.78",
}

tTemp = {}


function OnStartup()
    for a,b in pairs(tAllowedRanges) do
        tTemp[(computeIP(a))] = computeIP(b)
    end
end


function ConnectToMeArrival(tUser, sData)
    if checkIP(tUser.sIP) then
        Core.SendToUser(tUser, "<"..sBot.."> *** сообщение для группы 1 !")
        return
    end
    if (checkIP(tUser.sIP) == false) then
        Core.SendToUser(tUser, "<"..sBot.."> *** сообщение для группы 2 !")
        return
    end
end


function checkIP(sIP)
    local iIP = computeIP(sIP)
    if iIP then
        for startRange,endRange in pairs(tTemp) do
            if (iIP >= startRange)and (iIP <= endRange) then
                return false
            end
        end
    end
    return true
end


function computeIP(sIP)
    local _,_,a,b,c,d = string.find(sIP, "(%d+).(%d+).(%d+).(%d+)")
    return a*16777216 + b*65536 + c*256 + d
end

RevConnectToMeArrival = ConnectToMeArrival
MultiConnectToMeArrival = ConnectToMeArrival
OpConnected = UserConnected


p.s. не предлагайте пользоватся скриптом разделения сетей, мне нужно разобраться и сделать на базе этого.

API2

помогите всё это довести до ума, пожалуйста!