HandyCache форум

Главная категория => Общие вопросы => Тема начата: doctor_ORZ от 28 ноября 2009, 19:48:26



Название: Как блокировать разные сайты для разных пользователей?
Отправлено: doctor_ORZ от 28 ноября 2009, 19:48:26
Дано: школа. В школе локалка. Несколько десятков ПК. За любым из них может сесть как учитель, так и ученик (значит имя ПК не меняется, если конечно вместе со сменой пользователя не менять имя при помощи спец.утилит)
Нужно, что бы прокси менял свою политику в зависимости от юзера. Активна учетка "школьник" - работает белый список. Заходит "учитель" (либо учетные записи учителей - порядка 60-80 логинов) - работает черный список. Заходит "админ" - работает просто прокси.
Это можно реализовать? Насколько знаю - прокси реагирует на имя ПК, но не на учетку.
Поднимать несколько копий прокси? - не выход.
Как решить проблему?


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 29 ноября 2009, 12:57:53
Попробуй сделать с помощью расширения.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: doctor_ORZ от 29 ноября 2009, 14:27:00
Что бы это сделать - нужно знать. Но изучить всё это дело времени не хватает. Максимум, что смогу - по образцу и подобию подогнать под свои нужды. Но нужен образец. Может кто-то уже делал нечто похожее? Вы уж извините - именно не могу изучать, а не "не хочу" :(


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: DenZzz от 08 декабря 2009, 22:11:28
Нужно, что бы прокси менял свою политику в зависимости от юзера. Активна учетка "школьник" - работает белый список. Заходит "учитель" (либо учетные записи учителей - порядка 60-80 логинов) - работает черный список. Заходит "админ" - работает просто прокси.

Не понятно, почему для учителей работает Черный список, а для учеников - Белый, а не наоборот.
И что значит: "работает просто прокси"? Все списки отключены? Даже Запись в кэш и Преобразование URL?

Пример расширения приведу такой:

Код:
--[[ <HCExtension>
@name          Маски Белого списка для пользователей
@event         RequestHeaderReceived/allow
</HCExtension> ]]


function allow()

 if hc.user_name == 'admin' then
  hc.white_mask = 'БЧ'   -- Отключает Белый и Черный список
  hc.monitor_string = hc.monitor_string..'Б.БЧ '
 end

 if hc.user_name == 'uchitel' then
  hc.white_mask = 'Ч'   -- Отключает Черный список
  hc.monitor_string = hc.monitor_string..'Б.Ч '
 end

end


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: doctor_ORZ от 09 декабря 2009, 08:11:53
Для учителей "Ч", что бы не лазили на одноклассники-вконтакте-миртесен в рабочее время :) - а с порно и рекламой они и сами разберутся.
У учеников "Б" - что бы лазили только туда, куда минобр разрешил.
Для админа - "Ч" и "Б", указанные выше вырублены, работают только дефолтные списки и правила (я действительно немного неверно сначала сформулировал запрос). Но, тогда, видимо и скрипт нужно поправить? Если не трудно, пожалуйста.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: DenZzz от 09 декабря 2009, 12:15:40
Для учителей "Ч", что бы не лазили на одноклассники-вконтакте-миртесен в рабочее время :) - а с порно и рекламой они и сами разберутся.
У учеников "Б" - что бы лазили только туда, куда минобр разрешил.

Получается, что у учителей и учеников два совершенно разных Черных списка (ЧС): у учеников он будет состоять из одного правила "запрещать все", а у учителей - из "одноклассники-вконтакте-миртесен". Но HC может одновременно работать только с одним ЧС.

В данном случае лучше не трогать дефолтные списки HC. Пусть ЧС режет рекламу для всех, а запрещать/разрешать загрузку сайтов по пользователям лучше на уровне расширения:

Код:
--[[ <HCExtension>
@name          Блокировать сайты по пользователям
@author        DenZzz
@event         Init/Init
@event         RequestHeaderReceived/Block
</HCExtension> ]]

function Init()
-- Белый список для учеников (запрещено все, кроме указанного)
hc_static.Whitelist_for_SchoolChildren = [[только_образовательные_сайты]]
-- Черный список для учителей (разрешено все, кроме указанного)
hc_static.Blacklist_for_Teachers = [[odnoklassniki|vkontakte|mirtesen]]
end

