Histórico da Página
Pagetitle | ||||
---|---|---|---|---|
|
A função de validação de clientes RPC deverá ter 3 (três) strings de caracteres como argumentos, definindo o IP do cliente RPC, o nome da máquina do cliente RPC e o ambiente (environment) no servidor RPC onde a função está localizada, e deverá retornar um lógico, indicando o resultado da validação conforme definido no corpo da função.
Sintaxe
Bloco de código |
---|
function <ValidationFunction>(<cClientIP>, <cClientHostName>, <cServerEnv>) -> lResult |
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
<cClientIP> | Caractere | Endereço IP do cliente RPC. | X |
<cClientHostName> | Caractere | Nome da máquina (host name) do cliente RPC. | X |
<cServerEnv> | Caractere | Ambiente (environment) no servidor RPC onde a função está localizada. | X |
Retorno
Nome | Tipo | Descrição |
---|---|---|
lResult | Lógico | Retorna o resultado da validação do cliente RPC, conforme definido no corpo da função criada. |
Observações
Resultado da Função de Validação
Caso bem sucedida, a função de validação retorna o valor lógico resultante da validação do cliente RPC, definido pelo usuário no corpo da função de validação.
Caso mal sucedida, a função de validação retorna falso (.F.), o cliente RPC é considerado como não-válido e a mensagem de erro Invalid RPC Client... é retornada ao cliente e logada.
Exemplo
Exemplo da função de validação, nesse caso u_somefunc, que deve estar compilada no repositório do ambiente que vai atender as solicitações RPC.
Bloco de código |
---|
#include "TOTVS.CH"
// Função para verificar se o cliente pode executar funções via RPC no
// servidor.
User Function SomeFunc( _cClientIP, _cClientHostName, _cServerEnv )
Local cStatus := "NOT VALID"
Local lResult := .F.
Local cValidIP := "<client_ip>"
Local cValidHostName := "<client_host_name>"
Local cValidServerEnv := "<server_environment>"
If _cClientIP == cValidIP ;
.And. _cClientHostName == cValidHostName ;
.And. _cServerEnv == cValidServerEnv
// cliente pode executar tarefas via RPC neste servidor
cStatus := "VALID"
lResult := .T.
Else
// cliente não pode executar tarefas via RPC neste servidor
cStatus := "NOT VALID"
lResult := .F.
Endif
ConOut( "[INFO] Client is [" + cStatus ;
+ "] for RPC tasks - client IP [" + _cClientIP ;
+ "] - client host name [" + _cClientHostName ;
+ "] - server env [" + _cServerEnv ;
+ "]." )
return lResult |