
Always fork handlers processes. Instead printing traffic when single-processing, print traffic if verbose flag given.
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
#include <openssl/ssl.h>
|
|
|
|
typedef struct {
|
|
int sockfd;
|
|
SSL_CTX *ssl_ctx;
|
|
SSL *ssl;
|
|
} ws_ctx_t;
|
|
|
|
typedef struct {
|
|
int verbose;
|
|
char listen_host[256];
|
|
int listen_port;
|
|
void (*handler)(ws_ctx_t*);
|
|
int handler_id;
|
|
int ssl_only;
|
|
int daemon;
|
|
char *record;
|
|
char *cert;
|
|
} settings_t;
|
|
|
|
typedef struct {
|
|
char path[1024+1];
|
|
char host[1024+1];
|
|
char origin[1024+1];
|
|
char key1[1024+1];
|
|
char key2[1024+1];
|
|
char key3[8+1];
|
|
} headers_t;
|
|
|
|
|
|
ssize_t ws_recv(ws_ctx_t *ctx, void *buf, size_t len);
|
|
|
|
ssize_t ws_send(ws_ctx_t *ctx, const void *buf, size_t len);
|
|
|
|
/* base64.c declarations */
|
|
//int b64_ntop(u_char const *src, size_t srclength, char *target, size_t targsize);
|
|
//int b64_pton(char const *src, u_char *target, size_t targsize);
|
|
|
|
#define gen_handler_msg(stream, ...) \
|
|
if (! settings.daemon) { \
|
|
fprintf(stream, " %d: ", settings.handler_id); \
|
|
fprintf(stream, __VA_ARGS__); \
|
|
}
|
|
|
|
#define handler_msg(...) gen_handler_msg(stdout, __VA_ARGS__);
|
|
#define handler_emsg(...) gen_handler_msg(stderr, __VA_ARGS__);
|
|
|