Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ Перепутал скрипты

Автор: 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

Приведённый тобой скрипт похож на скрипт из первого поста так-же, как ВАЗ-"классика" на Мерседес. Почему-то никому не приходит в голову называть ВАЗ ранней версией Мерседеса и жаловаться в мерсовский сервис-центр на проблемы с "классикой".