26 |
|
|
27 |
#include "monitor.h" |
#include "monitor.h" |
28 |
#include "net.h" |
#include "net.h" |
29 |
|
#include "socket.h" |
30 |
#include "http_utils.h" |
#include "http_utils.h" |
31 |
|
|
32 |
/* Server masquerade */ |
/* Server masquerade */ |
94 |
#define STRLEN 256 |
#define STRLEN 256 |
95 |
#define REQ_STRLEN 1024 |
#define REQ_STRLEN 1024 |
96 |
#define RES_STRLEN 2048 |
#define RES_STRLEN 2048 |
97 |
|
#define MAX_URL_LENGTH 512 |
98 |
|
|
99 |
/* Request timeout in seconds */ |
/* Request timeout in seconds */ |
100 |
#define REQUEST_TIMEOUT 30 |
#define REQUEST_TIMEOUT 30 |
111 |
typedef struct entry *HttpHeader; |
typedef struct entry *HttpHeader; |
112 |
typedef struct entry *HttpParameter; |
typedef struct entry *HttpParameter; |
113 |
|
|
|
typedef struct inetaddress { |
|
|
char *remote_host; |
|
|
char *local_host; |
|
|
} *InetAddress; |
|
|
|
|
|
typedef struct requestwrapper { |
|
|
int socket; |
|
|
int status; |
|
|
InetAddress inetaddr; |
|
|
ssl_connection *ssl; |
|
|
} *RequestWrapper; |
|
|
|
|
114 |
typedef struct request { |
typedef struct request { |
|
char *method; |
|
115 |
char *url; |
char *url; |
116 |
|
Socket_T S; |
117 |
|
char *method; |
118 |
char *protocol; |
char *protocol; |
119 |
char *pathinfo; |
char *pathinfo; |
|
FILE *inputstream; |
|
120 |
HttpHeader headers; |
HttpHeader headers; |
|
HttpParameter params; |
|
|
InetAddress inetaddr; |
|
121 |
ssl_connection *ssl; |
ssl_connection *ssl; |
122 |
|
HttpParameter params; |
123 |
} *HttpRequest; |
} *HttpRequest; |
124 |
|
|
125 |
typedef struct response { |
typedef struct response { |
|
char *protocol; |
|
126 |
int status; |
int status; |
127 |
const char *status_msg; |
Socket_T S; |
128 |
FILE *outputstream; |
char *protocol; |
|
unsigned char *outputbuffer; |
|
129 |
size_t bufsize; |
size_t bufsize; |
130 |
size_t bufused; |
size_t bufused; |
|
HttpHeader headers; |
|
131 |
int is_committed; |
int is_committed; |
132 |
|
HttpHeader headers; |
133 |
ssl_connection *ssl; |
ssl_connection *ssl; |
134 |
|
const char *status_msg; |
135 |
|
unsigned char *outputbuffer; |
136 |
} *HttpResponse; |
} *HttpResponse; |
137 |
|
|
138 |
|
|
151 |
|
|
152 |
/* Public prototypes */ |
/* Public prototypes */ |
153 |
void *http_processor(void *); |
void *http_processor(void *); |
154 |
|
char *get_headers(HttpResponse res); |
155 |
|
void set_status(HttpResponse res, int status); |
156 |
|
const char *get_status_string(int status_code); |
157 |
void add_Impl(void *doGetFunc, void *doPostFunc); |
void add_Impl(void *doGetFunc, void *doPostFunc); |
|
void send_error(HttpResponse, int status, const char *message); |
|
|
void send_redirect(HttpResponse res, const char *location); |
|
158 |
void out_print(HttpResponse res, const char *, ...); |
void out_print(HttpResponse res, const char *, ...); |
|
void set_header(HttpResponse res, const char *name, const char *value); |
|
|
void set_status(HttpResponse res, int status); |
|
159 |
void set_content_type(HttpResponse res, const char *mime); |
void set_content_type(HttpResponse res, const char *mime); |
160 |
char *get_header(HttpRequest req, const char *header_name); |
char *get_header(HttpRequest req, const char *header_name); |
161 |
char *get_headers(HttpResponse res); |
void send_redirect(HttpResponse res, const char *location); |
162 |
|
void send_error(HttpResponse, int status, const char *message); |
163 |
char *get_parameter(HttpRequest req, const char *parameter_name); |
char *get_parameter(HttpRequest req, const char *parameter_name); |
164 |
const char *get_status_string(int status_code); |
void set_header(HttpResponse res, const char *name, const char *value); |
|
void destroy_wrapper(RequestWrapper wrapper); |
|
165 |
|
|
166 |
#endif |
#endif |