ZOO-Project
Macros | Functions
server_internal.h File Reference
#include <libintl.h>
#include <locale.h>
#include "service.h"
#include <openssl/sha.h>
#include <openssl/md5.h>
#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <libxml/parser.h>
#include <libxml/xpath.h>

Go to the source code of this file.

Macros

#define IMPORTSERVICE   "include"
 
#define _(String)   dgettext ("zoo-kernel",String)
 ZOO-Kernel internal messages translation function. More...
 
#define _ss(String)   dgettext ("zoo-services",String)
 ZOO-Services messages translation function. More...
 

Functions

int conf_read (const char *, maps *)
 Parse the main.cfg file and fill the maps structure. More...
 
char * get_uuid ()
 Generate a UUID. More...
 
char * base64 (const char *, int)
 Base64 encoding of a char*. More...
 
char * base64d (const char *, int, int *)
 Base64 decoding of a char*. More...
 
void readBase64 (map **)
 Read Base64 value and split it value by lines of 64 char. More...
 
char * url_decode (char *)
 Decode an URLEncoded url. More...
 
int getVersionId (const char *)
 Detect WPS version used (1.0.0 or 2.0.0). More...
 
void readGeneratedFile (maps *, map *, char *)
 Read a file generated by a service. More...
 
int getServiceFromYAML (maps *, char *, service **, char *name)
 Read and parse a ZCFG file in YAML format. More...
 
char * addDefaultValues (maps **, elements *, maps *, int, map **)
 Add the default values defined in the zcfg to a maps. More...
 
char * getEncoding (maps *)
 Access the value of the encoding key in a maps. More...
 
void parseIdentifier (maps *, char *, char *, char *)
 Extract the service identifier from the full service identifier ie: More...
 
void dumpMapsValuesToFiles (maps **, maps **)
 Dump all values in a maps as files. More...
 
void runDismiss (maps *, char *)
 Run Dismiss requests. More...
 
int isRunning (maps *, char *)
 Check if a service is running. More...
 
void runGetStatus (maps **, char *, char *)
 Run GetStatus requests. More...
 
void readFinalRes (maps *, char *, map *)
 Read the Result file (.res). More...
 
int isValidLang (maps *, const char *)
 Verify if a given language is listed in the lang list defined in the [main] section of the main.cfg file. More...
 
char * getLastErrorMessage ()
 Access the last error message returned by the OS when trying to dynamically load a shared library. More...
 
int readServiceFile (maps *, char *, service **, char *)
 Parse the service file using getServiceFromFile or use getServiceFromYAML if YAML support was activated. More...
 
int createRegistry (maps *, registry **, char *)
 Create the profile registry. More...
 
char * produceErrorMessage (maps *)
 Create a string containing the basic error message. More...
 
int zoo_path_compare (char *path1, char *path2)
 
int getServicesNamespacePath (maps *, char *, char *, int)
 Checks if the zooServicesNamespace map is present in the main map; if it is, the path to the directory where the ZOO-kernel should search for service providers will be updated. More...
 

Macro Definition Documentation

◆ _

#define _ (   String)    dgettext ("zoo-kernel",String)

ZOO-Kernel internal messages translation function.

◆ _ss

#define _ss (   String)    dgettext ("zoo-services",String)

ZOO-Services messages translation function.

◆ IMPORTSERVICE

#define IMPORTSERVICE   "include"

Function Documentation

◆ addDefaultValues()

char* addDefaultValues ( maps **  out,
elements in,
maps m,
int  type,
map **  err 
)

Add the default values defined in the zcfg to a maps.

Parameters
outthe maps containing the inputs or outputs given in the initial HTTP request
inthe description of all inputs or outputs available for a service
mthe maps containing the settings of the main.cfg file
type0 for inputs and 1 for outputs
errthe map to store potential missing mandatory input parameters or wrong output names depending on the type.
Returns
"" if no error was detected, the name of last input or output causing an error.

In case of an Input maps, then add the minOccurs and maxOccurs to the content map.

Parsing BoundingBoxData, fill the following map and then add it to the content map of the Input maps: lowerCorner, upperCorner, srs and dimensions cf. parseBoundingBox

◆ base64()

char* base64 ( const char *  input,
int  length 
)

Base64 encoding of a char*.

Parameters
inputthe value to encode
lengththe value length
Returns
the buffer containing the base64 value
Warning
make sure to free the returned value

◆ base64d()

char* base64d ( const char *  input,
int  length,
int *  red 
)

Base64 decoding of a char*.

Parameters
inputthe value to decode
lengththe value length
redthe value length
Returns
the buffer containing the base64 value
Warning
make sure to free the returned value

◆ conf_read()

int conf_read ( const char *  file,
maps my_map 
)

Parse the main.cfg file and fill the maps structure.

Parameters
filethe filename to parse
my_mapthe maps structure to fill

◆ createRegistry()

int createRegistry ( maps m,
registry **  r,
char *  reg_dir 
)

Create the profile registry.

The profile registry is optional (created only if the registry key is available in the [main] section of the main.cfg file) and can be used to store the profiles hierarchy. The registry is a directory which should contain the following sub-directories:

  • concept: direcotry containing .html files describing concept
  • generic: directory containing .zcfg files for wps:GenericProcess
  • implementation: directory containing .zcfg files for wps:Process
Parameters
mthe conf maps containing the main.cfg settings
rthe registry to update
reg_dirthe resgitry
Returns
0 if the resgitry is null or was correctly updated, -1 on failure

◆ dumpMapsValuesToFiles()

void dumpMapsValuesToFiles ( maps **  main_conf,
maps **  in 
)

