История изменений RusHub

Материал из MyDC's Wiki

Перейти к: навигация, поиск

Содержание

Ветка 2.3.x


rushub v 2.3.10, lua plugin v 2.9

10.07.2012

Fixed: Обновлен Zlib 1.2.7.
Fixed: Обновлен Lua 5.1.5.
Fixed: Устранены некоторые незначительные баги, утечки, глюки.
Fixed: Рефакторинг кода и частичная поддержка стандарта ISO C++.



rushub v 2.3.9, lua plugin v 2.8

03.03.2012

Added: Добавлен показ сообщения при первом отключении после частых переподключений.
Added: Добавлен языковый файл English.xml.example.
Added: Добавлен единственный таймер на длительность входа и соответствующая настройка: iTimeoutLogon.
Fixed: Модифицирован формат времени в логах.
Fixed: Исправлена ошибка, возникающая при ipv6 коннекте.
Fixed: Исправлен баг в отключениях при антифлуде (несоответствие с настройками).
Fixed: Обновлен tinyxml до версии 2.6.2.
Fixed: Удалены таймеры, а также соответствующие им настройки: iTimeoutKey, iTimeoutNick, iTimeoutLogin, iTimeoutMyinfo. iTimeoutGetpass.
Fixed: Исправлен баг в проверке ника. Теперь если входит юзер с профилем -1, а на хабе пользователь с таким ником уже есть, то входящий отключается. Если же входит юзер с профилем не равным -1, то отключается тот, кто находится на хабе с его ником (защита для зарегистрированных от обрыва соединений).



rushub v 2.3.8, lua plugin v 2.7

15.01.2012

Added: Добавлена возможность установки параметров MyINFO.
Текущие параметры:
sDesc - описание пользователя (строка);
sTag - тэг пользователя (строка, только чтение);
sClientName - клиент пользователя (строка);
sClientVersion - версия клиента пользователя (строка);
sMode - режим пользователя (строка);
iUsHubs - число хабов, на которых пользователь является незарегистрированным (число);
iRegHubs - число хабов, на которых пользователь является зарегистрированным (число);
iOpHubs - число хабов, на которых пользователь является оператором (число);
iSlots - число слотов у пользователя (число);
iLimit - ограничитель L (число);
iOpen - ограничитель O (число);
iBandwidth  - ограничитель B (число);
iDownload - ограничитель D (число);
sFraction - ограничитель F (строка вида x/y);
sConn - тип соединения пользователя (строка);
iByte - магический байт (число);
sEmail - email адрес пользователя (строка);
iShare - шара пользователя (число);
sSupports - поддерживаемые пользователем характеристики (строка);
sVersion - версия протокола (строка);
iProfile - профиль пользователя (число, неудаляемо);
sIP - IP адрес пользователя (строка, только чтение);
sIPConn - IP-адрес, по которому пользователь соединялся (строка, только чтение);
iPort - порт пользователя (число, только чтение);
iPortConn - порт, по которому пользователь соединялся (число, только чтение);
sMacAddress - MAC-адрес пользователя (строка, только чтение);
iEnterTime - время входа на хаб (число, только чтение);
bKick - право на кик пользователей (логическое);
bRedirect - право на перенаправление пользователей (логическое);
bHide - скрыть пользователя (логическое);
bInUserList - пользователь с списке (логическое, только чтение);
bInIpList - пользователю отсылаются IP-адреса (логическое);
bInOpList - у пользователя есть ключик (логическое).
Added: Добавлена возможность установки из Lua своих параметров следующих типов данных: строки, числа, логические.
Added: Сообщения в логах хаба стали более наглядными. Добавился контроль строк и уровни логирования:
FATAL - критическая ошибка;
ERROR - ошибка;
WARN - предупреждение;
INFO - информационное сообщение;
DEBUG - отладочное сообщение;
TRACE - трейс сообщение.
Added: Добавлена поддержка поиска и соединения клиентов в ADC.
Fixed: Устранен баг в UDP поиске (не работал UDP поиск).
Fixed: Устранен баг с таймерами в Lua (функция Core.AddTimer не вызывалась RunTime, а могла вызываться только непосредственно в событии OnStartup).
Fixed: Устранен баг в пути, по которому пишутся логи Lua-плагина.
Fixed: Произведена локальная оптимизация и рефакторинг, а также уменьшено потребление памяти хабом.


rushub v 2.3.7, lua plugin v 2.6

23.10.2011

Added: Добавлено использование системы сборки GNU Autotools.
Added: Добавлена настройка iMaxSendSize, отвечающая за максимальный размер буфера отсылки (по умолчанию 2818047). При превышении этого размера пользователь отключается от хаба.
Fixed: Устранена повторная отсылка команды $Hello.
Fixed: Устранена уязвимость, при помощи которой можно было выкинуть с хаба зарегистрированного пользователя.
Fixed: Частичный рефакторинг кода.


rushub v 2.3.6

14.08.2011

Added: Добавлена частичная поддержка протокола ADC (вход/выход и чат).
Для переключения хаба в режим работы ADC, нужно установить настройку bAdcOn.
Fixed: Устранена проблема с поиском пользователей в 64 битной системе.
Fixed: Устранен баг с установкой MyINFO из скрипта.


rushub v 2.3.5, lua plugin v 2.5

