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

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

MyDC.ru _ Технические вопросы по RusHub'у _ RusHub

Автор: Setuper 28.8.2009, 13:37

Название: RusHub
Текущая версия: 2.3.10
Платформы: Windows (XP/Vista/7), GNU Linux, FreeBSD, Mac OS X, Solaris
Разрядность: 32, 64
Лицензия: http://mydc.ru/r/?http://www.gnu.org/licenses/gpl-3.0.html
Основан на: verlihub
SourceForge: http://mydc.ru/r/?http://sourceforge.net/projects/rushub/
GoogleCode: http://mydc.ru/r/?http://code.google.com/p/rushub
Официальный сайт: http://rushub.org/

Полная поддержка и использование протокола NMDC.
Хаб поддерживает работу с ipv6.
Хаб поддерживает ADC протокол (тестирование).
Хаб постоянно совершенствуется и развивается.


Описание настроек хаба
sAddresses - адреса хаба (указываются через пробел)
bAdcOn - включить режим работы хаба по протоколу ADC
sHubName - имя хаба
sTopic - топик хаба (приписка к имени хаба)
sHubBot - ник основного бота хаба.
sLocale - языковая локаль. По умолчанию устанавливается локаль системы (для России устанавливаем Russian_Russia.1251)
bSendUserIp - отсылать ip адреса пользователей, то есть использовать ли характеристики UserIP и UserIP2 (1 - да, 0 - нет).
bDelayedMyINFO - отсылать команды $MyINFO и $Quit с задержкой. Из-за отсутствия пока задержки входа рекомендуется установить этот параметр в 0.
bCheckSRNick - проверять ник в $SR команде.
bCheckRctmNick - проверять ли ник в RCTM команде (1 - проверять, 0 - не проверять).
bCheckCTMIp - проверять ip в CTM команде
bCheckSearchIp - проверять ip при активном поиске
bDelayedLogin - записывать пользователя только после полной отсылки ему списка всех пользователей (на больших хабах список всех пользователей может не отправиться за один раз, поэтому для таких хабов рекомендуется включить эту опцию).
bNicklistOnLogin - при входе на хаб отправлять список всех пользователей во время записи пользователя, а не по команде $GetNickList.
iTimeoutAny - время на получение от пользователя какой-либо команды (таймаут соединения)
iTimeoutLogon - максимальное время входа на хаб (в сек.).
iMaxPassiveRes - количество возвращаемых хабом результатов при пассивном поиске.
iTimerConnPeriod - период таймера соединения в мсек. (системная настройка, не рекомендуется изменять).
iTimerServPeriod - период таймера сервера в мсек. (системная настройка, не рекомендуется изменять).
iStepDelay - задержка в мсек на каждом цикле (системная настройка, не рекомендуется изменять).
iStrSizeMax - максимальная длина команды, отправленной на хаб пользователем.
iStartPing - время начала пинга пользователя в сек (отсчитывается от момента входа на хаб).
iPingInterval - период, через который пингуется пользователь.
iMaxLevel - уровень логирования событий хаба (от 0 до 6). По умолчанию 0 - не логировать события.
iMaxErrLevel - уровень логирования ошибок хаба (от 0 до 2). По умолчанию 2 - логировать все ошибки.
iSysLoading - коэффициент загруженности системы (системная настройка, не рекомендуется изменять).
iMaxNickLen - максимальная длина ника (проверяется только у пользователей с профилем -1).
iMinNickLen - минимальная длина ника (проверяется только у пользователей с профилем -1).
bDisableNoDCCmd - запретить использование команд, которые не относятся к NMDC командам (не начинаются со знака $, за исключением команды пинга и команды чата).
iFloodTime... и iFloodCount... - параметры флуда (количество iFloodCount за время iFloodTime (в сек.))
bRegMainBot - регистрировать основного бота.
bMainBotKey - ключ у основного бота.
sMainBotMyINFO - MyINFO основного бота.
sMainBotIP - ip основного бота.
bWebServer - включить веб-сервер (по умолчанию отключен).
sWebAddresses - адреса веб сервера (указываются через пробел). Через ; можно указывать порт.
iWebTimeout - тайм-аут соединения с веб сервером (в сек.). Время бездействия, по истечению которого веб-сервер закрывает соединение с клиентом.
iWebStrSizeMax - максимальный размер сообщения отсылаемого клиентом.
bMAC - включить определение MAC адреса (по умолчанию отключено).
iUsersLimit - глобальное ограничение числа пользователей (по умолчанию -1 - проверка отключена)
bUDPServer - включить udp сервер (1 - включить, 0 - отключить)
sUDPAddresses - udp адреса хаба
sMainPath - основная директория хаба
sPluginPath - директория плагинов
sLogPath - директория логов
sLangPath - директория языковых настроек
sLang - текущая языковая настройка (имя файла без расширения)
iMaxSendSize - настройка, отвечающая за максимальный размер буфера отсылки (по умолчанию 2818047). При превышении этого размера пользователь отключается от хаба.

