📄 ngx_http_script.h
字号:
/* * Copyright (C) Igor Sysoev */#ifndef _NGX_HTTP_SCRIPT_H_INCLUDED_#define _NGX_HTTP_SCRIPT_H_INCLUDED_#include <ngx_config.h>#include <ngx_core.h>#include <ngx_http.h>typedef struct { u_char *ip; u_char *pos; ngx_http_variable_value_t *sp; ngx_str_t buf; ngx_str_t line; /* the start of the rewritten arguments */ u_char *args; unsigned flushed:1; unsigned skip:1; unsigned quote:1; unsigned is_args:1; unsigned log:1; int *captures; ngx_uint_t ncaptures; ngx_int_t status; ngx_http_request_t *request;} ngx_http_script_engine_t;typedef struct { ngx_conf_t *cf; ngx_str_t *source; ngx_array_t **flushes; ngx_array_t **lengths; ngx_array_t **values; ngx_uint_t variables; ngx_uint_t ncaptures; ngx_uint_t captures_mask; ngx_uint_t size; void *main; unsigned compile_args:1; unsigned complete_lengths:1; unsigned complete_values:1; unsigned dup_capture:1; unsigned args:1;} ngx_http_script_compile_t;typedef void (*ngx_http_script_code_pt) (ngx_http_script_engine_t *e);typedef size_t (*ngx_http_script_len_code_pt) (ngx_http_script_engine_t *e);typedef struct { ngx_http_script_code_pt code; uintptr_t len;} ngx_http_script_copy_code_t;typedef struct { ngx_http_script_code_pt code; uintptr_t index;} ngx_http_script_var_code_t;typedef struct { ngx_http_script_code_pt code; ngx_http_set_variable_pt handler; uintptr_t data;} ngx_http_script_var_handler_code_t;typedef struct { ngx_http_script_code_pt code; uintptr_t n;} ngx_http_script_copy_capture_code_t;#if (NGX_PCRE)typedef struct { ngx_http_script_code_pt code; ngx_regex_t *regex; ngx_array_t *lengths; uintptr_t size; uintptr_t ncaptures; uintptr_t status; uintptr_t next; uintptr_t test:1; uintptr_t negative_test:1; uintptr_t uri:1; uintptr_t args:1; /* add the r->args to the new arguments */ uintptr_t add_args:1; uintptr_t redirect:1; uintptr_t break_cycle:1; ngx_str_t name;} ngx_http_script_regex_code_t;typedef struct { ngx_http_script_code_pt code; uintptr_t uri:1; uintptr_t args:1; /* add the r->args to the new arguments */ uintptr_t add_args:1; uintptr_t redirect:1;} ngx_http_script_regex_end_code_t;#endiftypedef struct { ngx_http_script_code_pt code; uintptr_t status; uintptr_t null;} ngx_http_script_return_code_t;typedef enum { ngx_http_script_file_plain = 0, ngx_http_script_file_not_plain, ngx_http_script_file_dir, ngx_http_script_file_not_dir, ngx_http_script_file_exists, ngx_http_script_file_not_exists, ngx_http_script_file_exec, ngx_http_script_file_not_exec} ngx_http_script_file_op_e;typedef struct { ngx_http_script_code_pt code; uintptr_t op;} ngx_http_script_file_code_t;typedef struct { ngx_http_script_code_pt code; uintptr_t next; void **loc_conf;} ngx_http_script_if_code_t;typedef struct { ngx_http_script_code_pt code; ngx_array_t *lengths;} ngx_http_script_complex_value_code_t;typedef struct { ngx_http_script_code_pt code; uintptr_t value; uintptr_t text_len; uintptr_t text_data;} ngx_http_script_value_code_t;ngx_uint_t ngx_http_script_variables_count(ngx_str_t *value);ngx_int_t ngx_http_script_compile(ngx_http_script_compile_t *sc);u_char *ngx_http_script_run(ngx_http_request_t *r, ngx_str_t *value, void *code_lengths, size_t reserved, void *code_values);void ngx_http_script_flush_no_cacheable_variables(ngx_http_request_t *r, ngx_array_t *indices);void *ngx_http_script_start_code(ngx_pool_t *pool, ngx_array_t **codes, size_t size);void *ngx_http_script_add_code(ngx_array_t *codes, size_t size, void *code);size_t ngx_http_script_copy_len_code(ngx_http_script_engine_t *e);void ngx_http_script_copy_code(ngx_http_script_engine_t *e);size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e);void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e);size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e);void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);size_t ngx_http_script_mark_args_code(ngx_http_script_engine_t *e);void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);#if (NGX_PCRE)void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e);void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e);#endifvoid ngx_http_script_return_code(ngx_http_script_engine_t *e);void ngx_http_script_break_code(ngx_http_script_engine_t *e);void ngx_http_script_if_code(ngx_http_script_engine_t *e);void ngx_http_script_equal_code(ngx_http_script_engine_t *e);void ngx_http_script_not_equal_code(ngx_http_script_engine_t *e);void ngx_http_script_file_code(ngx_http_script_engine_t *e);void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e);void ngx_http_script_value_code(ngx_http_script_engine_t *e);void ngx_http_script_set_var_code(ngx_http_script_engine_t *e);void ngx_http_script_var_set_handler_code(ngx_http_script_engine_t *e);void ngx_http_script_var_code(ngx_http_script_engine_t *e);void ngx_http_script_nop_code(ngx_http_script_engine_t *e);#endif /* _NGX_HTTP_SCRIPT_H_INCLUDED_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -