MyDC.ru _ Kорзина _ Скрипт Доступа По Списку Ip - Срочно, Не Просто Так!
Автор: Strem 18.3.2009, 14:01
Блокировался хаб при помощи средств провайдера, но сегодня нежданчик образовался: http://mydc.ru/r/?http://uahub.info/forum/showthread.php?t=8378
Соответственно нужна блокировка по списку IP
PtokaX 0.4.1.1 Смотрите - есть возможность получать список в таком вот виде http://mydc.ru/r/?http://www.colocall.net/uaix/ а точнее так: http://mydc.ru/r/?http://www.colocall.net/uaix/prefixes.txt (соответственно имя тхт лучше сразу идентичное)
Минимум необходимого: - чтоб не впускало всех, кто не в этом списке, с выводом сообщения, почему. - периодическая проверка (устанавливаемо, в часах) на принадлежность к списку тех, кто уже есть в хабе и кик с формулировкой (мол выпали из зоны)
Желательно, но то уже такое, чтоб автоматом получало список само - но это уже некритично, лапками буду или программер наш что-то реализует (Луа, к сожалению, он не знает, а я вообще продвинутый юзверь)))
Буду весьма благодарен - могу предложить бартер, а именно рекламу у нас на месяцок - тут вот http://mydc.ru/r/?http://uahub.info/forum/showthread.php?t=7480 - банер 468*60 в частности, в хабе опять же. Либо же wmz - достаточно символически правда, сами на мели...
Автор: Wariner 18.3.2009, 21:34
ну вот в основу скрипта лёг скрипт башорга(чтоб не парится, спасибо Nickolya). Скрипт при старте и раз в установленное время берёт ипы из инета, делает таблицку и на её основе решает пускать юзера или нет. Мне кажется скрипт будет подтормаживать. Знающие люди вносите свои предложения)))
PS: для работы скрипта нужна библиотека http://mydc.ru/ipb.html?act=attach&type=post&id=74 класть в папку libs в папке scripts
ну вот в основу скрипта лёг скрипт башорга(чтоб не парится, спасибо Nickolya). Скрипт при старте и раз в установленное время берёт ипы из инета, делает таблицку и на её основе решает пускать юзера или нет. Мне кажется скрипт будет подтормаживать. Знающие люди вносите свои предложения)))
Спасибо - сейчас буду пытаться разобраться)) Если заработает - гуд, если нет - приду ныть снова. Чем могу отблагодарить? (В личку, если что))
апд Библиотеку распаковал, куда сказано \0.4.1.1\scripts\libs - не папкой, а скопом типа, скрипт кинул как положено - и он работает, но лочит всех, без исключения - хотя список получен(((
Автор: Wariner 18.3.2009, 22:10
лочит в смысле пускает?
Автор: Strem 18.3.2009, 22:12
Цитата(Wariner @ 18.3.2009, 21:10)
лочит в смысле пускает?
Никого не пускает, в том числе и меня - хотя в уа (и в том списке) - 100%
Автор: Wariner 18.3.2009, 22:19
добавь в скрипт
Код
function OnExit() WriteTable(tExceptionsIP, "tExceptionsIP", sExceptionsIP) end
и посмотри что у тебя будет в таблице с ипами
я прописал диапазон для своего ип ручками и аккуратно зашёл)))
Автор: Strem 18.3.2009, 22:36
Цитата(Wariner @ 18.3.2009, 21:19)
добавь в скрипт
Код
function OnExit() WriteTable(tExceptionsIP, "tExceptionsIP", sExceptionsIP) end
и посмотри что у тебя будет в таблице с ипами
я прописал диапазон для своего ип ручками и аккуратно зашёл)))
Добавил - ничего не поменялось - к примеру мой ип 92.244.112.27 - в таблице он видимо тут: [242] = { [1] = "92.244.96.0", [2] = "92.244.96.19", Если это диапазон - может с перла некорректно перевело? В списке с колокола он так смотрится 92.244.96.0/19 по идее диапазон 92.244.96.0 - 92.244.99.255 Во всяком случае не пускает... ХЗ у меня уже мысли - открыть его шоле, да шумновато станет...
Автор: Wariner 18.3.2009, 22:39
ну если ты не видишь то это точно не тот диапазон!!! в него входят:
ну если ты не видишь то это точно не тот диапазон!!!
твоего адреса нет в списке!!!
Скорее на колоколе своя система, автоматически на перле должен обрабатываться, или переводить в понятную птоке систему корректно, появится программер наш - 100% обзовет обоих идиотами (меня так точно)))
Автор: Wariner 18.3.2009, 22:45
Это ты про что???? айпи есть айпи!!!!
Автор: Strem 18.3.2009, 22:51
Цитата(Wariner @ 18.3.2009, 21:45)
Это ты про что???? айпи есть айпи!!!!
Та понятно - наши там тоже с переформатом баловались - нифига не вышло, корявые диапазоны даёт (может на колоколе слагали) - они такой пример скрипта дают http://mydc.ru/r/?http://www.colocall.net/ua/check_ukr.cgi Ладно - утро вечера мудреннее, припрется наш гений машинных языков, дам ему весь материал - он скорее разберется, тем более с колоколовской базой кже работал.
Как только - так отпишусь
Автор: Firstborn 19.3.2009, 0:14
Если можно, можете немножко проверку переписать в том скрипте, а то мне сложно будет учить еще 1 язык програмирования, я напишу по русски как хотелось бы:
Взять IP юзверя к примеру: 27.127.54.22 (абсолютно от болды, любое совпадение случайно), и конвертировать по принципу:
и взять с таблицы значение диапазона "от" и "до" и сравнить по принципу
Код
если IP < "до" И IP > "от" то пустить в ином случае послать
Таблица генерируется тем же принципом что и конкретный IP, т.е десятичными айпишниками.
Генерацию таблицы можно не писать, я ее сам напишу в том же php.
З.Ы. Надо отредактить Ip2Num(sIP) что бы возвращала число и в строке:
Код
if (Ip2Num(tUser.sIP) >= Ip2Num(v[1])) and (Ip2Num(tUser.sIP) <= Ip2Num(v[2])) then
сделать банальную числовую проверку.
Автор: Setuper 19.3.2009, 1:53
А она (функция Ip2Num) по твоему не число возвращает? Она делает именно то, что ты описал, но минуя бессмысленный этап перевода в бинарный вид, приводя сразу строковое значение ip адреса в число.
Эту функцию не надо корректировать. Неужели так сложно догадаться как это сделать. Для этого не надо знать язык lua.
Код
if (Ip2Num(tUser.sIP) >= v[1]) and (Ip2Num(tUser.sIP) <= v[2]) then
В файле диапазонов, соответственно, пишешь не строковые значения ip адресов, а их числовые представления.
Автор: Firstborn 20.3.2009, 2:50
Прикольный алгоритм, ех век живи век учись. Ну вроде бы понятно. Дальше проблему думаю сам решу.
Просто везде по разному, я думал оно конвертнет строку в число (если она число), как в принципе все скриптовые без типов.
Автор: Setuper 20.3.2009, 3:19
преобразование типов происходит, когда применяешь какую либо операцию, например конкатенацию или умножение, а в данном случае происходит сравнение, и сравнение должно производиться исключительно между числами, но никак не между числом и строкой.
Хотя можно написать так:
Код
if (Ip2Num(tUser.sIP) >= tonumber(v[1])) and (Ip2Num(tUser.sIP) <= tonumber(v[2])) then
тогда строки будут преобразовываться в числа и сравниваться уже будут числа
Автор: Firstborn 20.3.2009, 3:48
Цитата(Firstborn @ 20.3.2009, 2:07)
ыыы , ступил, капец.
Просто везде по разному, я думал оно конвертнет строку в число (если она число), как в принципе все скриптовые без типов.
----
Всем огромное спасибо за содействие, скрипт заработал.
Автор: Strem 20.3.2009, 4:16
Ага, с грехом пополам, общими усилиями)) Дайте плз банер свой 468*60 (картинку либо код) - ну или текст рекламного объявления - цепану у нас новостью на несколько дней - потом в раздел рекламы уползет (хотя та тема была чуть ли не лучшей рекламой)) Ну или другие варианты - в любом случае, большое спасибо