Lua plugin:
LUA API события

UID - идентификатор пользователя, который отослал команду.
UID представляет из себя указатель на реальную структуру соединения пользователя (type(UID) = "userdata"). Введён с целью оптимизации выбора пользователя без нагрузки lua стека.

OnStartup()
Описание: Функция выполняется при старте скрипта.
Возвращаемое значение: любое



OnExit()
Описание: Функция выполняется при остановке скрипта
Возвращаемое значение: любое



OnError(sErrMsg)
Описание: Функция выполняется при ошибке в скрипте
Возвращаемое значение: true или 1 - не останавливать скрипт при ошибке во время выполнения
Исключения составляют таймерные функции, которые останавливают скрипт при ошибке, дабы не загружать систему и не прийти к переполнению лога



OnScriptError(sScriptName, sErrMsg, bStoped)
Описание: Функция выполняется при возникновении ошибки в скрипте sScriptName. sErrMsg - сообщение с ошибкой. Флаг bStoped равен true если скрипт, в котором возникла ошибка, был остановлен, в противном случае флаг bStoped равен false.
Функция не вызывается для текущего скрипта. Для отслеживания ошибок в текущем скрипте нужно использовать функцию OnError(sErrMsg).
Напомню, что по умолчанию скрипт отключается при ошибке, отключение скрипта можно предотвратить возвратом true в функции OnError этого скрипта.
Возвращаемое значение: true или 1 - не вызывать это событие в ниже стоящих скриптах (т.е. прекращение действия события).



OnScriptStart(sScriptName)
Описание: Функция выполняется при старте скрипта sScriptName.
Возвращаемое значение: true или 1 - не вызывать это событие в ниже стоящих скриптах (т.е. прекращение действия события).



OnScriptStop(sScriptName)
Описание: Функция выполняется при остановке скрипта sScriptName.
Возвращаемое значение: true или 1 - не вызывать это событие в ниже стоящих скриптах (т.е. прекращение действия события).



OnUserConnected(UID)
Описание: Функция выполняется при входе пользователя.
Функция выполняется после отправки пользователю первичной команды $Lock и до любого другого действия на хабе.
На данном этапе определён только IP адрес, порт и мак пользователя.
Возвращаемое значение: true или 1 - не отправлять при входе надпись: "Этот хаб работает под управлением..."



OnUserDisconnected(UID)
Описание: Функция выполняется после закрытия соедиения с пользователем.
Функция является последней функцией перед окончательным удалением соединения.
На данном этапе определён только IP адрес, порт и мак пользователя, все остальные данные уже удалены.
Возвращаемое значение: любое



OnUserEnter(UID)
Описание: Функция выполняется при окончательном входе пользователя, после добавления пользователя в списки.
Функция является последним этапом входа на хаб.
Возвращаемое значение: любое


OnUserExit(UID)
Описание: Функция выполняется при выходе пользователя, перед удаление пользователя из списков.
Функция является первым этапом выхода.
Возвращаемое значение: любое



OnSupports(UID, sData)
Описание: Функция выполняется при обмене характеристиками между клиентом и сервером.
Функция не будет выполняться, если клиент не поддерживает никаких дополнений и характеристик.
Возвращаемое значение: true или 1 - не отправлять характеристики хаба клиенту.



OnKey(UID, sData)
Описание: Функция выполняется при получении ключа от клиента.
Возвращаемое значение: true или 1 - проверять ключ.



OnValidateNick(UID, sData)
Описание: Функция выполняется после проверки ника и до проверки необходимости пароля. Ник пользователя уже определён.
Возвращаемое значение: true или 1 - отправить запрос на получение пароля.
Позволяет проводить регистрацию по средствам скриптов.



OnMyPass(UID, sData)
Описание: Функция выполняется после поступления на хаб пароля от пользователя.
Возвращаемое значение: true или 1 - вход оператора (отправка команды $LogedIn).



OnVersion(UID, sData)
Описание: Функция выполняется после поступления на хаб версии протокола.
Возвращаемое значение: true или 1 - проверять равенство версии 1,0091.



OnGetNickList(UID, sData)
Описание: Функция выполняется до отсылки списка пользователей.
Возвращаемое значение: true или 1 - не отсылать список.



