public function __construct() { global $CFG_GLPI, $DB; // construct api url self::$api_url = trim($CFG_GLPI['url_base_api'], "/"); // Don't display error in result set_error_handler(array('Toolbox', 'userErrorHandlerNormal')); ini_set('display_errors', 'Off'); // Avoid keeping messages between api calls $_SESSION["MESSAGE_AFTER_REDIRECT"] = ''; // check if api is enabled if (!$CFG_GLPI['enable_api']) { $this->returnError(__("API disabled"), "", "", false); exit; } // retrieve ip of client $this->iptxt = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $this->ipnum = strstr($this->iptxt, ':') === false ? ip2long($this->iptxt) : ''; // check ip access $apiclient = new APIClient(); $where_ip = ""; if ($this->ipnum) { $where_ip .= " AND (`ipv4_range_start` IS NULL\n OR (`ipv4_range_start` <= '{$this->ipnum}'\n AND `ipv4_range_end` >= '{$this->ipnum}'))"; } else { $where_ip .= " AND (`ipv6` IS NULL\n OR `ipv6` = '" . $DB->escape($this->iptxt) . "')"; } $found_clients = $apiclient->find("`is_active` = '1' {$where_ip}"); if (count($found_clients) <= 0) { $this->returnError(__("There isn't an active api client matching your ip adress in the configuration") . " (" . $this->iptxt . ")", "", "ERROR_NOT_ALLOWED_IP", false); } $app_tokens = array_column($found_clients, 'app_token'); $apiclients_id = array_column($found_clients, 'id'); $this->app_tokens = array_combine($apiclients_id, $app_tokens); }