SOUND4 IMPACT.CL Library [1.3.12]
Loading...
Searching...
No Matches
Macros | Functions
Web server

Web server configuring. More...

Macros

#define SOUND4_INVALID_WEBSERVER_ID   ((uint64_t)-1)
 
#define SOUND4_WEBSERVER_HTTP_OK   (1<<0)
 
#define SOUND4_WEBSERVER_HTTPS_OK   (1<<1)
 

Functions

uint64_t impact_Webserver_tcp (unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port)
 
uint64_t impact_Webserver_tcp2 (unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct impact_CParameters *parameters)
 
uint64_t impact_Webserver (unsigned int listenport, unsigned int listenport_secure, struct impact_CInstance *instance)
 
int impact_Webserver_Stop (uint64_t id, int timeout_ms)
 
int impact_Webserver_Status (uint64_t id)
 
void impact_Webserver_SetAppHealth (struct impact_CInstance *instance, int httpcode, const char *contenttype, const char *content)
 
void impact_Webserver_GetAppHealth (struct impact_CInstance *instance, int *httpcode, char **contenttype, char **content)
 
void impact_Webserver_FreeString (char *str)
 

Detailed Description

Run a web server to configure the processor

The web server also expose /health which should always answer 200.

The web server also expose /licvalid which should answer 200 when license is valid, 402 when it is not valid, other standard code for other errors.

You can also use /livalid/[module] (where [module] is the name of a module) to check for validity of the [module] extension in the same way. For instance '/livalid/stream' will check the stream extension.

See also how to setup authentication with Environment variables and parameters. Their use is documented in impact_InitProcess3.

Macro Definition Documentation

◆ SOUND4_INVALID_WEBSERVER_ID

#define SOUND4_INVALID_WEBSERVER_ID   ((uint64_t)-1)

This represents an invalid webserver id impact_Webserver and impact_Webserver_tcp will never return this value

Definition at line 1266 of file sound4.impact.cl.h.

◆ SOUND4_WEBSERVER_HTTP_OK

#define SOUND4_WEBSERVER_HTTP_OK   (1<<0)

If this bit is set in the return value from impact_Webserver_Status, then HTTP server is OK

Definition at line 1271 of file sound4.impact.cl.h.

◆ SOUND4_WEBSERVER_HTTPS_OK

#define SOUND4_WEBSERVER_HTTPS_OK   (1<<1)

If this bit is set in the return value from impact_Webserver_Status, then HTTPS server is OK

Definition at line 1275 of file sound4.impact.cl.h.

Function Documentation

◆ impact_Webserver()

uint64_t impact_Webserver ( unsigned int  listenport,
unsigned int  listenport_secure,
struct impact_CInstance instance 
)

Run a web server, connecting to local instance internally (no expose port needed)

This function returns after connecting to the process, and continue to run in background See impact_Webserver_Stop too stop it gracefully

For secure connection, it will use privatekey.pem and certificate.pem from current directory. Environment variables SSL_PRIVATE_PATH and SSL_CERTIFICATE_PATH can override those (see Environment variables and parameters). If none is valid, it will try also /etc/ssl/certs/server.key and /etc/ssl/certs/server.crt.

Warning
On Windows, calling this from Go<1.20 code will crash.
Parameters
listenportThe port to listen for HTTP connections (0 to disable)
listenport_secureThe port to listen for HTTPS connections (0 to disable)
instanceThe process instance to connect to
Returns
id of webserver (starting at 0), to use with impact_Webserver_Stop

◆ impact_Webserver_FreeString()

void impact_Webserver_FreeString ( char *  str)

Free a a string returned by impact_Webserver_GetAppHealth

Parameters
strthe string to free

◆ impact_Webserver_GetAppHealth()

void impact_Webserver_GetAppHealth ( struct impact_CInstance instance,
int *  httpcode,
char **  contenttype,
char **  content 
)

Get the current web server /apphealth returned http code,content-type and content

Parameters
instanceThe process instance
httpcodeThe http code pointer
contenttypeThe http Content-Type header pointer (to be freed with impact_Webserver_FreeString)
contentThe http body content pointer (to be freed with impact_Webserver_FreeString)

◆ impact_Webserver_SetAppHealth()

void impact_Webserver_SetAppHealth ( struct impact_CInstance instance,
int  httpcode,
const char *  contenttype,
const char *  content 
)

Set the web server /apphealth status info

The hosting application can use this to customize the handling of /apphealth path.

Parameters
instanceThe process instance
httpcodeThe http code
contenttypeThe http Content-Type header
contentThe http body content

◆ impact_Webserver_Status()

int impact_Webserver_Status ( uint64_t  id)

Get the web server status

Warning
On Windows, calling this from Go<1.20 code will crash.
Parameters
idThe web server Id, returned by impact_Webserver_tcp or impact_Webserver
Returns
a combinaison of SOUND4_WEBSERVER_HTTP_OK and SOUND4_WEBSERVER_HTTPS_OK depending on the server status

◆ impact_Webserver_Stop()

int impact_Webserver_Stop ( uint64_t  id,
int  timeout_ms 
)

Stop a web server started with impact_Webserver_tcp

Warning
On Windows, calling this from Go<1.20 code will crash.
Parameters
idThe web server Id, returned by impact_Webserver_tcp or impact_Webserver
timeout_msThe timeout to wait gracefull shutdown
Returns
0 if succeed, -1 if the id is not found

◆ impact_Webserver_tcp()

uint64_t impact_Webserver_tcp ( unsigned int  listenport,
unsigned int  listenport_secure,
const char *  socket_ip,
unsigned int  socket_port 
)

Run a web server, connecting to process with JSON over TCP

Same as impact_Webserver_tcp2, but with default parameters (from env)

Deprecated:
Use impact_Webserver_tcp2

◆ impact_Webserver_tcp2()

uint64_t impact_Webserver_tcp2 ( unsigned int  listenport,
unsigned int  listenport_secure,
const char *  socket_ip,
unsigned int  socket_port,
const struct impact_CParameters parameters 
)

Run a web server, connecting to process with JSON over TCP, using parameters

This function returns after connecting to the process, and continue to run in background See impact_Webserver_Stop too stop it gracefully

For secure connection, it will use privatekey.pem and certificate.pem from current directory. Environment variables SSL_PRIVATE_PATH and SSL_CERTIFICATE_PATH can override those (see Environment variables and parameters). If none is valid, it will try also /etc/ssl/certs/server.key and /etc/ssl/certs/server.crt.

Warning
On Windows, calling this from Go<1.20 code will crash.
Parameters
listenportThe port to listen for HTTP connections
listenport_secureThe port to listen for HTTPS connections
socket_ipThe ip of the process to connect to
socket_portThe port of the process's JSON server to connect to
parametersThe parameters to use, created with impact_NewParameters
Returns
id of webserver (starting at 0), to use with impact_Webserver_Stop