OnMyINFO(UID, sData)
Описание: Функция выполняется при отправке на хаб MyINFO строки.
Функция выполняется после всех проверок параметров и до рассылки всем пользователям.
Возвращаемое значение (игнорируется при первой отправке, а работает только при последующих):
1) return false, return nil, return 0 - безусловное выполнение события
2) return true, return 1 - блокировка события
3) return 2 - выполнеие события и блокировка после обхода всех скриптов
4) return 3 - выполнение публичного события для всех соединений, кроме соединения, породившего это событие
5) return 4 - выполнение публичного события для всех соединений, кроме соединений, имеющих такой же ip адрес, что и соединение, породившее это событие
Примечание: Возвращаемое значение игнорируется при первой отправке на хаб MyINFO строки, так как в случае блокировки события пользователь будет скрыт (возможно эту политику следует пересмотреть (опустить) в дальнейшем).


OnChat(UID, sData)
Описание: Функция выполняется при отправке в чат сообщения пользователем.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение:
1) return false, return nil, return 0 - безусловное выполнение события
2) return true, return 1 - блокировка события
3) return 2 - выполнеие события и блокировка после обхода всех скриптов
4) return 3 - выполнение публичного события для всех соединений, кроме соединения, породившего это событие
5) return 4 - выполнение публичного события для всех соединений, кроме соединений, имеющих такой же ip адрес, что и соединение, породившее это событие



OnTo(UID, sData)
Описание: Функция выполняется при отправке в сообщения приват.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение: true или 1 - не отсылать сообщение.



OnConnectToMe(UID, sData)
Описание: Функция выполняется при попытке активного соединения.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение: true или 1 - не соединять пользователей.



OnRevConnectToMe(UID, sData)
Описание: Функция выполняется при попытке пассивного соединения.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение: true или 1 - не соединять пользователей.



OnSearch(UID, sData)
Описание: Функция выполняется при поиске.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение:
1) return false, return nil, return 0 - безусловное выполнение события
2) return true, return 1 - блокировка события
3) return 2 - выполнеие события и блокировка после обхода всех скриптов
4) return 3 - выполнение публичного события для всех соединений, кроме соединения, породившего это событие
5) return 4 - выполнение публичного события для всех соединений, кроме соединений, имеющих такой же ip адрес, что и соединение, породившее это событие



OnSR(UID, sData)
Описание: Функция выполняется при поступлении на хаб результатов пассивного поиска.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение: true или 1 - блокировать результаты поиска.



OnAny(UID, sData, iType)
Описание: Функция выполняется при поступлении на хаб любой команды.
Возвращаемое значение: true или 1 - блокировать команду.



OnUnknown(UID, sData)
Описание: Функция выполняется при поступлении на хаб любой не известной команды.
Возвращаемое значение: true или 1 - не блокировать команду.



OnKick(UID, sData)
Описание: Функция выполняется при поступлении на хаб команды кика.
Возвращаемое значение: любое.



OnOpForceMove(UID, sData)
Описание: Функция выполняется при поступлении на хаб команды перенаправления.
Возвращаемое значение: любое.



OnGetINFO(UID, sData)
Описание: Функция выполняется при поступлении на хаб команды $GetINFO.
Возвращаемое значение: true или 1 - не отсылать пользователю MyINFO запрошенного пользователя.



OnFlood(UID, iType, iNum)
Описание: Функция выполняется при обнаружении флуда со стороны пользователя. Может служить для устаноки бана за флуд или для разрешения флуда ОПераторам хаба. Параметр iType указывает тип команды, которой флудили. Параметр iNum указывает номер срабатываемого флуда 1 или 2 (см. настройки флуда).
Возвращаемое значение: true или 1 - не отключать пользователя.



OnWebData(WebID, sData)
Описание: Функция выполняется при поступлении данных на веб-сервер.
Возвращаемое значение: true или 1 - не разъединять пользователя по окончанию работы данного события.



OnConfigChange(sName, sValue)
Описание: Функция выполняется при изменении настройки. Параметр sName - название измененной настройки, sValue - новое значение настройки
Возвращаемое значение: любое.
Событие срабатывает только после изменения настройки при помощи объекта Config.



OnMCTo(UID, sData)
Описание: Функция выполняется при отправке приватного сообщения в чат.
Функция выполняется после всех проверок и до отправки.
Возвращаемое значение: true или 1 - не отсылать сообщение.
LUA API функции

