2010-06-04 23:10:06 +01:00
|
|
|
#include <openssl/ssl.h>
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int sockfd;
|
|
|
|
SSL_CTX *ssl_ctx;
|
|
|
|
SSL *ssl;
|
|
|
|
} ws_ctx_t;
|
|
|
|
|
2010-06-17 22:06:18 +01:00
|
|
|
typedef struct {
|
2010-09-11 21:10:54 +01:00
|
|
|
int verbose;
|
2010-06-17 22:06:18 +01:00
|
|
|
char listen_host[256];
|
|
|
|
int listen_port;
|
|
|
|
void (*handler)(ws_ctx_t*);
|
2010-09-10 19:05:48 +01:00
|
|
|
int handler_id;
|
2010-11-06 15:55:09 +00:00
|
|
|
char *cert;
|
|
|
|
char *key;
|
2010-06-17 22:06:18 +01:00
|
|
|
int ssl_only;
|
|
|
|
int daemon;
|
|
|
|
} settings_t;
|
|
|
|
|
2010-07-01 02:39:41 +01:00
|
|
|
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;
|
|
|
|
|
2010-06-04 23:10:06 +01:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2010-09-10 19:05:48 +01:00
|
|
|
#define gen_handler_msg(stream, ...) \
|
|
|
|
if (! settings.daemon) { \
|
2010-09-11 21:10:54 +01:00
|
|
|
fprintf(stream, " %d: ", settings.handler_id); \
|
2010-09-10 19:05:48 +01:00
|
|
|
fprintf(stream, __VA_ARGS__); \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define handler_msg(...) gen_handler_msg(stdout, __VA_ARGS__);
|
|
|
|
#define handler_emsg(...) gen_handler_msg(stderr, __VA_ARGS__);
|
|
|
|
|