Версия для печати темы
MyDC.ru _ Kорзина _ Запрет На Пассивный Режим
Автор: mcdemon 26.2.2009, 5:11
Есть ли такой скрипт?
Я слышал, что хуббабот умеет запрещать. Но в описании я нашел только, то что он оповещает пользователя что он в пассиве и надо поставить актив.
Всетаки как можно запретить пассивный режим?
Автор: Setuper 26.2.2009, 17:52
Можно, но не нужно, так как пассивный режим - это единственный выход в некоторых случаях. Пользователь должен знать, что пассивный режим - это ограниченный режим, но запрещать его нельзя! Некоторые пользователи только и могут сидеть в пассиве, они бы рады перейти в актив, но некоторые обстоятельства не позволяют это сделать.
Автор: mcdemon 1.3.2009, 10:28
я это прекрасно понимаю
но мне действительно нужно его запретить
есть такая вот потребность...
Автор: Setuper 1.3.2009, 15:55
а причину узнать можно, по которой ты хочешь запретить пассив??
Автор: mcdemon 3.3.2009, 7:33
провайдер переводит локальную сеть на внешнюю айпи адресацию
и при отрицательно балансе доступ между абонентами будет залочен
но доступ до самого хаба будет открыт
провайдер дал "установку" запретить пассивный режим т.к. в нем при отрицательном балансе могут качать через сам хаб
п.с. проблем с активным режимом абоненты не имеют (случаи единичны и в основном проблема в фаерволе, лень настраивать людям) поэтому все ок
Автор: Wariner 3.3.2009, 10:01
через сам хаб качать нельзя.....
Автор: mariner 3.3.2009, 11:23
имхо, провайдер-неудачнек
Если люди могут качать в пассивном режиме, значит они МОГУТ присоединиться к активным. Это значит, что пров закрыл тока присоединение активных в активным (если 2ой активный должник). Кароч админа провайдера гнать в шею, как неудачника чуть более, чем полностью. И учить его, что надо(если закрывать) то делать это везде, а доступным оставить тока диапазон серверной.
Автор: Setuper 3.3.2009, 11:41
Присоединяюсь к вышесказанному. Direct connect, сокращённо DC, переводится дословно как направленное соединение, то есть хаб выступает только в роли направляющего и через хаб не идет скачивание файлов! Единственное, что идет через хаб, так это результаты пассивного поиска. Что за незнающие админы в сети сидят?
Автор: mcdemon 4.3.2009, 4:31
возможно вы правы ![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
может быть у провайдера биллинг тогда глючил так
но почемуто такой вот факт,
провайдер уже переводил сеть на внешние айпи но биллинг не справлялся с нагрузкой и перевели сеть обратно на внутренние айпи
вообщем изза сильной нагрузки на внешних, скорость у людей была 10-100кб под вечер
а когда они переходили в пассивный, то качали почемуто со скоростью 1-3мб
это 1 из фактов на основе которых я сделал вывод, что скачка идет через сам хаб
вообщем всетаки хотелосьы поконкретнее, есть ли нужный скриптик?
Автор: mariner 4.3.2009, 10:34
Бгг, купите провайдеру циску нормальную. 76ую к примеру (всего то 3лимона рублей)
Зато таких косяков не будет
скриптика нет. Просто скорее всего у провайдера косячит админ. В идеале надо пускать по локалке трафф дцшки и инет траф через ppp-тунели в инет. Тогда это разгрузит оборудование в серверной. В идеале нужно несколько серверных, и между ними - кольцо на оптике. и все на бгп маршрутизации. Тогда нагрузка упадет в разы. (пусть даже в серверных будет стоять хлам, а не роутеры), т.к. весь локальный трафф будет лететь по оптике.
Автор: mcdemon 4.3.2009, 16:33
циску уже купили
но всетаки есть ли скриптик )
я не прошу помощи по биллингу это не мое дело ![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
я порсто хочу запретить пассивный режим на хабе
Автор: ustas 4.3.2009, 17:17
Код
sBot = frmHub:GetHubBotName()
function NewUserConnected(user)
if user.sMode=="P" then
user:SendData(sBot, "у вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
user:SendData(sBot, "зайдите в файл -> настройки -> настройки соединения и поставьте активный режим")
user:Disconnect()
end
end
UserConnected=NewUserConnected
OpConnected=NewUserConnected
имхо таких админам надо руки выпрямлять
Автор: mariner 4.3.2009, 21:10
дада, напишите ему на луа ВПРО (ВыПрямитель_Рук_Обыкновенный)
Думаю тему стоит закрыть?
Автор: mcdemon 5.3.2009, 7:27
Цитата(ustas @ 5.3.2009, 0:17)
![*](http://mydc.ru/style_images/mydc_mains/post_snapback.gif)
Код
sBot = frmHub:GetHubBotName()
function NewUserConnected(user)
if user.sMode=="P" then
user:SendData(sBot, "у вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
user:SendData(sBot, "зайдите в файл -> настройки -> настройки соединения и поставьте активный режим")
user:Disconnect()
end
end
UserConnected=NewUserConnected
OpConnected=NewUserConnected
имхо таких админам надо руки выпрямлять
да я не занимаюсь хабами постоянно
он стоит из принципа "поставил и забыл"
просто появилась необходимость запретить пассивный режим
а скрипт полный?
а то ошибок нету но всеравно в пассиве заходит
хаб ptocax 0.3.6.0
на 0.4.1.1 тоже не работает...
сначала ругался на "frmHub"
исправил на sBot = "падла"
всеравно в пассиве заходит
я уже чувствую смех за спиной, кривые руки, аффтар нуб и апазорился... и все такое
но я в этих делах не очень разбираюсь да и времени и желания особо нету...
просто нужен рабочий скриптег
![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
нашел вот такой вот скрипт:
CODE
--[[
Max Passive 1.0 LUA 5.1 [Strict]
By Mutor 04/10/07
Requested by Northwind
Get / Set the maximum number of passive users allowed in hub.
-Get/Set/Clear passive user limit
-Commands/Menus permission by profile per command
-Checks for mode change after login/connection
-Option to exclude operators
-Context menus [right click]
]]
--User Settings
--Initial number of passive user allowed to connect
local MaxPsv = 1
--Exclude operators from check? "yes"/no"
local CheckOps = "yes"
--End User Settings
local Bot,Scp,Pfx = frmHub:GetHubBotName(),"Max Passive 1.0",frmHub:GetPrefixes()[1]
local Limit,Menu,SubMenu = {[1]= {MaxPsv,"Script"}},frmHub:GetHubName(),"Passive User Limit"
PsvCmds = {
setmaxpsv = function(user,data,cmd)
if user then
local s,e,psv = data:find("%b<> %p%a+ (%d+)|$")
if psv then
psv = tonumber(psv)
local profile = GetProfileName(user.iProfile) or "Unregistered User"
Limit[1] = {psv,profile.." "..user.sName}
return "Max passive user limit set to "..Limit[1][1].." by "..Limit[1][2]
else
return "Error! Usage: "..Pfx..cmd.." <user limit>"
end
else
return "Set Max Passive Users"," %[line:Passive User Limit]"," %[line:Passive User Limit]",
-- Adjust To Your Profiles
{[-1] = 0,[0] = 1,[1] = 1,[2] = 0,[3] = 0,[4] = 1,[5] = 1,[6] = 1,}
end
end,
getmaxpsv = function(user,data,cmd)
if user then
return "Max passive user limit set to "..Limit[1][1].." by "..Limit[1][2]
else
return "Get Max Passive Users","","",
-- Adjust To Your Profiles
{[-1] = 0,[0] = 1,[1] = 1,[2] = 0,[3] = 0,[4] = 1,[5] = 1,[6] = 1,}
end
end,
clrmaxpsv = function(user,data,cmd)
if user then
local profile = GetProfileName(user.iProfile) or "Unregistered User"
Limit[1] = {0,profile.." "..user.sName}
return "Max passive user limit set to "..Limit[1][1].." by "..Limit[1][2]
else
return "Clear Max Passive Users","","",
-- Adjust To Your Profiles
{[-1] = 0,[0] = 1,[1] = 1,[2] = 0,[3] = 0,[4] = 1,[5] = 1,[6] = 1,}
end
end,
maxpsvhlp = function(user,data,cmd)
if user then
local x
local reply = "\r\n\r\n\tMax Passive Command Help\r\n\r\n\tCommand\t\tDescription\r\n"..
"\t"..string.rep("?",40).."\r\n"
for i,v in pairs(PsvCmds) do
local desc,_,_,tab = PsvCmds[i]()
if tab[user.iProfile] and tab[user.iProfile] == 1 then
x = 1
reply = reply.."\t"..Pfx..
string.format("%-15s",i).."\t"..desc.."\r\n"
end
end
if x then
return reply.."\n\t"..string.rep("?",40).."\r\n\r\n"
else
return "Sorry "..user.sName.." Max Passive commands are disabled for your profile."
end
else
return "Max Passive 1.0 Help","","",
-- Adjust To Your Profiles
{[-1] = 0,[0] = 1,[1] = 1,[2] = 0,[3] = 0,[4] = 1,[5] = 1,[6] = 1,}
end
end,
}
NewUserConnected = function(user)
CheckPsv(user)
SendCmds(user)
end
OpConnected = NewUserConnected
MyINFOArrival = function(user,data)
CheckPsv(user)
end
CheckPsv = function(user)
if not user.bOperator or CheckOps ~= "yes" then
if not user.bActive then
if CountPsv() > Limit[1][1] then
return user:SendData(Bot,"Sorry! We have no room for another "..
"passive user, current passive limit is "..Limit[1][1]),user:Disconnect(),1
end
end
end
end
CountPsv = function()
local count = 0
for i,user in ipairs(frmHub:GetOnlineUsers()) do
if not user.bActive then
count = count + 1
end
end
return count
end
ChatArrival = function(user,data)
local s,e,cmd = data:find("%b<> %p(%w+)")
if cmd then
cmd = cmd:lower()
if cmd and PsvCmds[cmd] then
local _,_,_,tab = PsvCmds[cmd]()
if tab[user.iProfile] and tab[user.iProfile] == 1 then
return user:SendData(Bot,PsvCmds[cmd](user,data,cmd)),1
end
end
end
end
ToArrival = ChatArrival
SendCmds = function(user)
local x
local profile = GetProfileName(user.iProfile) or "Unregistered User"
for i,v in pairs(PsvCmds) do
local _,_,_,tab = PsvCmds[i]()
if tab[user.iProfile] and tab[user.iProfile] == 1 and i ~= "passwd" then
x = 1
local desc,arg1,arg2 = PsvCmds[i]()
user:SendData("$UserCommand 1 1 "..Menu.."\\"..SubMenu.."\\"..
desc.."$<%[mynick]> "..Pfx..i..arg1.."|")
user:SendData("$UserCommand 1 2 "..Menu.."\\"..SubMenu.."\\"..
desc.."$$To: "..Bot.." From: %[mynick] $<%[mynick]> "..Pfx..i..arg2.."|")
end
end
if x then
user:SendData(Bot,profile.."'s "..Scp.." commands "..
"enabled. See hub tab or user list for a menu.")
end
end
Пробовал выставлять макс кол-во в 0 и в 1
всеравно заходят в пассиве :(
Автор: Serx 5.3.2009, 21:49
На API2
Код
sBot = SetMan.GetString(21)
function UserConnected(user)
Core.GetUserAllData(user)
if user.sMode=="P" then
Core.SendToUser(user,"у вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
Core.SendToUser(user,"зайдите в файл -> настройки -> настройки соединения и поставьте активный режим")
Core.Disconnect(user)
end
end
OpConnected = UserConnected
RegConnected = UserConnected
Автор: Setuper 6.3.2009, 0:13
Никому не советую использовать подобного рода скрипты!!!
Пассивный режим не для того существует чтобы его запрещали!!!
Автор: mcdemon 6.3.2009, 8:37
Цитата(Serx @ 6.3.2009, 4:49)
![*](http://mydc.ru/style_images/mydc_mains/post_snapback.gif)
На API2
Код
sBot = SetMan.GetString(21)
function UserConnected(user)
Core.GetUserAllData(user)
if user.sMode=="P" then
Core.SendToUser(user,"у вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
Core.SendToUser(user,"зайдите в файл -> настройки -> настройки соединения и поставьте активный режим")
Core.Disconnect(user)
end
end
OpConnected = UserConnected
RegConnected = UserConnected
ну перевести скрипт прогой я и сам могу
![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
а вообще мне нужен для 0.3.6.0 и чтоб рабочий был
![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
заработал на 0.4.1.1
только почемуто хаб ругается на SetMan
но в пассиве не пускает
вообщем я частично получил, то что я хотел
![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
только придется переводить хаб на 0.4.1.1...
вообщем всем спасибо
![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
p.s. всетаки под api1 рабочий скрипт хотлосьбы
а то для 0.4.1.1 нормльно рабочей антирекламы немогу найти даже :(
всякие ошибки постоянно пишет
ругается например на 'Tempban'
Автор: mariner 6.3.2009, 9:19
так ты тут антирекламу возьми. С этого форума. тут их хоть жопой жуй.
Автор: Serx 6.3.2009, 9:46
На api1 скрипт наверно тоже заработает если добавить перед условием проверки:
GetUserAllData(user)
И вопрос тем кто против такого скрипта:
Может ли он навредить, если хаб находится только в 1 локальной сети?
Автор: mcdemon 6.3.2009, 9:50
Цитата(Serx @ 6.3.2009, 16:46)
![*](http://mydc.ru/style_images/mydc_mains/post_snapback.gif)
На api1 скрипт наверно тоже заработает если добавить перед условием проверки:
GetUserAllData(user)
И вопрос тем кто против такого скрипта:
Может ли он навредить, если хаб находится только в 1 локальной сети?
Код
sBot = frmHub:GetHubBotName()
function NewUserConnected(user)
Core.GetUserAllData(user)
if user.sMode=="P" then
user:SendData(sBot, "у вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
user:SendData(sBot, "зайдите в файл -> настройки -> настройки соединения и поставьте активный режим"")
user:Disconnect()
end
end
UserConnected=NewUserConnected
OpConnected=NewUserConnected
я правильно сделал?
п.с. не заработало...
сначало ругалось на Core
убрал Core
теперь ругается на attempt to call global 'GetUserAllData' (a nil value)
Автор: alex82 6.3.2009, 9:57
Цитата(mcdemon @ 6.3.2009, 8:50)
![*](http://mydc.ru/style_images/mydc_mains/post_snapback.gif)
сначало ругалось на Core
убрал Core
теперь ругается на attempt to call global 'GetUserAllData' (a nil value)
Для API1 это вообще не нужно, поскольку функции сразу получают полную таблицу user. Просто убери Core.GetUserAllData(user)
Автор: mcdemon 6.3.2009, 21:39
Цитата(alex82 @ 6.3.2009, 16:57)
![*](http://mydc.ru/style_images/mydc_mains/post_snapback.gif)
Для API1 это вообще не нужно, поскольку функции сразу получают полную таблицу user. Просто убери Core.GetUserAllData(user)
так скрипт изначально без неё был
![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
и под api1 не работает, но и ошибок никаких не пишет
поэтому мне и посоветовали её поставить
Автор: Setuper 6.3.2009, 23:17
Потому как нужна функция коррекции тэга, из-за этого и не пашет
Автор: mcdemon 7.3.2009, 7:02
мне это не понятно :(
Автор: Wariner 7.3.2009, 9:18
Там под API 2 но перевести думаю не сложно! http://mydc.ru/ipb.html?s=&showtopic=334&view=findpost&p=9085
Автор: mcdemon 8.3.2009, 10:28
и что мне с этим делать?
Автор: Setuper 8.3.2009, 12:42
Добавить функцию коррекции данных, и тогда можно будет вылавливать любые атрибуты пользователя, не беспокоясь о том, что какой-то из атрибутов не существует.
Автор: mcdemon 8.3.2009, 19:33
для меня это уже сложно
и времени разбираться нету...
если не сложно уделите 5минуток чтобы сделать это
Автор: Setuper 8.3.2009, 19:43
API не написал, вот и сиди гадай под какой апи тебе нужно. Написал под апи2:
Код
function UserConnected(tUser)
Core.GetUserAllData(tUser)
tUser = GetNormalValue(tUser)
if tUser.sMode=="P" then
Core.SendToUser(tUser, "У вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
Core.SendToUser(tUser, "зайдите в файл -> настройки -> настройки соединения и поставьте активный режим")
Disconnect(tUser)
end
end
RegConnected=UserConnected
OpConnected=UserConnected
Автор: ustas 8.3.2009, 23:30
для API 1
Код
sBot = frmHub:GetHubBotName()
function NewUserConnected(user)
user=GetNormalValue(user)
if user.sMode=="P" then
user:SendData(sBot, "у вас пассивное соединение, согласно политики провайдера, на хаб можно заходить только при активном соединении")
user:SendData(sBot, "зайдите в файл -> настройки -> настройки соединения и поставьте активный режим")
user:Disconnect()
end
end
UserConnected=NewUserConnected
OpConnected=NewUserConnected
function GetNormalValue(tUser)
if not tUser.sTag then
local sDescription,sTag,sClient,sClientVersion,sMode,iNormalHubs,iRegHubs,iOpHubs,iSlots,iLlimit = tUser.sDescription:match"(.*)(<(.+)%sV?:?(.-),M:(.-),H:(%d+)/(%d+)/(%d+),S:(%d+)>)$"
if not sDescription then
sDescription,sTag,sClient,sClientVersion,sMode,iNormalHubs,iRegHubs,iOpHubs,iSlots,iLlimit = tUser.sDescription:match"(.*)(<(.+)%sV?:?(.-),M:(.-),H:(%d+)/(%d+)/(%d+),S:(%d+),L:(%d+)>)$"
end
if not sDescription then
sDescription,sTag,sClient,sClientVersion,sMode,iNormalHubs,iRegHubs,iOpHubs,iSlots,iLlimit = tUser.sDescription:match"(.*)(<(.+)%sV?:?(.-),M:(.-),H:(%d+)/(%d+)/(%d+),S:(%d+),B:(%d+)>)$"
end
tUser.sDescription=sDescription
tUser.sTag=sTag
tUser.sClient=sClient
tUser.sClientVersion=sClientVersion
tUser.sMode=sMode
tUser.iNormalHubs=iNormalHubs
tUser.iRegHubs=iRegHubs
tUser.iOpHubs=iOpHubs
tUser.iHubs=iNormalHubs and iRegHubs and iOpHubs and (iNormalHubs + iRegHubs + iOpHubs)
tUser.iSlots=iSlots
tUser.iLlimit=iLlimit
end
return tUser
end
Автор: mcdemon 9.3.2009, 13:44
Большое тебе спасибо!
Все работает как надо ![big_smile.gif](http://mydc.ru/style_emoticons/default/big_smile.gif)
только вот... почемуто я вижу 1ного пассивного юзера почемуто (хотя другие пассивы уже не могут зайти)
клиент у него Пелинк...
Автор: Setuper 9.3.2009, 15:17
Так как эта функция ограничивает входы под пассивным режимом.
И не предусматривает смену актива на пассив, находясь на хабе.
Что бы предусмотреть и это, надо написать:
Для API1 вместо функции NewUserConnected функцию MyINFOArrival
Для API2 вместо функции UserConnected функцию MyINFOArrival
Автор: mcdemon 9.3.2009, 16:12
Цитата(Setuper @ 9.3.2009, 22:17)
![*](http://mydc.ru/style_images/mydc_mains/post_snapback.gif)
Так как эта функция ограничивает входы под пассивным режимом.
И не предусматривает смену актива на пассив, находясь на хабе.
Что бы предусмотреть и это, надо написать:
Для API1 вместо функции NewUserConnected функцию MyINFOArrival
Для API2 вместо функции UserConnected функцию MyINFOArrival
тоесть в скрипте все "NewUserConnected" заменить на "MyINFOArrival" ?
Автор: Setuper 9.3.2009, 16:20
Код
function MyINFOArrival(user)
........
end
NewUserConnected=MyINFOArrival
OpConnected=MyINFOArrival
....
Автор: Setuper 11.3.2009, 19:33
Скрипт не будет публиковаться в готовых скриптах, дабы направлен на отключение порой жизненно необходимой функции.
Закрыто.