Core.SendToAll(sData, sNick, sFrom)
Описание: Функция отправляет данные sData всем пользователям, которые находятся на хабе.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SendToUser(UID/sToNick/tNicks, sData, sNick, sFrom)
Описание: Функция отправляет данные sData пользователю с идентификатором UID (User ID) или с ником sToNick или таблице ников tNicks.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SendToAllExceptNicks(tExcept, sData, sNick, sFrom)
Описание: Функция отправляет данные sData всем пользователям, которые находятся на хабе, кроме пользователей, ники которых указаны в таблице tExcept, если таковые находится на хабе.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SendToProfile(iProfile/tProfiles, sData, sNick, sFrom)
Описание: Функция отправляет данные sData профилю/профилям. Если в первом аргументе функции указано число, то данные отправляются указанному профилю, если в первом аргументе указана таблица, то данные отправляются профилям, которые указаны в этой таблице.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SendToNicks(tNicks, sData, sNick, sFrom)
Описание: Функция отправляет данные sData всем пользователям, ники которых указаны в таблице tNicks, если таковые находится на хабе.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.
Функция устарела. Используйте вместо неё функцию Core.SendToUser(tNicks, sData, sNick, sFrom)


Core.GetUser(UID/sNick, iByte)
Описание: Функция возвращает UID пользователя по нику sNick.


Core.SetUser(UID/sNick, iType, Value)
Описание: Функция устанавливает значение Value для данных типа iType для пользователя с ником sNick.
Описание типов данных iType:
1 - профиль (iProfile)
2 - MyINFO строка (sMyINFO)
3 - пользовательские данные (sData)
4 - пользователь в оп-листе, то есть имеет ключик (bInOpList)
5 - пользователь скрыт в ник-листе (bHide)
6 - пользователь в ip-листе, то есть ему отсылаются ip адреса всх пользователей (bInIpList)

Функция устарела. Используйте вместо неё прямую установку параметров: UID[sName] = Value или Core.GetUser(sNick)[sName] = Value, где sName - это одна из строк: "iProfile", "sMyINFO", "sData" и тд.


Core.GetUsersCount()
Описание: Функция возвращает текущее количество онлайн пользователей.


Core.GetTotalShare()
Описание: Функция возвращает текущую суммарную шару всех пользователей хаба.


Core.Disconnect(UID/sNick)
Описание: Функция отключает пользователя по идентификатору UID, или по нику sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.DisconnectIP(sIP, iProfile/tProfiles)
Описание: Функция отключает всех пользователей с указанным IP.
Если указан профиль/таблица с профилями iProfile/tProfiles, то отключаются только пользователи с указанным профилем/профилями.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.RestartScripts(iType)
Описание: Функция перезапускает все скрипты. Если параметр iType отсутствует, равен nil или равен 0, то перезагружаются все скрипты без исключения. Если параметр iType равен 1, то перезагружаются все скрипты, кроме работающих на данный момент. Если параметр iType равен 2, то перезагружаются все скрипты, кроме текущего скрипта (из которого была вызвана данная функция).
Возвращает true.


Core.RestartScript(sScriptName)
Описание: Функция перезапускает скрипт с именем sScriptName. Если параметр sScriptName отсутствует или равен nil, то функция перезапускает текущий скрипт.
Возвращает true в случае успеха, nil в случае неудачи, nil и сообщение об ошибке в случае синтаксической ошибки.


Core.StopScript(sScriptName)
Описание: Функция останавливает скрипт с именем sScriptName. Если параметр sScriptName отсутствует или равен nil, то функция останавливает текущий скрипт.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.StartScript(sScriptName)
Описание: Функция запускает скрипт с именем sScriptName.
Возвращает true в случае успеха, nil в случае неудачи, nil и сообщение об ошибке в случае синтаксической ошибки.


Core.MoveUpScript(sScriptName)
Описание: Функция поднимает скрипт с именем sScriptName в дереве выполнения.
Если параметр не указан, то поднимается текущий скрипт.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.MoveDownScript(sScriptName)
Описание: Функция опускает скрипт с именем sScriptName в дереве выполнения.
Если параметр не указан, то опускается текущий скрипт.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.GetScripts()
Описание: Функция возвращает таблицу со скриптами как таблицы с полями sName, bEnabled, iMemUsage.


Core.GetScript(sScriptName)
Описание: Функция возвращает таблицу со скриптом таблицу с полями sName, bEnabled, iMemUsage.
Если имя не указано, то возвращается таблица текущего скрипта.


