Скриптовое событие MyChat Server: OnUserLogin
Событие, возникающее в момент авторизации пользователя на сервере.
Шаблон события
function OnUserLogin(iCID, iLoginUIN, iLoginState: integer; sLoginIP, sLoginMAC, sLoginHardwareID, sLoginCompName, sLoginVersion, sLoginDomain, sSessionID, sAuthService, sClientType, sRemoteOS: string): boolean;
begin
// your own code
result := true;
end;
begin
end.
Вместо комментария может быть любой ваш код.
Описание параметров
Параметр |
Тип |
Значение |
iCID |
integer |
Connection ID клиента, уникальный сеансовый идентификатор в онлайн-структуре сетевых подключений к серверу; |
iLoginUIN |
integer |
уникальный идентификатор пользователя, который пытается авторизоваться на сервере(число >=0); |
iLoginState |
integer |
|
sLoginIP |
string |
IP адрес пользователя; |
sLoginMAC |
string |
MAC адрес сетевого интерфейса пользователя (только для Windows-клиентов); |
sLoginHardwareID |
string |
уникальный идентификатор "железа" клиента, текстовая строка; |
sLoginCompName |
string |
название компьютера удалённого клиента (remote client); |
sLoginVersion |
string |
версия приложения пользователя; |
sLoginDomain |
string |
имя домена пользователя, если есть; |
sSessionID |
string |
уникальная строка, которая может генерироваться для текущего сеанса логина (обычно это актуально для WEB-версии, SessionID ещё называют токенами); |
sAuthService |
string |
если аутентификация производится сторонним сервисом, тут может быть его название; |
sClientType |
string |
|
sRemoteOS |
string |
операционная система пользователя. |
Возвращаемое значение
По умолчанию функция должна возвращать true, однако, если вы вернёте false, клиент будет отключен от сервера, не авторизовавшись. Это может быть нужно, если, например, необходимо организовать некий Access List по сложным правилам, который нельзя сделать с помощью стандартной фильтрации IP адресов, блоков MAC адресов, банов и встроенных механизмов блокировок в MyChat.
Пример
function OnUserLogin(iCID, iLoginUIN, iLoginState: integer; sLoginIP, sLoginMAC, sLoginHardwareID, sLoginCompName, sLoginVersion, sLoginDomain, sSessionID, sAuthService: string): boolean;
var
iHour: integer;
bFlag: boolean;
begin
bFlag := true;
iHour := strtoint(FormatDateTime('hh', Now));
if (iHour > 17) or (iHour < 8 ) then begin
if iLoginUIN <> 3 then bFlag := false;
end;
result := bFlag;
end;
begin
end.
Скрипт проверяет, в какое время подключается пользователь. Если это происходит не в рабочее время (с 8:00 до 17:00), пользователь автоматически отключается от сервера. Однако, если логинится администратор с UIN = 3, то система обязана его впустить, посколько этого пользователя такие ограничения не касаются.