17.07.2011

Fixed: Оптимизация запросов на соединение. Одновременный приём до 64 соединений за цикл (до этого было 1 соединение за цикл).
Fixed: Проведен стресс-тест с последующей оптимизацией, что позволяет отныне хабу держать 10k+ соединений.
Fixed: Устранён баг в UDP-команде $SR. Отсутствовала настройка длины команды.
Fixed: Оптимизированы события в Lua-плагине. Для каждого события создан свой список скриптов. Таким образом, при вызове события не происходит никаких лишних обходов (обходятся только скрипты, в которых есть функция того или иного события).


rushub v 2.3.4, lua plugin v 2.4

26.06.2011

Added: Добавлена задержка для процесса остановки Windows-службы.
Added: В файл RusHub.xml добавлены относительные (относительно него) пути, которые при загрузке заменяются на абсолютные, а при сохранении настроек в файл — обратно в относительные.
Fixed: Устранен баг в команде $UserIP.
Fixed: Устранен баг в Lua API функции SendToIP.
Fixed: Устранен баг в установке IPv6 адреса без порта.
Fixed: Устранен баг в тримировании пустой строки.
Fixed: Изменена логика работы события OnExit при остановке хаба (теперь событие отрабатывает до дисконнекта всех пользователей хаба).
Fixed: Проведено профилирование и оптимизация ядра хаба.
Fixed: Немного снижено потребление памяти.


rushub v 2.3.3, lua plugin v 2.3

13.06.2011

Added: Поддержка IPv6. Пример настройки одновременного прослушивания IPv4 и IPv6 адресов:
<Item Name="sAddresses">0.0.0.0:411 [::]:411 [fe80::219:7dff:fe86:e017]:413</Item>

Адреса указываются через пробел. Порт указывается через двоеточие (если порт отсутствует, то берётся порт по-умолчанию 411), при этом IPv6 обязательно необходимо заключать в квадратные скобки (IPv4 также может быть заключён в квадратные скобки, однако для IPv4 это необязательное требование). Также, вместо IP-адреса может быть указано имя хоста, а вместо числового значения порта может быть указан его буквенный аналог (например: 80 <=> http, 443 <=> https, 512 <=> exec и тд.).

Fixed: Упрощено взаимодействие плагинов.


rushub v 2.3.2, lua plugin v 2.2

21.05.2011

Fixed: Устранен баг в списке удаляемых таймеров.
Fixed: Убран автозапуск хаба непосредственно после установки сервиса.
Fixed: Исправлен lang-файл по-умолчанию.
Fixed: Устранен баг циклического вызова при отсутствии файла лога.
Fixed: Устранен баг в вызове параметров UID.
Fixed: Устранен баг в вызове события OnScriptError.


rushub v 2.3.1, lua plugin v 2.1

04.05.2011

Added: Сборка win64.
Added: Введено юнит-тестирование хаба.
Fixed: Устранён баг в Lua-плагине (удаление из списка).
Fixed: Проверено/устранено подтекание памяти.
Fixed: Исправлен баг в функции получения MAC-адреса.
Fixed: Проведён рефакторинг и оптимизация.


rushub v 2.3.0, lua plugin v 2.0

20.03.2011

Added: Добавлено определение версии в UNIX-like системах.
Added: Добавлен показ в логе загружаемого плагина (имя и версия).
Added: Добавлен терминальный сигнал SIGTSTP (Ctrl-Z).
Added: Реализован активный поиск со стороны хаба (UDP-поиск). Добавлены настройки:
bUDPServer — включение UDP-сервера (1 — включить, 0 — отключать);
sUDPAddresses — адреса UDP-сервера (указываются через пробел). Порт по-умолчанию 1209.
Added: Полноценная поддержка команды $UserIP (для возможности использования, клиент должен отослать в $Supports характеристику UserIP или UserIP2).
Added: Добавлены настройки:
sMainPath — основная директория;
sPluginPath — директория подгрузки плагинов;
sLogPath — директория логов;
sLangPath — директория языковых настроек;
sLang — текущая языковая настройка (имя файла без расширения).
Файл конфигурации задаётся опцией -c командной строки.


Fixed: Исправлены некоторые незначительные утечки в памяти.
Fixed: Изменена нотация и проведен рефакторинг кода.
Fixed: Исправлено логирование (в логгер добавлен буфер для логирования событий до загрузки настроек логирования).
Fixed: Исправлен баг в Core.sSystem (возвращалась пустая строка, если скрипт автоматически запускался при старте хаба).
Fixed: Устранён баг с выставление флага пассивного режима.
Fixed: Функция SendToAllExceptIps не работала, а так как её никто не использовал, то, для единого стиля, функция переименована в SendToAllExceptIPs.
Fixed: Исправлен счётчик закрываемых соединений.
Fixed: Оптимизация алгоритма проверки при массовой рассылке.
Fixed: Изменены идентификаторы команд:
0 — $MultiSearch
1 — $MultiSearch Hub:
2 — $Search Hub:
3 — $Search
4 — $SR
5 — $SR UDP
6 — $MyINFO
7 — $Supports
8 — $Key
9 — $ValidateNick
10 — $Version
11 — $GetNickList
12 — Chat
13 — $To
14 — $Quit
15 — $MyPass
16 — $ConnectToMe
17 — $RevConnectToMe
18 — $MultiConnectToMe
19 — $Kick
20 — $OpForceMove
21 — $GetINFO
22 — $MCTo
23 — $UserIP
24 — Ping
25 — Unknown