Core.GetGVal(sScriptName, sParam)
Описание: Функция возвращает значение глобальной переменной с именем sParam скрипта sScriptName.
Функция работает только с переменными типов: string, number, boolean, lightuserdata и table, для остальных типов будет возвращать nil.
Возвращает значение в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SetGVal(sScriptName, sParam, Value)
Описание: Функция устанавливает значение глобальной переменной с именем sParam скрипта sScriptName.
Функция работает только с переменными типов: string, number, boolean, lightuserdata и table.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SetCmd(sData)
Описание: Функция устанавливает новую команду для функций последующих скриптов.
Устанавливаемая команда должна быть синтаксически правильной, то есть соответствовать по синтаксису команде текущего события (API функции события). В противном случае функция не изменит команду и вернёт nil и соответствующее сообщение.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.GetUsers(sIP, bAll)
Описание: При отсутствии аргументов функция возвращает таблицу со всеми уже полностью вошедшими на хаб пользователями (с UID-ми всех вошедших пользователей хаба).
Core.GetUsers(true) - таблица со всеми пользователями хаба, даже которые только входят и ещё не вошли.
Core.GetUsers(sIP) - таблица с UID'ми вошедших пользователей с указанным IP
Core.GetUsers(sIP, true) - таблица со всеми пользователями с указанным IP.


Core.AddTimer(iId, iInterval, sFunc)
Описание: Функция добавляет таймер с идентификатором iId и интервалом срабатывания iInterval (в мсек). Если указано имя глобальной функции sFunc, то эта функция и будет выполняться, если имя функции не указано, то скрипт ищет глобальную функцию OnTimer (в параметр функции передаётся идентификатор). Идентификатор может повторяться.
Возвращает количество зарегистрированных таймеров с таким iId в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.DelTimer(iId)
Описание: Функция удаляет таймер по идентификатору iId.
Идентификатор может повторяться, однако, удаляется таймер по идентификатору, поэтому удалятся все таймеры с указанным идентификатором. Удаляются таймеры только текущего скрипта! Таймеры с таким же идентификатором других скриптов не удаляются!
Возвращает количество удалённых таймеров в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.GetUpTime()
Описание: Функция возвращает время работы хаба (в сек.)


Core.GetConfig(sName)
Описание: Функция возвращает настройку хаба sName. Какого бы типа не была настройка, всегда возвращается строковый тип.
В случае неудачи возвращает nil и сообщение об ошибке.
Функция устарела. Используйте вместо неё объект: Config[sName]


Core.SetConfig(sName, sValue)
Описание: Функция устанавливает настройку хаба sName в значение sValue.
Однако, исключения составляют настройки sHubIP, iMainPort, sSubPorts, которые нельзя изменить.
При изменении настройки sHubName или sTopic отправляется соответствующая команда. После изменения, настройки сохраняются.
При изменении sHubBot и/или bRegMainBot - автоматически перерегистрируется бот.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.
Функция устарела. Используйте вместо неё прямую установку параметров: Config[sName] = sValue


Core.GetLang(sName)
Описание: Функция возвращает "языковую" настройку sName.
В случае неудачи возвращает nil и сообщение об ошибке.


Core.SetLang(sName, sValue)
Описание: Функция устанавливает "языковую" настройку хаба sName в значение sValue.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.Call(sScriptName, sFunc, ...)
Описание: Функция вызывает функцию sFunc другого скрипта sScriptName с параметрами, которые указываются в аргументе 3, 4 и тд.
Параметры функции и возвращаемые значения функции могут быть только следующих типов: string, number, boolean, table и userlightdata.
Функция Core.Call возвращает все те значения, которые возвращает функция sFunc скрипта sScriptName.
В случае ошибки функция возвращает nil и сообщение об ошибке.


Core.SendToAllExceptIPs(tExcept, sData, sNick, sFrom)
Описание: Функция отправляет сообщение всем пользователям, за исключением пользователей с ip адресами, которые указаны в таблице tExcept.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SendToIP(sIP, sData, sNick, sFrom, iProfile/tProfiles)
Описание: Функция отправляет сообщение sData всем пользователям с указанным IP адресом sIP.
Если указан параметр sNick, то сообщение sData отправляется в чат от ника sNick.
Если указаны параметры sNick и sFrom, то сообщение sData отправляется в приват от отправителя sFrom с ником sNick.
Если указан профиль/таблица с профилями iProfile/tProfiles, то сообщение отправляется только указанным профилям с данным IP адресом.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.RegBot(sNick, bKey, sMyINFO, sIP)
Описание: Функция регистрирует бота с ником sNick. Если bKey равен true, то бот регистрируется с ключиком. sMyINFO - это часть MyINFO строки (часть после ника, начиная с описания и до конца MyINFO). sIP - возможный ip адрес для бота. Обязательным параметром является только первый параметр - sNick.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.UnregBot(sNick)
Описание: Функция удаляет регистрацию бота с ником sNick из списка.
Возвращает true в случае успеха, nil и сообщение об ошибке в случае неудачи.


