Mercurial > hg > nginx
annotate src/http/ngx_http_script.h @ 539:371c1cee100d release-0.1.44
nginx-0.1.44-RELEASE import
*) Feature: the IMAP/POP3 proxy supports SSL.
*) Feature: the "proxy_timeout" directive of the ngx_imap_proxy_module.
*) Feature: the "userid_mark" directive.
*) Feature: the $remote_user variable value is determined independently
of authorization use.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 06 Sep 2005 16:09:32 +0000 |
parents | 7fa11e5c6e96 |
children | 58475592100c |
rev | line source |
---|---|
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
1 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
2 /* |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
441
diff
changeset
|
3 * Copyright (C) Igor Sysoev |
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
4 */ |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
5 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
6 |
99
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
7 #ifndef _NGX_HTTP_SCRIPT_H_INCLUDED_ |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #define _NGX_HTTP_SCRIPT_H_INCLUDED_ |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
479 | 11 #include <ngx_config.h> |
12 #include <ngx_core.h> | |
13 #include <ngx_http.h> | |
14 | |
15 | |
507 | 16 typedef struct { |
17 u_char *ip; | |
18 u_char *pos; | |
509 | 19 ngx_http_variable_value_t *sp; |
20 | |
21 ngx_str_t buf; | |
515 | 22 ngx_str_t line; |
509 | 23 |
24 /* the start of the rewritten arguments */ | |
25 u_char *args; | |
507 | 26 |
509 | 27 unsigned skip:1; |
28 unsigned quote:1; | |
29 unsigned log:1; | |
507 | 30 |
509 | 31 int *captures; |
515 | 32 ngx_uint_t ncaptures; |
509 | 33 |
34 ngx_int_t status; | |
35 ngx_http_request_t *request; | |
507 | 36 } ngx_http_script_engine_t; |
37 | |
38 | |
509 | 39 typedef struct { |
40 ngx_conf_t *cf; | |
41 ngx_str_t *source; | |
42 ngx_array_t **lengths; | |
43 ngx_array_t **values; | |
44 | |
45 ngx_uint_t variables; | |
46 ngx_uint_t ncaptures; | |
47 ngx_uint_t size; | |
48 | |
49 void *main; | |
507 | 50 |
509 | 51 unsigned compile_args:1; |
52 unsigned compile_null:1; | |
53 unsigned complete_lengths:1; | |
54 unsigned complete_values:1; | |
55 | |
56 unsigned args:1; | |
57 } ngx_http_script_compile_t; | |
58 | |
59 | |
60 typedef void (*ngx_http_script_code_pt) (ngx_http_script_engine_t *e); | |
61 typedef size_t (*ngx_http_script_len_code_pt) (ngx_http_script_engine_t *e); | |
507 | 62 |
479 | 63 |
507 | 64 typedef struct { |
65 ngx_http_script_code_pt code; | |
66 uintptr_t len; | |
67 } ngx_http_script_copy_code_t; | |
68 | |
69 | |
70 typedef struct { | |
71 ngx_http_script_code_pt code; | |
72 uintptr_t index; | |
73 } ngx_http_script_var_code_t; | |
74 | |
75 | |
509 | 76 typedef struct { |
77 ngx_http_script_code_pt code; | |
78 uintptr_t n; | |
79 } ngx_http_script_copy_capture_code_t; | |
80 | |
81 | |
517 | 82 #if (NGX_PCRE) |
83 | |
509 | 84 typedef struct { |
85 ngx_http_script_code_pt code; | |
86 ngx_regex_t *regex; | |
87 ngx_array_t *lengths; | |
88 uintptr_t size; | |
89 uintptr_t ncaptures; | |
90 uintptr_t status; | |
91 uintptr_t next; | |
92 | |
93 uintptr_t test:1; | |
94 uintptr_t uri:1; | |
95 uintptr_t args:1; | |
96 | |
97 /* add the r->args to the new arguments */ | |
98 uintptr_t add_args:1; | |
99 | |
100 uintptr_t redirect:1; | |
101 uintptr_t break_cycle:1; | |
102 | |
103 ngx_str_t name; | |
104 } ngx_http_script_regex_code_t; | |
105 | |
106 | |
107 typedef struct { | |
108 ngx_http_script_code_pt code; | |
109 | |
110 uintptr_t uri:1; | |
111 uintptr_t args:1; | |
112 | |
113 /* add the r->args to the new arguments */ | |
114 uintptr_t add_args:1; | |
115 | |
116 uintptr_t redirect:1; | |
117 } ngx_http_script_regex_end_code_t; | |
507 | 118 |
517 | 119 #endif |
120 | |
507 | 121 |
509 | 122 typedef struct { |
123 ngx_http_script_code_pt code; | |
124 uintptr_t status; | |
125 uintptr_t null; | |
126 } ngx_http_script_return_code_t; | |
127 | |
128 | |
129 typedef struct { | |
130 ngx_http_script_code_pt code; | |
131 uintptr_t next; | |
132 void **loc_conf; | |
133 } ngx_http_script_if_code_t; | |
134 | |
135 | |
136 typedef struct { | |
137 ngx_http_script_code_pt code; | |
515 | 138 ngx_array_t *lengths; |
139 } ngx_http_script_complex_value_code_t; | |
140 | |
141 | |
142 typedef struct { | |
143 ngx_http_script_code_pt code; | |
509 | 144 uintptr_t value; |
145 uintptr_t text_len; | |
146 uintptr_t text_data; | |
147 } ngx_http_script_value_code_t; | |
148 | |
507 | 149 |
509 | 150 ngx_uint_t ngx_http_script_variables_count(ngx_str_t *value); |
151 ngx_int_t ngx_http_script_compile(ngx_http_script_compile_t *sc); | |
152 | |
153 void *ngx_http_script_start_code(ngx_pool_t *pool, ngx_array_t **codes, | |
154 size_t size); | |
155 void *ngx_http_script_add_code(ngx_array_t *codes, size_t size, void *code); | |
507 | 156 |
509 | 157 size_t ngx_http_script_copy_len_code(ngx_http_script_engine_t *e); |
158 void ngx_http_script_copy_code(ngx_http_script_engine_t *e); | |
159 size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e); | |
160 void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e); | |
161 size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e); | |
162 void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e); | |
517 | 163 void ngx_http_script_start_args_code(ngx_http_script_engine_t *e); |
164 #if (NGX_PCRE) | |
509 | 165 void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e); |
166 void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e); | |
517 | 167 #endif |
509 | 168 void ngx_http_script_return_code(ngx_http_script_engine_t *e); |
527 | 169 void ngx_http_script_break_code(ngx_http_script_engine_t *e); |
509 | 170 void ngx_http_script_if_code(ngx_http_script_engine_t *e); |
515 | 171 void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e); |
509 | 172 void ngx_http_script_value_code(ngx_http_script_engine_t *e); |
173 void ngx_http_script_set_var_code(ngx_http_script_engine_t *e); | |
174 void ngx_http_script_var_code(ngx_http_script_engine_t *e); | |
175 void ngx_http_script_nop_code(ngx_http_script_engine_t *e); | |
99
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
176 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
177 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
178 #endif /* _NGX_HTTP_SCRIPT_H_INCLUDED_ */ |