From 29f1c6998c68e1de6bb15d6a4542ca9a7e832657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Fri, 12 Feb 2016 21:06:56 +0100 Subject: [PATCH] More SSL work --- Makefile | 4 ++-- scripts/dependencies.sh | 14 ++++++++++---- src/c/internet.c | 9 +++++++++ src/lua/core/internet.lua | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 86853b6..d73f160 100644 --- a/Makefile +++ b/Makefile @@ -13,9 +13,9 @@ SOURCE = src/c CORELUA = src/lua/core RESOURCES = resources -LIBS=-lm -lcrypto -lssl +LIBS=-lm -lssl -lcrypto -INCLUDES=-I$(SOURCE) -Isrc/c/lib/lua -Iinclude +INCLUDES=-I$(SOURCE) -Isrc/c/lib/lua -Iinclude -Idependencies/include -Idependencies/include-$(PREFIX) GENERATED=include/luares.h src/c/gen/luares.c include/res.h src/c/gen/res.c LUAPARAMS = $(CORELUA) include/luares.h src/c/gen/luares.c lua_ diff --git a/scripts/dependencies.sh b/scripts/dependencies.sh index 19d024c..03137b5 100755 --- a/scripts/dependencies.sh +++ b/scripts/dependencies.sh @@ -7,7 +7,7 @@ OUT=$TOOL if [ $# -lt 1 ] then - echo "Usage : $0 [arm32-musl|x86_64|x86_64-musl]" + echo "Usage : $0 [arm32-musl|x86_64|musl]" exit fi @@ -32,6 +32,8 @@ case "$1" in esac mkdir -p dependencies +mkdir -p dependencies/include +mkdir -p dependencies/include-$OUT rm -rf dependencies/lib-$OUT mkdir -p dependencies/lib-$OUT @@ -45,9 +47,13 @@ cd .. rm -rf openssl-build mkdir openssl-build cd openssl-build -../openssl/Configure $OPENSSL_TARGET --unified no-asm -DOPENSSL_NO_HEARTBEATS --openssldir=$(cd ../lib-$OUT; pwd) no-shared +../openssl/Configure $OPENSSL_TARGET --unified no-asm -DOPENSSL_NO_HEARTBEATS --openssldir=$(cd ../lib-$OUT; pwd) no-shared no-threads no-dso make libcrypto.a -j8 CC=$TOOL-gcc RANLIB=$TOOL-ranlib LD=$TOOL-ld MAKEDEPPROG=$TOOL-gcc PROCESSOR=ARM make libssl.a -j8 CC=$TOOL-gcc RANLIB=$TOOL-ranlib LD=$TOOL-ld MAKEDEPPROG=$TOOL-gcc PROCESSOR=ARM -cp libcrypto.a ../lib-$OUT -cp libssl.a ../lib-$OUT +mkdir -p ../include/openssl +mkdir -p ../include-$OUT/openssl +cp -rfv ../openssl/include/openssl/* ../include/openssl +cp -rfv include/openssl/* ../include-$OUT/openssl +cp -rfv libcrypto.a ../lib-$OUT +cp -rfv libssl.a ../lib-$OUT diff --git a/src/c/internet.c b/src/c/internet.c index 39fe8b1..1a7d6cd 100644 --- a/src/c/internet.c +++ b/src/c/internet.c @@ -16,6 +16,8 @@ #include #include #include +#include +#include static int l_open(lua_State *L) { //TODO: Any mem leaks? const char* hostaddr = lua_tostring(L, 1); @@ -109,7 +111,14 @@ static int l_read(lua_State *L) { return 1; } +static void ssl_init() { + (void)SSL_library_init(); + SSL_load_error_strings(); + OPENSSL_config(NULL); +} + void internet_start(lua_State *L) { + ssl_init(); signal(SIGPIPE, SIG_IGN); lua_createtable (L, 0, 1); diff --git a/src/lua/core/internet.lua b/src/lua/core/internet.lua index b6b2104..64fe311 100644 --- a/src/lua/core/internet.lua +++ b/src/lua/core/internet.lua @@ -63,7 +63,7 @@ function internet.start() function component.request(url, post) checkArg(1, url, "string") checkArg(2, post, "string", "nil") - local host, uri = url:match("http://([^/]+)([^#]+)") + local host, uri = url:match("https?://([^/]+)([^#]+)") if not host then native.log("internet.request host match error: " .. url .. "\n") end local socket = component.connect(host, 80) if socket.finishConnect() then