Core.SetHubState(iNum)
Описание: Функция устанавливает состояние хаба.
iNum = nil или iNum = 0 - остановка хаба. iNum = 1 - рестарт хаба. Остальные значения заразервированы на будущее


Core.Redirect(UID/sNick, sAddress[, sReason])
Описание: Перенаправляет пользователя на адрес sAddress с причиной sReason. Причину указывать не обязательно.
Возвращает true в случае успеха, nil и сообщение с ошибкой - в случае неудачи


Config - объект конфигурационных настроек хаба
Config.table() - таблица с названиями всех возможных настроек хаба
Core.sMainDir - основной путь, по которому располагается хаб
Core.sScriptsDir - абсолютный путь, по которому располагается директория скриптов
Core.sHubVersion - название и версия хаба
Core.sLuaPluginVersion - название и версия плагина
Core.sSystem - название и версия ОС
_TRACEBACK = debug.traceback - способ включить stack trace для скрипта
Параметры пользователя
UID.sNick - ник
UID.sIP - ip
UID.iProfile - профиль
UID.bInOpList - пользователь в оп-листе, то есть имеет ключик
UID.bInIpList - пользователь в ip-листе, то есть ему отсылаются ip адреса всех пользователей
UID.bInUserList - пользователь полностью вошёл и добавлен в список пользователей
UID.bHide - пользователь скрыт в ник-листе
UID.iPort - порт хаба
UID.iPortConn - порт соединения
UID.sMacAddress - мак адрес
UID.sVersion - версия протокола
UID.sData - вспомогательное текстовое поле для различных нужд
UID.UID - UID юзера (lightuserdate)
UID.sSupports - параметр $Suppurts команды
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.iEnterTime - время входа на хаб (время отсылки на хаб команды $Key)
UID.sIPConn - ip адрес (хост) хаба, на который был принят пользователь
UID.bKick - способность ОПератора к кику
UID.bRedirect - способность ОПератора к перенаправлению




Текущая версия:
 rushub_2.3.10_win32.rar ( 212.99 килобайт ) : 90
 rushub_2.3.10_win64.rar ( 242.78 килобайт ) : 79


Lua плагин:
 lua_plugin_2.9_win32.rar ( 213.29 килобайт ) : 43
 lua_plugin_2.9_win64.rar ( 239.24 килобайт ) : 52


Pdb файлы:
 rushub_2.3.10_pdb_win32.rar ( 793.18 килобайт ) : 21
 rushub_2.3.10_pdb_win64.rar ( 808.73 килобайт ) : 24

 lua_plugin_2.9_pdb_win32.rar ( 593.08 килобайт ) : 17
 lua_plugin_2.9_pdb_win64.rar ( 604.17 килобайт ) : 21


Исходники можно скачать с: http://mydc.ru/r/?http://sourceforge.net/projects/rushub/
SVN: http://mydc.ru/r/?https://rushub.svn.sourceforge.net/svnroot/rushub/trunk/

Автор: Setuper 6.9.2009, 1:41

rushub v 1.0.1

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

Автор: Setuper 7.9.2009, 20:57

rushub v 1.0.2

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

Автор: Setuper 11.9.2009, 15:57

rushub v 1.0.3 [beta]

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

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

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

Автор: Setuper 16.9.2009, 20:06

rushub v 1.0.4

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

Автор: Setuper 26.9.2009, 20:08

rushub v 1.0.5

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

Автор: Setuper 1.10.2009, 18:37

rushub v 1.0.5c [beta]

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

Автор: Setuper 28.12.2009, 22:58

rushub v 2.0.0

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

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

Работа продолжается...

Простенький скрипт приветствия:  hello.lua ( 474 байт ) : 96

Простенькая регистрация:  registration.lua ( 2.78 килобайт ) : 107

Автор: Setuper 30.12.2009, 4:35

rushub v 2.0.2

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

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

Автор: Setuper 3.1.2010, 1:19

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 для случая разъединения пользователя по нику.

Автор: Setuper 4.1.2010, 4:00

lua plugin v 1.3

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

Автор: Setuper 4.1.2010, 20:23

lua plugin v 1.4

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

Автор: Setuper 6.1.2010, 2:12

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) - таблица с таблицами пользователей, которые содержат данные битов параметра iByte
Core.GetUsers(sIP) - таблица с UID'ми пользователей с указанным IP
Core.GetUsers(sIP, iByte) - таблица с таблицами пользователей с указанным IP, которые содержат данные битов параметра iByte

Автор: Setuper 6.1.2010, 23:45

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 отправляется соответствующая команда. После изменения, настройки сохраняются.

Автор: Setuper 11.1.2010, 22:15

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)

Автор: Setuper 12.1.2010, 21:22