function Block()
if hc.user_name == 'uchitel' and re.find(hc.url, hc_static.Blacklist_for_Teachers) then
hc.action = 'stop'   --  запретить загрузку
hc.monitor_string = hc.monitor_string..'Block Teachers '
elseif hc.user_name == 'uchenik' and not re.find(hc.url, hc_static.Whitelist_for_SchoolChildren) then
hc.action = 'stop'   --  запретить загрузку
hc.monitor_string = hc.monitor_string..'Block SchoolChildren '
end
end


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: doctor_ORZ от 09 декабря 2009, 17:11:02
опять всё немного не так:
У учеников - белый список и только. Порядка 3000 сайтов (сам список у меня уже набит) - остальное - бан.
У учителей - можно всё, что не запрещено (т.е. работает черный список).
Админу (директору, ещё 2 человекам) можно всё.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: DenZzz от 09 декабря 2009, 21:55:57
У учеников - белый список и только. Порядка 3000 сайтов (сам список у меня уже набит) - остальное - бан.

"Белый список и только" не может работать без Черного, который будет блокировать все остальное, но это невозможно, потому что он настроен под учителей...

Попробуй тогда так:

Код:
--[[ <HCExtension>
@name          Маски Белого списка для пользователей
@event         RequestHeaderReceived/allow
</HCExtension> ]]


function allow()
if hc.user_name == 'uchenik' then
hc.action = 'stop-'    -- Мягкий запрет загрузки всего, кроме разрешенного в Белом списке
elseif hc.user_name == 'uchitel' then
hc.white_mask = 'Б'    -- Отключает Белый список
elseif hc.user_name == 'admin' then
hc.white_mask = 'БЧ'   -- Отключает Белый и Черный список
end
end


Название: Как разрешить только определенные сайты
Отправлено: ixen от 10 февраля 2010, 14:19:22
Всем привет! Подскажите пожалуста, у меня в сети 3 компьютера ходят в инет, но появилась необходимость добавить еще один компютер с доступом в интернет, но с разрешением только на конкретные сайты. Можно ли это реализовать и как с помощью HC ?

З.ы. HC пользуюсь несколько месяцев. Автору огромное спасибо! :good:


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Kuzmische от 23 марта 2010, 10:18:24
Сделал по вашему рецепту:

--[[ <HCExtension>
@name          Маски Белого списка для пользователей
@event         RequestHeaderReceived/allow
</HCExtension> ]]


function allow()

 if hc.user_name == 'ASU1' then
  hc.white_mask = 'BWDR'
  hc.monitor_string = hc.monitor_string..'Без BWDR'
 end

end

В мониторе в колонке "ПРАВИЛА" 'Без BWDR' - отображается, т.е. расширение сработало, но списки продолжают работать...и Ч и Н.
Подскажите - где ошибка?


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: DenZzz от 23 марта 2010, 13:22:39
В мониторе в колонке "ПРАВИЛА" 'Без BWDR' - отображается, т.е. расширение сработало, но списки продолжают работать...и Ч и Н.
Подскажите - где ошибка?

У меня этот скрипт работает правильно. Какая версия HC используется?


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Kuzmische от 24 марта 2010, 00:58:42
У меня этот скрипт работает правильно. Какая версия HC используется?


Упс, может действительно здесь собака порылась! У меня 180 билд, не обновлялся...


Название: Черный список для некоторых пользователей
Отправлено: СоколоВ от 31 марта 2010, 09:42:12
Как сделать так, чтобы черный список работал только для пользователей User1 и User2 например, но не работал для пользователя User3?


Название: Re: Черный список для некоторых пользователей
Отправлено: mai62 от 31 марта 2010, 14:05:29
Это можно сделать через расширение, посмотри выше в этой теме.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: СоколоВ от 10 апреля 2010, 11:39:29
Проблема в том, что у меня тоже 180 билд как и топикстартера =/


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ubiquitous_Nothing от 26 апреля 2010, 17:13:32
Проблема в том, что у меня тоже 180 билд как и топикстартера =/

По-моему, эта проблема легкоразрешима. У меня обновление билда прошло быстро и безболезненно, и теперь с функционалом все в порядке.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ol_3 от 17 мая 2010, 12:56:08
прочел, но чтото не понял.
мне нужно 1 пользователю отключить черный список.
тут вроеде есть решение, но я не вьехал.
кому не лень напишите, что сделать (какую сточку куда написать)!
Плиииз


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 17 мая 2010, 13:27:31
Это расширение отключает Черный список для пользователя user1.
Код:
--[[ <HCExtension>
@name         BlackListDisabler
@author        mai62
@version       0.01
@description  Отключает Черный список для заданных пользователей
@event         RequestHeaderReceived/request
</HCExtension> ]]

