Название: CheckPreFix
Автор: inside
Версия: 2.1
Последнее изменение: 04.03.07
Описание: проверка юзера на необходимый для его сети префикс, если юзер не входит не в один диапозон ипов, ставится инетовский тег.
Как сделать что-бы если заходит пользователь с интернета ставился тег [internet] или [int] ? А если с локальной сети заходят что-бы ни чё не ставилось...
добавил в скрипт настрой, которая позволяет не проверять юзеров локальной сети на тег.
[11:38] Синтаксис D:\PtokaX\scripts\CheckPreFix.lua:97: bad argument #1 to 'lower' (string expected, got nil)
а вот эту таблицу PreFixEs = {} не удалил случаем?
не удалял...
Ну чё будет ли решена проблема?
У мя тут проблема.... Пишу описание сети с большой буквы, например: [Set]
А когда заходишь пишет так: [set]
Если можно исправь!
надо убрать фразы
Вот у меня 2 провайдара альтаир и корбина
я хочу чтоб показывалось кто с альтаира кто с корбины alt , cor
Меняю в таблицах glu pro и т.д на альт
захожу на хаб он мне пишет введите перфик и вместо alt просит чтоб я ввел ext
----вот таблица----
-- таблица соответствия префиксов диапазонам адресов
-- IP юзеров которые не войдут ни в один из следющих диапазонов будут восприняты как "внешние"
-- такие юзеры должны ставить префикс [ext]
--[[
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.0.0",
["To"] = "10.8.255.255",
},
["cor"] =
{
["For"] = "10.9.0.0",
["To"] = "10.100.255.255",
},
["local"] =
{
["For"] = "127.0.0.0",
["To"] = "127.255.255.255",
},
["ttk2"] =
{
["For"] = "212.12.0.0",
["To"] = "212.12.255.255",
},
["ttk"] =
{
["For"] = "10.250.0.0",
["To"] = "10.250.255.255",
},
["x"] =
{
["For"] = "10.216.0.0",
["To"] = "10.216.255.255",
},
}
local bLocal = true -- проверять ли локальных пользователей на тег (true - да nil - нет)
local outOfRange = "ext"
function OnStartup()
BN = SetMan.GetString(21)
end
function UserConnected(user, data)
local _,_,user_sRealPrefix = string.find(user.sNick,"^%[(%S*)%]")
local UserNetPrefix = string.lower(CheckUserNet(user.sIP))
if (user_sRealPrefix == nil and bLocal) or (UserNetPrefix ~= string.lower(user_sRealPrefix)) then
Core.SendToUser(user, "<"..BN.."> Ваш ник не соответствует правилам хаба! Поставьте префикс ["..UserNetPrefix.."] перед ником. Т.е. ваш ник должен будет выглядеть так: ["..UserNetPrefix.."]"..user.sNick.."")
Core.Disconnect(user)
end
end
RegConnected = UserConnected -- приравнивает регов к юзерам
OpConnected = UserConnected -- приравнивает опов к юзерам
function CheckUserNet(user_ip)
local user_Net = outOfRange
local ResultIP = CalculateIP(user_ip)
for Net,Net_ISP in pairs(PreFixEs) do
if ResultIP >= CalculateIP(Net_ISP["For"]) and ResultIP <= CalculateIP(Net_ISP["To"]) then
return Net
end
end
return outOfRange
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
что я не так сделал?
А ты с каким IP на хаб входишь?
Офф топ сново сорри. Ну млин когда на хаб входишь слева ники юзеров написанны и кто то из ник красным цветом кто то синим кто фиолетывам каким то. А мне нужно чтоб они все одним цветом были.
так
GREMLIN Хватит постить скрипт!!!!!!!!!!!!!!!!!!!!!!
ну млин просто очень надо=( а как написать правельно я не знаю. Вот и пишу вам весь код. сорри
GREMLIN
CheckPreFix.lua ( 1.95 килобайт )
: 39
если хочешь пометь только у себя зайди в настройки клиента и поставь на всех одинаковый цвет...
эхехех тульская локалка...
так о чём это я... нафига нужен этот геморой? даже если получится сделать такой скрипт он будет сильно грузить хаб.... да и потом всё равно мелькание будет!
нет такого скрипта...
PS: оффтоп закончили!
[на птохе 4.1 не работает
что конкретно у вас не работает?
Не работает почему то проверка локальных пользователей на тег...Что nil что true в переменной local bLocal ,все равное проверяет тег и просит изменить на тот что указан в диапазоне как локальный
Добавлено спустя N минут:
Уже все ок!Сам кое что поправил в коде,вроде все робит
Скрипт замечательный, вернее идея хорошая.
Однако нифига не работает.
Я так понимаю, что должно работать следующим образом: проверять сначала на принадлежность к диапазонам, а если не попадает ни в один диапазон, то выставляется префикс ext.
На практике же у человека с ИПом попадающим в прописанный диапазон не заходит. Пишет что префикс должен иметь вид: [ext][multinex]ник, но когда он прописывает такой составной префикс тоже зайти не может. его пускает только с префиксом [ext]ник хотя его ип уверенно входит в диапазон.
И вот ещё: для себя хотел сделать диапазон с одним ИПом например: [admin]ник , но дело в том, что мой ИП находится внутри другого диапазона. Какой код должен быть в таком случае?
Кроме того, нужно под один диапазон завести две разные сети!
Спасибо, если реализуете всё это.
10.42.42.151 [admin]
(10.40.0.1-10.47.255.254) multinex
(92.39.64.1-92.39.79.255) multinex
(10.70.1.0-10.70.2.255) newlan
(10.70.3.0-10.70.3.255) gorka
(10.70.5.0-10.70.8.255) swlan
(172.18.0.0-172.18.255.254) insys
(172.17.0.0-172.17.255.254) powernet
Как установить принудительное добавление к нику префикса в зависимости от IP ?
не понял вопроса. скрипт вообще тестировали?!
да, запускал, просит установить префикс, хочу что бы префикс сам добавлялся т.к. диапазоны IP полностью известны, а те что не извесны, пусть добавляет internet или любой на выбор
берём скрипт из первого поста и переделываем его в соответствии с вот этим постом http://mydc.ru/index.html?showtopic=1164&view=findpost&p=11012
Спасибо, но не для мои мозгов.
Кстати скрипт меняет ник при выводе в чат, но не в отображении пользователей, подскажите как правильно будет.
а как сделать чтоб юзеров без тегов пускало но в личку кидало сообщение о том что ему надо поставить такойто тег , если можно киньте переделаный скрипт
Поставил.. Работает как и описано.. Но...хочется слегка по-другому, чтобы работало..
Есть несколько диапазонов,допустим: 10.0.0.-10.255.255.255 и 12.0.0.0-12.255.255.255 и третий диапазон, которой не входит в эти два... Хочется, чтобы диапазон №1 (т.е. 10.0.0.-10.255.255.255) мог ставить любой из нескольки перечисленных префиксов или же пускало вообще без какого либо префикса.
Диапазон №2 (12.0.0.0-12.255.255.255) пускало только с одним префиксом..
А последний, то есть все, что не вошло в предыдущие ставило тоже 1 из любых перечисленных префиксов..
Фух.. Описал Поможете сделать?
Попробовал сделать то что ты хотел...
[16:44] Синтаксис D:\8955~1\scripts\CheckPreFix_byNickolya.lua:57: attempt to concatenate field '?' (a nil value)
Drakula, настройки скрипта - в студию. А именно вот эту часть
Странно что об этой ошибке не сообщили ранее... Замени строку 66
Благодарю, всё работает.
Ммммм небольшая проблема, как сделать что бы префиксы писалить не самыми первыми:
Как префикс сделать в описание, а не в начале ника, так же по ИП, чтобы не пользователь указывал, а автоматом прописывалось?
Что-то нашел подобное (прикрепил), но он не запускается. Стоит Птока 0.4.1.2
Помогите, пожалуйста
Скрипт уже немного другой, http://mydc.ru/topic963.html с исправлением тобой ошибки, описанной в теме.
Что-то не получается. Может поможешь его полностью собрать с исправлениями? Буду примного благодарен
Если не получается - надо писать что конкретно! Держи скрипт, у меня работает.
Огромное спасибо, все работает. Только нужно удалить строку « sTag ».
Если тег не нужен - убираем его в конфиге, вы их совсем не читаете?
Чтобы ошибки не было заменяем
Плохо, что не всегда срабатывает, хоть его и первым поставил в списке при запуске.
Тем не менее, большое спасибо тебе, скрипт «отличный»!
Еще последняя просьба к тебе. Помоги пожалуйста удалить со скрипта обозначения профилей в описании « tProfileTag » - у меня не получается, потом скрипт запускается с ошибкой.
Что-то скрипт вообще глючить стал. Вроде запускается, ошибок не выдает. Запускаю локально у себя - отображает, запускаю на сервере - нет ничего даже при переключении. Что такое?
Может из скрипта убрать все функции кроме определения сети?
Может, я же сказал что любое вторжение в майинфо на птоке создает непредсказуемые реакции, что еще надо сделать:
заменить
Запустил с изменениями, все заработало, база "полов" сбросилась, только указал новый, скрипт перестал работать, точнее меню в закладке с изменением пола осталось, но в описании все сразу исчезло и ничего нет, не обозначения сети и не пола :(
P.S: Пожалуйста, убери все что связано с полом в скрипте - кажется какой-то конфликт происходит из-за него.
Ошибка:
scripts\Description_Network.lua:194: attempt to concatenate local 'sMale' (a nil value)
Попробуй в такой вариации без пола и со всеми правками выше.
Пока работает, дальше посмотрим. Спасибо
Wariner,
Что-то не получается у мну... Пускает на хаб всех, а сообщение о префиксе должно отправлять только пользователям диапазона: 10.0.0.1 - 10.255.255.255.
Как-бы реализовать эту идею?
Perspect, попробуй этот, стоял у меня, рабочий.
Prefix___API_2___.lua ( 2.04 килобайт )
: 12
P.S хм... такой же как и в первом посту, но попробуй, у меня он работал правильно
Спасибо, но мне как раз таки нужно наоборот, чтобы сообщение о префиксе отсылалось только локальному диапазону: 10.0.0.1 - 10.255.255.255, а остальные диапазоны - не затрагивались бы.
Вот слегка переделал скрипт http://mydc.ru/ipb.html?act=attach&type=post&id=5158. Вроде работает, но выдаёт ошибку: Синтаксис C:\PtokaX_0.4.1.2\$спр1$\префикс NEW2.lua:58: attempt to concatenate Held'?' (a nil value]
Заменил строку: