1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
#ifndef ZABBIX_CURL_H
#define ZABBIX_CURL_H
#include "zbxcommon.h"
#ifdef HAVE_LIBCURL
#define ZBX_CURLOPT_MAXREDIRS 10L
/* Currently required cURL library version is 7.19.1 (see configure.ac). When */
/* it is increased there all the following functionality must be revised. */
/* added in 7.20.0 (0x071400) */
#if LIBCURL_VERSION_NUM < 0x071400
# define CURLOPT_MAIL_FROM 186L
# define CURLOPT_MAIL_RCPT 187L
#endif
/* renamed in 7.21.6 */
#if LIBCURL_VERSION_NUM < 0x071501
# define CURLOPT_ACCEPT_ENCODING CURLOPT_ENCODING
#endif
/* curl_multi_wait() was added in cURL 7.28.0 (0x071c00). Since we support cURL library >= 7.19.1 */
/* we want to be able to compile against older cURL library. This is a wrapper that detects if the */
/* function is available at runtime. It should never be called for older library versions because */
/* detect the version before. When cURL library requirement goes to >= 7.28.0 this function should */
/* be removed and curl_multi_wait() be used directly. */
CURLMcode zbx_curl_multi_wait(CURLM *multi_handle, int timeout_ms, int *numfds);
/* added in 7.33.0 (0x072100) */
#if LIBCURL_VERSION_NUM < 0x072100
# define CURLOPT_XOAUTH2_BEARER 220L
#endif
/* added in 7.38.0 (0x072600) */
#if LIBCURL_VERSION_NUM < 0x072600
# define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2)
#endif
/* added in 7.55.0 (0x073700) */
#if LIBCURL_VERSION_NUM < 0x073700
# define CURLINFO_SPEED_DOWNLOAD_T CURLINFO_SPEED_DOWNLOAD
# define curl_off_t double
#endif
/* added in 7.61.0 (0x073d00) */
#if LIBCURL_VERSION_NUM < 0x073d00
# define CURLAUTH_BEARER (((unsigned long)1)<<6)
#endif
/* this is a wrapper for curl_easy_header() that was added in cURL 7.83.0 (0x075300) */
const char *zbx_curl_content_type(CURL *easyhandle);
int zbx_curl_protocol(const char *protocol, char **error);
int zbx_curl_setopt_https(CURL *easyhandle, char **error);
int zbx_curl_setopt_smtps(CURL *easyhandle, char **error);
int zbx_curl_setopt_ssl_version(CURL *easyhandle, char **error);
int zbx_curl_has_ssl(char **error);
int zbx_curl_has_bearer(char **error);
int zbx_curl_has_smtp_auth(char **error);
int zbx_curl_good_for_elasticsearch(char **error);
#endif /* HAVE_LIBCURL */
#endif /* ZABBIX_CURL_H */
|