DenZzz
|
 |
« Ответ #280 : 04 мая 2011, 13:22:39 » |
|
скажите, есть ли скрипты для ограничения пользователя по трафику, например 20Мб в день?
Есть: --[[ <HCExtension> @name Дневной лимит трафика (RS-lim) @author DenZzz @version 1.2 для HC v1.00 RC2 (1.0.0.184) и выше @description Устанавливает лимит дневного трафика для пользователя Vasya на 20 Мб в день @event BeforeRequestHeaderSend/RequestSend </HCExtension> ]]
function RequestSend() if hc.user_name == 'Vasya' and hc.user_from_internet > 20*1024*1024 then hc.action = 'stop' hc.monitor_string = hc.monitor_string..'RS-lim ' end end
|
|
|
|
|
sergo
Постоялец
 
Репутация: +5/-1
Offline
Сообщений: 112
|
 |
« Ответ #281 : 25 июня 2011, 14:12:10 » |
|
Со следующей усовершенствованойверсией lua НС работать не сможет? Ставлю lua-5.2.0-beta-rc2 и никакой работы а одни вылеты
|
|
|
|
|
mai62
|
 |
« Ответ #282 : 25 июня 2011, 19:30:00 » |
|
Раз одни вылеты, значит не может.
|
|
|
|
|
sergo
Постоялец
 
Репутация: +5/-1
Offline
Сообщений: 112
|
 |
« Ответ #283 : 25 июня 2011, 20:04:08 » |
|
Что не может это налицо. Вопрос был сможет ли? Новая lua декларирует повышение характеристик Посмотрите отличия от 5.1 на http://www.lua.org/work/doc/manual.html#8 может поможет согласовать их работу
|
|
|
|
|
mai62
|
 |
« Ответ #284 : 25 июня 2011, 20:54:43 » |
|
Насколько я понимаю, опубликован кандидат в бета-версии. До финала еще многое поменяется. Когда сделают финал, будем адаптироваться.
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #285 : 24 июля 2011, 13:00:30 » |
|
Здравствуйте! Как засечь в скрипте время выполнения куска скрипта Lua? os.clock() не дает правильного результат, итог зависит от загруженности другими потоками и результат постоянно разный
|
|
|
|
|
DenZzz
|
 |
« Ответ #286 : 24 июля 2011, 13:19:53 » |
|
Как засечь в скрипте время выполнения куска скрипта Lua? os.clock() не дает правильного результат, итог зависит от загруженности другими потоками и результат постоянно разный
Больше никак. Усредняй результат.
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #287 : 24 июля 2011, 13:26:49 » |
|
Усреднение не дает уверенного результата, комп все время нагружен по разному жалко спасибо тем не менее
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #288 : 07 августа 2011, 10:28:56 » |
|
m = re.match('abc', '(b)|(a)') в результате что должно дать: m[1]=nil и m[2]=подтаблица? как ни крутил кроме m[0] ничего в таблице m больше нет. если что-то не так делаю скажите пожалуста. Если это ошибка НС исправьте, хотелось бы быстро
|
|
|
|
|
mai62
|
 |
« Ответ #289 : 07 августа 2011, 13:57:23 » |
|
Byfuglien Похоже что-то там не так. Можно использовать функции re.substr(), я проверил работает. Для Вашего примера re.substr(0) выдаст "a", re.substr(1) выдаст пустую строку, re.substr(2) выдаст "a". Положение и размер подстрок можно получить функциями re.substr_offset() и re.substr_length().
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #290 : 07 августа 2011, 16:28:09 » |
|
попробовал и тоже не получиается с примером который я приводил re.substr_count() выдает 2, хотя найдена должна быть всего одна подстрока. Может оно дает не количество подстрок как написано в хелпе, а максимальный номер из найденных подстрок? re.substr(1) возвращает пустую строку хотя должно наверно быть nil
|
|
|
|
|
mai62
|
 |
« Ответ #291 : 07 августа 2011, 18:48:41 » |
|
Вы правы поведение отличестся от описанного в файле HCExtensions.html. Файл HCExtensions.html будет исправлен: 1. re.substr_count() возвращает максимальный номер из найденных подстрок 2. если подстрока не найдена, возвращается пустая строка (а не nil? как написано сейчас). Изменять поведение функций не буду, т.к. это может нарушить работоспособность уже имеющихся разрешений.
P.S. Вам + за найденную ошибку.
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #292 : 07 августа 2011, 18:52:16 » |
|
если подстрока не найдена, возвращается пустая строка тогда не получится отличить случай если подстроки вообще не было от случая когда она найдена и равна пустой строкен Вам + за найденную ошибку. Спасибо.
|
|
|
|
|
mai62
|
 |
« Ответ #293 : 07 августа 2011, 20:05:14 » |
|
тогда не получится отличить случай если подстроки вообще не было от случая когда она найдена и равна пустой строкен Можно использовать функцию re.substr_offset(). Если она возвращает 0, то подстрока с этим номером не была найдена. Тут тоже ошибка в файле HCExtensions.html, там написано -1. Номера символов в lua-строке начинаются с 1, нулевого символа не бывает.
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #294 : 07 августа 2011, 20:39:09 » |
|
Можно использовать функцию re.substr_offset(). Если она возвращает 0, то подстрока с этим номером не была найдена. Тут тоже ошибка в файле HCExtensions.html, там написано -1. Номера символов в lua-строке начинаются с 1, нулевого символа не бывает. и здесь не получается. После выражения m = re.match('abc', '(b)|(d)') re.substr_offset(2) выдает -1 и после re.substr() равного пустой строке дополнительно проверять, а есть лои в самом деле эта подстрока не красиво както Добавлено: 07 Августа 2011, 20:29:25
мне кажется в описании правильно сказано и надо при отсутствии строки возвращать nil из re.substr()
|
|
|
|
|
mai62
|
 |
« Ответ #295 : 07 августа 2011, 20:49:13 » |
|
re.substr_offset(2) выдает -1 Это не принципиально. Можно делать проверку так: если смещение больше нуля, то подстрока найдена. и после re.substr() равного пустой строке дополнительно проверять, а есть лои в самом деле эта подстрока не красиво както Я попробовал возвращать nil, если подстрока не найдена, и Content Master перестал работать. Возможно и другие расширения перестанут работать.
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #296 : 07 августа 2011, 23:13:08 » |
|
re.substr_count() в хелпе полезно указать что возвращает если вообще регэкс не сработал Я попробовал возвращать nil, если подстрока не найдена, и Content Master перестал работать. Возможно и другие расширения перестанут работать. плохо. Ну тогда хотябы в хелпе исчерпывающее описание этих нюансов сделать можно Добавлено: 07 Августа 2011, 22:49:03
еще скажите пожалуйста сферу применения функции re.offsets_vector_size()? m = re.match('abc', 'a') re.offsets_vector_size() выдает равным 6 Что это за число и когда его использовать неясно. Можно ли в хелпе это пояснить?
|
|
|
|
|
mai62
|
 |
« Ответ #297 : 07 августа 2011, 23:35:47 » |
|
еще скажите пожалуйста сферу применения функции re.offsets_vector_size()? Чтобы понять о каком векторе речь, нужно познакомиться с документацией на библиотеку PCRE. В этом векторе (массиве) PCRE хранит результаты выполнения регулярного выражения и собственно оттуда получают информацию функции re.substr_offset(), re.substr_length() и др. Использование этого вектора - это альтернативный способ доступа к результатам без посредников в лице названных функций. Однако, он требует от пользователя знание некоторых особенностей библиотеки, языков С (на нем написана PCRE) и lua.
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #298 : 20 августа 2011, 18:57:39 » |
|
В событии 1-минутного таймера не определена переменная hc.event
|
|
|
|
|
Byfuglien
Новичок
Репутация: +1/-2
Offline
Сообщений: 46
|
 |
« Ответ #299 : 29 августа 2011, 23:16:01 » |
|
Тихо. Не принято отвечать или просмотрели? Попробовать еще надеюсь ответы будут. 1. Как сделать так: расширение в ходе инициализации или в ходе работы спрашивает пользователя, нужна ли ему предоставляемая им функциональность. Если да, то расширение работает дальше. Если нет то оно отключается на весь дальнейший сеанс работы НС. Как это отключение осуществить, чтоб отключение было не псевдо а реальным, в том числе вызвался бы destroy? 2. Инициализация еще не завершилась, ждем ответ пользователя, а в расширении уже работают другие обработчики. По моему надо сделать чтобы все обработчики могли вызываться только после окончания инициализации.
|
|
|
|
|
|