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