Server



'  Ограничения демонстрационной версии:

'    1. Данные аутентификации клиента игнорируются - любой клиент может подключиться;

'    2. Порт и адрес, на которых принимаются входящие соединения нельзя изменить. По умолчанию "0.0.0.0:40404";

'    3. Максимальное кол-во одновременных подключений к серверу не более двух;

'    4. Событие OnRequestObject игнорируется и все запрошенные объекты отдаются клиенту.

 

 

'Определение обработчиков событий сервера:

 

'OnAuthentication вызывается, когда клиент подключается к серверу.

'Вы должны проверить в нем имя пользователя и пароль.

'Если вернуть в AIsOK True, то клиенту будет разрешено подключиться,

'иначе клиент получит ошибку "Ошибка подключения".

'ЗАМЕТЬТЕ: в демонстрационной версии результат этого события игнорируется

'и любой клиент имеет право на подключение. Будьте осторожны!

 

Function RPCServer_OnAuthentication(AUserName, APassword, ByRef AIsOK)

 

    WScript.Echo "RPCServer_OnAuthentication: " & AUserName & ", " & APassword

 

    If (AUserName = "RoutixUser") And (APassword = "Secret") Then

        AIsOK = True

    Else

        AIsOK = False

    End If

 

End Function

 

 

'OnRequestObject вызывается, когда подключенный клиент запрашивает

'объект, определенный аргументом AProgID. Если это событие

'возвращает NULL в аргументе AResult, значит объект будет

'создан автоматически при помощи системной функции CoCreateInstance

'и при удачном создании объект будет передан клиенту.

'Для запрета создания объекта, определенного аргументом AProgID вы

'должны вернуть строку с описанием ошибки, которую впоследствии

'получит вместо объекта клиент (на стороне клиента будет сгенерировано 

'исключение с указанной строкой).

'ЗАМЕТЬТЕ: в демонстрационной версии результат этого события

'игнорируется. Клиенту будет передан любой запрошенный объект!

'Также, поскольку это событие игнорируется, у вас нет возможности

'передать клиенту ваш внутренний объект, а только зарегистрированный

'в системе. Также у вас нет возможности контролировать запросы объектов!

'Будьте осторожны! В зарегистрированной версии этих ограничений нет!

 

Function RPCServer_OnRequestObject(AProgID, ByRef AResult)

    

    WScript.Echo "RPCServer_OnRequestObject: " & AProgID

    If (AProgID = "WScript.Shell") Then

      'Если вернуть NULL - RPC-сервер попытается создать объект

      'автоматически с помощью CoCreateInstance и вернуть его клиенту.

        AResult = NULL

    ElseIf (AProgID = "FSysObj") Then

        'также, проанализировав идентификатор объекта вы можете

        'самостоятельно создать нужный объект и вернуть его клиенту.

        Set AResult = WScript.CreateObject("Scripting.FileSystemObject")

    Else

        'Также вы можете запретить создавать какой-то объект(ы).

        'Для этого верните строку с описанием ошибки для клиента.

        AResult = "Доступ запрещен для объекта " & AProgID

    End If

 

End Function

 

 

'Создаем RPC-сервер и подключаем события

Set RPCServer = WScript.CreateObject("RoutixRPCCOM.Server", "RPCServer_")

 

 

'Запускаем сервер с указанием IP-адреса и порта, на которых ведется прием подключений

RPCServer.StartListen "0.0.0.0:40404"

 

 

Do While True

  WScript.Sleep 1000

Loop