Ветка 2.2.x


rushub v 2.2.14, lua plugin v 1.33

16.01.2011

Added: Реализован стектрейс Lua-ошибок: _TRACEBACK = debug.traceback.
Fixed: Устранен баг с уборкой мусора от UID.
Fixed: Устранен баг в функции закрытия соединения (poll функционал в select случае).
Fixed: Объединены функции Core.SendToNicks и Core.SendToUser (функция Core.SendToNicks осталась, но считается устаревшей).
Fixed: Усовершенствована функция Core.GetUsers. Разделились возвращаемые пользователи на группы: все и все вошедшие (Core.GetUsers(bAll), Core.GetUsers(sIP, bAll)).
Core.GetUsers() — вернёт только уже полностью вошедших на хаб пользователей.
Core.GetUsers(true) — вернёт всех пользователей.
Аналогично и для случая возврата по IP: Core.GetUsers(sIP) и Core.GetUsers(sIP, true).
Fixed: Изменена кодировка в файле scripts.xml с windows-1252 на windows-1251.
Fixed: Подправлен путь до файла lua.hpp (lua/lua.hpp).
Fixed: Файл luaerr.log перемещён в папку logs.


rushub v 2.2.13, lua plugin v 1.32

26.12.2010

Added: В windows добавлен отлов всех исключений с трейсом. Теперь после "падения хаба" (хаб теперь не падает, а программа просто закрывается) создаётся файл exception.txt, который содержит информацию о проблеме. Для полноценной информации нужно чтобы файлы с символами rushub.pdb и lua.pdb лежали рядом с rushub.exe. Возможно этого не всегда будет достаточно, и могут потребоваться символы системных либ, однако хотя бы так.
Fixed: Исправлен баг в метатаблице UID (рекурсивный вызов).


rushub v 2.2.12, lua plugin v 1.31

19.12.2010

Added: Введено дополнительное логирование и отлов исключений в windows.
Fixed: Починен параметр bHide (сломался после введения общего кэша).
Fixed: Поправлены права на создание папок в линуксе.
Fixed: Исправлены пути Lua-модулей для линукса.
Fixed: Починены метатаблицы объектов Config и UID.


Предыдущие версии


12.12.2010 rushub v 2.2.11, lua plugin v 1.30

Added: Добавлено логирование в веб сервере.
Added: Некоторый рефакторинг.
Added: Сделана папка под логи.
Fixed: Починено взаимодействие между хабом и плагинами (передача векторов между хабом и плагинами).


5.12.2010 rushub v 2.2.10, lua plugin v 1.29

Added: Добавлена возможность логирования в syslog.
Added: Добавлены в пинг стандартные функции антифлуда.
Added: Добавлена шара в приветственное сообщение.
Added: Введены причины дисконнекта.
Added: Сделана возможность показа ip (хоста) сервера, к которому коннектился пользователь (UID.sIPConn).
Added: Добавлена функция Core.Redirect(UID/sNick, sAddress[, sReason]). Причину указывать не обязательно.
Added: Дабавлен параметр юзера UID.bKick. Установка этого параметра в true даёт право ОПератору кикать других юзеров.
Added: Дабавлен параметр юзера UID.bRedirect. Установка этого параметра в true даёт право ОПератору перенаправлять других юзеров.
Fixed: Исправлен баг удаления открытых соединений при использовании poll в линуксе.
Fixed: Починен входящий пинг.
Fixed: Оптимизирована работа парсера.
Fixed: Оптимизировано приветственное сообщение, сделан его кеш и убраны секунды.
Fixed: Загнан интерфейсы для плагинов в один файл для удобства использования сторонними разработчиками.

P.S. В случае обновления хаба рекомендуется удалить старый файл lang.xml для того чтобы изменилось приветственное сообщение.


28.11.2010 rushub v 2.2.9, lua plugin v 1.28

Added: Сделан параметр настроек для дополнительных ip:port. Вместо настроек: sHubIP, iMainPort и sSubPorts теперь одна настройка sAddresses, в которой можно через пробел писать ip адреса (или хост-адреса) и через двоеточие различные порты. Если порт не указан явно, то берётся порт по умолчанию 411. Пример: <Item Name="sAddresses">dc.hub.ru:413 127.0.0.1 192.168.0.1:4111</Item>.
Added: В lua плагине сделана функция, возвращающая список всех возможных настроек хаба: Config.table() — функция возвращает таблицу с названиями настроек. Таким образом, теперь можно написать простейший обход настроек хаба:
for _, v in ipairs(Config.table()) do
  print(v, Config[v])
end
Added: Сделана поддержка команды $MCTo. В Lua-плагине за эту команду отвечает событие OnMCTo.
Added: Сделана возможность остановки windows сервиса (подробности в команде -h).
Added: Сделано формирование логов по дате запуска хаба.
Fixed: Пересмотрена политика занятости ника (была актуальная проблема для unix систем — висели "мёртвые" соединения).
Fixed: Сделан рефакторинг кода.
Fixed: Сделана проверка внутренней версии плагина и запись в лог сообщения о не поддерживаемой версии плагина.


