Palm: change website url
[MonkeyD.git] / src / include / cgi.h
blobfc60b0a1d62168058e925c710dd06bcf2712ae1d
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
3 /* Monkey HTTP Daemon
4 * ------------------
5 * Copyright (C) 2001-2007, Eduardo Silva P.
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Library General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 #include "memory.h"
24 #define M_CGI_OK 0
25 #define M_CGI_TIMEOUT -2
26 #define M_CGI_INTERNAL_SERVER_ERR -3
27 #define M_CGI_PIPE_ERR -4
29 #define M_CGI_CHILD_EXIT_OK 0
30 #define M_CGI_CHILD_EXIT_FAIL -1
32 #define MK_CGI_DOCUMENT_ROOT "DOCUMENT_ROOT"
33 #define MK_CGI_CONTENT_LENGTH "CONTENT_LENGTH"
34 #define MK_CGI_CONTENT_TYPE "CONTENT_TYPE"
35 #define MK_CGI_SERVER_ADDR "SERVER_ADDR"
36 #define MK_CGI_SERVER_NAME "SERVER_NAME"
37 #define MK_CGI_SERVER_PROTOCOL "SERVER_PROTOCOL"
38 #define MK_CGI_SERVER_SOFTWARE "SERVER_SOFTWARE"
39 #define MK_CGI_SERVER_SIGNATURE "SERVER_SIGNATURE"
42 #define MK_CGI_HTTP_USER_AGENT "HTTP_USER_AGENT"
43 #define MK_CGI_HTTP_ACCEPT "HTTP_ACCEPT"
44 #define MK_CGI_HTTP_ACCEPT_CHARSET "HTTP_ACCEPT_CHARSET"
45 #define MK_CGI_HTTP_ACCEPT_ENCODING "HTTP_ACCEPT_ENCODING"
46 #define MK_CGI_HTTP_ACCEPT_LANGUAGE "HTTP_ACCEPT_LANGUAGE"
47 #define MK_CGI_HTTP_HOST "HTTP_HOST"
48 #define MK_CGI_HTTP_COOKIE "HTTP_COOKIE"
49 #define MK_CGI_HTTP_REFERER "HTTP_REFERER"
51 #define MK_CGI_SERVER_PORT "SERVER_PORT"
52 #define MK_CGI_CGI_VERSION "CGI_VERSION"
53 #define MK_CGI_GATEWAY_INTERFACE "GATEWAY_INTERFACE"
54 #define MK_CGI_REMOTE_ADDR "REMOTE_ADDR"
55 #define MK_CGI_REQUEST_URI "REQUEST_URI"
56 #define MK_CGI_REQUEST_METHOD "REQUEST_METHOD"
57 #define MK_CGI_SCRIPT_NAME "SCRIPT_NAME"
58 #define MK_CGI_SCRIPT_FILENAME "SCRIPT_FILENAME"
59 #define MK_CGI_REMOTE_PORT "REMOTE_PORT"
60 #define MK_CGI_QUERY_STRING "QUERY_STRING"
61 #define MK_CGI_POST_VARS "POST_VARS"
63 mk_pointer mk_cgi_document_root;
64 mk_pointer mk_cgi_content_length;
65 mk_pointer mk_cgi_content_type;
66 mk_pointer mk_cgi_server_addr;
67 mk_pointer mk_cgi_server_name;
68 mk_pointer mk_cgi_server_protocol;
69 mk_pointer mk_cgi_server_software;
70 mk_pointer mk_cgi_server_signature;
71 mk_pointer mk_cgi_http_user_agent;
72 mk_pointer mk_cgi_http_accept;
73 mk_pointer mk_cgi_http_accept_charset;
74 mk_pointer mk_cgi_http_accept_encoding;
75 mk_pointer mk_cgi_http_accept_language;
76 mk_pointer mk_cgi_http_host;
77 mk_pointer mk_cgi_http_cookie;
78 mk_pointer mk_cgi_http_referer;
79 mk_pointer mk_cgi_server_port;
80 mk_pointer mk_cgi_cgi_version;
81 mk_pointer mk_cgi_gateway_interface;
82 mk_pointer mk_cgi_remote_addr;
83 mk_pointer mk_cgi_request_uri;
84 mk_pointer mk_cgi_request_method;
85 mk_pointer mk_cgi_script_name;
86 mk_pointer mk_cgi_script_filename;
87 mk_pointer mk_cgi_remote_port;
88 mk_pointer mk_cgi_query_string;
89 mk_pointer mk_cgi_post_vars;
91 #define CGI_VERSION "1.1"
92 mk_pointer mk_cgi_version;
94 struct palm {
95 char *ext;
96 char *mimetype;
97 char *host;
98 int port;
99 struct palm *next;
102 struct palm *palms;
104 /* Struct to keep PID childs */
105 struct cgi_child {
106 pthread_t thread_pid;
107 pid_t pid;
108 struct cgi_child *next;
109 } *cgi_child_index;
111 /* cgi.c */
112 int M_CGI_main(struct client_request *cr, struct request *sr,
113 struct log_info *s_log,
114 mk_pointer remote_request);
116 int M_CGI_run(struct client_request *cr, struct request *sr,
117 char *script_filename, char **args);
118 int M_CGI_send(int socket, int cgi_pipe, struct client_request *cr,
119 struct request *sr, int remote_protocol);
121 int M_CGI_change_dir(char *script);
122 char *M_CGI_env_add_var(char *name, const char *value);
123 char *M_CGI_alias(char *path, char *query, char *newstring );
124 char **M_CGI_env_set_basic(struct request *s_request);
126 struct mk_iov *mk_palm_create_env(struct client_request *cr,
127 struct request *sr);
128 void mk_palm_iov_add_header(struct mk_iov *iov,
129 mk_pointer header, mk_pointer value);
130 char *mk_palm_check_request(struct client_request *cr, struct request *sr);
131 int mk_palm_send_response(struct client_request *cr, struct request *sr,
132 char *buf);
133 void mk_palm_set_env();