ZOO-Project
|
#include <libintl.h>
#include <locale.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <stdio.h>
#include <time.h>
#include <ctype.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>
#include "cgic.h"
Go to the source code of this file.
Macros | |
#define | DEFAULT_SERVICE_URL "http://www.zoo-project.org/" |
The default service url (overriden by serverAddress) More... | |
#define | TIME_SIZE 40 |
The time size. More... | |
#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... | |
#define | ZOO_LOCK_CREATE_FAILED -4 |
ZOO-Kernel was unable to create a lock. More... | |
#define | ZOO_LOCK_ACQUIRE_FAILED -5 |
ZOO-Kernel was unable to acquire a lock. More... | |
#define | ZOO_LOCK_RELEASE_FAILED -6 |
ZOO-Kernel was unable to release a lock. More... | |
#define | ZOO_NS_MAX 10 |
Maximum number of XML namespaces. More... | |
#define | ZOO_DOC_MAX 20 |
Maximum number of XML docs. More... | |
Functions | |
void | addLangAttr (xmlNodePtr, maps *) |
Add a land attribute to a XML node. More... | |
void | printHeaders (maps *) |
Print the HTTP headers based on a map. More... | |
void | printSessionHeaders (maps *) |
Print the Set-Cookie header if necessary (conf["lenv"]["cookie"]) and save the session file. More... | |
int | zooXmlSearchForNs (const char *) |
Search for an existing XML namespace in usedNS. More... | |
int | zooXmlAddNs (xmlNodePtr, const char *, const char *) |
Add an XML namespace to the usedNS if it was not already used. More... | |
void | zooXmlCleanupNs () |
Free allocated memory to store used XML namespace. More... | |
int | zooXmlAddDoc (xmlNodePtr, const char *, const char *) |
void | zooXmlCleanupDocs () |
Free allocated memort to store XML documents. More... | |
const char * | produceStatusString (maps *, map *) |
Produce the status string used in HTTP headers. More... | |
void | printExceptionReportResponse (maps *, map *) |
Print an OWS ExceptionReport or exception.yaml Document and HTTP headers (when required) depending on the code. More... | |
xmlNodePtr | createExceptionReportNode (maps *, map *, int) |
Create an OWS ExceptionReport Node. More... | |
void | printProcessResponse (maps *, map *, int, service *, const char *, int, maps *, maps *) |
Generate a wps:Execute XML document. More... | |
xmlNodePtr | printWPSHeader (xmlDocPtr, maps *, const char *, const char *, const char *, int) |
Generate a WPS header. More... | |
xmlNodePtr | printGetCapabilitiesHeader (xmlDocPtr, maps *, const char *) |
Generate a Capabilities header. More... | |
void | printGetCapabilitiesForProcess (registry *, maps *, void *, void *, service *) |
Generate a wps:Process node for a servie and add it to a given node. More... | |
void | printDescribeProcessForProcess (registry *, maps *, void *, void *, service *) |
Generate a ProcessDescription node for a servie and add it to a given node. More... | |
void | printFullDescription (xmlDocPtr, int, elements *, const char *, xmlNsPtr, xmlNsPtr, xmlNodePtr, int, int, const map *) |
Generate the required XML tree for the detailled metadata information of inputs or outputs. More... | |
void | printDocument (maps *, xmlDocPtr, int) |
Print a XML document. More... | |
void | printDescription (xmlNodePtr, xmlNsPtr, const char *, map *, int) |
Create XML node with basic ows metadata information (Identifier,Title,Abstract) More... | |
void | printIOType (xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, xmlNsPtr, elements *, maps *, const char *, int) |
Generate XML nodes describing inputs or outputs metadata. More... | |
void * | printRawdataOutput (maps *, maps *) |
Print one outputs as raw. More... | |
map * | parseBoundingBox (const char *) |
Parse a BoundingBox string. More... | |
void | printBoundingBox (xmlNsPtr, xmlNodePtr, map *) |
Create required XML nodes for boundingbox and update the current XML node. More... | |
void | printBoundingBoxDocument (maps *, maps *, FILE *) |
Print an ows:BoundingBox XML document. More... | |
void | printOutputDefinitions (xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, elements *, maps *, const char *) |
Print a XML document. More... | |
void | printStatusInfo (maps *, map *, char *) |
Print a StatusInfo XML document. More... | |
void | addAdditionalParameters (map *, xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, int) |
Add AdditionalParameters nodes to any existing node. More... | |
void | addMetadata (map *, xmlDocPtr, xmlNodePtr, xmlNsPtr, xmlNsPtr, int) |
Add a Metadata node to any existing node. More... | |
char * | produceFileUrl (service *, maps *, maps *, const char *, int) |
Produce a copy file and the corresponding url in case it is required Please, free the returned ressource while used. More... | |
void | outputResponse (service *, maps *, maps *, map *, int, maps *, int) |
Generate the output response (RawDataOutput or ResponseDocument) More... | |
int | errorException (maps *, const char *, const char *, const char *) |
Print an OWS ExceptionReport. More... | |
xmlNodePtr | soapEnvelope (maps *, xmlNodePtr) |
Generate a SOAP Envelope node when required (if the isSoap key of the [main] section is set to true). More... | |
int | checkForSoapEnvelope (xmlDocPtr) |
Variables | |
static char * | SERVICE_URL |
Global char* to store the serverAddress value of the [main] section. More... | |
static xmlNsPtr | usedNs [ZOO_NS_MAX] |
Array of xmlNsPtr storing all used XML namespace. More... | |
static char * | nsName [ZOO_NS_MAX] |
Array storing names of the used XML namespace. More... | |
static int | nbNs =0 |
Number of XML namespaces. More... | |
static xmlDocPtr | iDocs [ZOO_DOC_MAX] |
Array of xmlDocPtr storing XML docs. More... | |
static int | nbDocs =0 |
Number of XML docs. More... | |
static char | wpsStatus [3][11] |
Definitions of acceptable final status. More... | |
static const char * | schemas [2][8] |
Definitions of schemas depending on the WPS version. More... | |
static int | nbSupportedRequests =7 |
Definitions of support requests (depending on the WPS version) More... | |
static const char * | requests [2][7] |
Definitions of requests depending on the WPS version. More... | |
static int | nbReqIdentifier =2 |
Definitions requests requiring identifier (depending on the WPS version) More... | |
static int | nbReqJob =3 |
Definitions requests requiring jobid (only for WPS version 2.0.0) More... | |
static const char * | root_nodes [2][4] |
Definitions of root node for response depending on the request and the WPS version. More... | |
static const char * | capabilities [2][7] |
Name and corresponding attributes depending on the WPS version. More... | |
static const char *const | aapccStatusCodes [][8] |
Macro Definition Documentation
#define _ | ( | String | ) | dgettext ("zoo-kernel",String) |
ZOO-Kernel internal messages translation function.
#define _ss | ( | String | ) | dgettext ("zoo-services",String) |
ZOO-Services messages translation function.
#define DEFAULT_SERVICE_URL "http://www.zoo-project.org/" |
The default service url (overriden by serverAddress)
#define TIME_SIZE 40 |
The time size.
#define ZOO_DOC_MAX 20 |
Maximum number of XML docs.
#define ZOO_LOCK_ACQUIRE_FAILED -5 |
ZOO-Kernel was unable to acquire a lock.
#define ZOO_LOCK_CREATE_FAILED -4 |
ZOO-Kernel was unable to create a lock.
#define ZOO_LOCK_RELEASE_FAILED -6 |
ZOO-Kernel was unable to release a lock.
#define ZOO_NS_MAX 10 |
Maximum number of XML namespaces.
Function Documentation
void addAdditionalParameters | ( | map * | meta, |
xmlDocPtr | doc, | ||
xmlNodePtr | nc, | ||
xmlNsPtr | ns_ows, | ||
xmlNsPtr | ns_xlink, | ||
int | fromDb | ||
) |
Add AdditionalParameters nodes to any existing node.
- Parameters
-
meta the map defining the additional parameters doc the XML document used nb the node to add the additional parameters ns_ows the OWS namespace ns_xlink the xlink namespace fromDb 1 if the metadata has been extracted from the metadb, 0 otherwise
void addLangAttr | ( | xmlNodePtr | n, |
maps * | m | ||
) |
Add a land attribute to a XML node.
- Parameters
-
n the XML node to add the attribute m the map containing the language key to add as xml:lang
void addMetadata | ( | map * | meta, |
xmlDocPtr | doc, | ||
xmlNodePtr | nc, | ||
xmlNsPtr | ns_ows, | ||
xmlNsPtr | ns_xlink, | ||
int | vid | ||
) |
Add a Metadata node to any existing node.
- Parameters
-
meta the map defining the additional parameters doc the XML document used nb the node to add the additional parameters ns_ows the OWS namespace ns_xlink the xlink namespace vid the version of WPS to use (0 for 1.0.0 and 1 for 2.0)
int checkForSoapEnvelope | ( | xmlDocPtr | ) |
Create an OWS ExceptionReport Node.
- Parameters
-
m the conf maps s the map containing the text,code,locator keys use_ns (0/1) choose if you want to generate an ExceptionReport or ows:ExceptionReport node respectively
- Returns
- the ExceptionReport/ows:ExceptionReport node
int errorException | ( | maps * | m, |
const char * | message, | ||
const char * | errorcode, | ||
const char * | locator | ||
) |
Print an OWS ExceptionReport.
- Parameters
-
m the conf maps message the error message errorcode the error code locator the potential locator
void outputResponse | ( | service * | s, |
maps * | request_inputs, | ||
maps * | request_outputs, | ||
map * | request_inputs1, | ||
int | cpid, | ||
maps * | m, | ||
int | res | ||
) |
Generate the output response (RawDataOutput or ResponseDocument)
- Parameters
-
s the service structure containing the metadata information request_inputs the inputs provided to the service for execution request_outputs the outputs updated by the service execution request_inputs1 the map containing the HTTP request cpid the process identifier attached to a service execution m the conf maps containing the main.cfg settings res the value returned by the service execution
We get the requested output or fallback to the first one if the requested one is not present in the resulting outputs maps.
map* parseBoundingBox | ( | const char * | value | ) |
Parse a BoundingBox string.
OGC 06-121r3: 10.2 Bounding box
Value is provided as : lowerCorner,upperCorner,crs,dimension Exemple : 189000,834000,285000,962000,urn:ogc:def:crs:OGC:1.3:CRS84
A map to store boundingbox information should contain:
- lowerCorner : double,double (minimum within this bounding box)
- upperCorner : double,double (maximum within this bounding box)
- crs : URI (Reference to definition of the CRS)
- dimensions : int
Note : support only 2D bounding box.
- Parameters
-
value the char* containing the KVP bouding box
- Returns
- a map containing all the bounding box keys
void printBoundingBox | ( | xmlNsPtr | ns_ows, |
xmlNodePtr | n, | ||
map * | boundingbox | ||
) |
Create required XML nodes for boundingbox and update the current XML node.
- Parameters
-
ns_ows the ows XML namespace n the XML node to update boundingbox the map containing the boundingbox definition
Print an ows:BoundingBox XML document.
- Parameters
-
m the maps containing the settings of the main.cfg file boundingbox the maps containing the boundingbox definition file the file to print the BoundingBox (if NULL then print on stdout)
- See also
- parseBoundingBox, printBoundingBox
void printDescribeProcessForProcess | ( | registry * | reg, |
maps * | m, | ||
void * | doc0, | ||
void * | nc0, | ||
service * | serv | ||
) |
Generate a ProcessDescription node for a servie and add it to a given node.
- Parameters
-
reg the profile registry m the conf maps containing the main.cfg settings nc the XML node to add the Process node serv the servive structure created from the zcfg file
- Returns
- the generated wps:ProcessOfferings xmlNodePtr
void printDescription | ( | xmlNodePtr | root, |
xmlNsPtr | ns_ows, | ||
const char * | identifier, | ||
map * | amap, | ||
int | vid = 0 |
||
) |
Create XML node with basic ows metadata information (Identifier,Title,Abstract)
- Parameters
-
root the root XML node to add the description ns_ows the ows XML namespace identifier the identifier to use amap the map containing the ows metadata information
void printDocument | ( | maps * | m, |
xmlDocPtr | doc, | ||
int | pid | ||
) |
Print a XML document.
- Parameters
-
m the conf maps containing the main.cfg settings doc the XML document pid the process identifier linked to a service
Print an OWS ExceptionReport or exception.yaml Document and HTTP headers (when required) depending on the code.
- Parameters
-
pmsConf the maps containing the settings of the main.cfg file psService the service
void printFullDescription | ( | xmlDocPtr | doc, |
int | in, | ||
elements * | elem, | ||
const char * | type, | ||
xmlNsPtr | ns, | ||
xmlNsPtr | ns_ows, | ||
xmlNodePtr | nc1, | ||
int | vid, | ||
int | fromDb, | ||
const map * | serviceType | ||
) |
Generate the required XML tree for the detailled metadata information of inputs or outputs.
- Parameters
-
in 1 in case of inputs, 0 for outputs elem the elements structure containing the metadata information type the name ("Input" or "Output") of the XML node to create ns_ows the ows XML namespace ns_ows the ows XML namespace nc1 the XML node to use to add the created tree vid the WPS version id (0 for 1.0.0, 1 for 2.0.0) fromDb 1 in case the metadata comes from the DB, -1 in other cases serviceType the serviceType found in the ZCFG file or the DB
Range: Table 46 OGC Web Services Common Standard
RangeClosure: Table 47 OGC Web Services Common Standard
void printGetCapabilitiesForProcess | ( | registry * | reg, |
maps * | m, | ||
void * | doc0, | ||
void * | nc0, | ||
service * | serv | ||
) |
Generate a wps:Process node for a servie and add it to a given node.
- Parameters
-
reg the profiles registry m the conf maps containing the main.cfg settings registry the profile registry if any nc the XML node to add the Process node serv the service structure created from the zcfg file
- Returns
- the generated wps:ProcessOfferings xmlNodePtr
xmlNodePtr printGetCapabilitiesHeader | ( | xmlDocPtr | doc, |
maps * | m, | ||
const char * | version = "1.0.0" |
||
) |
Generate a Capabilities header.
- Parameters
-
doc the document to add the header m the conf maps containing the main.cfg settings
- Returns
- the generated wps:ProcessOfferings xmlNodePtr
void printHeaders | ( | maps * | pmsConf | ) |
Print the HTTP headers based on a map.
- Parameters
-
pmsConf the map containing the headers information
void printIOType | ( | xmlDocPtr | doc, |
xmlNodePtr | nc, | ||
xmlNsPtr | ns_wps, | ||
xmlNsPtr | ns_ows, | ||
xmlNsPtr | ns_xlink, | ||
elements * | e, | ||
maps * | m, | ||
const char * | type, | ||
int | vid | ||
) |
Generate XML nodes describing inputs or outputs metadata.
- Parameters
-
doc the XML document nc the XML node to add the definition ns_wps the wps namespace ns_ows the ows namespace ns_xlink the xlink namespace e the output elements m the conf maps containing the main.cfg settings type the type
void printOutputDefinitions | ( | xmlDocPtr | doc, |
xmlNodePtr | nc, | ||
xmlNsPtr | ns_wps, | ||
xmlNsPtr | ns_ows, | ||
elements * | e, | ||
maps * | m, | ||
const char * | type | ||
) |
Print a XML document.
- Parameters
-
doc the XML document (unused) nc the XML node to add the output definition ns_wps the wps XML namespace ns_ows the ows XML namespace e the output elements m the conf maps containing the main.cfg settings type the type (unused)
void printProcessResponse | ( | maps * | m, |
map * | request, | ||
int | pid, | ||
service * | serv, | ||
const char * | service, | ||
int | status, | ||
maps * | inputs, | ||
maps * | outputs | ||
) |
Generate a wps:Execute XML document.
- Parameters
-
m the conf maps containing the main.cfg settings request the map representing the HTTP request pid the process identifier linked to a service serv the serv structure created from the zcfg file service the service name status the status returned by the service inputs the inputs provided outputs the outputs generated by the service
Check if the ZOO Service GetStatus is available in the local directory. If yes, then it uses a reference to an URL which the client can access to get information on the status of a running Service (using the percentCompleted attribute). Else fallback to the initial method using the xml file to write in ...
Display the process output only when requested !
In case there was no definition found in the ZCFG file but present in the service code
Print one outputs as raw.
- Parameters
-
conf the main configuration maps outputs the output to be print as raw
void printSessionHeaders | ( | maps * | pmsConf | ) |
Print the Set-Cookie header if necessary (conf["lenv"]["cookie"]) and save the session file.
The session file (sess_<SESSID>_.cfg where <SESSID> is the cookie value) is stored in the conf["main"]["tmpPath"] directory.
- Parameters
-
pmsConf the main configuration map
Print a StatusInfo XML document.
a statusInfo map should contain the following keys:
- JobID corresponding to usid key from the lenv section
- Status the current state (Succeeded,Failed,Accepted,Running)
- PercentCompleted (optional) the percent completed
- Message (optional) any messages the service may wish to share
- Parameters
-
conf the maps containing the settings of the main.cfg file statusInfo the map containing the statusInfo definition req the WPS requests (GetResult, GetStatus or Dismiss)
xmlNodePtr printWPSHeader | ( | xmlDocPtr | doc, |
maps * | m, | ||
const char * | req, | ||
const char * | rname, | ||
const char * | version, | ||
int | reqId | ||
) |
Generate a WPS header.
- Parameters
-
doc the document to add the header m the conf maps containing the main.cfg settings req the request type (GetCapabilities,DescribeProcess,Execute) rname the root node name
- Returns
- the generated wps:rname xmlNodePtr (can be wps: Capabilities, wps:ProcessDescriptions,wps:ExecuteResponse)
char* produceFileUrl | ( | service * | psService, |
maps * | pmsConf, | ||
maps * | pmsOutputs, | ||
const char * | pccFormat, | ||
int | itn | ||
) |
Produce a copy file and the corresponding url in case it is required Please, free the returned ressource while used.
- Parameters
-
pmConf maps* pointing to the main configuration file
Produce the status string used in HTTP headers.
- Parameters
-
pmConf the maps containing the settings of the main.cfg file pmCode the map containing the error code (or a map array of the same keys)
xmlNodePtr soapEnvelope | ( | maps * | conf, |
xmlNodePtr | n | ||
) |
Generate a SOAP Envelope node when required (if the isSoap key of the [main] section is set to true).
- Parameters
-
conf the conf maps containing the main.cfg settings n the node used as children of the generated soap:Envelope
- Returns
- the generated soap:Envelope (if isSoap=true) or the input node n (when isSoap=false)
int zooXmlAddDoc | ( | xmlNodePtr | , |
const char * | , | ||
const char * | |||
) |
int zooXmlAddNs | ( | xmlNodePtr | nr, |
const char * | url, | ||
const char * | name | ||
) |
Add an XML namespace to the usedNS if it was not already used.
- Parameters
-
nr the xmlNodePtr to attach the XML namspace (can be NULL) url the url of the XML namespace to add name the name of the XML namespace to add
- Returns
- the index of the XML namespace added.
void zooXmlCleanupDocs | ( | ) |
Free allocated memort to store XML documents.
void zooXmlCleanupNs | ( | ) |
Free allocated memory to store used XML namespace.
int zooXmlSearchForNs | ( | const char * | name | ) |
Search for an existing XML namespace in usedNS.
- Parameters
-
name the name of the XML namespace to search
- Returns
- the index of the XML namespace found or -1 if not found.
Variable Documentation
|
static |
|
static |
Name and corresponding attributes depending on the WPS version.
|
static |
Array of xmlDocPtr storing XML docs.
|
static |
Number of XML docs.
|
static |
Number of XML namespaces.
|
static |
Definitions requests requiring identifier (depending on the WPS version)
|
static |
Definitions requests requiring jobid (only for WPS version 2.0.0)
|
static |
Definitions of support requests (depending on the WPS version)
|
static |
Array storing names of the used XML namespace.
|
static |
Definitions of requests depending on the WPS version.
|
static |
Definitions of root node for response depending on the request and the WPS version.
|
static |
Definitions of schemas depending on the WPS version.
|
static |
Global char* to store the serverAddress value of the [main] section.
|
static |
Array of xmlNsPtr storing all used XML namespace.
|
static |
Definitions of acceptable final status.
Generated on Wed Apr 2 2025 09:00:01 for ZOO-Project by