22.11.2010 rushub v 2.2.8, lua plugin v 1.27

Added: Сделан пинг при проверке занятого ника.
Fixed: Устранен баг в функции Core.RegBot (появился в версии 2.2.7 из-за добавления параметров логирования).
Fixed: Поправлен luaconf.h (не работал луа плагин в линуксе из-за некорректности этого файла, если сборка была с этим (модифицированным) файлом).
Fixed: Поправлен путь к папке libs (смена корневой директории для линукса).
Fixed: Поправлен путь для файла luaerr.log в Lua-плагине (сделать абсолютный путь вместо относительного).


21.11.2010 rushub v 2.2.7

Added: Сделан таймерный кэш для массовой рассылки (оптимизация обходов списка, актуальная на больших хабах).
Added: Сделан параметр настроек "глобальное ограничение общего числа пользователей".
Added: Наконец-то добавлена возможность установки сервиса/демона (проблема с установкой директории для конфигурационных файлов в windows решена). Для показа помощи по доступным командам вводим в консоли: rushub.exe -h (набор команд для window и для linux несколько различается).
Added: Добавлено логирование изменения уровня нагрузки на хаб.
Fixed: Изменена кодировка по умолчанию для файла настроек с windows-1252 на windows-1251.
Fixed: Оптимизирована аллокация при конкатенации протокольных команд.
Fixed: Закрыта незначительная утечка в памяти (проявлялась при удалении бота).


24.10.2010 rushub v 2.2.6, lua plugin v 1.26

Added: Сделан poll для линукса.
Added: Сделана настройка включения определения mac адреса (по умолчанию отключено).
Added: Добавлено событие OnConfigChange, которое выполняется при изменении какой-либо настройки хаба. Это даст возможность скриптописателю хранить настройки в локальных переменных, а при изменении настроек перезаписывать данные в переменных, а не дергать каждый раз функции.
Added: Добавлена Lua API функцию Core.SetHubState(iNum) — установка состояния хаба. iNum = nil или iNum = 0 — остановка хаба. iNum = 1 — рестарт хаба. Остальные значения заразервированы на будущее.
Fixed: Убрано логирование и остановка хаба при ошибке в Choose.
Fixed: Доработано автоматическое действие при смене настроек: sHubBot и bRegMainBot.


4.10.2010 rushub v 2.2.5

Fixed: Исправлен баг в счётчике закрытых соединений, который сильно влиял на производительность.
Fixed: Проведена оптимизация основного цикла.
Added: Добавлены миллисекунды в логе


12.9.2010 rushub v 2.2.4, lua plugin v 1.25

Added: Добавлен параметр пользователя: время входа (iEnterTime — время отсылки клиентом на хаб команды $Key).
Added: Добавлен отдельный объект для получения настроек в глобальном окружении Lua: Config. Например, имя бота можно теперь получить так: Config.sHubBot.
Fixed: Исправлено падение при удалении папки scripts в Lua-плагине.
Fixed: Перепроверены все возможные "массовые" события.
Fixed: Поправлена регистрация бота с недопустимыми символами в нике.
Fixed: Подправлен файл luaconf.h в Lua плагине для unix. Добавлена возможность поиска модулей в папке libs.
Fixed: Поправлен баг в событии OnValidateNick (возвращаемое значение).
Fixed: Оптимизирована функция изменения размера хеш-таблицы (AutoResize).
Fixed: Подправлены исходники под сборку на vs2010.
Fixed: Оптимизированы некоторые функции хаба.

В целях ускорения работы в настройках нужно поставить параметр iStepDelay = 0. Если хаб не нагружен, то обнуление данного параметра может вызвать некоторую нагрузку на процессор.


22.8.2010 rushub v 2.2.3

Fixed: Исправлен баг (падение хаба), который возникал при дисконнекте пользователя, который находился в процессе получения списока пользователей хаба.
Fixed: Исправлена задержка в отправке команд, которая составляла 0.1 — 1 сек.


21.8.2010 rushub v 2.2.2

Fixed: Исправлена ошибка в отправке данных при блокировке.
Added: Добавлен кэш при массовой рассылке.


7.8.2010 rushub v 2.2.1, lua plugin v 1.24

Fixed: Исправлена ошибка в таймерах.
Fixed: Подкорректированы исходники под сборку на линуксе.


28.7.2010 rushub v 2.2.0, lua plugin v 1.23

Fixed: Исправлен баг в работе таймеров.
Fixed: Переделаны алгоритмы работы таймеров и списков задач.
Fixed: Установлено ограничение: максимум 100 таймеров / скрипт. При превышении ограничения скрипт отключается с добавлением ошибки в лог ошибок.
Added: Функция AddTimer теперь возвращает количество зарегистрированных таймеров с указанными id (то есть добавлен контроль за числом таймеров в скрипте) — это если всё ок, если ошибка, то как и раньше nil и сообщение об ошибке.
Added: Функция DelTimer теперь возвращает количество удалённых по id таймеров.
Added: Оптимизированы некоторые процессы (в частности парсинг MyINFO и получение параметра объекта UID).


Ветка 2.1.x


21.7.2010 rushub v 2.1.9, lua plugin v 1.22

Fixed: Исправлен баг в событии OnUserDisconnected, который приводил к краху после попытки получить параметр пользователя, например ник.
Fixed: Исправлены значения по умолчанию для отсутствующих параметров MyINFO-строки. Теперь значение по умолчанию равно nil.

Примерчик вполне валидной MyINFO строки:

sMyINFO = $MyINFO $ALL Nick $ $$$$
iShare = 0
sMode = nil
sDesc = 
sEmail = 
sTag = nil
sConn = 
iByte = 0
sClientName = nil
sClientVersion = nil
iSlots = nil
iUsHubs = nil
iRegHubs = nil
iOpHubs = nil
iLimit = nil
iOpen = nil
iBandwidth = nil
iDownload = nil
sFraction = nil


18.7.2010 rushub v 2.1.8, lua plugin v 1.21

Added: Сделан парсинг MyINFO.
Added: Добавлен параметр UID.sSupports.
Fixed: Убран автозапуск скриптов.
Fixed: Исправен баг функции os.date путём копирования файла loslib.c из lua 5.2 (там этот баг исправлен).
Fixed: Сделана установка MyINFO до события OnMyINFO, а не после как было раньше.
Fixed: Исправлено падение при пустом описании в MyINFO.
Fixed: Исправлено падение при помещении в папку plugins некорректного плагина.
Fixed: Добавлена проверка корректности пользователя в функцию Core.SendToUser.

Парсинг MyINFO позволяет получать следующие параметры (перечисляю все допустимые).

Важное замечание! Если пользователь ещё до конца не вошёл на хаб, то многие из этих параметров могут быть равны nil.
В частности, если, например, мы в событии OnValidateNick попытаемся получить UID.iShare, или UID.sMyINFO, или какой-либо другой параметр MyINFO строки, то мы получим nil, так как на этой стадии входа ещё не определён параметр sMyINFO, он будет определён на одной из последующих стадий (см. описание протокола NMDC и последовательность входа на хаб).
UID.sNick — ник
UID.sIP — ip
UID.iProfile — профиль
UID.bInOpList — в оплисте
UID.bInIpList — в ip листе
UID.bInUserList — вошёл на хаб
UID.bHide — скрыт
UID.iPort — порт хаба
UID.iPortConn — порт соединения
UID.sMacAddress — мак адрес
UID.sVersion — версия протокола
UID.sData — вспомогательное текстовое поле для различных нужд
UID.UID — UID юзера (lightuserdate)
UID.sSupports — параметр $Supports команды
UID.sMyINFO — MyINFO строка
UID.sDesc — описание
UID.sTag — тэг
UID.sClientName — название клиента
UID.sClientVersion — версия клиента
UID.sMode — режим
UID.iUsHubs — обычные хабы
UID.iRegHubs — рег хабы
UID.iOpHubs — оп хабы
UID.iSlots — слоты
UID.iLimit — ограничитель скорости скачивания с пользователя (L:x)
UID.iOpen — открытые экстра слоты (O:x)
UID.iBandwidth — ограничитель скорости скачивания с пользователя (B:x)
UID.iDownload — ограничитель скорости скачивания пользователем (D:x)
UID.sFraction — ограничитель скорости скачивания пользователем/с пользователя (F:x/y)
UID.sConn — соединение
UID.iByte — магический байт
UID.sEmail — email
UID.iShare — шара в байтах

Устанавливать можно пока только следующие параметры:

UID.iProfile
UID.sMyINFO
UID.bInOpList
UID.bInIpList
UID.bHide
UID.sData


4.7.2010 lua plugin v 1.20

Fixed: Исправлен баг в очередях задач, который приводил к падению хаба.

Работа по оптимизации пока не производилась (возможно в следующей версии проведу).


19.6.2010 lua plugin v 1.19

Fixed: Исправлено падение хаба при циклическом вызове функций GetGVal/SetGVal (reported by Phazeus).
Fixed: Немного оптимизирована работа Lua.


30.5.2010 lua plugin v 1.18

Added: В событие OnAny добавлен третьим аргументом тип команды: OnAny(UID, sData, iType).
Существующие на данный момент типы:
0 — $MultiSearch
1 — $MultiSearch Hub:
2 — $Search Hub:
3 — $Search
4 — $SR
5 — $MyINFO
6 — $Supports
7 — $Key
8 — $ValidateNick
9 — $Version
10 — $GetNickList
11 — Chat
12 — $To
13 — $Quit
14 — $MyPass
15 — $ConnectToMe
16 — $RevConnectToMe
17 — $MultiConnectToMe
18 — $Kick
19 — $OpForceMove
20 — $GetINFO
21 — Unknown


16.4.2010 rushub v 2.1.7

Fixed: Исправлен баг с падением хаба при загрузке заведомо "левого" плагина.


5.4.2010 rushub v 2.1.6, lua plugin v 1.17

Fixed: Исправлена ошибка, связанная с отключениями за частую отсылку пустых команд, которые прикреплены к другим командам, вместо отключения только за частые пинги.
Fixed: Исправлен баг с падением хаба после входа компьютера из спящего режима.
Fixed: Исправлен баг в событии OnWebData (перепутанные возвращаемые значения события)
Fixed: Для файлов настроек установлены абсолютные пути вместо относительных.
Added: В таблице Core добавлено новое поле Core.sSystem, хранящее название и версию системы, на которой работает сервер.
Added: Модифицированы возвращаемые значения событий:
1) return false, return nil, return 0 — безусловное выполнение события;
2) return true, return 1 — блокировка события;
3) return 2 — выполнеие события и блокировка после обхода всех скриптов;
4) return 3 — выполнение публичного события для всех соединений, кроме соединения, породившего это событие;
5) return 4 — выполнение публичного события для всех соединений, кроме соединений, имеющих такой же ip адрес, что и соединение, породившее это событие.
Added: К переменной UID теперь привязана метатаблица, поэтому отпадает нужда в функциях Core.GetUser и Core.SetUser, но эти функции сохранены для совместимости и для определения пользователя по нику.
Added: Добавлена сборка под x64 системы.

Пока что не добавлена встроенная возможность добавления хаба в список сервисов windows (в процессе тестирования).


4.3.2010 rushub v 2.1.5, lua plugin v 1.16

Added: Добавлено новое событие OnScriptStart(sScriptName), вызываемое при запуске скрипта sScriptName.
Added: Добавлено новое событие OnScriptStop(sScriptName), вызываемое при остановке скрипта sScriptName.
Fixed: Исправлена работа веб-сервера. Предотвращена двойная отсылка.
Fixed: Исправлена ошибка отсутствия тела сообщения в POST запросах. Не заморачиваясь насчёт парсера, оставлено это дело на плечах Lua. Если клиентом было отправлено тело запроса, то оно всегда прибавляется к заголовку, даже в случае, например GET запроса, а не POST запроса, поэтому это должен отфильтровывать парсер в Lua, дабы придерживаться http протокола и не позволять отправлять левые запросы.
Fixed: WebID полностью совмещён с UID, и к нему применимы все функции, применимые к UID. Например, отключение веб-пользователя Core.Disconnect(UID/WebID). Хотя специфические функции типа GetUser могут возвращать не все нужные результаты из-за их отсутствия для данного соединения, или функция DisconnectIP не может разъединить веб-пользователя с указанным ip.


2.3.2010 rushub v 2.1.4, lua plugin v 1.15

Fixed: Удалена функция Core.SendToWeb. Вместо неё для отсылки данных веб пользователю нужно использовать функцию Core.SendToUser(WebID, sData).
Added: Для получения ip адреса и других параметров веб-пользователя можно использовать ту же функцию, что и для обычного dc-пользователя: Core.GetUser(WebID, iByte).

Свожу все функции к единому интерфейсу.


27.2.2010 rushub v 2.1.3, lua plugin v 1.14

Fixed: Исправлены некоторые достаточно серьёзные ошибки старых версий.
Added: Добавлен веб-сервер (по умолчанию отключен).
Веб-сервер предназначен только для использования его в Lua.

Некоторые новые настройки:


Новое событие: OnWebData(WebID, sData)
Новая API функция: Core.SendToWeb(WebID, sData)

Пример скрипта для проверки работы веб сервера:
function OnWebData(WebID, sData)
  Core.SendToAll(sData)
  Core.SendToWeb(WebID, "test")
end

Так как в событии OnWebData не возвращается true, то клиент будет автоматически отключен после отправки ему всех данных.
Функция Core.SendToWeb автоматически добавляет разделитель ("\r\n\r\n") в конец, если он отсутствует на конце сообщения.


14.2.2010 rushub v 2.1.2, lua plugin v 1.13

Fixed: Исправлен баг в работе события OnScriptError.
Fixed: Исправлен баг, который не позволял в некоторых случаях при медленной скорости соединения получить полностью команду.
Fixed: Исправлен баг в изменении команды события.
Added: Добавлена функция Core.SendToIP(sIP, sData, sNick, sFrom, iProfile/tProfiles) отсылки сообщения ip адресу.
Added: Добавлена функция Core.SendToAllExceptIps(tExcept, sData, sNick, sFrom) отсылки сообщения всем, кроме ip адресов таблицы tExcept.
Added: Добавлена функция Core.RegBot(sNick, bKey, sMyINFO, sIP) регистрации бота на хабе (sMyINFO — это не полное MyINFO, а только всё то что после ника).
Added: Добавлена функция Core.UnregBot(sNick) удаления регистрации бота.
Added: Модифицирована функция Core.DisconnectIP(sIP, iProfile/tProfiles). Добавлен необязательный параметр.


4.2.2010 rushub v 2.1.1, lua plugin v 1.12

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

Основные изменения:

Added: Установленные типы защиты:
  • Защита от флуда;
  • Защита от длинных команд;
  • Защита от пинг-флуда;
  • Защита от команд, не принадлежащих NMDC протоколу (отключение (по умолчанию) при неизвестных командах);
  • Защита от флуд-входа;
  • Защита от длинных ников.
