Автор: ShadoWx 27.8.2011, 20:23
Автор: Alexey
Попросил Лешу помочь с написанием этого скрипта, вот что получилось в итоге. Уверен начинающим пригодится т.к. лимитов на русхабе по умолчанию нет.
Есть для общего чата в конфиг-файле, но там пользователя просто отключают.
Код
local nMaxUsers = 1 -- максимальное разрешённое число пользователей с одного IP
----------------------------------------------------------------
function OnUserConnected(UID)
tSameIPs = Core.GetUsers(UID.sIP)
if tSameIPs and #tSameIPs >= nMaxUsers then
local sMsg = "\n [::] В доступе отказано: на хабе уже есть пользователи с этого IP-адреса: "
for i,v in ipairs(tSameIPs) do
sMsg = sMsg..v.sNick..", "
end
sMsg = sMsg:sub(1, -3)..".\n [::] Множественные подключения к хабу с одного IP-адреса запрещены."
Core.SendToUser(UID, sMsg, "[OP]Домовёнок")
Core.Disconnect(UID)
end
end
local nMaxSymbols = 350 -- максимальное разрешённое число символов в гл.чате
----------------------------------------------------------------
function OnChat(UID, sData)
local nMaxSymbols = #UID.sNick + nMaxSymbols + 3
if #sData > nMaxSymbols then
Core.SendToAll(sData:sub(1, nMaxSymbols).."<...>")
return true
end
end
Автор: DEN 007 27.8.2011, 23:53
ShadoWx, для чата лучше допиши функцию которая отправит этому же юзеру сообщение например такое:
<БОТ> В нашем чате можно отправлять сообщения не более 350 символов, Ваше сообщение:/n Тут текст сообщения юзера
P.S. Так как юзеров в том числе и меня бесит когда сообщение просто кушаеться хабом, приходится все писать с начала, что не есть гуд + к юзабилию.
----Некоторое время позднее----
Так же можно посчитать символы сообщения и выдать сколько символов в сообщение юзера.
Автор: ShadoWx 23.9.2011, 8:37
Автор: Alexey
Выкладываю поправленную версию скрипта:
Код
#------------------------------------------------------------------
#Число соединений с одного ip-адреса:
#------------------------------------------------------------------
local nMaxUsers = 2 -- максимальное разрешённое число пользователей с одного IP
local MainBot = "Network"
local sReason = "*** Соединение через прокси запрещено"
local sAdminNick = "ShadoWx"
#----------------------------------------------------------------
function OnUserConnected(UID)
tSameIPs = Core.GetUsers(UID.sIP)
if tSameIPs and #tSameIPs >= nMaxUsers then
local sMsg = "\n [::] В доступе отказано: на хабе уже есть пользователи с этого IP-адреса: "
for i,v in ipairs(tSameIPs) do
sMsg = sMsg..v.sNick..", "
end
sMsg = sMsg:sub(1, -3)..".\n [::] Множественные подключения к хабу с одного IP-адреса запрещены."
Core.SendToUser(UID, sMsg, "Network")
Core.Disconnect(UID)
end
end
#------------------------------------------------------------------
#Ограничение чата:
#------------------------------------------------------------------
local nMaxSymbols = 350 -- максимальное разрешённое число символов в одном сообщении
local nMaxNL = 5 -- максимальное разрешённое число строк в одном сообщении чата
#------------------------------------------------------------------
function OnChat(UID, sData)
local nSymbols = #sData - #UID.sNick - 3
if nSymbols > nMaxSymbols then
Core.SendToAll(sData:sub(1, nMaxSymbols - nSymbols))
Core.SendToUser(UID, "Ваше сообщение состоит из ["..nSymbols.."] символов, разрешённый максимум - ["..nMaxSymbols.."].", "Network")
Core.SendToUser(UID, "Нажмите сочетание клавиш CTRL+UP и сократите текст своего сообщения.", "Network")
return true
end
local _, nNL = sData:gsub("\n", "\n")
if nNL >= nMaxNL then
Core.SendToUser("Ваше сообщение содержит "..nNL.." переносов строк, разрешённый максимум - "..nMaxNL..".", "Network")
return true
end
end
#------------------------------------------------------------------
#функция блокировки пассивного тега у пользователя
#------------------------------------------------------------------
function OnUserEnter(UID)
if UID.sMode == "S" then
Core.SendToUser(UID,sReason,MainBot)
Core.Disconnect(UID.sNick)
if Core.GetUser(sAdminNick) then
Core.SendToUser(sAdminNick," юзер с ником "..UID.sNick.." и IP "..UID.sIP.." пытался войти на хаб используя прокси !!!",MainBot)
else
local hFile = io.open ("log.txt" , "a+")
if hFile then
hFile:write("<"..MainBot.."> юзер с ником "..UID.sNick.." и IP "..UID.sIP.." пытался войти на хаб используя прокси !!!\r\n")
hFile:close()
end
end
end
end