rushub v 2.0.7

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

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

Автор: Setuper 16.1.2010, 23:02

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.

Автор: Setuper 20.1.2010, 0:07

lua plugin v 1.9

Изменения:

Added: Добавлена api функция Core.Call(sScriptName, sFunc, ...), при помощи которой можно вызывать функции других скриптов.
Параметры функции и возвращаемые значения функции могут быть только следующих типов: string, number, boolean, table и userlightdata.

Автор: Setuper 21.1.2010, 23:26

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: Исправлены некоторые мелкие и не значительные баги, а также оптимизированы некоторые процессы.

Автор: Setuper 22.1.2010, 16:15

lua plugin v 1.11

Изменения:

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

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

Автор: Setuper 23.1.2010, 19:03

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

Автор: Setuper 4.2.2010, 20:39

rushub v 2.1.1
lua plugin v 1.12


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

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

Added: Установленные типы защиты:

  1. Защита от флуда
  2. Защита от длинных команд
  3. Защита от пинг-флуда
  4. Защита от команд, не принадлежащих NMDC протоколу (отключение (по умолчанию) при неизвестных командах)
  5. Защита от флуд-входа
  6. Защита от длинных ников

Работа над защитой ещё не окончена.

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 (чисто испробовать что за зверь big_smile.gif ) :  lua_plugin_1.12_lua5.2.rar ( 204.83 килобайт ) : 22

Автор: Setuper 14.2.2010, 18:52

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). Добавлен необязательный параметр.

Автор: Setuper 27.2.2010, 18:47

rushub v 2.1.3
lua plugin v 1.14


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

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

bWebServer - включить веб-сервер (по умолчанию отключен).
sWebServerIP - адрес веб-сервера.
iWebServerPort - порт веб-сервера (по умолчанию 81).
iWebTimeout - тайм-аут соединения с веб сервером (в сек.). Время бездействия, по истечению которого веб-сервер закрывает соединение с клиентом.
iWebStrSizeMax - максимальный размер сообщения, которое может отослать на сервер клиент.

Новое событие: 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") в конец, если он отсутствует на конце сообщения.

Автор: Setuper 2.3.2010, 12:34

rushub v 2.1.4
lua plugin v 1.15


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

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

Автор: Setuper 4.3.2010, 17:31

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.

Автор: Setuper 5.4.2010, 13:23

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 (в процессе тестирования).

Автор: Setuper 16.4.2010, 14:32

rushub v 2.1.7

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

Автор: Setuper 30.5.2010, 19:02

lua plugin v 1.18

Added: В событие OnAny добавлен третьим аргументом тип команды: OnAny(UID, sData, iType).

Существующие на данный момент типы:

Код
0 - $MultiSearch
1 - $MultiSearch Hub:
2 - $Search Hub:
3 - $Search
4 - $SR
5 - $SR (UDP)
6 - $MyNIFO
7 - $Support
8 - $Key
9 - $ValidateNick
10 - $Version
11 - $GetNickList
12 - Chat
13 - $To
14 - $Quit
15 - $MyPass
16 - $ConnecToMe
17 - $RevConnectToMe
18 - $MultiConnectToMe
19 - $Kick
20 - $OpForceMove
21 - $GetINFO
22 - $MCTo
23 - $UserIP
24 - ping
25 - $Unknown

Автор: Setuper 19.6.2010, 16:47

lua plugin v 1.19

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

Автор: Setuper 4.7.2010, 21:20

lua plugin v 1.20

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

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

Автор: Setuper 18.7.2010, 13:31

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 - параметр $Suppurts команды
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

Автор: Setuper 21.7.2010, 22:39

rushub v 2.1.9
lua plugin v 1.22


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

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

Код
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

Автор: Setuper 28.7.2010, 22:48

rushub v 2.2.0
lua plugin v 1.23


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

Автор: Setuper 7.8.2010, 19:20

rushub v 2.2.1
lua plugin v 1.24


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

Автор: Setuper 21.8.2010, 22:08

rushub v 2.2.2

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

Автор: Setuper 22.8.2010, 15:04

rushub v 2.2.3

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

Автор: Setuper 12.9.2010, 21:28

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. Если хаб не нагружен, то обнуление данного параметра может вызвать некоторую нагрузку на процессор.

Автор: Setuper 5.10.2010, 21:42

rushub v 2.2.5

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

Автор: Setuper 24.10.2010, 19:44

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

Автор: Setuper 21.11.2010, 19:06

rushub v 2.2.7

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

Автор: Setuper 22.11.2010, 22:55

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 плагине (сделать абсолютный путь вместо относительного)

