generated from openziti/template-repo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathngx_ziti_module.h
67 lines (52 loc) · 2.07 KB
/
ngx_ziti_module.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef NGX_ZITI_MODULE_H
#define NGX_ZITI_MODULE_H
#include <ngx_auto_config.h>
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_module.h>
#include <ngx_http.h>
#include <ngx_log.h>
#include <ngx_conf_file.h>
#include <ngx_thread_pool.h>
#include <ziti/zitilib.h>
#include <ziti/ziti.h>
extern ngx_module_t ngx_ziti_module;
#define NGX_ZITI_CONF 0x80000001
#define NGX_ZITI_BIND_CONF 0x80000002
typedef struct {
ngx_str_t name;
ngx_str_t identity_file; //file path to an identity file, used to initialize `ztx`
ngx_array_t* services; //array of ngx_str_t for service names
ngx_array_t* upstreams; //array of ngx_str_t upstream targets, corresponds to `services`
u_int num_services;
ziti_context ztx; //ziti context, maps to 1 `ziti` block
} ngx_ziti_block_conf_t;
typedef struct {
//an array of blocks already parsed
ngx_array_t* blocks;
//temp storage for use during configuration parsing
ngx_ziti_block_conf_t* cur_block;
} ngx_ziti_conf_t;
typedef struct {
ngx_ziti_block_conf_t* block;
ngx_str_t service;
ngx_str_t upstream;
ngx_cycle_t *cycle;
} ngx_ziti_service_ctx_t;
typedef struct {
ziti_socket_t client_socket;
ngx_str_t upstream;
char client_name[128];
} ngx_ziti_service_client_ctx_t;
static char *ngx_ziti(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static char *ngx_ziti_identity_file(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static char* ngx_ziti_bind(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static char* ngx_ziti_bind_upstream(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static void* ngx_ziti_create_main_conf(ngx_cycle_t *cycle);
static char* ngx_ziti_init_main_conf(ngx_cycle_t *cycle, void *conf);
static ngx_int_t ngx_ziti_init_process(ngx_cycle_t *cycle);
ngx_int_t ngx_ziti_run_service_offload(ngx_cycle_t* cycle, ngx_ziti_service_ctx_t service_ctx);
static void ngx_ziti_run_service(void *data, ngx_log_t *log);
static void ngx_ziti_run_service_client(void *data, ngx_log_t *log);
static void ngx_ziti_run_service_client_complete(ngx_event_t *ev);
#endif //NGX_ZITI_MODULE_H