UDP сервер авторизации |
|
Сервер авторизации работает по протоколу UDP, порт 999. Обращаться можно к любому IP адресу интерфейсов, сконфигурированных как внутренние. Также UDP сервер может быть сконфигурирован на обработку широковещательных сообщений запроса Discavery.
Описание протокола.
Для чисел более одного байта используется обратный формат - сначала идут младшие байты, потом старшие. Данные в описании структур должны быть упакованы, т.е выравнивание отключено!
Запрос Discavery имеет следующий формат -
( Pascal )
// Request:
TUAPacketHeader = packed record
PacketType: byte; // 8 - для обычного запроса, 9 - для широковещательного
Command: byte; // Для этого запроса = 0
DataLen: WORD; // Длина пакета в байтах ( = 4 для этого запроса)
end;
// Response:
TUAServerDiscaveryData = packed record
ServerIP: DWORD; // IP адрес сервера
HTTPProxy: WORD; // Порт прокси сервера
SocksProxy: WORD; // Порт SOCKS сервера
HTTP: WORD; // Порт WWW сервера
SSL: WORD; // Порт SSL сервера
RecomendedProtocol: byte; // Рекомендуемый сервером протокол. Соотв. настройке.
Reserved: array[1..3] of byte;
SSLHost: string[127]; // Имя хоста для SSL. Соотв. имени сервера в сертификате.
ServerVer: string[15]; // Версия программы.
end;
TUAServerDiscaveryResp = packed record
Header: TUAPacketHeader; // Заголовок пакета.
Data: TUAServerDiscaveryData;
end;
( C/C++ )
#pragma pack(push, 1)
// Request:
typedef struct _TUAPacketHeader
{
BYTE PacketType; // 8 - для обычного запроса, 9 - для широковещательного
BYTE Command; // Для этого запроса = 0
WORD DataLen; // Длина пакета в байтах ( = 4 для этого запроса)
} TUAPacketHeader;
// Response:
typedef struct _UAServerDiscaveryData
{
DWORD ServerIP; // IP адрес сервера
WORD HTTPProxy; // Порт прокси сервера
WORD SocksProxy; // Порт SOCKS сервера
WORD HTTP; // Порт WWW сервера
WORD SSL; // Порт SSL сервера
BYTE RecomendedProtocol; // Рекомендуемый сервером протокол. Соотв. настройке.
BYTE Reserved[3];
BYTE SSLHostLen;
CHAR SSLHos[127]; // Имя хоста для SSL. Соотв. имени сервера в сертификате.
BYTE ServerVerLen;
CHAR ServerVer[15]; // Версия программы.
} UAServerDiscaveryData;
typedef struct _TUAServerDiscaveryResp
{
TUAPacketHeader Header; // Заголовок пакета.
TUAServerDiscaveryData Data;
} TUAServerDiscaveryResp;
#pragma pack(pop)
Остальная часть протокола закрыта по соображениям безопасности. В полном обьеме использование его сторонними разработчиками возможно с помощью COM модуля агента (доступно только для Windows).
Текущая страница справки: help.smart-soft.ru/index.html?sdkagentudp.htm