myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> DiapasonGag, тихая заглушка по диапазону (удобно против динамич. IP)

Рейтинг 4 V
Теги
Нет тегов для показа
Ksan
сообщение 7.10.2010, 1:53
Сообщение #21


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Название скрипта: DiapasonGag.lua
Версия: 1.2
Платформа: PtokaX 0.4.1.*+
API: API 2
Автор: Ksan (aka Trans)
Город: Томск
Дата написания: 04-04-2010 (начальная версия - в декабре 2009г)

Описание:
- В скрипте встроенная таблица с диапазонами для заглушки - начало диапазона и конец диапазона.
- При старте скрипта проверяется наличие на хабе юзеров с заглушенных диапазонов, при обнаружении такие ники заносятся в таблицу.
- при входе юзера с таких диапазонов сообщает админу о его приходе (через меню можно отменить этот показ), добавляет ник таблицу,
- далее при попытке написать в чат и приват сначала проверяется наличие в таблице заглуш. ников, если да, то сообщение до остальных юзеров не дойдёт. Админу приходит извещение о попытке написать в чат или приват заглушенным юзером (через меню можно отменить этот показ)
- Извещение о заглушке в чате по выбору через меню можно отправить в чат или в приват админа. Извещение о заглушке в привате админу приходит всегда в приват.
- Имеется таблица команд, которые юзеру разрешено использовать даже при заглушке.
- Имеется таблица ников-исключений.
- Опов не глушит.
В принципе, можно было бы сохранять таблицу заглуш. ников в файл, но особой нужды в этом нет, ибо таблица при старте скрипта заполняется сразу же.
PS: Скрипт был написан давно, и здесь только малая часть возможностей, специально выдрал в пользу голодающих "одминов" (а остальное пусть лучше послужит тихо, контрразведка не любит шума). Думаю, аналогичные скрипты есть на форуме, но пусть и этот посидит скромненько рядом с гигантами мысли...может, пригодится кому.

