--[[ C h e c k [P r e F i x] ПРОВЕРКА НИКА ЮЗЕРА НА НЕОБХОДИМЫЙ ДЛЯ ЕГО СЕТИ ПРЕФИКС Название: CheckPreFix Автор: inside Версия: 2.1 Последнее изменение: 04.03.07 ]]-- -- таблица соответствия префиксов диапазонам адресов -- IP юзеров которые не войдут ни в один из следющих диапазонов будут восприняты как "внешние" -- такие юзеры должны ставить префикс [ext] PreFixEs = { ["alt"] = { ["For"] = "10.1.1.1", ["To"] = "10.100.255.255", }, ["ttk"] = { ["For"] = "10.250.1.1", ["To"] = "10.250.255.255", }, ["cbn"] = { ["For"] = "10.216.1.1", ["To"] = "10.216.255.255", }, } function NewUserConnected(user, data) local _,_,user_sRealPrefix = string.find(user.sName,"^%[(%S*)%]") local UserNetPrefix = string.lower(CheckUserNet(user.sIP)) if (user_sRealPrefix == nil) or (UserNetPrefix ~= string.lower(user_sRealPrefix)) then user:SendData(BN, "Ваш ник не соответствует правилам хаба! Поставьте префикс ["..UserNetPrefix.."] перед ником. Т.е. ваш ник должен будет выглядеть так: ["..UserNetPrefix.."]"..user.sName.."") user:Disconnect() end end function CheckUserNet(user_ip) user_Net = "ext" for Net,Net_ISP in pairs(PreFixEs) do if (CheckIPRange(Net_ISP["For"],user_ip,Net_ISP["To"]) == 1) then user_Net = Net break end end return user_Net end function CheckIPRange(ForIP,IP,ToIP) ResultIP = CalculateIP(IP) if (ResultIP >= CalculateIP(ForIP)) and (ResultIP <= CalculateIP(ToIP)) then return 1 else return 0 end end function CalculateIP(anyIP) local _,_,anyIP1,anyIP2,anyIP3,anyIP4 = string.find(anyIP, "(%d*)%.(%d*)%.(%d*)%.(%d*)") return 256*(256*(256*(anyIP1*256+anyIP2)+anyIP3)+anyIP4) end BN = frmHub:GetHubBotName()