Автор: Setuper 28.11.2010, 22:50

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: Сделана проверка внутренней версии плагина и запись в лог сообщения о не поддерживаемой версии плагина.

Автор: Setuper 5.12.2010, 23:32

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 для того чтобы изменилось приветственное сообщение

Автор: Setuper 12.12.2010, 21:58

rushub v 2.2.11
lua plugin v 1.30


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

Автор: Setuper 19.12.2010, 20:08

rushub v 2.2.12
lua plugin v 1.31


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

Автор: Setuper 26.12.2010, 21:53

rushub v 2.2.13
lua plugin v 1.32


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

Fixed: Исправлен баг в метатаблице UID (рекурсивный вызов).

Автор: Setuper 16.1.2011, 23:00

rushub v 2.2.14
lua plugin v 1.33


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.

Автор: Setuper 20.3.2011, 15:09

rushub v 2.3.0
lua plugin v 2.0



Added: Добавлено определение версии в системах UNIX
Added: Добавлен показ в логе загружаемого плагина (имя и версия)
Added: Добавлен терминальный сигнал SIGTSTP (Ctrl-Z)
Added: Реализован активный поиск со стороны хаба (udp поиск).
Added: Полноценная поддержка команды UserIP (для возможности использования клиент должен отослать в $Support характеристику 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

Автор: Setuper 4.5.2011, 20:54

rushub v 2.3.1
lua plugin v 2.1



Added: Сборка win64
Added: Введено юнит-тестирование хаба

Fixed: Устранён баг в lua плагине (удаление из списка)
Fixed: Проверено/устранено подтекание памяти
Fixed: Исправлен баг в функции получения mac-адреса
Fixed: Проведён рефакторинг и оптимизация

Автор: Setuper 21.5.2011, 17:07

rushub v 2.3.2
lua plugin v 2.2


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

Автор: Setuper 13.6.2011, 13:31

rushub v 2.3.3
lua plugin v 2.3


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: Упрощено взаимодействие плагинов

Автор: Setuper 26.6.2011, 9:52

rushub v 2.3.4
lua plugin v 2.4


Added: Добавлена задержка для процесса остановки windows службы
Added: В файл RusHub.xml добавлены относительные (относительно него) пути, которые при загрузке заменяются на абсолютные, а при сохранении настроек в файл - обратно в относительные

Fixed: Устранен баг в команде $UserIP
Fixed: Устранен баг в lua api функции SendToIP
Fixed: Устранен баг в установке ipv6 адреса без порта
Fixed: Устранен баг в тримировании пустой строки
Fixed: Изменена логика работы события OnExit при остановке хаба (теперь событие отрабатывает до дисконнекта всех пользователей хаба)
Fixed: Проведено профилирование и оптимизация ядра хаба
Fixed: Немного снижено потребление памяти

Автор: Setuper 17.7.2011, 18:14

rushub v 2.3.5
lua plugin v 2.5


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

Автор: Setuper 14.8.2011, 20:55

rushub v 2.3.6

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

Fixed: Устранена проблема с поиском пользователей в 64 битной системе.
Fixed: Устранен баг с установкой MyINFO из скрипта.

Автор: Setuper 23.10.2011, 17:20

rushub v 2.3.7
lua plugin v 2.6


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

Fixed: Устранена повторная отсылка команды $Hello.
Fixed: Устранена уязвимость, при помощи которой можно было выкинуть с хаба зарегистрированного пользователя.
Fixed: Частичный рефакторинг кода.

Автор: Setuper 15.1.2012, 16:22

rushub v 2.3.8
lua plugin v 2.7


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 - критическая ошибка (уровень 0);
ERROR - ошибка (уровень 1);
WARN - предупреждение (уровень 2);
INFO - информационное сообщение (уровень 3);
DEBUG - отладочное сообщение (уровень 4);
TRACE - трейс сообщение (уровень 5).

Added: Добавлена поддержка поиска и соединения клиентов в ADC.

Fixed: Устранен баг в UDP поиске (не работал UDP поиск).
Fixed: Устранен баг с таймерами в lua (функция Core.AddTimer не вызывалась RunTime, а могла вызываться только непосредственно в событии OnStartup).
Fixed: Устранен баг в пути, по которому пишутся логи lua плагина.
Fixed: Произведена локальная оптимизация и рефакторинг, а также уменьшено потребление памяти хабом.

Автор: Setuper 3.3.2012, 13:37

rushub v 2.3.9
lua plugin v 2.8


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, то отключается тот, кто находится на хабе с его ником (защита для зарегистрированных от обрыва соединений).

Автор: Setuper 10.7.2012, 10:49

rushub v 2.3.10
lua plugin v 2.9


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