Exemple #1
0
 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);
 }