Integração Zabbix/Lazarus
Integrar o zabbix, com lazarus não é tarefa fácil.
Segue exemplo de código de integração:
function TdmBanco.CheckLogin(llogin: string; lsenha: string): boolean;
var
lRequestData, lResponseData: RawByteString;
jsonResponse: TJSONData;
LURL: string;
info : string;
begin
Result := False;
if (FURL <> '') then
begin
LURL := FURL + '/api_jsonrpc.php';
login := llogin;
senha := lsenha;
try
// Limpa headers existentes
lHTTP1.RequestHeaders.Clear;
// Adiciona parâmetros na header usando Add
lHTTP1.RequestHeaders.Add('Content-type:application/json');
info := '{"jsonrpc":"2.0","method":"user.login","params":{ "user":"'+llogin+'","password":"'+lsenha+'"},"auth":null,"id":0}';
// Cria o corpo da requisição no formato application/x-www-form-urlencoded
lHTTP1.RequestBody := TStringStream.Create(info );
// Realiza a solicitação POST e obtém a resposta como RawByteString
lRequestData := lHTTP1.Post(LURL);
// Captura os cookies da resposta
Fcookies := TStringList.Create;
// Processa a resposta JSON
jsonResponse := GetJSON(lRequestData);
Fcookies.Assign(lHTTP1.Cookies); // Assume que ResponseCookies armazena os cookies recebidos
// Armazena o cookie de autenticação
if jsonResponse.FindPath('result') <> nil then
begin
token := jsonResponse.FindPath('result').AsString ;
fid := jsonResponse.FindPath('id').AsString;
MessageHint('Autenticação realizada com sucesso!');
end
else
begin
token := '';
erro := 'Falha na autenticacao';
MessageHint(erro);
FflgErro:= true;
end;
if(jsonResponse.FindPath('erro') <> nil) then
begin
erro := jsonResponse.FindPath('erro').AsString;
FflgErro := true;
end;
if(token <> '') then
begin
Result := True;
end;
finally
jsonResponse.Free;
end;
end;
end;