UPD1: (2010-10-19) Скрипт исправлен, проверен и перезалит.
Приношу свои извинения за невероятно халтурную работу при первом выкладывании. :(
Скрипт тогда собирал в конце бессонной ночи над другим скриптом, и умудрился такие ляпы пропустить..
UPD2: (2013-09-04) Скрипт исправлен, перезалит. Была ошибка - один из флагов был подменён другим и показ захода юзера из заглушенного диапазона не отключался.
UPD3: (2017-03-13) К моему дикому смущению, снова обнаружилась ошибка, исправил и перезалил.
И да, заодно ещё кое-какие небольшие изменения добавил (надеюсь, без ошибок).
Благодарю CyberGhost404 за обнаружение ошибки!
Прикрепленные файлы
Прикрепленный файл  DiapasonGag.lua ( 7.91 килобайт ) Кол-во скачиваний: 30
 


Спасибо сказали:
Go to the top of the page
+Quote Post
2 страниц V  < 1 2  
Начать новую тему
Ответов
AfLc
сообщение 31.8.2011, 8:22
Сообщение #22


Начинающий
*

Группа: Пользователи
Сообщений: 18
Регистрация: 18.5.2011
Из: Россия , Екатеринбург .
Пользователь №: 9 261
Спасибо сказали: 4 раза




Недавно начали флудить по личка рекламой макаронники . Скачал данный скрипт всё работает отлично. Заглушил диапазоны , а они не понимают и всё приходят изредка рекламу кидать . Спасибо !

P.S. Теперь понял , что банить не интересно , лучше заглушить big_smile.gif
Go to the top of the page
+Quote Post
Sergius`
сообщение 27.1.2012, 14:12
Сообщение #23


Абсолютный новичок


Группа: Пользователи
Сообщений: 8
Регистрация: 27.1.2012
Пользователь №: 10 227
Спасибо сказали: 0 раз




Было бы неплохо прикрутить к скрипту меню, через которую, можно было бы управлять диапазонами заглушек!
Добавление и Удаление.

Просто править сам скрипт в ручную, иногда не представляется возможным.
А через меню будет проще, и не только мне.
Go to the top of the page
+Quote Post
Ksan
сообщение 27.1.2012, 14:21
Сообщение #24


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Sergius`, для этого есть другой мой скрипт.
А совмещать их нет смысла, у них разные функции, да и объединённый скрипт получится монструозный..
Если считаешь необходимым, нетрудно заглушить через второй скрипт диапазон, куда входит IP рекламщика.
И это делается как раз через меню. Через ОЧЕНЬ большое меню.
Тебе понравится. big_smile.gif
Go to the top of the page
+Quote Post
Sergius`
сообщение 27.1.2012, 14:26
Сообщение #25


Абсолютный новичок


Группа: Пользователи
Сообщений: 8
Регистрация: 27.1.2012
Пользователь №: 10 227
Спасибо сказали: 0 раз




Цитата(Ksan @ 27.1.2012, 15:21) *
Sergius`, для этого есть другой мой скрипт.
А совмещать их нет смысла, у них разные функции, да и объединённый скрипт получится монструозный..


Уважаемый Ksan пожалуйста сделайте меню именно к этому скрипту.
Я вас очень сильно прошу!

Если для вас письменная форма не так внушительна, готов предложить денежную награду, за проделанную работу.
Go to the top of the page
+Quote Post
Ksan
сообщение 27.1.2012, 14:51
Сообщение #26


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Sergius`, нет.
Не вижу ни одну причину, почему нельзя юзать предложенный мной вариант.
Go to the top of the page
+Quote Post
Sergius`
сообщение 27.1.2012, 15:02
Сообщение #27


Абсолютный новичок


Группа: Пользователи
Сообщений: 8
Регистрация: 27.1.2012
Пользователь №: 10 227
Спасибо сказали: 0 раз




Цитата(Ksan @ 27.1.2012, 15:51) *
Sergius`, нет.
Не вижу ни одну причину, почему нельзя юзать предложенный мной вариант.


Дело в том, что мне нет необходимости использовать ваш предложенный вариант (скрипт).
Go to the top of the page
+Quote Post
Ksan
сообщение 27.1.2012, 16:52
Сообщение #28


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Sergius`, не будьте капризными и слишком привередливыми.
Мне нет необходимости соединять два скрипта только по желанию одного человека. Это время и усилия. И не надо предлагать деньги, дело не в деньгих.
А поставить ещё 1 скрипт и юзать его как хочется - нетрудно.
Извините..
Go to the top of the page
+Quote Post
Sergius`
сообщение 27.1.2012, 17:14
Сообщение #29


Абсолютный новичок


Группа: Пользователи
Сообщений: 8
Регистрация: 27.1.2012
Пользователь №: 10 227
Спасибо сказали: 0 раз




Ksan Да, я очень привередливый! Даже слишком. Жаль конечно что мы не смогли договориться.
Go to the top of the page
+Quote Post
Ksan
сообщение 27.1.2012, 18:35
Сообщение #30


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Sergius`, я тоже привередливый.
И именно потому научился сам писать скрипты, а не клянчить у других то переделать, это придумать, там новый написать..
И переделывать, когда что-то не нравится.
Назвались админом - полезайте в кузов, то бишь, учитесь работать со скриптами, овладевайте языком Луа в пределах, необходимых для написания и переделки скриптов под Птоку..

Это касается всех местных дежурных попрошаек тоже.
Go to the top of the page
+Quote Post
Ksan
сообщение 4.9.2013, 14:35
Сообщение #31


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




UPD:
2013-09-04
: Скрипт исправлен, перезалит. Была ошибка - один из флагов был подменён другим и показ захода юзера из заглушенного диапазона не отключался. Обнаружилась после конвертации скрипта под Русхаб.
Go to the top of the page
+Quote Post
dimetro
сообщение 26.11.2014, 15:42
Сообщение #32


Активный участник
***

Группа: Пользователи
Сообщений: 69
Регистрация: 14.9.2009
Пользователь №: 4 440
Спасибо сказали: 19 раз




Код
DiapasonGag.lua:65: attempt to compare number with nil

при перезапуске и заходе пользователей на хаб все время в оп-чат высвечивается.
как исправить?
CODE
--- Скрипт тихой заглушки юзеров-нарушителей по диапазону (особенно удобно против диапазонов с динамическими IP), а также информирования админа о приходе юзера с заглушенного диапазона.
---
--- Название скрипта: DiapasonGag.lua
--- Версия: 1.0
--- Платформа: PtokaX 0.4.1.*
--- API: API 2
--- Автор: Ksan (aka Trans)
--- Город: Томск
--- Дата написания: 04-04-10 (начальная версия - в декабре 2009г)
--- Описание: Глушит по диапазонам из таблицы, при входе юзера с таких диапазонов сообщает админу о его приходе (опционально), заносит ник в отдельную таблицу, далее при попытке написать в чат и приват сначала проверяется наличие в таблице заглуш. ников, если там нет (например, скрипт перезапустили, а юзер уже в хабе, и он не попадет в таблицу) - проверяется по диапазону ещё раз. Имеется таблица команд, которые юзеру разрешено использовать даже при заглушке. Имеется таблица ников-исключений. Опов не глушит.
--- В принципе, можно сохранять таблицу заглуш. ников в файл, но особой нужды в этом нет.

local sBot = SetMan.GetString(21)
local sBot2 = "ReportBot"
local sAdmin = "Dimon"

local sCmd2 = "!showdiapazgag"
local sCmd3 = "!showindiapazgag"
local bFlag2 = false --- Сообщать или нет админу о заглушках
local bFlag3 = false --- Сообщать или нет админу о приходе юзера с заглуш. диапазона

sUngagable = { --- Незаглушаемые ники
["Ева"] = 1,
["Dimon"] = 1,
["Тест"] = 0,
}

tDiap = { --- Диапазоны (начало и конец)
["109.195.168.0"] = "109.195.175.255", --- что-то динамич. со спамом
["176.212.168.0"] = "176.212.175.255", --- что-то динамич. со спамом
["176.212.184.0"] = "176.212.191.255", -- что-то динамич. со спамом
["109.195.160.0"] = "109.195.167.255", -- что-то динамич. со спамом
["176.212.176.0"] = "176.212.183.255", -- что-то динамич. со спамом
["37.113.248.0"] = "37.113.255.255", -- что-то динамич. со спамом
["37.113.232.0"] = "37.113.239.255", -- что-то динамич. со спамом
["37.113.224.0"] = "37.113.231.255", -- что-то динамич. со спамом
["37.113.192.0"] = "37.113.199.255", -- что-то динамич. со спамом
["37.113.200.0"] = "37.113.207.255", -- что-то динамич. со спамом
["37.113.240.0"] = "37.113.247.255", -- что-то динамич. со спамом
["37.113.208.0"] = "37.113.215.255", -- что-то динамич. со спамом
["37.113.216.0"] = "37.113.223.255", -- что-то динамич. со спамом
["94.180.8.0"] = "94.180.15.255", -- что-то динамич. со спамом
["37.112.104.0"] = "37.112.111.255", -- что-то динамич. со спамом
}

tUnforbid = { -- Разрешенные команды для заглушенных
"!старт",
"!стоп",
"!игроки",
"!подскажи",
"!countrystats",
}
tGagNicks = {} -- Заготовка под таблицу с заглуш. никами

function UserConnected(tUser)
if tUser.sNick == sAdmin then
Core.SendToUser(tUser, "$UserCommand 1 1 • Админка •\\Переключения\\ДиапазонГАГ\\Показ заглушек$<%[mynick]> "..sCmd2.."|")
Core.SendToUser(tUser, "$UserCommand 1 1 • Админка •\\Переключения\\ДиапазонГАГ\\Показ прихода$<%[mynick]> "..sCmd3.."|")
end
local tAdmin = Core.GetUser(sAdmin)
if not tUser.bOperator and sUngagable[tUser.sNick] ~= 1 then
for i, v in pairs(tDiap) do --- По диапазону
decIP1 = IPtoDec(i)
decIP2 = IPtoDec(v)
if iIP >= decIP1 and iIP <= decIP2 then
if tAdmin and bFlag3 then
Core.SendPmToNick(sAdmin, sBot2, " Пришёл юзер с заглушенного диапазона. Ник - "..tUser.sNick.." IP - "..sIP)
tGagNicks[tUser.sNick] = true
end
end
end
collectgarbage()
end
end
RegConnected = UserConnected
OpConnected = UserConnected

function ChatArrival(tUser, sData)
Core.GetUserAllData(tUser)
local s,e,sMsg = string.find(sData,"%b<>%s*(.*)%|")
local sData = string.sub(sData, 1, -2)
local sIP = tUser.sIP
local tAdmin = Core.GetUser(sAdmin)
iIP = IPtoDec(sIP)
if not tUser.bOperator and sUngagable[tUser.sNick] ~= 1 then
if not CheckUnforbid(sData) then
if tGagNicks[tUser.sNick] then
Core.SendToUser(tUser, sData)
if tAdmin and bFlag2 then
Core.SendPmToNick(sAdmin, sBot2, "( "..sIP.." ) Заглушка по диапазону. "..sData)
end
else
for i, v in pairs(tDiap) do --- По диапазону
decIP1 = IPtoDec(i)
decIP2 = IPtoDec(v)
if iIP >= decIP1 and iIP <= decIP2 then
Core.SendToUser(tUser, sData)
return true
end
end
end
collectgarbage()
end
end
end
ToArrival = ChatArrival

function IPtoDec(sIP) --- Конвертирование IP в целочисленный вид
if sIP then
local a,b,c,d = sIP:match("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")
if a and b and c and d then
return a*16777216 + b*65536 + c*256 + d
end
end
end

function CheckUnforbid(sArgument) -- Проверка на разрешённые слова
sArgument = StringLower(sArgument)
for i = 1, #tUnforbid do
sUnforbidi = StringLower(tUnforbid[i])
--- if string.find(sArgument, sUnforbidi, 1, true) then
if sUnforbidi == sArgument:match("^(%S+).*") then -- если вдруг будет ошибка на этой строке, то её надо закомментить и раскомментить предыдущую
return true
end
end
end

function StringLower(arg) -- Приведение к строчным буквам
local res = ""
local Byte, Len = nil, string.len(arg)
arg = string.lower(arg)
for i = 1, Len do
Byte = string.byte(arg, i)
if (Byte >= 192) and (Byte < 224) then
Byte = Byte + 32
end
if (Byte == 168) or (Byte == 184) then
Byte = 229
end
res = res..string.char(Byte)
end
return res
end

function OnError(s) --- Отправка ошибки в Опчат
Core.SendToOpChat(s)
end


вот код.
Go to the top of the page
+Quote Post
Артём
сообщение 27.11.2014, 0:18
Сообщение #33


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




dimetro, а код зачем или он дополнялся и отличается от оригинала в первом посте?
Go to the top of the page
+Quote Post
dimetro
сообщение 27.11.2014, 0:49
Сообщение #34


Активный участник
***

Группа: Пользователи
Сообщений: 69
Регистрация: 14.9.2009
Пользователь №: 4 440
Спасибо сказали: 19 раз




Цитата(Артём @ 26.11.2014, 23:18) *
dimetro, а код зачем или он дополнялся и отличается от оригинала в первом посте?


на менялся вроде, но не я добавлял туда диапазоны и т.д.\ поэтому на всяк случай.
Go to the top of the page
+Quote Post
Ksan
сообщение 27.11.2014, 3:18
Сообщение #35


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




dimetro,
Похоже, я две строки забыл оставить в скрипте (я этот скрипт переделывал со своего более расширенного).
Нужно вот что сделать - в коде функции
Код
function UserConnected(tUser)
после строки (возможно, номер этой строки у вас - 60):
Код
local tAdmin = Core.GetUser(sAdmin)
нужно вставить вот эти 2 строки:
Код
    local sIP = tUser.sIP
    local iIP = IPtoDec(sIP)
затем сохранить скрипт и перезапустить его.

Прошу прощения за свой ляп!


Спасибо сказали:
Go to the top of the page
+Quote Post
dimetro
сообщение 27.11.2014, 15:31
Сообщение #36


Активный участник
***

Группа: Пользователи
Сообщений: 69
Регистрация: 14.9.2009
Пользователь №: 4 440
Спасибо сказали: 19 раз




Цитата(Ksan @ 27.11.2014, 2:18) *
dimetro,
Похоже, я две строки забыл оставить в скрипте (я этот скрипт переделывал со своего более расширенного).
Нужно вот что сделать - в коде функции
Код
function UserConnected(tUser)
после строки (возможно, номер этой строки у вас - 60):
Код
local tAdmin = Core.GetUser(sAdmin)
нужно вставить вот эти 2 строки:
Код
    local sIP = tUser.sIP
    local iIP = IPtoDec(sIP)
затем сохранить скрипт и перезапустить его.

Прошу прощения за свой ляп!


Вставил код-все работает. Спасибо!
Go to the top of the page
+Quote Post
Ksan
сообщение 13.3.2017, 3:04
Сообщение #37


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




UPD-3: (2017-03-13)
К моему дикому смущению, снова обнаружилась ошибка, исправил и перезалил в сообщении #1.
И да, заодно ещё кое-какие небольшие изменения добавил (надеюсь, без ошибок). big_smile.gif
Благодарю CyberGhost404 за обнаружение ошибки!
Go to the top of the page
+Quote Post

2 страниц V  < 1 2
Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsDiapasonGag
Диапазон гаг
3 Dimon21 8 378 4.9.2013, 14:52 Посл. сообщение: Артём

 



RSS Сейчас: 27.11.2024, 1:50