Dump all values in a maps as files.

Parameters
main_confthe maps containing the settings of the main.cfg file
inthe maps containing values to dump as files

◆ get_uuid()

char* get_uuid ( )

Generate a UUID.

ref: https://www.ietf.org/rfc/rfc4122.txt / 4.2

Returns
a new char* containing the UUID, make sure to free the returned resource once used.

◆ getEncoding()

char* getEncoding ( maps m)

Access the value of the encoding key in a maps.

Parameters
mthe maps to search for the encoding key
Returns
the value of the encoding key in a maps if encoding key exists, "UTF-8" in other case.

◆ getLastErrorMessage()

char* getLastErrorMessage ( )

Access the last error message returned by the OS when trying to dynamically load a shared library.

Returns
the last error message
Warning
The character string returned from getLastErrorMessage resides in a static buffer. The application should not write to this buffer or attempt to free() it.

◆ getServiceFromYAML()

int getServiceFromYAML ( maps conf,
char *  file,
service **  service,
char *  name 
)

Read and parse a ZCFG file in YAML format.

Parameters
confthe conf maps containing the main.cfg settings
filethe file name to read
servicethe service structure to fill
namethe service name
Returns
1 on success, -1 if error occurred

◆ getServicesNamespacePath()

int getServicesNamespacePath ( maps pmsConf,
char *  oldPath,
char *  newPath,
int  maxSize 
)

Checks if the zooServicesNamespace map is present in the main map; if it is, the path to the directory where the ZOO-kernel should search for service providers will be updated.

Parameters
pmsConfthe conf maps containing the main.cfg settings
oldPathdefault location where the ZOO-kernel should search for service providers
newPathlocation where the ZOO-kernel should search for service providers considering the namespace
maxSizemaximum number of bytes to be used in the newPath buffer.

◆ getVersionId()

int getVersionId ( const char *  version)

Detect WPS version used (1.0.0 or 2.0.0).

Parameters
versionnumber as char* (1.0.0 or 2.0.0)
Returns
0 in case of version 1.0.0, 1 for 2.0.0, -1 in other case

◆ isRunning()

int isRunning ( maps conf,
char *  pid 
)

Check if a service is running.

Parameters
confthe maps containing the setting of the main.cfg file
pidthe unique service identifier (usid from the lenv section)
Returns
1 in case the service is still running, 0 otherwise

◆ isValidLang()

int isValidLang ( maps conf,
const char *  str 
)

Verify if a given language is listed in the lang list defined in the [main] section of the main.cfg file.

Parameters
confthe map containing the settings from the main.cfg file
strthe specific language
Returns
1 if the specific language is listed, -1 in other case.

◆ parseIdentifier()

void parseIdentifier ( maps conf,
char *  conf_dir,
char *  identifier,
char *  buffer 
)

Extract the service identifier from the full service identifier ie:

  • Full service name: OTB.BandMath
  • Service name: BandMath
Parameters
confthe maps containing the settings of the main.cfg file
conf_dirthe full path to the ZOO-Kernel directory
identifierthe full service name (potentialy including a prefix, ie: Prefix.MyService)
bufferthe resulting service identifier (without any prefix)

◆ produceErrorMessage()

char* produceErrorMessage ( maps pmsConf)

Create a string containing the basic error message.

Parameters
pmsConfthe main configuration maps pointer
Returns
a new char* containing the error message (ressource should be freed)

◆ readBase64()

void readBase64 ( map **  in)

Read Base64 value and split it value by lines of 64 char.

Parameters
inthe map containing the value to split

◆ readFinalRes()

void readFinalRes ( maps conf,
char *  pid,
map statusInfo 
)

Read the Result file (.res).

Parameters
confthe maps containing the setting of the main.cfg file
pidthe service identifier (usid key from the [lenv] section)

◆ readGeneratedFile()

void readGeneratedFile ( maps m,
map content,
char *  filename 
)

Read a file generated by a service.

Parameters
mthe conf maps
contentthe output item
filenamethe file to read

◆ readServiceFile()

int readServiceFile ( maps pmsConf,
char *  file,
service **  service,
char *  name 
)

Parse the service file using getServiceFromFile or use getServiceFromYAML if YAML support was activated.

Parameters
pmsConfthe conf maps containing the main.cfg settings
filethe file name to parse
servicethe service to update witht the file content
namethe service name
Returns
true if the file can be parsed or false
See also
getServiceFromFile, getServiceFromYAML

◆ runDismiss()

void runDismiss ( maps pmsConf,
char *  pid 
)

Run Dismiss requests.

Parameters
pmsConfthe maps containing the setting of the main.cfg file
pidthe service identifier (usid key from the [lenv] section)

◆ runGetStatus()

void runGetStatus ( maps **  ppmsConf,
char *  pid,
char *  req 
)

Run GetStatus requests.

Specifically for the OGC API - Processes - Part 1 - Core support, in case something wrong happens, the conf maps will get in the lenv section the following fields:

  • error: "true", indicating that something went wrong
  • code: the OGC error code (such as NoSuchJob)
  • message: the error message o be reported
Parameters
confthe maps containing the setting of the main.cfg file
pidthe service identifier (usid key from the [lenv] section)
reqthe request (GetStatus / GetResult)

◆ url_decode()

char* url_decode ( char *  str)

Decode an URLEncoded url.

Parameters
strthe URLEncoded url to decode
Returns
a url-decoded version of str
Warning
be sure to free() the returned string after use

◆ zoo_path_compare()

int zoo_path_compare ( char *  path1,
char *  path2 
)