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

Annotation of /hydra/src/globals.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.18 - (hide annotations)
Mon Sep 30 08:21:55 2002 UTC (21 years, 6 months ago) by nmav
Branch: MAIN
Changes since 1.17: +7 -5 lines
File MIME type: text/plain
Several cleanups in the If-* stuff.

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.18 /* $Id: globals.h,v 1.17 2002/09/29 11:00:04 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     extern request **_request_ready; /* first in ready list */
190     extern request **_request_block; /* first in blocked list */
191     extern request **_request_free; /* first in free list */
192    
193     typedef struct {
194     #ifdef ENABLE_SMP
195     pthread_t tid;
196     #endif
197     request* request_ready;
198     request* request_block;
199     request* request_free;
200     socket_type server_s[2];
201     fd_set block_read_fdset;
202     fd_set block_write_fdset;
203     struct timeval req_timeout;
204     int sighup_flag; /* 1 => signal has happened, needs attention */
205     int sigchld_flag; /* 1 => signal has happened, needs attention */
206     int sigalrm_flag; /* 1 => signal has happened, needs attention */
207     int sigusr1_flag; /* 1 => signal has happened, needs attention */
208     int sigterm_flag; /* lame duck mode */
209    
210     int max_fd;
211    
212     int sockbufsize;
213     struct status status;
214     int total_connections;
215    
216     /* for SIGBUS handling */
217     jmp_buf env;
218     int handle_sigbus;
219    
220     } server_params;
221    
222     /* global server variables */
223    
224     extern char *access_log_name;
225     extern char *error_log_name;
226     extern char *cgi_log_name;
227     extern int cgi_log_fd;
228     extern int use_localtime;
229 nmav 1.9
230     extern int max_files_cache;
231     extern int max_file_size_cache;
232 nmav 1.5
233     extern int boa_ssl;
234 nmav 1.1
235     extern int server_port;
236     extern int ssl_port;
237     extern uid_t server_uid;
238     extern gid_t server_gid;
239     extern char *server_admin;
240     extern char *server_root;
241     extern char *server_name;
242     extern char *server_ip;
243     extern int max_fd;
244     extern int devnullfd;
245    
246     extern char *default_type;
247 nmav 1.11 extern char *default_charset;
248 nmav 1.1 extern char *dirmaker;
249     extern char *mime_types;
250     extern char *cachedir;
251    
252 nmav 1.6 extern char *default_document_root;
253 nmav 1.7 extern int default_document_root_size;
254 nmav 1.6
255 nmav 1.1 extern char *tempdir;
256 nmav 1.16 extern int tempdir_len;
257 nmav 1.1
258     extern char *cgi_path;
259     extern int single_post_limit;
260    
261     extern int ka_timeout;
262     extern int ka_max;
263    
264 nmav 1.14 extern int hic_sigchld_flag;
265 nmav 1.1 extern time_t start_time;
266    
267     extern int pending_requests;
268     extern long int max_connections;
269    
270     extern int verbose_cgi_logs;
271    
272     extern int backlog;
273     extern time_t current_time;
274    
275 nmav 1.14 #ifdef ENABLE_HIC
276     extern pthread_t hic_tid;
277     #endif
278 nmav 1.1
279     #endif

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26