プロジェクト

全般

プロフィール

操作問い合わせ #3805 » ZabbixApi.php

保守サポート 担当373, 2026/08/12 14:55

 
<?php
/*
** Job Arranger Manager
** Copyright (C) 2023 Daiwa Institute of Research Ltd. All Rights Reserved.
**
** Licensed to the Apache Software Foundation (ASF) under one or more
** contributor license agreements. See the NOTICE file distributed with
** this work for additional information regarding copyright ownership.
** The ASF licenses this file to you under the Apache License, Version 2.0
** (the "License"); you may not use this file except in compliance with
** the License. You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
**
**/

namespace App\Controllers\Api;

use App\Utils\Constants;
use App\Utils\Core;

/**
* This controller is used to manage zabbix api request.
*
* @version 6.1.0
* @since Class available since version 6.1.0
*/
class ZabbixApi
{
/**
* It requests host,item and trigger info for zabbix linkage icon.
*
* @param string $method could be method name
* @param array $params
* @return string|bool $result could be string if success,could be bool if fail
* @since Method available since version 6.1.0
*/

private $logger;

public static function RequestApi($method, $params)
{


$url = ZBX_API_ROOT . Constants::ZBX_MAIN_END_POINT;
$sslVerificationFlag = SSL_VERIFICATION == 1;
$payload = json_encode(array(
'jsonrpc' => '2.0',
'method' => $method,
'params' => $params,
'auth' => $_SESSION['userInfo']['sessionId'],
'id' => 1
));

$options = [
'http' => [
'header' => "Content-Type: application/json\r\n",
'method' => 'POST',
'content' => $payload,
],
'ssl' => [
'verify_peer' => $sslVerificationFlag,
'verify_peer_name' => $sslVerificationFlag,
],
];

$context = stream_context_create($options);

// Perform the HTTP request and get the response
$result = file_get_contents($url, false, $context);

return $result;
}


public static function GetUserGroup($sessionId, $userId)
{
// Get logger from Core
Core::logger()->info("#3805 userId in GetUserGroup : ". print_r($userId, true));
Core::logger()->info("#3805 sessionId in GetUserGroup : ". print_r($sessionId, true));

$url = ZBX_API_ROOT . Constants::ZBX_MAIN_END_POINT;
Core::logger()->info("#3805 url in GetUserGroup : ". print_r($url, true));

$sslVerificationFlag = SSL_VERIFICATION == 1;
Core::logger()->info("#3805 sslVerificationFlag in GetUserGroup : ". print_r($sslVerificationFlag, true));

$payload = json_encode(array(
'jsonrpc' => '2.0',
'method' => 'usergroup.get',
'params' => [
'output' => 'extend',
'status' => 0,
'userids' => $userId
],
'id' => 1,
'auth' => $sessionId
));
Core::logger()->info("#3805 payload : ". print_r($payload, true));

$options = [
'http' => [
'header' => "Content-Type: application/json\r\n",
'method' => 'POST',
'content' => $payload,
],
'ssl' => [
'verify_peer' => $sslVerificationFlag,
'verify_peer_name' => $sslVerificationFlag,
],
];
Core::logger()->info("#3805 options in GetUserGroup : ". print_r($options, true));

$context = stream_context_create($options);
Core::logger()->info("#3805 context in GetUserGroup : ". print_r($context, true));

// Perform the HTTP request and get the response
$result = file_get_contents($url, false, $context);
Core::logger()->info("#3805 result in GetUserGroup : ". print_r($result, true));

return $result;
}
}
(19-19/21)