HandyCache форум

Главная категория => Новые предложения => Тема начата: Zelen от 06 сентября 2016, 10:56:31



Название: Ограничение по мб и времени
Отправлено: Zelen от 06 сентября 2016, 10:56:31
в теме TODO есть пункт "Удобный интерфейс для ограничение пользователей по трафику и скорости скачивания;"
Я наверное каждый год шуршу все темы, в поиске реализации этого пункта.
Пробовал АнаСерв, не работает. Мне всего лишь надо выставить каждому пользователя его суточный мб и скорость
Пожалуйста, если не сложно, реализуйте, который год уже жду  :help:


Название: Re: Ограничение по мб и времени
Отправлено: Anymore от 06 сентября 2016, 19:24:52
Если каждому по 500, быстрее будет простенькое расширение настучать.


Название: Re: Ограничение по мб и времени
Отправлено: Zork от 07 сентября 2016, 14:30:43
Пример простенького расширения
Код:
--[[ <HCExtension>
@name          Дневной лимит трафика (RS-lim)
@description   Устанавливает лимит дневного трафика для пользователя User1 на 500 Мб в день
@event         BeforeRequestHeaderSend/RequestSend
</HCExtension> ]]

function RequestSend()
 if hc.user_name == 'User1' and hc.user_from_internet > 500*1024*1024 then
  hc.action = 'stop'
  hc.monitor_string = hc.monitor_string..'RS-lim '
 end
end


Название: Re: Ограничение по мб и времени
Отправлено: Zelen от 07 сентября 2016, 15:06:56
В программировании я ноль.
Спасибо, попробую ваше расширение.


Название: Re: Ограничение по мб и времени
Отправлено: Anymore от 07 сентября 2016, 21:29:46
или как то так

Код:
--[[ <HCExtension>
@name          Дневной лимит трафика (RS-lim)
@description   Устанавливает лимит дневного трафика для пользователя User1 на 500 Мб в день
@event         Init/Init
@event         BeforeRequestHeaderSend/BeforeRequestHeaderSend
</HCExtension> ]]

user_quota = {
  local_ = -1,
  admin = 500,
  marketing = 500
}

function BeforeRequestHeaderSend()
if QuotaOverCheck() then
hc.action = 'stop'
hc.monitor_string = hc.monitor_string..'RS-lim '
end
end

function QuotaOverCheck()
local quota = user_quota[hc.user_name]
local total = hc.user_from_internet
if quota == nil then quota = 0 end
if total == nil then total = 0 end
if quota >= 0 then
if total > quota*1024*1024 then
return true
else
return false
end
else
return false
end
end

function Init()
hc.put_msg(2, 'Init')
end


Название: Re: Ограничение по мб и времени
Отправлено: Zelen от 07 сентября 2016, 21:40:34
И вам спасибо!


Название: Re: Ограничение по мб и времени
Отправлено: Zelen от 09 сентября 2016, 20:26:08
я так понял строка "local_  = -1" делает неограниченным трафик компа, где стоит НС, правильно?
Я прописал так:
Код:
user_quota = {
  local_ = -1,
  alfa = 500,
  beta = 500,
  gamma = 500
}

Но у меня что то всех пользователей блокирует, хоть есть они в списке, или нет их в списке user_quota.
Можно ли локальных пользователей по диапазону айпи (192.168.0.*) или по имени (User*) не блокировать. Или блокировать только тех, кого я вписал в код.
Добавлено: 09 Сентябрь 2016, 19:54:15

Всё заработало, спасибо.
Использовал код расширение Zork-а для каждого нужного мне пользователя)


Название: Re: Ограничение по мб и времени
Отправлено: Anymore от 10 сентября 2016, 09:24:42
local_  = -1 делает неограниченным трафик для пользователя local_.
Чтоб блокировать только тех, кого я вписал в код надо изменить if quota == nil then quota = 0 end на if quota == nil then quota = -1 end.