18 #define S1_PEM "certs/ws1_server.pem" 19 #define C1_PEM "certs/ws1_client.pem" 20 #define CA1_PEM "certs/ws1_ca.pem" 21 #define S2_PEM "certs/ws2_server.pem" 22 #define C2_PEM "certs/ws2_client.pem" 23 #define CA2_PEM "certs/ws2_ca.pem" 35 "tcp://127.0.0.1:7001",
36 "tcp://127.0.0.1:7001",
37 "tcp://127.0.0.1:9001" 41 "ssl://127.0.0.1:7002:" S1_PEM,
42 "tcp://127.0.0.1:7002",
43 "tcp://127.0.0.1:9001" 47 "tcp://127.0.0.1:7003",
48 "tcp://127.0.0.1:7003",
53 "ssl://127.0.0.1:7004:" S2_PEM,
54 "tcp://127.0.0.1:7004",
55 "ssl://127.0.0.1:9002:" C2_PEM ":" CA2_PEM
78 for (i = 0; i < (int)
ARRAY_SIZE(s_wrappers); i++) {
79 if (strcmp(conn->
uri, s_wrappers[i].
uri) == 0) {
133 if (wrapper == NULL) {
134 fprintf(stderr,
"Error: %s\n", err_msg);
149 ((
struct ns_mgr *) proxy_server)->hexdump_file =
"/dev/stderr";
160 mg_set_option(ws1_server,
"listening_port",
"tcp://127.0.0.1:9001");
169 for (i = 0; i <
ARRAY_SIZE(s_wrappers); i++) {
static int ev_handler(struct mg_connection *conn, enum mg_event ev)
void * mg_start_thread(void *(*func)(void *), void *param)
void * ssl_wrapper_init(const char *local_addr, const char *target_addr, const char **err_msg)
size_t mg_websocket_write(struct mg_connection *conn, int opcode, const char *data, size_t data_len)
void * ns_start_thread(void *(*f)(void *), void *p)
struct mg_server * mg_create_server(void *server_data, mg_handler_t handler)
const char * mg_get_option(const struct mg_server *server, const char *name)
void mg_send_status(struct mg_connection *c, int status)
void ssl_wrapper_serve(void *param, volatile int *quit)
static int ws_handler(struct mg_connection *conn, enum mg_event ev)
static void signal_handler(int sig_num)
time_t mg_poll_server(struct mg_server *server, int milliseconds)
static int s_received_signal
size_t mg_printf_data(struct mg_connection *c, const char *fmt,...)
static struct mg_server * server
static void * wrapper_thread_func(void *param)
int mg_forward(struct mg_connection *c, const char *addr)
const char * mg_set_option(struct mg_server *server, const char *name, const char *value)
void mg_send_file(struct mg_connection *c, const char *file_name, const char *extra_headers)
const char * wrapper_client_addr
const char * request_method
const char * wrapper_server_addr
#define ARRAY_SIZE(array)
void mg_destroy_server(struct mg_server **server)
static void * serve_thread_func(void *param)
static struct config s_wrappers[]