gwenhywfar  5.11.1beta
Macros | Typedefs
httpsession.h File Reference
#include <gwenhywfar/inherit.h>
#include <gwenhywfar/url.h>
#include <gwenhywfar/buffer.h>
#include <gwenhywfar/syncio.h>
#include <gwenhywfar/inetsocket.h>

Go to the source code of this file.

Macros

#define GWEN_HTTP_SESSION_FLAGS_FORCE_SSL3   0x00000001 /* deprecated, will be removed in a future release */
 
#define GWEN_HTTP_SESSION_FLAGS_NO_CACHE   0x00000002
 
#define GWEN_HTTP_SESSION_FLAGS_PASSIVE   0x00000020 /* server session */
 
#define GWEN_HTTP_SESSION_FLAGS_TLS_FORCE_UNSAFE_CIPHERS   0x00000008 /* deprecated, will be removed in a future release */
 
#define GWEN_HTTP_SESSION_FLAGS_TLS_IGN_PREMATURE_CLOSE   0x00000010
 
#define GWEN_HTTP_SESSION_FLAGS_TLS_ONLY_SAFE_CIPHERS   0x00000004 /* deprecated, will be removed in a future release */
 

Typedefs

typedef struct GWEN_HTTP_SESSION GWEN_HTTP_SESSION
 

Functions

Contructor/Destructor
GWENHYWFAR_API void GWEN_HttpSession_Attach (GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API void GWEN_HttpSession_free (GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API GWEN_HTTP_SESSIONGWEN_HttpSession_fromSocketPassive (GWEN_SOCKET *sk, const char *proto, int port)
 
GWENHYWFAR_API GWEN_HTTP_SESSIONGWEN_HttpSession_fromSyncIoPassive (GWEN_SYNCIO *sio)
 
GWENHYWFAR_API GWEN_HTTP_SESSIONGWEN_HttpSession_new (const char *url, const char *defaultProto, int defaultPort)
 
HTTP Setup Functions

Functions of this groups should be called before GWEN_HttpSession_Init because the information conveyed via these functions is needed upon initialisation.

GWENHYWFAR_API void GWEN_HttpSession_AddFlags (GWEN_HTTP_SESSION *sess, uint32_t fl)
 
GWENHYWFAR_API uint32_t GWEN_HttpSession_GetFlags (const GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API const char * GWEN_HttpSession_GetHttpContentType (const GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API const char * GWEN_HttpSession_GetHttpUserAgent (const GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API int GWEN_HttpSession_GetHttpVMajor (const GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API int GWEN_HttpSession_GetHttpVMinor (const GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API void GWEN_HttpSession_SetFlags (GWEN_HTTP_SESSION *sess, uint32_t fl)
 
GWENHYWFAR_API void GWEN_HttpSession_SetHttpContentType (GWEN_HTTP_SESSION *sess, const char *s)
 
GWENHYWFAR_API void GWEN_HttpSession_SetHttpUserAgent (GWEN_HTTP_SESSION *sess, const char *s)
 
GWENHYWFAR_API void GWEN_HttpSession_SetHttpVMajor (GWEN_HTTP_SESSION *sess, int i)
 
GWENHYWFAR_API void GWEN_HttpSession_SetHttpVMinor (GWEN_HTTP_SESSION *sess, int i)
 
GWENHYWFAR_API void GWEN_HttpSession_SubFlags (GWEN_HTTP_SESSION *sess, uint32_t fl)
 
Initialisation and Deinitialisation
GWENHYWFAR_API int GWEN_HttpSession_Fini (GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API int GWEN_HttpSession_Init (GWEN_HTTP_SESSION *sess)
 
Client: Sending and Receiving
GWENHYWFAR_API int GWEN_HttpSession_ConnectionTest (GWEN_HTTP_SESSION *sess)
 
GWENHYWFAR_API int GWEN_HttpSession_RecvPacket (GWEN_HTTP_SESSION *sess, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_HttpSession_RecvPacketToFile (GWEN_HTTP_SESSION *sess, const char *fname)
 
GWENHYWFAR_API int GWEN_HttpSession_SendPacket (GWEN_HTTP_SESSION *sess, const char *httpCommand, const uint8_t *buf, uint32_t blen)
 
Server: Sending and Receiving
GWENHYWFAR_API int GWEN_HttpSession_RecvCommand (GWEN_HTTP_SESSION *sess, GWEN_DB_NODE *dbCommandAndHeader, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_HttpSession_SendStatus (GWEN_HTTP_SESSION *sess, int resultCode, const char *resultText, const uint8_t *buf, uint32_t blen)
 

SyncIO Initialisation

After creating a connection layer (consisting of a chain of GWEN_SYNCIO's) this callback is called. AqBanking uses it to set the TLS-cert-checking callback for the TLS syncio part (GWEN_SyncIo_Tls_SetCheckCertFn), so whenever a TLS connection is established and a certificate received, that function is called.

typedef int GWENHYWFAR_CB(* GWEN_HTTPSESSION_INITSYNCIO_FN) (GWEN_HTTP_SESSION *sess, GWEN_SYNCIO *sio)
 
GWENHYWFAR_API GWEN_HTTPSESSION_INITSYNCIO_FN GWEN_HttpSession_SetInitSyncIoFn (GWEN_HTTP_SESSION *sess, GWEN_HTTPSESSION_INITSYNCIO_FN f)
 

Macro Definition Documentation

◆ GWEN_HTTP_SESSION_FLAGS_FORCE_SSL3

#define GWEN_HTTP_SESSION_FLAGS_FORCE_SSL3   0x00000001 /* deprecated, will be removed in a future release */

This flag forces SSLv3 connections when in HTTPS mode.

Definition at line 39 of file httpsession.h.

◆ GWEN_HTTP_SESSION_FLAGS_NO_CACHE

#define GWEN_HTTP_SESSION_FLAGS_NO_CACHE   0x00000002

Definition at line 41 of file httpsession.h.

◆ GWEN_HTTP_SESSION_FLAGS_PASSIVE

#define GWEN_HTTP_SESSION_FLAGS_PASSIVE   0x00000020 /* server session */

Definition at line 49 of file httpsession.h.

◆ GWEN_HTTP_SESSION_FLAGS_TLS_FORCE_UNSAFE_CIPHERS

#define GWEN_HTTP_SESSION_FLAGS_TLS_FORCE_UNSAFE_CIPHERS   0x00000008 /* deprecated, will be removed in a future release */

Definition at line 44 of file httpsession.h.

◆ GWEN_HTTP_SESSION_FLAGS_TLS_IGN_PREMATURE_CLOSE

#define GWEN_HTTP_SESSION_FLAGS_TLS_IGN_PREMATURE_CLOSE   0x00000010

Definition at line 47 of file httpsession.h.

◆ GWEN_HTTP_SESSION_FLAGS_TLS_ONLY_SAFE_CIPHERS

#define GWEN_HTTP_SESSION_FLAGS_TLS_ONLY_SAFE_CIPHERS   0x00000004 /* deprecated, will be removed in a future release */

Definition at line 43 of file httpsession.h.

Typedef Documentation

◆ GWEN_HTTP_SESSION

Definition at line 1 of file httpsession.h.

◆ GWEN_HTTPSESSION_INITSYNCIO_FN

typedef int GWENHYWFAR_CB(* GWEN_HTTPSESSION_INITSYNCIO_FN) (GWEN_HTTP_SESSION *sess, GWEN_SYNCIO *sio)

Definition at line 270 of file httpsession.h.

Function Documentation

◆ GWEN_HttpSession_AddFlags()

GWENHYWFAR_API void GWEN_HttpSession_AddFlags ( GWEN_HTTP_SESSION sess,
uint32_t  fl 
)

◆ GWEN_HttpSession_Attach()

GWENHYWFAR_API void GWEN_HttpSession_Attach ( GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_ConnectionTest()

GWENHYWFAR_API int GWEN_HttpSession_ConnectionTest ( GWEN_HTTP_SESSION sess)

Test-connect to the server. This function can be used to retrieve the SSL certificate from a server as the cert exchange is part of the establishing of a connection. This function connects to the server and immediately disconnects.

◆ GWEN_HttpSession_Fini()

GWENHYWFAR_API int GWEN_HttpSession_Fini ( GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_free()

GWENHYWFAR_API void GWEN_HttpSession_free ( GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_fromSocketPassive()

GWENHYWFAR_API GWEN_HTTP_SESSION* GWEN_HttpSession_fromSocketPassive ( GWEN_SOCKET sk,
const char *  proto,
int  port 
)

Create a server HTTP session using the given socket.

The caller is responsible for freeing the object returned (if any).

Returns
session object (NULL on error)
Parameters
sksocket (received via GWEN_Socket_Accept), taken over
protoprotocol used by this server session (either "http" or "https")
portport used by this server session (in ost cases 80 for HTTP, 443 for HTTPS)

◆ GWEN_HttpSession_fromSyncIoPassive()

GWENHYWFAR_API GWEN_HTTP_SESSION* GWEN_HttpSession_fromSyncIoPassive ( GWEN_SYNCIO sio)

Create a server HTTP session using the given syncio.

The caller is responsible for freeing the object returned (if any).

Returns
session object (NULL on error)
Parameters
siosynIo object, taken over

◆ GWEN_HttpSession_GetFlags()

GWENHYWFAR_API uint32_t GWEN_HttpSession_GetFlags ( const GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_GetHttpContentType()

GWENHYWFAR_API const char* GWEN_HttpSession_GetHttpContentType ( const GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_GetHttpUserAgent()

GWENHYWFAR_API const char* GWEN_HttpSession_GetHttpUserAgent ( const GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_GetHttpVMajor()

GWENHYWFAR_API int GWEN_HttpSession_GetHttpVMajor ( const GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_GetHttpVMinor()

GWENHYWFAR_API int GWEN_HttpSession_GetHttpVMinor ( const GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_Init()

GWENHYWFAR_API int GWEN_HttpSession_Init ( GWEN_HTTP_SESSION sess)

◆ GWEN_HttpSession_new()

GWENHYWFAR_API GWEN_HTTP_SESSION* GWEN_HttpSession_new ( const char *  url,
const char *  defaultProto,
int  defaultPort 
)

Create a client HTTP session (i.e. used to connect to a server).

The caller is responsible for freeing the object returned (if any).

Returns
session object (NULL on error)
Parameters
urlURL of the server to connect to later
defaultProtodefault protocol if not specified by the given url (e.g. "https")
defaultPortdefault TCP port if not specified by the given url

◆ GWEN_HttpSession_RecvCommand()

GWENHYWFAR_API int GWEN_HttpSession_RecvCommand ( GWEN_HTTP_SESSION sess,
GWEN_DB_NODE dbCommandAndHeader,
GWEN_BUFFER buf 
)

This function receives a command packet from a client.

Returns
HTTP result code if positive, error code if negative)
Parameters
sesspointer to session object
dbCommandAndHeaderon currect receiption a subgroup "command" is created which contains the command parameters receives and a subgroup "header" is created which contains the last HTTP header received
bufbuffer to receive possible HTTP body data

◆ GWEN_HttpSession_RecvPacket()

GWENHYWFAR_API int GWEN_HttpSession_RecvPacket ( GWEN_HTTP_SESSION sess,
GWEN_BUFFER buf 
)

This function receives a response packet from the server and closes the connection. It expects the connection to be established by GWEN_HttpSession_SendPacket().

◆ GWEN_HttpSession_RecvPacketToFile()

GWENHYWFAR_API int GWEN_HttpSession_RecvPacketToFile ( GWEN_HTTP_SESSION sess,
const char *  fname 
)

◆ GWEN_HttpSession_SendPacket()

GWENHYWFAR_API int GWEN_HttpSession_SendPacket ( GWEN_HTTP_SESSION sess,
const char *  httpCommand,
const uint8_t *  buf,
uint32_t  blen 
)

This function connects to the server and then sends the given message. The buffer given as argument to this function must only contain the raw data (i.e. the HTTP body, no header).

Parameters
sesshttp session object
httpCommandHTTP command to send (e.g. "GET", "POST")
bufpointer to the http body data to send
blensize of the http body data to send (might be 0)

◆ GWEN_HttpSession_SendStatus()

GWENHYWFAR_API int GWEN_HttpSession_SendStatus ( GWEN_HTTP_SESSION sess,
int  resultCode,
const char *  resultText,
const uint8_t *  buf,
uint32_t  blen 
)

This function sends the given response (only usable in PASSIVE mode, i.e. server mode) and closes the connection. The buffer given as argument to this function must only contain the raw data (i.e. the HTTP body, no header).

Parameters
sesshttp session object
resultCodeHTTP result code to send
resultTextHTTP result text to send
bufpointer to the http body data to send
blensize of the http body data to send (might be 0)

◆ GWEN_HttpSession_SetFlags()

GWENHYWFAR_API void GWEN_HttpSession_SetFlags ( GWEN_HTTP_SESSION sess,
uint32_t  fl 
)

◆ GWEN_HttpSession_SetHttpContentType()

GWENHYWFAR_API void GWEN_HttpSession_SetHttpContentType ( GWEN_HTTP_SESSION sess,
const char *  s 
)

◆ GWEN_HttpSession_SetHttpUserAgent()

GWENHYWFAR_API void GWEN_HttpSession_SetHttpUserAgent ( GWEN_HTTP_SESSION sess,
const char *  s 
)

◆ GWEN_HttpSession_SetHttpVMajor()

GWENHYWFAR_API void GWEN_HttpSession_SetHttpVMajor ( GWEN_HTTP_SESSION sess,
int  i 
)

◆ GWEN_HttpSession_SetHttpVMinor()

GWENHYWFAR_API void GWEN_HttpSession_SetHttpVMinor ( GWEN_HTTP_SESSION sess,
int  i 
)

◆ GWEN_HttpSession_SetInitSyncIoFn()

◆ GWEN_HttpSession_SubFlags()

GWENHYWFAR_API void GWEN_HttpSession_SubFlags ( GWEN_HTTP_SESSION sess,
uint32_t  fl 
)