Автор: GULAM33 18.2.2013, 22:11
alex82 спасибо за скрипт!
Данный скрипт может отлавливать и по TTH файла(ов).
Когда юзер ищет файл по TTH, и при совпадении корней с запрещенными "масками", так же блокирует юзера.
В код хеша TTH не входят цифры: 0,1,8,9. Так же не входят кирилические буквы - буквы русского алфавита.
Не входят в хеш символы и пробелы между двух соседних букв.
Вывод: Нецелесообразно использовать маски только из латинских букв с включением и без цифр: 2,3,4,5,6 и 7.
Необходим либо пробел в искомом словосочетании, либо символ, либо цифры 0,1,8 и 9.
Кроме того с рускоязычными масками множество исключений, которые придется долго составлять.
Отдельное спасибо за скрипт под RusHub Saymon21!
Может быть как то решить этот не достаток, сделав обход хеш поиска?
Справка: Хеш состоит из 39 букв латинского алфавита с использованием цифр 2,3,4,5,6,7.
Код хеша всегда оканчивается следующими латинскими буквами: A,I,Q,Y.
Примеры: ZLAXUBMRSBKSYAN72Z736CFFXMBXKYNF3TKT5UA, ZM7QDTLTYPW2VS7JUTZFMEUSLWSD7EGDOFM7AVI, ZOLCUNH3YRUJQGFY2VWQJVWYVLWBXZWKYE2YGKQ, ZQQUBNDH5EXY2M7DXGMJ7JPDIZHIAZAJ3XHS5QY.
Автор: alex82 18.2.2013, 23:15
GULAM33
Скрипт НЕ может отлавливать TTH, поскльку этот тип поиска скриптом игнорируется.
Код
if from and stype ~= "9" and (CheckString(sstring) or (bBlockOther and tBlock[UID.sNick])) then
Автор: GULAM33 19.2.2013, 0:53
alex82 ранняя версия данного скрипта, предоставленная Вами, по крайней мере отлавливала, но так как я понял в данном скрипте имеется ограничение, и это ограничение можно менять по своему. И если это ограничение будет равно 39 или выше, то скрипт сможет отлавливать и по хешу. Или я не так понял?
Автор: Alexey 19.2.2013, 2:11
Цитата(GULAM33 @ 19.2.2013, 0:53)
alex82 ранняя версия данного скрипта,
Не было никаких ранних версий, версия скрипта пока единственная.
Цитата(GULAM33 @ 19.2.2013, 0:53)
предоставленная Вами, по крайней мере отлавливала,
Не отлавливала.
Цитата(GULAM33 @ 19.2.2013, 0:53)
но так как я понял в данном скрипте имеется ограничение, и это ограничение можно менять по своему. И если это ограничение будет равно 39 или выше, то скрипт сможет отлавливать и по хешу. Или я не так понял?
Прочитай пост №17 ещё пару раз.
Автор: GULAM33 20.2.2013, 8:26
Не путай меня вот код скрипта bad_search:
CODE
sBot = ""
BanTime = 10 -- время бана в минутах
sReason = "Запрещенный поисковой запрос" -- Причина бана
-- Кого нужно проверять (1 - да, 0 - нет) --
CanDo = {
[-1] = 1, -- Незарегестрированный
[0] = 0, -- Мастер
[1] = 0, -- ОП
[2] = 0, -- Вип
[3] = 1, -- Зарегестрированный
}
---------------------------------------------------------------------------------------------
-- ver 1.0 если в таблицу вносятся фразы, то вместо пробела нужно ставить знак $
---------------------------------------------------------------------------------------------
-- Запрещаем
adverTable = {
}
-- Исключения
safeTable = {
}
function SearchArrival(tUser,sData)
if CanDo[tUser.iProfile] == 0 then
return false
end
local s,e,msg = string.find(sData,"$Search %S+%s%S+?%S+?%S+?%S+?(.*)|")
msg = StringLower(msg)
if checkForAdvertising(msg) then
if checkForSafe(msg) then
return nil
end
Core.SendToOps("<"..sBot.."> *** Запрещенный поиск! Юзер: <"..tUser.sNick.."> с ip "..tUser.sIP.." искал: "..msg)
Core.SendToUser(tUser,"<"..sBot.."> *** Вы были забaнены за запрещенный поисковой запрос, отсылаемый с Вашего клиента!")
BanMan.TempBan(tUser,BanTime,sReason,sBot,true)
end
end
function checkForAdvertising(msg)
for _,v in ipairs(adverTable) do
if string.find(msg, v) then
return true
end
end
return false
end
function checkForSafe(msg)
for _,v in ipairs(safeTable) do
if string.find(msg, v) then
return true
end
end
return false
end
function StringLower(msg)
local res = ""
local Byte, Len = nil, string.len(msg)
msg = string.lower(msg)
for i = 1, Len do
Byte = string.byte(msg, 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
Автор: Alexey 20.2.2013, 19:11
Приведённый тобой скрипт похож на скрипт из первого поста так-же, как ВАЗ-"классика" на Мерседес. Почему-то никому не приходит в голову называть ВАЗ ранней версией Мерседеса и жаловаться в мерсовский сервис-центр на проблемы с "классикой".