function request()
 if hc.user_name == 'user1' then
  hc.white_mask="Ч"
 end
end


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ol_3 от 17 мая 2010, 14:31:06
я сделал так
--[[ <HCExtension>
@name          Маски Белого списка для пользователей
@event         RequestHeaderReceived/allow
</HCExtension> ]]


function allow()

 if hc.user_name == 'admin' then
  hc.white_mask = 'БЧ'   -- Отключает Белый и Черный список
  hc.monitor_string = hc.monitor_string..'Б.БЧ '
 end

end

чем это хуже -лучше предложенного Вами?
вроде работает.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 17 мая 2010, 14:58:54
Я думаю, что твое расширение лучше тем, что ты его написал сам. А перед этим, наверное, почитал документацию. Теперь, если понадобится еще что-то, ты сможешь попробовать это организовать.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ol_3 от 17 мая 2010, 15:05:59
Я думаю, что твое расширение лучше тем, что ты его написал сам. А перед этим, наверное, почитал документацию. Теперь, если понадобится еще что-то, ты сможешь попробовать это организовать.
Я почитал выше,и с 5-7 раза стало доходить, что там написано.
ну и Опыт, сын ошибок трудных.....


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 17 мая 2010, 15:16:49
Если еще чего понадобится, почитай файл HCExtensions.html (лежит в архиве с НС в папке Extensions). Там написано какие переменные и функции для чего предназначены. Ну и еще есть тема http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.0/ , где можно посмотреть примеры расширений (думаю и то, что тебе надо было там можно найти).


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ol_3 от 18 мая 2010, 12:23:21
беда в том, что абсолютно пе способен к языкам, и к языкам программирования в том числе.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: DenZzz от 09 августа 2010, 19:39:08
Возвращаясь к вопросу с запретом vkontakte и odnoklassniki. Какой должен быть скрипт, чтобы запретить эти сайты в рабочие дни в рабочее время с 9-30 до 18-30 определенным товарищам?

Текст расширения будет таким:

Код:
--[[ <HCExtension>
@name          Блокировать загрузку определенных сайтов определенным пользователям в определенное время (R-Block)
@author        DenZzz
@version       0.1 для HC v1.00 RC2 (1.0.0.295) и возможно выше
@rule           odnoklassniki|vkontakte
@event         RequestHeaderReceived/Request
</HCExtension> ]]


function Request()
-- Начальные настройки:
local time_min = 9 + 30/60  -- от этого времени в часах и минутах, деленных на 60
local time_max = 18 + 30/60 -- до этого времени в часах и минутах, деленных на 60
local user_list = [[Tоварищ|Раб|Enemy]]  -- Список пользователей в формате RegExp

if re.find(hc.user_name, user_list) then
-- Узнаем текущее системное время
local t = os.date("*t")
local cur_time = t.hour + t.min/60  -- переводим в часы
-- Если текущее системное время от time_min до time_max и день недели рабочий, то
if cur_time >= time_min and cur_time < time_max and t.wday >=2 and t.wday <= 6 then
hc.action = 'stop'  -- Блокируем загрузку
hc.monitor_string = hc.monitor_string..'R-Block '
end
end
end  -- Конец функции Request


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ubiquitous_Nothing от 15 октября 2010, 15:06:06
Прошу помощи со следующим:
Код:
--[[ <HCExtension>
@name          Маски списков для пользователей
@event         RequestHeaderReceived/allow
</HCExtension> ]]

function allow()
if hc.user_list == [[Admin-pc|Admin|local]] then
hc.white_mask = 'Б'
elseif hc.user_list == [[Бухг-1|Бухг-2|Бухг-3|Секретарь|Библиотекарь|24-018-1|13-0|]] then
hc.white_mask = 'Б'
elseif hc.user_list == [['14-0'|'dct'|'все'|'Библиотека ОД'|'21 каб.'|'4-0'|'23-0'|'27-0'|'18-2'|'18-3'|'18-4'|'18-5'|'18-6'|'18-7'|'18-8'|'18-9'|'18-10'|'18-11'|'18-12'|'18-0']] then
hc.action = 'stop-'
end
end
Пользователи из третьего списка, например, 14-0 преспокойно открывают страницы не включенные в БС, хотя, как я понимаю hc.action = 'stop-' должен заблокировать загрузку страницы отсутствующей в БС но этого не происходит и просто срабатывает БС и ЧС


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: DenZzz от 15 октября 2010, 15:29:42
1. Нежелательно создавать свои переменные в таблице hc, типа hc.user_list.
2. Нельзя значение переменной hc.user_list просто сравнивать с рег.выражением.
3. Кавычки в рег.выражениях не нужны.

