diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d05882..79a525a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,11 +57,11 @@ set(SOURCE_FILES ) add_executable (lan-play ${SOURCE_FILES}) -target_link_libraries(lan-play lwip_lib ${PCAP_LIBRARY}) +target_link_libraries(lan-play lwip_lib libuv.a ${PCAP_LIBRARY}) include_directories(lan-play ${PCAP_INCLUDE_DIR}) if (WIN32) add_dependencies(lan-play winpcap) - target_link_libraries(lan-play ws2_32.lib iphlpapi.lib libwinpthread.a) + target_link_libraries(lan-play ws2_32.lib iphlpapi.lib libwinpthread.a psapi userenv.lib) else() target_link_libraries(lan-play pthread) endif() diff --git a/docker/Dockerfile.linux b/docker/Dockerfile.linux index 80c9001..213383e 100644 --- a/docker/Dockerfile.linux +++ b/docker/Dockerfile.linux @@ -1,7 +1,7 @@ -FROM buildpack-deps:jessie +FROM buildpack-deps:bionic -RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list +RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list RUN apt update RUN apt install -y cmake make -RUN apt install -y libpcap0.8-dev +RUN apt install -y libpcap0.8-dev libuv1-dev diff --git a/docker/Dockerfile.win b/docker/Dockerfile.win index 3af5ef9..0ac4edf 100644 --- a/docker/Dockerfile.win +++ b/docker/Dockerfile.win @@ -1,6 +1,6 @@ -FROM buildpack-deps:jessie +FROM buildpack-deps:bionic -RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list +RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list RUN apt update RUN apt install -y cmake make diff --git a/src/proxy.c b/src/proxy.c index 7a0843b..3d0bb41 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -100,6 +100,17 @@ err_t listener_accept_func (void *arg, struct tcp_pcb *newpcb, err_t err) return ERR_OK; } +void *proxy_event_thread(void *data) +{ + struct proxy *proxy = (struct proxy *)data; + + uv_run(&proxy->loop, UV_RUN_DEFAULT); + uv_loop_close(&proxy->loop); + LLOG(LLOG_DEBUG, "uv_loop_close"); + + return NULL; +} + int proxy_init(struct proxy *proxy, send_packet_func_t send_packet, void *userdata) { struct netif *the_netif = &proxy->netif; @@ -164,6 +175,8 @@ int proxy_init(struct proxy *proxy, send_packet_func_t send_packet, void *userda LLOG(LLOG_DEBUG, "proxy init netif_list %p", netif_list); + uv_loop_init(&proxy->loop); + return 0; fail: exit(1); diff --git a/src/proxy.h b/src/proxy.h index 6acb06a..c84b3af 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -2,12 +2,14 @@ #define _PROXY_H_ #include +#include #define PROXY_BUFFER_SIZE 2000 typedef int (*send_packet_func_t)(void *userdata, const void *data, uint16_t len); struct proxy { struct netif netif; + uv_loop_t loop; }; struct something { int (*init)();