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

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

MyDC.ru _ Kорзина _ Ники

Автор: Goblin 5.10.2008, 18:07

Нужен скрипт который будет запрещать вход на хаб определенным никам которые вписаны в скрипт
Есть такой скрипт? если есть выложите плиз

Автор: Nickolya 5.10.2008, 18:10

Версию хаба или апи пжалста!

Автор: Goblin 5.10.2008, 20:17

ой изменяюсь забыл написать, Ptokax 0.4.1.1 API2

Автор: Nickolya 5.10.2008, 20:26

Если без навторотов, то выглядит это вот так:

Код
tUsers = {
    ["Nick"] = 1,
}

function ValidateNickArrival(tUser)
    if tUsers[tUser.sNick] then
        Core.Disconnect(tUser)
    end
end

Автор: Setuper 5.10.2008, 20:55

очень экономичный и оптимизированный код)))
(первая функция, в которой становится известен ник пользователя) big_smile.gif

хотя, записав таблицу так:

Код
tUsers = {
    ["Nick"] = true,
}
памяти выделяется меньше.
Переменная типа bool меньше занимает памяти, чем переменная типа double.
Язык lua написан на си. Тип данных number - это "сишный" тип double.
Приведу цифры для переменных bool и double:

bool - 8 бит
double - 64 бит

big_smile.gif

Автор: Nickolya 5.10.2008, 21:16

big_smile.gif Я старался... Просто начинал еще давно, и мне кажется что обычному пользователю понятней 1 или 0, чем true или false, хотя в настройках уже начинаю приучать к этому, так по крайней мере делали в старой школе)) Илюх, может еще каких-нибудь советов по оптимальнейшему использованию луа, может темку даже заведешь?
ЗЫ: разве булев тип это не 1 бит?!

Автор: Setuper 5.10.2008, 21:23

Именно 1 байт = 8 бит, а не 1 бит (память меньше байта не выделяется, точнее выделяется, но для иных переменных (битовы поля))

Думаю, что можно создать отдельную тему по оптимизации, но вот только что туда написать сходу не могу придумать. Все действия по оптимизации видны на конкретных примерах))) big_smile.gif

Автор: Goblin 6.10.2008, 1:21

Можете добавить ещё сообщение, чтобы если кикало то писало "такой ник на это хабе запрещён, смените ник"
Заранее спасибо

Автор: Wariner 6.10.2008, 6:21

Цитата(Nickolya @ 5.10.2008, 21:26) *
Если без навторотов, то выглядит это вот так:
Код
tUsers = {
    ["Nick"] = true,
}

function ValidateNickArrival(tUser)
    if tUsers[tUser.sNick] then
        Core.SendToUser(tUser, "Такой ник на этом хабе запрещён, смените ник!")
        Core.Disconnect(tUser)
    end
end

Автор: Goblin 6.10.2008, 11:19

Проверил, что-то не выкидывает из п2п, все испробовал вроде

Код
tUsers = {
    ["Nick"] = true,
}

function ValidateNickArrival(tUser)
    if tUsers[tUser.sNick] then
        Core.SendToUser(tUser, "Такой ник на этом хабе запрещён, смените ник!")
        Core.Disconnect(tUser)
    end
end

Автор: Setuper 6.10.2008, 11:41

Вместо "Nick" надо вставить ник пользователя)))) может в этом проблема?

Код
tUsers = {
    ["Вася"] = true,
}

Автор: Goblin 6.10.2008, 13:33

beat_brick.gif мда bad_smile.gif , вроде понятно что там должен ник быть, я про скрипт пишу что он не работает у меня.

Автор: Setuper 6.10.2008, 13:44

Вообще говоря функция ValidateNickArrival имеет 2 параметра:

Код
ValidateNickArrival(tUser, sData)

может из-за этого не работает, хотя врятли

Автор: Goblin 6.10.2008, 13:54

тоже не работает, и зачем это надо "= true,"?
мне же надо блокировку тока ников. т.е. если ник вписан скрипт то он не допускаться на хаб
если его нету может зайди на хаб

Напишу подробное описание.

Скрипт не даёт зайди под ником который в скрипте написан,
при выкидывание с хаба ему пишет сообщение за что выкинуло,
в скрипте ники можно писать разными буквами и знаками,
пример: [НнHhNn][UuИиIi][CcСс][KkKk],

Автор: Wariner 6.10.2008, 14:12

CODE
tUsers = {
["nick"] = 1, -- все ники пишем маленькими буквами
}

function ValidateNickArrival(tUser)
if tUsers[String2Lower(tUser.sNick)] then
Core.Disconnect(tUser)
end
end