Учитывая высказанное, твой скрипт должен выглядеть примерно так:

Код:
--[[ <HCExtension>
@name          Маски списков для пользователей
@event         RequestHeaderReceived/allow
</HCExtension> ]]

function allow()
if re.find(hc.user_name, [[Admin-pc|Admin|local]]) then
hc.white_mask = 'Б'
elseif re.find(hc.user_name, [[Бухг-1|Бухг-2|Бухг-3|Секретарь|Библиотекарь|24-018-1|13-0]]) then
hc.white_mask = 'Б'
elseif re.find(hc.user_name, [[14-0|dct|все|Библиотека ОД|21 каб.|4-0|23-0|27-0|18-2|18-3|18-4|18-5|18-6|18-7|18-8|18-9|18-10|18-11|18-12|18-0]]) then
hc.action = 'stop-'
end
end


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ubiquitous_Nothing от 18 октября 2010, 14:30:01
DenZzz, спасибо!
теперь образовывается следующая проблема.
Пользователь, которому назначено stop- не может получить даже страниц из БС, к примеру #10#~#True#~#+rzd\.ru#~##~##~#True#~#Fal#~#Fal#~#Fal#~#Fal#~#Fal
вот лог
Код:
18.10.10 14:08:54,156 # 5: Start connection from client

18.10.10 14:08:54,156 # 5: Connection from 1.1.20.3:3430 to HC Version 1.00 RC3 (1.0.0.303)

18.10.10 14:08:54,156 # 5: Ur name: 14-0

18.10.10 14:08:54,171 # 5/6 >>> URL: http://rzd.ru/
DeniedDo:
GET http://rzd.ru/ HTTP/1.1
Ur-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.62
Host: rzd.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Chart: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers


18.10.10 14:08:54,171 # 5 <<< URL: http://rzd.ru/
HTTP/1.1 430 Blocked (HC)
rver: HandyCache/1.00 RC3 (1.0.0.303)
Content-Type: text/html
Pragma: no-cache
Connection: Keep-alive
Content-Length: 598


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 18 октября 2010, 14:53:40
Ты неправильно написал правило
+rzd\.ru
Плюс в начале предполагает упрощенный синтаксис записи правила, а дальше применено \. из синтаксиса регулярных выражений. Надо писать так +rzd.ru или так rzd\.ru


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Ubiquitous_Nothing от 18 октября 2010, 15:22:22
mai62, спасибо, действительно помогло! И отдельное спасибо за оперативность в разрешении возникающих вопросов.


Название: Помогите с настройками доступа к сайтам
Отправлено: reverdatto от 25 августа 2011, 11:53:07
Помогите чайнику у меня следующая проблема: есть 5 компов в сети (ip 192.168.0.1-192.168.0.5) нужно чтоб на 3х обновлялся только антивирус а на 4том был доступ к нету без ограничений.


Название: Re: Помогите с настройками доступа к сайтам
Отправлено: mai62 от 26 августа 2011, 22:50:34
reverdatto
Эту задачу нужно решать с помощью расширения. Расширение для аналогичной задачи есть здесь
http://handycache.ru/forum/index.php?topic=1120.msg18323#msg18323


Название: Re: Помогите с настройками доступа к сайтам
Отправлено: DenZzz от 27 августа 2011, 00:36:32
И еще здесь:
http://handycache.ru/component/option,com_smf/Itemid,10/topic,2716.0/


Название: Re: Помогите с настройками доступа к сайтам
Отправлено: reverdatto от 27 августа 2011, 22:09:39
Спасибо!


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: goros от 28 сентября 2011, 11:13:08
Требуется:
компу с IP_1 полный доступ, компу с IP_2 - только белый список.
Я настроил:
- в черном списке .* т.е. запрещает ВСЁ.
- в белом списке, в поле "Правило" +имя_сайта1.ru, "птичка" на Черном списке.
В Расширениях:
--[[ <HCExtension>
@name          Фильтр по IP
@event         RequestHeaderReceived/allow
</HCExtension> ]]

function allow()

   if hc.user_ip == 'IP_1' then
   hc.white_mask = 'WB'    -- Отключает белый, черный список
   end
end

