| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #ifndef NE_SESSION_H |
| #define NE_SESSION_H 1 |
| |
| #include <sys/types.h> |
| |
| #include "ne_ssl.h" |
| #include "ne_uri.h" /* for ne_uri */ |
| #include "ne_defs.h" |
| #include "ne_socket.h" |
| |
| NE_BEGIN_DECLS |
| |
| typedef struct ne_session_s ne_session; |
| |
| |
| |
| |
| ne_session *ne_session_create(const char *scheme, |
| const char *hostname, unsigned int port); |
| |
| |
| void ne_session_destroy(ne_session *sess); |
| |
| |
| |
| void ne_close_connection(ne_session *sess); |
| |
| |
| |
| |
| void ne_session_proxy(ne_session *sess, |
| const char *hostname, unsigned int port); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| void ne_session_socks_proxy(ne_session *sess, enum ne_sock_sversion vers, |
| const char *hostname, unsigned int port, |
| const char *username, const char *password); |
| |
| |
| |
| |
| |
| |
| void ne_session_system_proxy(ne_session *sess, unsigned int flags); |
| |
| |
| typedef enum ne_session_flag_e { |
| NE_SESSFLAG_PERSIST = 0, |
| |
| |
| NE_SESSFLAG_ICYPROTO, |
| |
| |
| NE_SESSFLAG_SSLv2, |
| |
| |
| NE_SESSFLAG_RFC4918, |
| |
| |
| |
| |
| NE_SESSFLAG_CONNAUTH, |
| |
| |
| |
| NE_SESSFLAG_TLS_SNI, |
| |
| |
| NE_SESSFLAG_EXPECT100, |
| |
| |
| NE_SESSFLAG_LAST |
| } ne_session_flag; |
| |
| |
| void ne_set_session_flag(ne_session *sess, ne_session_flag flag, int value); |
| |
| |
| |
| int ne_get_session_flag(ne_session *sess, ne_session_flag flag); |
| |
| |
| |
| |
| |
| |
| |
| void ne_set_addrlist(ne_session *sess, const ne_inet_addr **addrs, size_t n); |
| |
| |
| |
| |
| |
| |
| |
| |
| void ne_set_addrlist2(ne_session *sess, unsigned int port, |
| const ne_inet_addr **addrs, size_t n); |
| |
| |
| |
| |
| |
| void ne_set_localaddr(ne_session *sess, const ne_inet_addr *addr); |
| |
| |
| typedef void (*ne_progress)(void *userdata, ne_off_t progress, ne_off_t total); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| void ne_set_progress(ne_session *sess, ne_progress progress, void *userdata); |
| |
| |
| |
| void ne_set_session_private(ne_session *sess, const char *id, void *priv); |
| void *ne_get_session_private(ne_session *sess, const char *id); |
| |
| |
| |
| |
| typedef enum { |
| ne_status_lookup = 0, |
| ne_status_connecting, |
| ne_status_connected, |
| ne_status_sending, |
| ne_status_recving, |
| ne_status_disconnected |
| } ne_session_status; |
| |
| |
| |
| |
| |
| typedef union ne_session_status_info_u { |
| struct { |
| |
| const char *hostname; |
| } lu; |
| struct { |
| |
| |
| const char *hostname; |
| const ne_inet_addr *address; |
| } ci; |
| struct { |
| |
| |
| const char *hostname; |
| } cd; |
| struct { |
| |
| |
| |
| |
| ne_off_t progress, total; |
| } sr; |
| } ne_session_status_info; |
| |
| |
| |
| |
| |
| typedef void (*ne_notify_status)(void *userdata, ne_session_status status, |
| const ne_session_status_info *info); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| void ne_set_notifier(ne_session *sess, ne_notify_status status, void *userdata); |
| |
| |
| |
| |
| #define NE_SSL_NOTYETVALID (0x01) |
| |
| |
| #define NE_SSL_EXPIRED (0x02) |
| |
| |
| |
| |
| #define NE_SSL_IDMISMATCH (0x04) |
| |
| |
| |
| |
| #define NE_SSL_UNTRUSTED (0x08) |
| |
| |
| |
| |
| |
| #define NE_SSL_BADCHAIN (0x10) |
| |
| |
| |
| |
| |
| #define NE_SSL_REVOKED (0x40) |
| |
| |
| |
| |
| |
| |
| #define NE_SSL_FAILMASK (0x5f) |
| |
| |
| |
| |
| |
| |
| |
| typedef int (*ne_ssl_verify_fn)(void *userdata, int failures, |
| const ne_ssl_certificate *cert); |
| |
| |
| |
| |
| void ne_ssl_set_verify(ne_session *sess, ne_ssl_verify_fn fn, void *userdata); |
| |
| |
| |
| |
| |
| void ne_ssl_set_clicert(ne_session *sess, const ne_ssl_client_cert *clicert); |
| |
| |
| |
| |
| void ne_ssl_trust_cert(ne_session *sess, const ne_ssl_certificate *cert); |
| |
| |
| |
| void ne_ssl_trust_default_ca(ne_session *sess); |
| |
| |
| |
| |
| |
| |
| typedef void (*ne_ssl_provide_fn)(void *userdata, ne_session *sess, |
| const ne_ssl_dname *const *dnames, |
| int dncount); |
| |
| |
| |
| void ne_ssl_provide_clicert(ne_session *sess, |
| ne_ssl_provide_fn fn, void *userdata); |
| |
| |
| |
| void ne_set_read_timeout(ne_session *sess, int timeout); |
| |
| |
| |
| void ne_set_connect_timeout(ne_session *sess, int timeout); |
| |
| |
| |
| |
| |
| |
| |
| |
| void ne_set_useragent(ne_session *sess, const char *product); |
| |
| |
| |
| int ne_version_pre_http11(ne_session *sess); |
| |
| |
| |
| const char *ne_get_server_hostport(ne_session *sess); |
| |
| |
| |
| const char *ne_get_scheme(ne_session *sess); |
| |
| |
| |
| |
| |
| void ne_fill_server_uri(ne_session *sess, ne_uri *uri); |
| |
| |
| |
| |
| |
| |
| |
| void ne_fill_proxy_uri(ne_session *sess, ne_uri *uri); |
| |
| |
| |
| void ne_set_error(ne_session *sess, const char *format, ...) |
| ne_attribute((format (printf, 2, 3))); |
| |
| |
| const char *ne_get_error(ne_session *sess); |
| |
| NE_END_DECLS |
| |
| #endif /* NE_SESSION_H */ |