Работа над защитой ещё не окончена.
Added: Новое событие: OnScriptError(sScriptName, sErrMsg, bStoped).
Функция выполняется при возникновении ошибки в скрипте sScriptName. sErrMsg — сообщение с ошибкой. Флаг bStoped равен true если скрипт, в котором возникла ошибка, был остановлен, в противном случае флаг bStoped равен false.
Функция не вызывается для текущего скрипта. Для отслеживания ошибок в текущем скрипте нужно использовать функцию OnError(sErrMsg).
Напомню, что по умолчанию скрипт отключается при ошибке, отключение скрипта можно предотвратить возвратом true в функции OnError этого скрипта.
Added: Новое событие: OnFlood(UID, iType, iNum).
Функция выполняется при обнаружении флуда со стороны пользователя. Может служить для установки бана за флуд или для разрешения флуда ОПераторам хаба. Параметр iType указывает тип флуда:
0 — чат-флуд,
1 — флуд в личке,
2 — MyINFO-флуд,
3 — флуд получения списка,
4 — поисковый-флуд,
5 — SR-флуд,
6 — CTM-флуд,
7 — RCTM-флуд,
8 — флуд неизвестными командами.
Параметр iNum указывает номер срабатываемого флуда 1 или 2 (см. настройки флуда).
Возвращаемое значение: true или 1 — не отключать пользователя.
Updated: Обновлена функция Core.RestartScripts(iType) (в функцию добавлен не обязательный параметр).
Функция перезапускает все скрипты. Если параметр iType отсутствует, равен nil или равен 0, то перезагружаются все скрипты без исключения. Если параметр iType равен 1, то перезагружаются все скрипты, кроме работающих на данный момент. Если параметр iType равен 2, то перезагружаются все скрипты, кроме текущего скрипта (из которого была вызвана данная функция).

Плагин с поддержкой Lua 5.2 (чисто испробовать что за зверь ): lua_plugin_1.12_lua5.2.rar


Ветка 2.0.x


23.1.2010 Незапланированные версии хаба и Lua-плагина с фиксами в функциях Core.GetConfig(sName) и Core.GetLang(sName).


22.1.2010 lua plugin v 1.11

Fixed: Исправлены баг в работе функции Core.GetGVal. (Баг появился из-за модернизации кода в плагине v 1.10).
Fixed: Исправлен баг в работе функции Core.RestartScripts. (спасибо fixx-у за очередной репорт).


22.1.2010 rushub v 2.0.9, lua plugin v 1.10

Added: Добавлена Lua функция отправки данных профилю/профилям: Core.SendToProfile(iProfile/tProfiles, sData, sNick, sFrom). Если первый аргумент — число, то сообщение отправляется профилю, если первый аргумент таблица, то отправляется профилям, указанным в этой таблице.
Пример:
Core.SendToProfile({0, 1}, "Hello", "Bot") -- отправка от бота сообщения Hello профилям 0 и 1.


Fixed: Исправлены некоторые мелкие и не значительные баги, а также оптимизированы некоторые процессы.


20.1.2010 lua plugin v 1.9

Added: Добавлена API функция Core.Call(sScriptName, sFunc, ...), при помощи которой можно вызывать функции других скриптов.

Параметры функции и возвращаемые значения функции могут быть только следующих типов: string, number, boolean, table и userlightdata.


17.1.2010 rushub v 2.0.8, lua plugin v 1.8

Fixed: Исправлен баг с выскакиванием части команды при регистрации в оп листе (спасибо fixx-у за обнаружение бага).
Fixed: Исправлены мелкие баги с логированием некоторых событий как ошибок.
Fixed: Исправлены Lua API функции Core.RestartScripts, Core.RestartScript, Core.StopScript, Core.StartScript. Теперь функции Core.GetScripts и Core.GetScript нормально отображают скрипты, даже если перезагружается текущий скрипт или все скрипты.
Fixed: Исправлены баги в функциях перезагрузки и остановки скриптов для случая удалённого скрипта (спасибо fixx-у за обнаружение бага).
Added: Добавлена полная поддержка характеристики UserIP2.
Added: Добавлен 13-й бит для функции Core.GetUser и 6-ой тип для функции Core.SetUser.


12.1.2010 rushub v 2.0.7

Fixed: Пофиксил небольшой баг на хабе перехода в скрытый режим. Обнаружил при написании скрипта hideme.

Выложил исходники хаба и lua плагина. Для сборки хаба используем vs2005 или vs2008. Отвечу на все интересующие вопросы по поводу сборки хаба.


11.1.2010 rushub v 2.0.6, lua plugin v 1.7

Added: Добавлена настройка установки локали. Корректное восприятие русских букв или букв других языков (в зависимости от локали). Теперь lua функции string.lower и string.upper корректно работают с русскими буквами. Если на хабе есть пользователь Вася, то с ником ВАСЯ уже нельзя войти на хаб.
Added: Добавлена функции сокрытия ника из списка пользователей (12-ый бит функции Core.GetUser и функция Core.SetUser(UID, 5, bool)).
Added: Добавлено событие OnKick(UID, sData).
Added: Добавлено событие OnOpForceMove(UID, sData).
Added: Добавлено событие OnGetINFO(UID, sData).


7.1.2010 rushub v 2.0.5, lua plugin v 1.6

Fixed: Теперь в настройку sHubIP можно записывать не только ip адрес, но и хост.
Fixed: В целях оптимизации были убраны lua функции Core.GetMainDir(), Core.GetScriptsDir() и Core.GetHubInfo(). Вместо них теперь поля: Core.sMainDir, Core.sScriptsDir, Core.sHubVersion и Core.sLuaPluginVersion соответственно.
В связи с этим, некоторые скрипты откажутся работать!
Added: Добавлены lua функции: Core.GetConfig(sName), Core.SetConfig(sName, sValue), Core.GetLang(sName), Core.SetLang(sName, sValue).Функции позволяют управлять конфигурацией и языковыми настройками хаба. Однако, для функции Core.SetConfig исключения составляют настройки: sHubIP, iMainPort, sSubPorts.

