/[hydra]/hydra/src/globals.h
ViewVC logotype

Annotation of /hydra/src/globals.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (hide annotations)
Mon Sep 30 18:18:52 2002 UTC (21 years, 6 months ago) by nmav
Branch: MAIN
CVS Tags: hydra_0_0_6, hydra_0_0_4, hydra_0_0_5
Changes since 1.19: +2 -2 lines
File MIME type: text/plain
Some cleanups in server version string generation.

1 nmav 1.1 /*
2     * Boa, an http server
3     * Copyright (C) 1995 Paul Phillips <paulp@go2net.com>
4     * Some changes Copyright (C) 1996,97 Larry Doolittle <ldoolitt@jlab.org>
5     * Some changes Copyright (C) 1997 Jon Nelson <jnelson@boa.org>
6     *
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 1, or (at your option)
10     * any later version.
11     *
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 General Public License for more details.
16     *
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., 675 Mass Ave, Cambridge, MA 02139, USA.
20     *
21     */
22    
23 nmav 1.20 /* $Id: globals.h,v 1.19 2002/09/30 17:16:54 nmav Exp $*/
24 nmav 1.1
25     #ifndef _GLOBALS_H
26     #define _GLOBALS_H
27    
28 nmav 1.15 #ifdef ENABLE_SSL
29     # include <gnutls/gnutls.h>
30     #endif
31 nmav 1.1
32     typedef struct {
33     int socket;
34 nmav 1.3 int secure; /* ssl or not. NOTE: 0 or 1. Nothing else. */
35 nmav 1.5 int port;
36 nmav 1.1 int pending_requests;
37     } socket_type;
38    
39     struct mmap_entry {
40     dev_t dev;
41     ino_t ino;
42     char *mmap;
43     int use_count;
44     size_t len;
45     int available;
46 nmav 1.2 int times_used;
47 nmav 1.1 };
48 nmav 1.12
49     typedef struct {
50     hic_shutdown_func shutdown;
51     hic_init_func init;
52     hic_request_func request;
53     void *dl_handle;
54     char* sym_prefix; /* ie. "_php" */
55 nmav 1.13 char* content_type; /* ie. "application/x-httpd-php" */
56     int content_type_len;
57 nmav 1.12 } hic_module_st;
58 nmav 1.1
59 nmav 1.8 struct alias {
60     char *fakename; /* URI path to file */
61     char *realname; /* Actual path to file */
62     int type; /* ALIAS, SCRIPTALIAS, REDIRECT */
63     int fake_len; /* strlen of fakename */
64     int real_len; /* strlen of realname */
65     struct alias *next;
66     };
67    
68     typedef struct alias alias;
69    
70 nmav 1.6 typedef struct _virthost {
71     char *ip; /* This virthost will be visible in this IP */
72     char *host; /* The hostname of the virtual host */
73     char* document_root; /* The document root of this virtual host */
74     char* user_dir; /* The user dir of this virtual host */
75     int user_dir_len; /* strlen of user_dir */
76     int ip_len; /* strlen of IP */
77     int host_len; /* strlen of hostname */
78     int document_root_len; /* strlen of document root */
79 nmav 1.8 alias *alias_hashtable[ALIAS_HASHTABLE_SIZE]; /* aliases in this virthost */
80 nmav 1.6 struct _virthost *next;
81     } virthost;
82    
83 nmav 1.1 struct request { /* pending requests */
84     int fd; /* client's socket fd */
85 nmav 1.15 #ifdef ENABLE_SSL
86 nmav 1.1 GNUTLS_STATE ssl_state;
87 nmav 1.15 #endif
88 nmav 1.1 int secure; /* whether ssl or not */
89     int alert_to_send; /* in SEND_ALERT state */
90    
91     int status; /* see #defines.h */
92     time_t time_last; /* time of last succ. op. */
93     char *pathname; /* pathname of requested file */
94 nmav 1.4 size_t range_start; /* send file from byte ... */
95     size_t range_stop; /* to byte */
96     size_t pipe_range_stop; /* This is used only if the file is sent by the pipe_read() method.
97     * Indicates how many bytes to send from a file (actually a copy of range_stop,
98     * but it is modified. */
99 nmav 1.1 int simple; /* simple request? */
100     int keepalive; /* keepalive status */
101     int kacount; /* keepalive count */
102    
103     int data_fd; /* fd of data */
104     unsigned long filesize; /* filesize */
105     unsigned long filepos; /* position in file */
106     char *data_mem; /* mmapped/malloced char array */
107     int method; /* M_GET, M_POST, etc. */
108    
109     char *logline; /* line to log file */
110    
111     char *header_line; /* beginning of un or incompletely processed header line */
112     char *header_end; /* last known end of header, or end of processed data */
113     int parse_pos; /* how much have we parsed */
114     int client_stream_pos; /* how much have we read... */
115    
116     int buffer_start; /* where the buffer starts */
117     int buffer_end; /* where the buffer ends */
118    
119     char *http_version; /* HTTP/?.? of req */
120     int response_status; /* R_NOT_FOUND etc. */
121    
122     char *if_modified_since; /* If-Modified-Since */
123     time_t last_modified; /* Last-modified: */
124 nmav 1.17
125 nmav 1.18 char *if_none_match_etag;
126     char *if_match_etag;
127     char *if_range_etag; /* These are the Etags sent by the client
128     * In If-* requests.
129 nmav 1.17 */
130 nmav 1.18 int if_types; /* If-Match, If-None-Match, If-Range
131     * and OR of the MATCH_* definitions.
132 nmav 1.17 */
133 nmav 1.1
134     char local_ip_addr[NI_MAXHOST]; /* for virtualhost */
135 nmav 1.8 char *hostname;
136 nmav 1.7 char document_root[MAX_PATH_LENGTH + 1];
137 nmav 1.8 char user_dir[MAX_USER_DIR_LENGTH + 1];
138 nmav 1.1
139     /* CGI vars */
140    
141     int remote_port; /* could be used for ident */
142    
143     char remote_ip_addr[NI_MAXHOST]; /* after inet_ntoa */
144    
145     int is_cgi; /* true if CGI/NPH */
146     int cgi_status;
147     int cgi_env_index; /* index into array */
148    
149     /* Agent and referer for logfiles */
150     char *header_user_agent;
151     char *header_referer;
152    
153     int post_data_fd; /* fd for post data tmpfile */
154    
155     char *path_info; /* env variable */
156     char *path_translated; /* env variable */
157     char *script_name; /* env variable */
158     char *query_string; /* env variable */
159     char *content_type; /* env variable */
160     char *content_length; /* env variable */
161    
162     struct mmap_entry *mmap_entry_var;
163    
164     struct request *next; /* next */
165     struct request *prev; /* previous */
166    
167     /* everything below this line is kept regardless */
168     char buffer[BUFFER_SIZE + 1]; /* generic I/O buffer */
169     char request_uri[MAX_HEADER_LENGTH + 1]; /* uri */
170     char client_stream[CLIENT_STREAM_SIZE]; /* data from client - fit or be hosed */
171     char *cgi_env[CGI_ENV_MAX + 4]; /* CGI environment */
172    
173     #ifdef ACCEPT_ON
174     char accept[MAX_ACCEPT_LENGTH]; /* Accept: fields */
175     #endif
176     };
177    
178     typedef struct request request;
179    
180     struct status {
181     long requests;
182     long errors;
183     };
184    
185    
186     extern char *optarg; /* For getopt */
187     extern FILE *yyin; /* yacc input */
188    
189     typedef struct {
190     #ifdef ENABLE_SMP
191     pthread_t tid;
192     #endif
193     request* request_ready;
194     request* request_block;
195     request* request_free;
196     socket_type server_s[2];
197     fd_set block_read_fdset;
198     fd_set block_write_fdset;
199     struct timeval req_timeout;
200     int sighup_flag; /* 1 => signal has happened, needs attention */
201     int sigchld_flag; /* 1 => signal has happened, needs attention */
202     int sigalrm_flag; /* 1 => signal has happened, needs attention */
203     int sigusr1_flag; /* 1 => signal has happened, needs attention */
204     int sigterm_flag; /* lame duck mode */
205    
206     int max_fd;
207    
208     int sockbufsize;
209     struct status status;
210     int total_connections;
211 nmav 1.19
212 nmav 1.1 /* for SIGBUS handling */
213     jmp_buf env;
214     int handle_sigbus;
215    
216     } server_params;
217    
218 nmav 1.19 /* HIC request stuff
219     */
220     typedef struct _hic_request {
221     struct _hic_request *next;
222     struct _hic_request *prev;
223     hic_stuff command;
224     } hic_request;
225    
226     /* parameters passed to a hic thread */
227     typedef struct {
228     #ifdef ENABLE_SMP
229     pthread_t tid;
230     pthread_mutex_t lock;
231     #endif
232     int sigchld_flag; /* 1 => signal has happened, needs attention */
233     hic_request* request_head;
234     } hic_params;
235    
236 nmav 1.1 /* global server variables */
237    
238     extern char *access_log_name;
239     extern char *error_log_name;
240     extern char *cgi_log_name;
241     extern int cgi_log_fd;
242     extern int use_localtime;
243 nmav 1.9
244     extern int max_files_cache;
245     extern int max_file_size_cache;
246 nmav 1.5
247     extern int boa_ssl;
248 nmav 1.1
249     extern int server_port;
250     extern int ssl_port;
251     extern uid_t server_uid;
252     extern gid_t server_gid;
253     extern char *server_admin;
254     extern char *server_root;
255     extern char *server_name;
256     extern char *server_ip;
257     extern int max_fd;
258     extern int devnullfd;
259    
260     extern char *default_type;
261 nmav 1.11 extern char *default_charset;
262 nmav 1.1 extern char *dirmaker;
263     extern char *mime_types;
264     extern char *cachedir;
265    
266 nmav 1.6 extern char *default_document_root;
267 nmav 1.7 extern int default_document_root_size;
268 nmav 1.6
269 nmav 1.1 extern char *tempdir;
270 nmav 1.16 extern int tempdir_len;
271 nmav 1.1
272     extern char *cgi_path;
273     extern int single_post_limit;
274    
275     extern int ka_timeout;
276     extern int ka_max;
277    
278     extern time_t start_time;
279    
280 nmav 1.19 extern int max_server_threads;
281     extern int max_hic_threads;
282    
283 nmav 1.1 extern int pending_requests;
284     extern long int max_connections;
285    
286     extern int verbose_cgi_logs;
287    
288     extern int backlog;
289     extern time_t current_time;
290    
291 nmav 1.19 /* Global stuff that is shared by all threads.
292     * Use with extreme care, or don't use.
293     */
294     extern server_params *global_server_params;
295     extern int global_server_params_size;
296    
297 nmav 1.14 #ifdef ENABLE_HIC
298 nmav 1.19 extern hic_params *global_hic_params;
299     extern int global_hic_params_size;
300 nmav 1.14 #endif
301 nmav 1.19
302 nmav 1.20 /* These contain a string of the form: "Server: Hydra/0.0.x\r\n"
303 nmav 1.19 */
304     extern char boa_tls_version[];
305     extern char boa_version[];
306 nmav 1.1
307     #endif

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26