Комп с IP_2 заходит правильно, применяется только белый список, остальное блокирует.
Почему компу с IP_1 не отключаются ограничения?
В какие кавычки должны быть прописаны переменные:  'IP_1' или "IP_1" ?


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 28 сентября 2011, 12:31:15
У меня Ваше расширение работает. Вы не забыли после правки и сохранения расширения перечитать его в списке расширений?
Цитировать
В какие кавычки должны быть прописаны переменные:  'IP_1' или "IP_1" ?
Любые.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: goros от 28 сентября 2011, 12:36:05
У меня Ваше расширение работает. Вы не забыли после правки и сохранения расширения перечитать его в списке расширений?
Пересчитывал, всё равно не работает, блокирует.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 28 сентября 2011, 13:06:05
Попробуйте изменить Ваше расширение до такого
Код:
--[[ <HCExtension>
@name          Фильтр по IP
@event         RequestHeaderReceived/allow
</HCExtension> ]]

function allow()

hc.put_to_log(hc.user_ip)
if hc.user_ip == 'IP_1' then
         hc.white_mask = 'WB'    -- Отключает белый, черный список
hc.put_to_log(hc.white_mask)
   end
end
Включите лог в НС и посмотрите, что будет в логе.


Название: Re: Как блокировать разные сайты для разных п
Отправлено: goros от 29 сентября 2011, 03:12:40
Включите лог в НС и посмотрите, что будет в логе.
Изменил расширение, как Вы написали.
Включил в НС - Настройки - Вид - Сохранять содержимое монитора.
Судя по логу, расширение вообще не применяется...
Часть лога
Код:
29.09.2011/08:56:01	User_8:29:29/'IP'	http://www.sitekiosk.ru/                       0	0/142	0	0	"403 Forbidden (HC)"	Ч.1
29.09.2011/08:56:01 User_8:29:29/'IP' http://www.sitekiosk.ru/favicon.ico        0 0/142 0 0 "403 Forbidden (HC)" Ч.1
29.09.2011/08:56:03 User_8:29:29/'IP' http://www.nalog.ru/                       0 0/142 0 0 "403 Forbidden (HC)" Б.1, Ч.1
29.09.2011/08:56:03 User_8:29:29/'IP' http://www.nalog.ru/favicon.ico            0 0/142 0 0 "403 Forbidden (HC)" Б.1, Ч.1
Сайт http://www.nalog.ru/ в белом списке (для тестирования этот сайт один в белом списке), но для эксперимента "птичку" на Черном списке отключил.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 29 сентября 2011, 09:16:12
Вы не тот лог включили. Надо нажать кнопку Вести лог (оранжевая стрелка) справа от монитора.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: goros от 29 сентября 2011, 10:02:41
Помогите разобраться...
Выкладываю часть лога, где идет блокировка сайта www.sitekiosk.ru В белом списке его нет, но в расширении установлено, что для IP 10.114.134.52 отключается белый и черный список.
Код:
29.09.11 15:29:22,405 # 6580: Start connection from client
29.09.11 15:29:22,436 # 6580: Connection from 10.114.134.52:3125 to HC Version 1.00 RC3 (1.0.0.193)
29.09.11 15:29:22,436 # 6581: Start connection from client
29.09.11 15:29:22,467 # 6581: Connection from 10.114.134.52:3126 to HC Version 1.00 RC3 (1.0.0.193)
29.09.11 15:29:22,467 # 6580: User name: User_8:29:29
29.09.11 15:29:22,499 # 6580 -=< MESSAGE FROM EXTENSION >=- C:\Program Files\HandyCache\Extensions\Filtr_IP.lua
29.09.11 15:29:22,499 # 6580/6970 >>> URL: http://sitecheck2.opera.com/?host=www.sitekiosk.ru&hdn=0heFkdCv1EkclDoB4yz%2Bog==
DeniedDo:
GET http://sitecheck2.opera.com/?host=www.sitekiosk.ru&hdn=0heFkdCv1EkclDoB4yz%2Bog== HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51
Host: sitecheck2.opera.com
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Cookie: __kti=1314601783185,http%3A%2F%2Fwww.opera.com%2Fdocs%2Fplugins%2Finstallation%2F%23application-x-iso-image,; __ktv=b4f-6ff7-954c-a1d132145f4f94
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive
29.09.11 15:29:22,530 # 6580 <<< URL: http://sitecheck2.opera.com/?host=www.sitekiosk.ru&hdn=0heFkdCv1EkclDoB4yz%2Bog==
HTTP/1.1 403 Forbidden (HC)
Server: HandyCache/1.00 RC3 (1.0.0.193)
Content-Type: text/html
Connection: Keep-alive
Content-Length: 226
29.09.11 15:29:22,561 # 6581: User name: User_8:29:29
29.09.11 15:29:22,874 # 6581 -=< MESSAGE FROM EXTENSION >=- C:\Program Files\HandyCache\Extensions\Filtr_IP.lua
29.09.11 15:29:22,905 # 6581/6971 >>> URL: http://www.sitekiosk.ru/
DeniedDo:
GET http://www.sitekiosk.ru/ HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51
Host: www.sitekiosk.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=a9311082c57970ec78c327e10ccb1af1; BITRIX_SM_GUEST_ID=90100; BITRIX_SM_LAST_VISIT=29.09.2011+03%3A03%3A08; BITRIX_SM_SALE_UID=130785
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive
29.09.11 15:29:22,936 # 6581 <<< URL: http://www.sitekiosk.ru/
HTTP/1.1 403 Forbidden (HC)
Server: HandyCache/1.00 RC3 (1.0.0.193)
Content-Type: text/html
Connection: Keep-alive
Content-Length: 169


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 29 сентября 2011, 11:13:26
Обновите НС, возьмите отсюда http://handycache.ru/component/option,com_remository/Itemid,2/func,fileinfo/id,43/
Закройте НС и распакуйте архив в папку НС.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: goros от 29 сентября 2011, 11:54:00
Обновите НС, возьмите отсюда http://handycache.ru/component/option,com_remository/Itemid,2/func,fileinfo/id,43/
Закройте НС и распакуйте архив в папку НС.
Всё заработало, спасибо.


