Annotation of embedaddon/nginx/src/http/ngx_http_script.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #ifndef _NGX_HTTP_SCRIPT_H_INCLUDED_
9: #define _NGX_HTTP_SCRIPT_H_INCLUDED_
10:
11:
12: #include <ngx_config.h>
13: #include <ngx_core.h>
14: #include <ngx_http.h>
15:
16:
17: typedef struct {
18: u_char *ip;
19: u_char *pos;
20: ngx_http_variable_value_t *sp;
21:
22: ngx_str_t buf;
23: ngx_str_t line;
24:
25: /* the start of the rewritten arguments */
26: u_char *args;
27:
28: unsigned flushed:1;
29: unsigned skip:1;
30: unsigned quote:1;
31: unsigned is_args:1;
32: unsigned log:1;
33:
34: ngx_int_t status;
35: ngx_http_request_t *request;
36: } ngx_http_script_engine_t;
37:
38:
39: typedef struct {
40: ngx_conf_t *cf;
41: ngx_str_t *source;
42:
43: ngx_array_t **flushes;
44: ngx_array_t **lengths;
45: ngx_array_t **values;
46:
47: ngx_uint_t variables;
48: ngx_uint_t ncaptures;
49: ngx_uint_t captures_mask;
50: ngx_uint_t size;
51:
52: void *main;
53:
54: unsigned compile_args:1;
55: unsigned complete_lengths:1;
56: unsigned complete_values:1;
57: unsigned zero:1;
58: unsigned conf_prefix:1;
59: unsigned root_prefix:1;
60:
61: unsigned dup_capture:1;
62: unsigned args:1;
63: } ngx_http_script_compile_t;
64:
65:
66: typedef struct {
67: ngx_str_t value;
68: ngx_uint_t *flushes;
69: void *lengths;
70: void *values;
71: } ngx_http_complex_value_t;
72:
73:
74: typedef struct {
75: ngx_conf_t *cf;
76: ngx_str_t *value;
77: ngx_http_complex_value_t *complex_value;
78:
79: unsigned zero:1;
80: unsigned conf_prefix:1;
81: unsigned root_prefix:1;
82: } ngx_http_compile_complex_value_t;
83:
84:
85: typedef void (*ngx_http_script_code_pt) (ngx_http_script_engine_t *e);
86: typedef size_t (*ngx_http_script_len_code_pt) (ngx_http_script_engine_t *e);
87:
88:
89: typedef struct {
90: ngx_http_script_code_pt code;
91: uintptr_t len;
92: } ngx_http_script_copy_code_t;
93:
94:
95: typedef struct {
96: ngx_http_script_code_pt code;
97: uintptr_t index;
98: } ngx_http_script_var_code_t;
99:
100:
101: typedef struct {
102: ngx_http_script_code_pt code;
103: ngx_http_set_variable_pt handler;
104: uintptr_t data;
105: } ngx_http_script_var_handler_code_t;
106:
107:
108: typedef struct {
109: ngx_http_script_code_pt code;
110: uintptr_t n;
111: } ngx_http_script_copy_capture_code_t;
112:
113:
114: #if (NGX_PCRE)
115:
116: typedef struct {
117: ngx_http_script_code_pt code;
118: ngx_http_regex_t *regex;
119: ngx_array_t *lengths;
120: uintptr_t size;
121: uintptr_t status;
122: uintptr_t next;
123:
124: uintptr_t test:1;
125: uintptr_t negative_test:1;
126: uintptr_t uri:1;
127: uintptr_t args:1;
128:
129: /* add the r->args to the new arguments */
130: uintptr_t add_args:1;
131:
132: uintptr_t redirect:1;
133: uintptr_t break_cycle:1;
134:
135: ngx_str_t name;
136: } ngx_http_script_regex_code_t;
137:
138:
139: typedef struct {
140: ngx_http_script_code_pt code;
141:
142: uintptr_t uri:1;
143: uintptr_t args:1;
144:
145: /* add the r->args to the new arguments */
146: uintptr_t add_args:1;
147:
148: uintptr_t redirect:1;
149: } ngx_http_script_regex_end_code_t;
150:
151: #endif
152:
153:
154: typedef struct {
155: ngx_http_script_code_pt code;
156: uintptr_t conf_prefix;
157: } ngx_http_script_full_name_code_t;
158:
159:
160: typedef struct {
161: ngx_http_script_code_pt code;
162: uintptr_t status;
163: ngx_http_complex_value_t text;
164: } ngx_http_script_return_code_t;
165:
166:
167: typedef enum {
168: ngx_http_script_file_plain = 0,
169: ngx_http_script_file_not_plain,
170: ngx_http_script_file_dir,
171: ngx_http_script_file_not_dir,
172: ngx_http_script_file_exists,
173: ngx_http_script_file_not_exists,
174: ngx_http_script_file_exec,
175: ngx_http_script_file_not_exec
176: } ngx_http_script_file_op_e;
177:
178:
179: typedef struct {
180: ngx_http_script_code_pt code;
181: uintptr_t op;
182: } ngx_http_script_file_code_t;
183:
184:
185: typedef struct {
186: ngx_http_script_code_pt code;
187: uintptr_t next;
188: void **loc_conf;
189: } ngx_http_script_if_code_t;
190:
191:
192: typedef struct {
193: ngx_http_script_code_pt code;
194: ngx_array_t *lengths;
195: } ngx_http_script_complex_value_code_t;
196:
197:
198: typedef struct {
199: ngx_http_script_code_pt code;
200: uintptr_t value;
201: uintptr_t text_len;
202: uintptr_t text_data;
203: } ngx_http_script_value_code_t;
204:
205:
206: void ngx_http_script_flush_complex_value(ngx_http_request_t *r,
207: ngx_http_complex_value_t *val);
208: ngx_int_t ngx_http_complex_value(ngx_http_request_t *r,
209: ngx_http_complex_value_t *val, ngx_str_t *value);
210: ngx_int_t ngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv);
211: char *ngx_http_set_complex_value_slot(ngx_conf_t *cf, ngx_command_t *cmd,
212: void *conf);
213:
214:
215: ngx_int_t ngx_http_test_predicates(ngx_http_request_t *r,
216: ngx_array_t *predicates);
217: char *ngx_http_set_predicate_slot(ngx_conf_t *cf, ngx_command_t *cmd,
218: void *conf);
219:
220: ngx_uint_t ngx_http_script_variables_count(ngx_str_t *value);
221: ngx_int_t ngx_http_script_compile(ngx_http_script_compile_t *sc);
222: u_char *ngx_http_script_run(ngx_http_request_t *r, ngx_str_t *value,
223: void *code_lengths, size_t reserved, void *code_values);
224: void ngx_http_script_flush_no_cacheable_variables(ngx_http_request_t *r,
225: ngx_array_t *indices);
226:
227: void *ngx_http_script_start_code(ngx_pool_t *pool, ngx_array_t **codes,
228: size_t size);
229: void *ngx_http_script_add_code(ngx_array_t *codes, size_t size, void *code);
230:
231: size_t ngx_http_script_copy_len_code(ngx_http_script_engine_t *e);
232: void ngx_http_script_copy_code(ngx_http_script_engine_t *e);
233: size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e);
234: void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e);
235: size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e);
236: void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
237: size_t ngx_http_script_mark_args_code(ngx_http_script_engine_t *e);
238: void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
239: #if (NGX_PCRE)
240: void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e);
241: void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e);
242: #endif
243: void ngx_http_script_return_code(ngx_http_script_engine_t *e);
244: void ngx_http_script_break_code(ngx_http_script_engine_t *e);
245: void ngx_http_script_if_code(ngx_http_script_engine_t *e);
246: void ngx_http_script_equal_code(ngx_http_script_engine_t *e);
247: void ngx_http_script_not_equal_code(ngx_http_script_engine_t *e);
248: void ngx_http_script_file_code(ngx_http_script_engine_t *e);
249: void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e);
250: void ngx_http_script_value_code(ngx_http_script_engine_t *e);
251: void ngx_http_script_set_var_code(ngx_http_script_engine_t *e);
252: void ngx_http_script_var_set_handler_code(ngx_http_script_engine_t *e);
253: void ngx_http_script_var_code(ngx_http_script_engine_t *e);
254: void ngx_http_script_nop_code(ngx_http_script_engine_t *e);
255:
256:
257: #endif /* _NGX_HTTP_SCRIPT_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>