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

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

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

провайдер переводит локальную сеть на внешнюю айпи адресацию
и при отрицательно балансе доступ между абонентами будет залочен
но доступ до самого хаба будет открыт

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

Автор: Wariner 3.3.2009, 10:01

через сам хаб качать нельзя.....

Автор: mariner 3.3.2009, 11:23

имхо, провайдер-неудачнек big_smile.gif Если люди могут качать в пассивном режиме, значит они МОГУТ присоединиться к активным. Это значит, что пров закрыл тока присоединение активных в активным (если 2ой активный должник). Кароч админа провайдера гнать в шею, как неудачника чуть более, чем полностью. И учить его, что надо(если закрывать) то делать это везде, а доступным оставить тока диапазон серверной.

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

Присоединяюсь к вышесказанному. Direct connect, сокращённо DC, переводится дословно как направленное соединение, то есть хаб выступает только в роли направляющего и через хаб не идет скачивание файлов! Единственное, что идет через хаб, так это результаты пассивного поиска. Что за незнающие админы в сети сидят?

Автор: mcdemon 4.3.2009, 4:31

возможно вы правы big_smile.gif
может быть у провайдера биллинг тогда глючил так

но почемуто такой вот факт,
провайдер уже переводил сеть на внешние айпи но биллинг не справлялся с нагрузкой и перевели сеть обратно на внутренние айпи
вообщем изза сильной нагрузки на внешних, скорость у людей была 10-100кб под вечер
а когда они переходили в пассивный, то качали почемуто со скоростью 1-3мб

это 1 из фактов на основе которых я сделал вывод, что скачка идет через сам хаб

вообщем всетаки хотелосьы поконкретнее, есть ли нужный скриптик? big_smile.gif

Автор: mariner 4.3.2009, 10:34

Бгг, купите провайдеру циску нормальную. 76ую к примеру (всего то 3лимона рублей) big_smile.gif Зато таких косяков не будет

скриптика нет. Просто скорее всего у провайдера косячит админ. В идеале надо пускать по локалке трафф дцшки и инет траф через ppp-тунели в инет. Тогда это разгрузит оборудование в серверной. В идеале нужно несколько серверных, и между ними - кольцо на оптике. и все на бгп маршрутизации. Тогда нагрузка упадет в разы. (пусть даже в серверных будет стоять хлам, а не роутеры), т.к. весь локальный трафф будет лететь по оптике.

Автор: mcdemon 4.3.2009, 16:33

циску уже купили
но всетаки есть ли скриптик )
я не прошу помощи по биллингу это не мое дело big_smile.gif
я порсто хочу запретить пассивный режим на хабе 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) *
Код
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

нашел вот такой вот скрипт:
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) *
На 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
а вообще мне нужен для 0.3.6.0 и чтоб рабочий был big_smile.gif

заработал на 0.4.1.1
только почемуто хаб ругается на SetMan

но в пассиве не пускает
вообщем я частично получил, то что я хотел big_smile.gif
только придется переводить хаб на 0.4.1.1...

вообщем всем спасибо 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) *
На 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) *
сначало ругалось на 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) *
Для API1 это вообще не нужно, поскольку функции сразу получают полную таблицу user. Просто убери Core.GetUserAllData(user)

так скрипт изначально без неё был 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

и что мне с этим делать? big_smile.gif

Автор: Setuper 8.3.2009, 12:42

Добавить функцию коррекции данных, и тогда можно будет вылавливать любые атрибуты пользователя, не беспокоясь о том, что какой-то из атрибутов не существует.

Автор: mcdemon 8.3.2009, 19:33

для меня это уже сложно
и времени разбираться нету...
если не сложно уделите 5минуток чтобы сделать это big_smile.gif

Автор: 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
только вот... почемуто я вижу 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) *
Так как эта функция ограничивает входы под пассивным режимом.
И не предусматривает смену актива на пассив, находясь на хабе.
Что бы предусмотреть и это, надо написать:

Для 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

Скрипт не будет публиковаться в готовых скриптах, дабы направлен на отключение порой жизненно необходимой функции.

Закрыто.