function String2Lower(s) -- функция от Setuper`а
local r,b=""
if s then s=string.lower(s)
for i=1,string.len(s) do
b=string.byte(s,i)
if b>191 and b<224 then b=b+32
elseif b==168 or b==184 then b=229 end
r=r..string.char(b)
end
end
return r
end

Автор: Goblin 6.10.2008, 14:41

Написал в скрипте маленькими буквами английскими ["papr"] = 1, зашёл нормально не выкинуло. beat_plaster.gif
может проверите у себя?

Автор: Setuper 6.10.2008, 14:51

Цитата
[06/10/08 |Пн| 15:48:47] *** Соединение с 192.168.0.108...
[06/10/08 |Пн| 15:48:47] *** Соединён
[06/10/08 |Пн| 15:48:47] Такой ник на этом хабе запрещён, смените ник!
[06/10/08 |Пн| 15:48:47] *** Соединение закрыто

не понимаю в чем у тебя проблема what.gif

Автор: Wariner 6.10.2008, 14:53

А может он заходит с ключиком и поэтому не реагирует скрипт?

Автор: Setuper 6.10.2008, 15:00

не эта функция выполняется до отсылки ключей - для всех профилей

Автор: =TuRoK= 6.10.2008, 15:08

У меня всё норм пашет,норм скрипт)))

Автор: Nickolya 6.10.2008, 15:15

Цитата
[16:12:27] *** Соединение с localhost:410...
[16:12:27] *** Соединён
[16:12:27] Такой ник на этом хабе запрещён, смените ник!
[16:12:27] *** This socket has been closed...

Всё работает, и не надо никаких функций, понижающих регистр, зачем??? Скрипт приложил...

 BadNick.lua ( 281 байт ) : 40
 

Автор: Goblin 6.10.2008, 16:56

парни выручите не работает скрипт,
Включал так:

Скрипт делал вниз,
делал скрипт верх,
отключал все скрипты,
заходил через интернет,
заходил через локал хост,

Скачал этот "BadNick.lua" не чего не менял в нём просто скопировал ник "Nickolya" сделал себе и попробовал зайди, пустил.

Может настройки хаба виноваты? или у меня клиент такой?

p.s. это первые такое у меня

все разобрался.
Можете переделать скрипт, чтобы он по другому определял ники и запрещал их это у меня клиент такой он не даёт скрипт кикнуть меня, сейчас поставил другой клиент он меня никнул как положено

Автор: Wariner 6.10.2008, 18:27

что значит не даёт кикнуть? эт какой такой клиент?! первый раз слышу...

Автор: Setuper 6.10.2008, 19:25

Чета муть какая то. Ведь хаб закрывает соединение принудительно, а у тебя получается клиент может согласиться разъединяться, а может и не соглашаться - бред))))

Автор: Goblin 6.10.2008, 19:57

Может он по другому ник пишет т.е. команда
Вы можете ещё как-то написать?
p.s. клиент не могу менять он у всех должен такой быть
такая сеть у меня

Автор: Wariner 6.10.2008, 20:23

название клиента в студию...

Автор: Setuper 6.10.2008, 20:25

Проверка выполнимости функции ValidateNickArrival:

Код
function ValidateNickArrival(tUser)
  Core.SendToUser(tUser,"ValidateNickArrival")
end

Автор: Goblin 6.10.2008, 21:21

Цитата
название клиента в студию...

название не что не даст этот клиент для локальной сети был сделан,
он полностью переделан.
Код
function ValidateNickArrival(tUser)
  Core.SendToUser(tUser,"ValidateNickArrival")
end

не понял, что с этим делать? если вписать надо то после какой строчке или какую строку заменить.

Автор: Setuper 6.10.2008, 22:35

Это отдельный скрипт. Проверь, что эта функция работает. Если она работает, то при входе на хаб тебе должно прийти сообщение: "ValidateNickArrival". Если не пришло, то клиент не поддерживает современный протакол dc++. Проверку ника на таком клиенте нельзя произвести даже инструментами PtokaX, я уже не говорю про скрипты)))))

Ещё для проверки можно провести бан ника)))))

Автор: Goblin 6.10.2008, 23:27

Не работает, я его скопировал запустил пускает так же.
А бан как? сделать так чтобы банил на 2 секунды тоже самое получиться кик
если возможно это. p.s. помню что хуббаботе был анти ник мат скрипт вот он работал даже банил big_smile.gif

Автор: Nickolya 6.10.2008, 23:41

Пришли в итоге к не очень оптимизированному варианту (делаем хуббу big_smile1.gif):

Код
tUsers = {
    ["вписать_ник"] = true,
    ["вписать_еще_ник_если_надо"] = true,
}

function UserConnected(tUser)
    if tUsers[tUser.sNick] then
        Core.Disconnect(tUser)
    end
end
OpConnected = UserConnected
RegConnected = UserConnected

Автор: Setuper 6.10.2008, 23:47

Я просто советую выбросить старые клиенты на подобие UkCable и StrongDC v1, которые не поддерживают современный протакол dc)))))))))))
Народ уже потихоньку переходит на протакол следующего поколения ADC, а совсем отсталые люди до сих пор используют давно уже устаревшую версию старого протакола DC.

Автор: Goblin 7.10.2008, 0:02

Скрипт работает.
Можно добавить чтобы он писал сообщение за что выкидывает?

Автор: Wariner 7.10.2008, 5:39

запомни ты эту элементарщину

Код
Core.SendToUser(tUser, "Сообщение")

Автор: Voice 14.11.2008, 11:47

Цитата(Goblin @ 5.10.2008, 22:07) *
Нужен скрипт который будет запрещать вход на хаб определенным никам которые вписаны в скрипт
Есть такой скрипт? если есть выложите плиз

Могу предложить забить (зарегать) в птоке эти ники и сделать для них пароли. ИМХО, без пароля не прорвутся.

Автор: Setuper 14.11.2008, 12:32

Цитата(Voice @ 14.11.2008, 11:47) *
Могу предложить забить (зарегать) в птоке эти ники и сделать для них пароли. ИМХО, без пароля не прорвутся.

Зачем поднимаешь старые темы и предлагаешь какие-то идеи, когда проблема давно уже решена и скрипт написан?

Автор: Perspect 9.2.2009, 0:18

Как бы запретить написание в нике адреса и матерные выражения, чтобы скрипт реагировал на определённые буквосочетания?
Может кто сбацает подобный скрипт...
Базу по такому принципу: "[dD]%S+[cC]%S+[hH]%S+[uU]%S+[bB]%S+[:]%S+[/]%S+[/]",

Хорошо с этой задачей справлялся HUBBABOT
Вот скрипт, выцарапаный из хубы:

Код
--проверка ника и описания ресурсов на матершину.    
--------------------------------------------------------------------------------------------------------------------------------------------
function checkNickDescr(sUser)
    if CFG.NickDescrCheck==1 then
        if sUser.iProfile == 0 then return 0 end-- master
        local retval=0
        local checkVal=sUser.sName
        if sUser.sDescription ~= nil then
            checkVal=checkVal.." "..sUser.sDescription
        end    

        local isbadword,badword, pos, context = isbad2(checkVal,BAD_NICK)
        local curUser=US[sUser.sIP];
        if (isbadword ==1 ) then
            if curUser.status==6 or curUser.status==2 then
                --в момент нарушения пользователь уже был навсегда лишен права говорить в чате, поэтому за матюки в нике и описании ресурсов - вечный бан
                ChangeStatus(sUser.sIP,5,3,BOTNAME,messages[12] .." ["..context.."] + ".. messages[115])
                AddSysLog(getSysLogBanMsg(sUser,nil))
            else
                --за матюки в нике и описании ресурсов - временный бан
                ChangeStatus(sUser.sIP,3,3,BOTNAME,messages[12] .." ["..context.."]")
                AddSysLog(getSysLogBanMsg(sUser,nil))
            end    
            BotSayToAll(genBanMessage(sUser.sIP))
            alertByIP(sUser.sIP,getBanInfo(sUser.sIP),true)
            BotSayToUser(sUser,getBanInfo(sUser.sIP))
            DisconnectUser(sUser)
            return 1
        end
    end
    --параноидальная проверка описания ресурсов на матершину

    if CFG.ParanoidDescrCheck==1 and sUser.sDescription~=nil then
        
        paranoid = string.gsub(sUser.sDescription, "[%p%s%c]", "");
        local par_badword, par_pos, par_context;
        local par_isbadword = 0
        par_isbadword, par_badword, par_pos, par_context = isbad2(paranoid,BAD_PARANOID_NICK)
        if par_isbadword == 1 then
            msg="\n"..messages[28].."\n";
            msg=msg.. "["..os.date("%Y/%m/%d %H:%M:%S").."] <"..BOTNAME.. "> ".. messages[153] .. "\n";
            msg=msg.. messages[128].. " "..sUser.sName.. " ["..sUser.sIP .."]\n"
            msg=msg.. messages[37]..sUser.sDescription.."\n";    
            msg=msg.. messages[103].." ["..par_context.. "]\n";
            msg=msg.. messages[102].." "..par_badword.."\n";
            msg=msg.. messages[28].."\n";
            AddParanoidLog(msg);
            
            if CFG.ReportParanoidToOp==1 or CFG.ReportParanoidToMaster==1 then
                local ops=frmHub:GetOnlineOperators()
                for indx,op in pairs(ops) do
                    if (tCheck[op.iProfile][1] == 5 and CFG.ReportParanoidToMaster==1) or (tCheck[op.iProfile][1] == 4 and CFG.ReportParanoidToOp==1 ) then
                        BotSayToUser(op,msg)                
                    end
                end
            end
        end    
    end    
    return retval
end



и база (bad_nick.dat):

Код
хХxX][yYуУ][йЙеЕeEёЁяЯюЮиИ] | [пП][лЛ][оО][хХ][уУ][юЮ] , [лЛтТ][иИ][хХ][уУ][юЮ] , [сС][уУ][хХ][уУ][юЮ] ,