Версия для печати темы
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
очень экономичный и оптимизированный код)))
(первая функция, в которой становится известен ник пользователя)
хотя, записав таблицу так:
Код
tUsers = {
["Nick"] = true,
}
памяти выделяется меньше.
Переменная типа bool меньше занимает памяти, чем переменная типа double.
Язык lua написан на си. Тип данных number - это "сишный" тип double.
Приведу цифры для переменных bool и double:
bool - 8 бит
double - 64 бит
Автор: Nickolya 5.10.2008, 21:16
Я старался... Просто начинал еще давно, и мне кажется что обычному пользователю понятней 1 или 0, чем true или false, хотя в настройках уже начинаю приучать к этому, так по крайней мере делали в старой школе)) Илюх, может еще каких-нибудь советов по оптимальнейшему использованию луа, может темку даже заведешь?
ЗЫ: разве булев тип это не 1 бит?!
Автор: Setuper 5.10.2008, 21:23
Именно 1 байт = 8 бит, а не 1 бит (память меньше байта не выделяется, точнее выделяется, но для иных переменных (битовы поля))
Думаю, что можно создать отдельную тему по оптимизации, но вот только что туда написать сходу не могу придумать. Все действия по оптимизации видны на конкретных примерах)))
Автор: 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
мда , вроде понятно что там должен ник быть, я про скрипт пишу что он не работает у меня.
Автор: 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, зашёл нормально не выкинуло.
может проверите у себя?
Автор: 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] *** Соединение закрыто
не понимаю в чем у тебя проблема
Автор: 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...
Всё работает, и не надо никаких функций, понижающих регистр, зачем??? Скрипт приложил...
Автор: 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. помню что хуббаботе был анти ник мат скрипт вот он работал даже банил
Автор: Nickolya 6.10.2008, 23:41
Пришли в итоге к не очень оптимизированному варианту (делаем хуббу ):
Код
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ёЁяЯюЮиИ] | [пП][лЛ][оО][хХ][уУ][юЮ] , [лЛтТ][иИ][хХ][уУ][юЮ] , [сС][уУ][хХ][уУ][юЮ] ,