61 lines
1.3 KiB
C
61 lines
1.3 KiB
C
#include <openssl/ssl.h>
|
|
|
|
typedef enum { binary = 1, base64 } protocol_t;
|
|
|
|
typedef struct {
|
|
int sockfd;
|
|
SSL_CTX *ssl_ctx;
|
|
SSL *ssl;
|
|
protocol_t protocol;
|
|
} ws_ctx_t;
|
|
|
|
typedef struct {
|
|
int verbose;
|
|
char listen_host[256];
|
|
int listen_port;
|
|
void (*handler)(ws_ctx_t*);
|
|
int handler_id;
|
|
char *cert;
|
|
char *key;
|
|
int ssl_only;
|
|
int daemon;
|
|
} settings_t;
|
|
|
|
/*
|
|
typedef struct {
|
|
char path[1024+1];
|
|
char host[1024+1];
|
|
char origin[1024+1];
|
|
char protocols[512+1];
|
|
char key[1024+1];
|
|
char key1[1024+1];
|
|
char key2[1024+1];
|
|
char key3[8+1];
|
|
char version[4+1];
|
|
} headers_t;
|
|
*/
|
|
|
|
// 2011-06-01 gygax@practicomp.ch Better way ?
|
|
#ifndef ssize_t
|
|
#define ssize_t size_t
|
|
#endif
|
|
//---
|
|
|
|
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__);
|
|
|