Название: настройка по пользователям
Отправлено: studio54 от 22 января 2013, 11:20:06
добрый день. возникла такая необходимость, одним пользователям открыть доступ к сайту, другим - закрыть.. вопрос - как это сделать?)


Название: Re: настройка по пользователям
Отправлено: Anymore от 22 января 2013, 17:28:08
Только средствами расширений, например так

Код:
--[[ <HCExtension>
@name         Deny_Host_For_User
@event        RequestHeaderReceived/Request

</HCExtension> ]]

function Request()

  local un = hc.user_name 
  if not(un=='local' or un=='admin' or un=='marketing') then
    if re.find(hc.url, [[\A(:?http|https|ftp)://(:?.*\.)?(:?vk.com|odnoklassniki.ru)]]) then
      hc.monitor_string = hc.monitor_string..'Deny_Host_For_User '
      hc.action = 'stop'
    end
  end

end


Название: Re: настройка по пользователям
Отправлено: Михаил от 22 января 2013, 19:29:25
Если стоит тестовая версия СМ, то можно любому пользователю назначить любые подписки (т.е. правила блокировки).


Название: Re: настройка по пользователям
Отправлено: studio54 от 23 января 2013, 12:24:12
СМ -это?? и как там что назначать ???


Название: Re: настройка по пользователям
Отправлено: mirny от 23 января 2013, 18:11:17
Код:
un = hc.user_name
if not(un=='local' or un=='admin' or un=='marketing') then
  -- do something
end
Anymore, в Луа есть специальная идиома чтобы не писать такие списки внутри условия:
Код:
privileged_user = {
  local_ = true,
  admin = true,
  marketing = true,
}

if not privileged_user[hc.user_name] then
  -- do something
end


Название: Re: настройка по пользователям
Отправлено: Anymore от 23 января 2013, 18:38:35
Anymore, в Луа есть специальная идиома чтобы не писать такие списки внутри условия...
да уж... а как сделать пониженный приоритет, например, для запросов SOCKS5?


Название: Re: настройка по пользователям
Отправлено: mirny от 23 января 2013, 18:53:09
У меня такой задачи не возникало, но кажется друг из Чехии уже задавал подобный вопрос. Нужен rescheduling запросов как я понимаю.


Название: Re: настройка по пользователям
Отправлено: Anymore от 23 января 2013, 19:11:30
rescheduling, это когда заранее известна ширина канала, это HyperPool или BSB может сделать. Другое дело когда ширина неизвестна.


Название: Re: настройка по пользователям
Отправлено: mirny от 23 января 2013, 19:37:34
Я не о стороннем софте толкую, а о том чтобы в расширении завести несколько очередей по приоритетам с запросами и отрабатывать их в нужном порядке асинхронно. Чтобы узнать возможно ли это в принципе сделать, надо попытаться, но мне этим заниматься не хочется. Слишком уж навороченно.


Название: Re: настройка по пользователям
Отправлено: Anymore от 24 января 2013, 21:58:09
СМ -это?? и как там что назначать ???

Content Master v. 1.XX (http://handycache.ru/component/option,com_smf/Itemid,10/topic,6034.0/), сейчас он в стадии тестирования и там не всё гладко, но вы всё-же можете попробовать его.

Anymore, в Луа есть специальная идиома чтобы не писать такие списки внутри условия
Вы можете дать ссылку на нормальный мануал по луа?


Название: Re: настройка по пользователям
Отправлено: mirny от 25 января 2013, 00:09:27
Вы можете дать ссылку на нормальный мануал по луа?
Вот нормальный мануал — http://rghost.net/43287986
Только по одним мануалам идиоматичный код писать не шибко выучишься. Тут больше помогает чтение кода, написанного грамотными людьми.


Название: помогите )
Отправлено: studio54 от 29 января 2013, 11:38:21
добрый день, я уже поднимал подобный вопрос.. если честно ничего не понял.. в данный момент требуется группе компьютеров отключить доступ ко всем сайтам кроме 1го.. (но не всем компам) только определенной группе.. как это сделать ?? :help: :help: :help:


Название: Re: помогите )
Отправлено: Anymore от 29 января 2013, 15:32:22
Вы умеете добавлять расширения на языке LUA?
Какой сайт разрешён всем?
Обозначьте имена пользователей которым разрешено всё.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: sunserg10 от 08 мая 2013, 16:59:11
Данное расширение блокирует указанные сайты для всех пользователей.
Нужно, чтобы блокировка срабатывала только для определенных пользователей.
Где ошибка?
Код:
--[[ <HCExtension>
@name          Ban Users by URL (Games)
@event         RequestHeaderReceived/Request
</HCExtension> ]]

function Request()
  local exc= re.match(hc.url, 'odnokl|shadowland')
  local exc1= re.match(hc.user_name, 'Work-(?:5|50|51)$|asz')
  if exc1 and exc then
    hc.action = 'stop'
  end
end


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Balzebu от 15 мая 2015, 13:18:59
Добрый день, подскажите почему не срабатывает расширение. Версия программы 571
Функция в файле расширения -
function allow()
   if hc.user_name == 'user1' then
      hc.action = 'stop-'    -- Мягкий запрет загрузки всего, кроме разрешенного в Белом списке
   elseif hc.user_name == 'User' then
      hc.white_mask = 'БЧ'   -- Отключает Белый и Черный список
      hc.monitor_string = hc.monitor_string..'Б.БЧ '
   end
end

На против расширения стоит галочка Разрешить. Но в логах почему то нет сообщения чтобы оно загружалось. А если я к примеру ставлю галочку рядом с другим расширением например - Cache cleaner, то в логах отображается его загрузка.

Что я делаю не так?   Файл расширения прикрепил к сообщению.



Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: YuS от 15 мая 2015, 20:21:44
Добрый день, подскажите почему не срабатывает расширение.
В чем проявляется несрабатывание?

На против расширения стоит галочка Разрешить. Но в логах почему то нет сообщения чтобы оно загружалось. А если я к примеру ставлю галочку рядом с другим расширением например - Cache cleaner, то в логах отображается его загрузка.

Что я делаю не так?   Файл расширения прикрепил к сообщению.
Что именно говорит о загрузке Cache cleaner? В самом расширении есть функция инициализации и в ней присутствует такая строка:
hc.put_to_log('function init is called')

- это отображается в логе?

В общем, Ваше расширение работает и срабатывает оно в момент RequestHeaderReceived, при условии, что пользователь либо "user1", либо "User"...
А ещё проще - покажите лог.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Balzebu от 15 мая 2015, 22:08:38
Да, вы правы. В логах у меня отображается имя пользователя local вместо User, поменяв в расширении имя на local всё заработало для этого пользователя.

Данное имя связано с полем Доступ в настройке программы. Но на одном компьютере 2 пользователя. Я так понял, что программа не учитывает имена пользователя системы виндоус, а использует свои имена в меню Доступ, которые могут отличаться благодаря ip адресу.
Как быть когда несколько пользователей на одном компе? В моём случае это User и user1.


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: YuS от 16 мая 2015, 05:32:06
Как быть когда несколько пользователей на одном компе? В моём случае это User и user1.
http://handycache.ru/component/option,com_smf/Itemid,10/topic,95.msg11269/#msg11269
http://handycache.ru/component/option,com_smf/Itemid,10/topic,95.msg11346/#msg11346


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: zoya от 06 августа 2015, 07:42:58
Ситуация такая:
черный и белый список настроен для всех пользователей. нужно сделать так, чтобы секретарь со своего рабочего места мог открыть только один сайт. Поскольку я вообще никак с программой HC и вообще программированием, ОЧЕНЬ ПРОШУ поэтапно мне все разъяснить, буду очень благодарна.
Пока я сделала только так, набрала в блокноте и экспортировала в расширения:

Не получилось вставить код, он в приложении


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: mai62 от 07 августа 2015, 12:19:29
Вот примерный текст расширения, решающего Вашу задачу. Этот текст сохраните в файл с расширением lua, добавьте этот файл в список расширений. Поставьте галку в строке расширения и галку, разрешающую работу всех расширений.
В расширении вместо buh впишите имя Вашего пользователя. Это расширение будет пускать пользователя только на сайт buh.ru. Впишите в расширение нужный сайт. Часто элементы сайта хранятся на нескольких серверах, возможно надо будет разрешить доступ сразу к нескольким серверам. Тогда впишите их по шаблону
[[server1\.ru|server2\.ru|server3\.ru]]
Код:
--[[ <HCExtension>
@name          Разрешить один сайт бухгалтеру
@event         RequestHeaderReceived/allow
</HCExtension> ]]

function allow()
  if hc.user_name=='buh' then
     if not re.find(hc.url, [[buh\.ru]]) then
       hc.action = 'stop'
     end
  end
end


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Zelen от 25 февраля 2016, 13:30:20
Вот примерный текст расширения, решающего Вашу задачу. Этот текст сохраните в файл с расширением lua, добавьте этот файл в список расширений. Поставьте галку в строке расширения и галку, разрешающую работу всех расширений.
В расширении вместо buh впишите имя Вашего пользователя. Это расширение будет пускать пользователя только на сайт buh.ru. Впишите в расширение нужный сайт. Часто элементы сайта хранятся на нескольких серверах, возможно надо будет разрешить доступ сразу к нескольким серверам. Тогда впишите их по шаблону
[[server1\.ru|server2\.ru|server3\.ru]]
Код:
--[[ <HCExtension>
@name          Разрешить один сайт бухгалтеру
@event         RequestHeaderReceived/allow
</HCExtension> ]]

function allow()
  if hc.user_name=='buh' then
     if not re.find(hc.url, [[buh\.ru]]) then
       hc.action = 'stop'
     end
  end
end

Здравствуйте, а как сделать в обратную сторону из этого рассширения? чтобы запрещал определенные сайты и онлайн аудио/видео просмотр?


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: YuS от 26 февраля 2016, 15:07:34
Здравствуйте, а как сделать в обратную сторону из этого рассширения?
Обратите внимание на вот эту часть:
Код:
...
if not re.find(hc.url, [[buh\.ru]]) then
       hc.action = 'stop'
     end
...
Это условный блок,который выполняет проверки по url через регэксп.
Т.е. можно сделать так:

Код:
...
if re.find(hc.url, [[(buh\.ru|site\.ru|определенные.сайты\.com)]]) then
       hc.action = 'stop'
     end
...


Название: Re: Как блокировать разные сайты для разных пользователей?
Отправлено: Zelen от 27 февраля 2016, 18:19:24
Обратите внимание на вот эту часть:

Спасибо, получилось.
Помогите пожалуйста добавить эти строки в код выше, чтобы я мог определенным пользователям и сайты и онлайн видео/аудио просмотр блокировать.

Код:
--[[ <HCExtension>
@name          eA_OnlyFromCache_media_by_type (OFC-media)
@author        mai62
@description   Загружать медиа-файлы только из кэша
@exception     \.swf($|\?)
@event         AnswerHeaderReceived/Answer
</HCExtension> ]]


function GetContentType(s)
  _,_,x = string.find(s, '[cC]ontent%-[tT]ype: *([^;\r\n]+)')
  if x~=nil then x = string.lower(x) end
  return x
end

function GetContentLength(s)
  _,_,x = string.find(s, '[cC]ontent%-[lL]ength: *(%d+)')
  if x==nil then return -1 else return tonumber(x) end
end


function Answer()

 -- Только для GET-запросов
  if hc.method == 'GET' then

  -- забираем тип файла из заголовка 'Content-Type'
  type = GetContentType(hc.answer_header)
  if type~=nil then
    local media= nil
    media = string.find(type,'video',1,true)
    if media==nil then media = string.find(type,'audio',1,true) end

    -- если в поле заголовка 'Content-Type' есть слово 'video' или 'audio'
    -- и файла нет в кэше
    if media~=nil and hc.cache_file_size<0 then
    -- то останавливаем загрузку
      hc.action = 'stop-'
      hc.monitor_string = hc.monitor_string..'OFC-media '
    end
  end
  end

end  -- Конец функции Answer