При изменении настройки sHubName или sTopic отправляется соответствующая команда. После изменения, настройки сохраняются.


6.1.2010 rushub v 2.0.4, lua plugin v 1.5
Обновление хаба было связано с расширением возможностей установки ключика операторов в любое время, а не только при входе на хаб.

Added: Добавлена функция Core.GetUpTime().
Added: Добавлена функция Core.GetHubInfo() информация о хабе и о плагине.
Added: Добавлена новая функция Core.SendToNicks(tNicks, sData, sNick, sFrom). Функция отправляет сообщение всем никам, которые находятся в таблице tNicks.
Added: Добавлена функция Core.DisconnectIP(sIP). Разъединяет всех пользователей с указанным IP.
Fixed: Исправлена функция Core.SetUser. Теперь пользователь может быть когда угодно занесён и извлечён из списка операторов, а не только при входе на хаб. Ставим/убираем ключик одним движением руки. Код написан оптимально и исключает повторных действий при вызове.
Fixed: Исправлен баг в функции Core.GetUsers.
Fixed: Модифицирована функция Core.GetUsers(sIP, iByte).Core.GetUsers() — таблица с UID'ми всех пользователей хабаCore.GetUsers(iByte) — таблица с таблицами пользователей, которые содержат данные битов параметра iByteCore.GetUsers(sIP) — таблица с UID'ми пользователей с указанным IPCore.GetUsers(sIP, iByte) — таблица с таблицами пользователей с указанным IP, которые содержат данные битов параметра iByte.


4.1.2010 lua plugin v 1.4

Fixed: Исправлена несколько некорректная работа функции Core.SetGVal с таблицами.


4.1.2010 lua plugin v 1.3

Added: Функции Core.GetGVal и Core.SetGVal теперь позволяют оперировать с таблицами и с lightuserdata данными.


3.1.2010 rushub v 2.0.3, lua plugin v 1.2
Изменения коснулись не только плагина, но и хаба (это для того, чтобы исправить некоторые баги).

Added: вместо функций Core.SendToUID и Core.SendToNick теперь функция Core.SendToUser(UID/sToNick, sData, sNick, sFrom).
Fixed: исправлен баг вылета в функции Core.GetScript при обращении к отключенному скрипту.
Fixed: исправлен баг, который не позволял создать лог ошибок скриптов, в случае, если в названии директории присутствовала кириллица.
Fixed: исправлен баг функции Core.Disconnect для случая разъединения пользователя по нику.


30.12.2009 rushub v 2.0.2

Fixed: Устранены причины падения при ошибках в скриптах и в некоторых api функция.

Параметр iMaxLevel — уровень лога событий. Для тестирования: 6 (логировать всё).


28.12.2009 rushub v 2.0.0

Added: Реализован Lua-плагин (минимальный для работы Lua функционал реализован). Посредством Lua можно реализовать: регистрацию, баны и т.д. Для подключения Lua плагина кладём файл lua.dll в папку plugins.

Lua библиотеки сторонних разработчиков (luasql и тд.) должны подключаться без каких либо перекомпиляций (ограничение только на формат COFF, то есть от птохи библиотеки не подходят, нужно качать отсюда: http://luaforge.net/projects/luasql/ ).
Работа продолжается...
Простенький скрипт приветствия: hello.lua
Простенькая регистрация: registration.lua


Ветка 1.0.x


1.10.2009 rushub v 1.0.5c [beta]

Fixed: Исправлены падения, однако они ещё не исключены.


26.9.2009 rushub v 1.0.5

Fixed: Увеличено максимальное число сокетов.


16.9.2009 rushub v 1.0.4

Added: Включены логи действий хаба.
Added: Добавлена характеристика UserIP2.


11.9.2009 rushub v 1.0.3 [beta]

Fixed: Исправлен баг с удалением пользователя с хаба.
Added: Добавлены следующие настройки:
sUnregNickPrefix — обязательный префикс для незарегистрированных;
sNickChars — символы, которые разрешается использовать в нике;
bHubTopicAfterMotd — посылать хаб-топик после MOTD;
bCheckSRNick — проверять ник в $SR команде;
iMinLimitSlotsRatio — минимально доступное отношение лимит/слоты;
iMaxHubsSlotsRatio — максимально доступное отношение хабы/слоты;
iMinDLLimit — минимально доступное ограничение скорости;
iMaxSlots — максимальное число слотов;
iMinSlots — минимальное число слотов;
iMaxHubs — максимальное число хабов;
iMinNickLen — минимальная длина ника;
iMaxNickLen — максимальная длина ника.


Для появления новых настроек нужно удалить старые файлы hub_config и lang_config.


7.9.2009 rushub v 1.0.2

Added: Сделаны основные настройки хаба. Они хранятся в файле.Файлы настроек появляются после первого запуска хаба.


6.9.2009 rushub v 1.0.1

Added: Сделан поиск и некоторые проверки.


28.8.2009 rushub v 1.0.0

Первая версия, публично выложенная на форуме.

См. также

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
RusHub
Инструменты
Портал