aboutsummaryrefslogtreecommitdiff
path: root/third_party/websockify/other/websocket.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-09-30 10:24:53 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-09-30 10:24:53 -0700
commitb614f2bc5d9fc421565824b1ceb9a3384f26f35f (patch)
tree243c47baa4c6ce4273a5743d79f3c0dbc78789e5 /third_party/websockify/other/websocket.h
parentc70758e3b49beb016a3d9db7b609c499d55de48b (diff)
parent7eaa78060c34489c7e56193c725641303d520f31 (diff)
Merge branch 'incoming'
Diffstat (limited to 'third_party/websockify/other/websocket.h')
-rw-r--r--third_party/websockify/other/websocket.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/third_party/websockify/other/websocket.h b/third_party/websockify/other/websocket.h
new file mode 100644
index 00000000..7da52757
--- /dev/null
+++ b/third_party/websockify/other/websocket.h
@@ -0,0 +1,84 @@
+#include <openssl/ssl.h>
+
+#define BUFSIZE 65536
+#define DBUFSIZE (BUFSIZE * 3) / 4 - 20
+
+#define SERVER_HANDSHAKE_HIXIE "HTTP/1.1 101 Web Socket Protocol Handshake\r\n\
+Upgrade: WebSocket\r\n\
+Connection: Upgrade\r\n\
+%sWebSocket-Origin: %s\r\n\
+%sWebSocket-Location: %s://%s%s\r\n\
+%sWebSocket-Protocol: %s\r\n\
+\r\n%s"
+
+#define SERVER_HANDSHAKE_HYBI "HTTP/1.1 101 Switching Protocols\r\n\
+Upgrade: websocket\r\n\
+Connection: Upgrade\r\n\
+Sec-WebSocket-Accept: %s\r\n\
+Sec-WebSocket-Protocol: %s\r\n\
+\r\n"
+
+#define HYBI_GUID "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
+
+#define HYBI10_ACCEPTHDRLEN 29
+
+#define HIXIE_MD5_DIGEST_LENGTH 16
+
+#define POLICY_RESPONSE "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>\n"
+
+typedef struct {
+ char path[1024+1];
+ char host[1024+1];
+ char origin[1024+1];
+ char version[1024+1];
+ char connection[1024+1];
+ char protocols[1024+1];
+ char key1[1024+1];
+ char key2[1024+1];
+ char key3[8+1];
+} headers_t;
+
+typedef struct {
+ int sockfd;
+ SSL_CTX *ssl_ctx;
+ SSL *ssl;
+ int hixie;
+ int hybi;
+ headers_t *headers;
+ char *cin_buf;
+ char *cout_buf;
+ char *tin_buf;
+ char *tout_buf;
+} 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;
+ int run_once;
+} settings_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__);
+