# HG changeset patch # User jbe # Date 1429313618 -7200 # Node ID f148bd2b3d05a56b24a14dcfcfb07c3f512b9b00 # Parent 2097b1835d9685f5fc9baa38b020f7d091472dc9 Added moonbridge_io.h to Makefile; Added stub for moonbridge_websocket.c (with base64'd SHA-1) diff -r 2097b1835d96 -r f148bd2b3d05 Makefile --- a/Makefile Fri Apr 17 19:20:23 2015 +0200 +++ b/Makefile Sat Apr 18 01:33:38 2015 +0200 @@ -50,17 +50,23 @@ MOONBR_LUA_CPATH_DEFINE = "-DMOONBR_LUA_CPATH=\"$(MOONBR_LUA_CPATH)\"" .endif -all:: moonbridge moonbridge_io.so +all:: moonbridge moonbridge_io.so moonbridge_websocket.so moonbridge: moonbridge.c moonbridge_io.h moonbridge_io.o cc -Wall -Wno-unused-result -O2 -Wl,-E -I $(LUA_INCLUDE) -L $(LUA_LIBDIR) -o moonbridge $(MOONBR_LUA_PATH_DEFINE) $(MOONBR_LUA_CPATH_DEFINE) moonbridge.c -lm -l$(LUA_LIBRARY) $(UTIL_FLAGS) moonbridge_io.o -moonbridge_io.o: moonbridge_io.c +moonbridge_io.o: moonbridge_io.c moonbridge_io.h cc -c -Wall -O2 -fPIC -I $(LUA_INCLUDE) -o moonbridge_io.o moonbridge_io.c moonbridge_io.so: moonbridge_io.o ld -shared -o moonbridge_io.so moonbridge_io.o +moonbridge_websocket.o: moonbridge_websocket.c + cc -c -Wall -O2 -fPIC -I $(LUA_INCLUDE) -o moonbridge_websocket.o moonbridge_websocket.c + +moonbridge_websocket.so: moonbridge_websocket.o + ld -shared -o moonbridge_websocket.so -lmd moonbridge_websocket.o + clean:: - rm -f moonbridge moonbridge_io.o moonbridge_io.so + rm -f moonbridge moonbridge_io.o moonbridge_websocket.so diff -r 2097b1835d96 -r f148bd2b3d05 moonbridge_websocket.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/moonbridge_websocket.c Sat Apr 18 01:33:38 2015 +0200 @@ -0,0 +1,49 @@ + +#include +#include +#include + +#include +#include + +static int moonbr_ws_hsresp(lua_State *L) { + const char *challenge; + size_t challenge_len; + SHA_CTX context; + char digest[20]; + static const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + char digest64[28]; + int i, j; + int s = 0, b = 0; + challenge = luaL_checklstring(L, 1, &challenge_len); + SHA1_Init(&context); + SHA1_Update(&context, challenge, challenge_len); + SHA1_Update(&context, "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", 36); + SHA1_Final((unsigned char *)digest, &context); + for (i=0, j=0; i<20; i++) { + b = (b << 8) + (unsigned char)digest[i]; + s += 8; + while (s >= 6) { + s -= 6; + digest64[j++] = alphabet[b >> s]; + b &= (1<