42 o->
pg = PQconnectdb(con_str);
44 if (PQstatus(o->
pg) != CONNECTION_OK) {
71 o = malloc(
sizeof(
ows));
123 fprintf(output,
"exit : %d\n", o->
exit?1:0);
146 fprintf(output,
"metadata: ");
148 fprintf(output,
"\n");
152 fprintf(output,
"contact: ");
154 fprintf(output,
"\n");
158 fprintf(output,
"cgi: ");
160 fprintf(output,
"\n");
164 fprintf(output,
"SQL requests: ");
166 fprintf(output,
"\n");
170 fprintf(output,
"layers: ");
172 fprintf(output,
"\n");
176 fprintf(output,
"request: ");
178 fprintf(output,
"\n");
184 fprintf(output,
"expose_pk: %d\n", o->
expose_pk?1:0);
187 fprintf(output,
"max_geobbox: ");
189 fprintf(output,
"\n");
191 fprintf(output,
"display_bbox: %d\n", o->
display_bbox?1:0);
193 fprintf(output,
"check_schema: %d\n", o->
check_schema?1:0);
212 if (o->
pg) PQfinish(o->
pg);
214 if (o->
log) fclose(o->
log);
247 for (p = t; *p && *p !=
'\n'; p++);
250 if (log_level & 1) fprintf(o->
log,
"[%s] [ERROR] %s\n", t, log);
251 else if (log_level & 2) fprintf(o->
log,
"[%s] [EVENT] %s\n", t, log);
252 else if (log_level & 4) fprintf(o->
log,
"[%s] [QUERY] %s\n", t, log);
253 else if (log_level & 8) fprintf(o->
log,
"[%s] [SQL] %s\n", t, log);
262#ifdef TINYOWS_GIT_COMMIT
263 fprintf(stdout,
"TinyOWS revision: %s\n", TINYOWS_GIT_COMMIT);
266 fprintf(stdout,
"FCGI support: Yes\n");
268 fprintf(stdout,
"FCGI support: No\n");
271 fprintf(stdout,
"Config File Path: %s (Mapfile)\n", o->
config_file->
buf);
273 fprintf(stdout,
"Config File Path: %s (TinyOWS XML)\n", o->
config_file->
buf);
279 fprintf(stdout,
"PostGIS dsn: %s\n", o->
pg_dsn->
buf);
280 fprintf(stdout,
"Output Encoding: %s\n", o->
encoding->
buf);
284 fprintf(stdout,
"Log file: %s\n", o->
log_file->
buf);
285 fprintf(stdout,
"Log level: %s%s%s%s\n",(o->
log_level & 1)?
"ERROR ":
"",
291 fprintf(stdout,
"Display bbox: %s\n", o->
display_bbox?
"Yes":
"No");
293 fprintf(stdout,
"Check schema: %s\n", o->
check_schema?
"Yes":
"No");
298 fprintf(stdout,
"Available layers:\n");
315 if ( !strcmp(getenv(
"CONTENT_TYPE"),
"application/x-www-form-urlencoded")
316 || !strncmp(getenv(
"CONTENT_TYPE"),
"application/x-www-form-urlencoded;", 34))
318 else if ( !strcmp(getenv(
"CONTENT_TYPE"),
"text/xml")
319 || !strncmp(getenv(
"CONTENT_TYPE"),
"text/xml;", 9))
323 else if ( !strcmp(getenv(
"CONTENT_TYPE"),
"application/xml")
324 || !strcmp(getenv(
"CONTENT_TYPE"),
"text/plain")
325 || !strncmp(getenv(
"CONTENT_TYPE"),
"application/xml;", 16)
326 || !strncmp(getenv(
"CONTENT_TYPE"),
"text/plain;", 11))
339int main(
int argc,
char *argv[])
348 if (getenv(
"TINYOWS_CONFIG_FILE"))
350 else if (getenv(
"TINYOWS_MAPFILE")) {
361 if (!o->
exit)
ows_log(o, 2,
"== TINYOWS STARTUP ==");
365 if (!o->
exit)
ows_log(o, 2,
"== Connection PostGIS ==");
369 if (!o->
exit)
ows_log(o, 2,
"== Filling Storage ==");
375 while (FCGI_Accept() >= 0) {
382 if (!o->
exit && (!query || !strlen(query))) {
385 if ( !strncmp(argv[1],
"--help", 6)
386 || !strncmp(argv[1],
"-h", 2)
387 || !strncmp(argv[1],
"--check", 7))
ows_usage(o);
389 else if ( !strncmp(argv[1],
"--version", 9)
390 || !strncmp(argv[1],
"-v", 2))
447 ows_log(o, 2,
"== FCGI SHUTDOWN ==");
450 ows_log(o, 2,
"== TINYOWS SHUTDOWN ==");
void ows_log(ows *o, int log_level, const char *log)
int main(int argc, char *argv[])
static void ows_kvp_or_xml(ows *o, char *query)
static void ows_pg(ows *o, char *con_str)
void ows_contact_free(ows_contact *contact)
int ows_version_get(ows_version *v)
void ows_metadata_fill(ows *o, array *cgi)
ows_version * ows_psql_postgis_version(ows *o)
void ows_layer_list_flush(ows_layer_list *ll, FILE *output)
array * cgi_parse_xml(ows *o, char *query)
array * cgi_parse_kvp(ows *o, char *query)
void buffer_add_str(buffer *buf, const char *str)
void list_flush(const list *l, FILE *output)
void ows_flush(ows *o, FILE *output)
void ows_layer_list_free(ows_layer_list *ll)
char * cgi_getback_query(ows *o)
void wfs_request_check(ows *o, wfs_request *wr, const array *cgi)
wfs_request * wfs_request_init()
void ows_error(ows *o, enum ows_error_code code, char *message, char *locator)
void array_free(array *a)
void ows_geobbox_free(ows_geobbox *g)
ows_version * ows_version_init()
void array_flush(const array *a, FILE *output)
void buffer_free(buffer *buf)
void ows_contact_flush(ows_contact *contact, FILE *output)
void ows_request_check(ows *o, ows_request *or, const array *cgi, const char *query)
void ows_layers_storage_flush(ows *o, FILE *output)
void ows_layers_storage_fill(ows *o)
void ows_geobbox_flush(const ows_geobbox *g, FILE *output)
void ows_version_set(ows_version *v, int major, int minor, int release)
void ows_metadata_free(ows_meta *metadata)
void ows_parse_config(ows *o, const char *filename)
void ows_request_free(ows_request *or)
void ows_metadata_flush(ows_meta *metadata, FILE *output)
ows_request * ows_request_init()
void ows_request_flush(ows_request *or, FILE *output)
void wfs(ows *o, wfs_request *wf)
void ows_version_free(ows_version *v)
#define OWS_CONFIG_FILE_PATH
@ OWS_ERROR_CONNECTION_FAILED
@ OWS_ERROR_INVALID_PARAMETER_VALUE
char * buf
size to next realloc
union Ows_request::@0 request
ows_version * wfs_default_version
ows_geobbox * max_geobbox
xmlSchemaPtr schema_wfs_110
ows_version * postgis_version
xmlSchemaPtr schema_wfs_100