diff --git a/src/main/jni/Android.mk b/src/main/jni/Android.mk index 1006cd5b..c2745832 100755 --- a/src/main/jni/Android.mk +++ b/src/main/jni/Android.mk @@ -222,6 +222,7 @@ TUN2SOCKS_SOURCES := \ base/DebugObject.c \ base/BLog.c \ base/BPending.c \ + system/BDatagram_unix.c \ flowextra/PacketPassInactivityMonitor.c \ tun2socks/SocksUdpGwClient.c \ udpgw_client/UdpGwClient.c diff --git a/src/main/jni/badvpn/protocol/udpgw_proto.h b/src/main/jni/badvpn/protocol/udpgw_proto.h index cd800d9e..da5f02d4 100644 --- a/src/main/jni/badvpn/protocol/udpgw_proto.h +++ b/src/main/jni/badvpn/protocol/udpgw_proto.h @@ -39,7 +39,7 @@ #define UDPGW_CLIENT_FLAG_DNS (1 << 2) #define UDPGW_CLIENT_FLAG_IPV6 (1 << 3) -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID B_START_PACKED struct socks_udp_header { uint16_t rsv; @@ -73,7 +73,7 @@ B_END_PACKED static int udpgw_compute_mtu (int dgram_mtu) { bsize_t bs = bsize_add( -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID bsize_fromsize(sizeof(struct socks_udp_header)), #else bsize_fromsize(sizeof(struct udpgw_header)), diff --git a/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c b/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c index cb9fa6de..b777c687 100644 --- a/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c +++ b/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c @@ -33,7 +33,7 @@ #include -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID #include #define CONNECTION_UDP_BUFFER_SIZE 1 @@ -49,7 +49,7 @@ static void udpgw_handler_received (SocksUdpGwClient *o, BAddr local_addr, BAddr #endif -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID static void dgram_handler (SocksUdpGwClient_connection *o, int event); static void dgram_handler_received (SocksUdpGwClient_connection *o, uint8_t *data, int data_len); static int conaddr_comparator (void *unused, SocksUdpGwClient_conaddr *v1, SocksUdpGwClient_conaddr *v2); @@ -485,7 +485,7 @@ int SocksUdpGwClient_Init (SocksUdpGwClient *o, int udp_mtu, int max_connections { // see asserts in UdpGwClient_Init ASSERT(!BAddr_IsInvalid(&socks_server_addr)) -#ifndef BADVPN_SOCKS_UDP_RELAY +#ifndef ANDROID ASSERT(remote_udpgw_addr.type == BADDR_TYPE_IPV4 || remote_udpgw_addr.type == BADDR_TYPE_IPV6) #endif @@ -499,7 +499,7 @@ int SocksUdpGwClient_Init (SocksUdpGwClient *o, int udp_mtu, int max_connections o->user = user; o->handler_received = handler_received; -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID // compute MTUs o->udpgw_mtu = udpgw_compute_mtu(o->udp_mtu); o->max_connections = max_connections; @@ -544,7 +544,7 @@ void SocksUdpGwClient_Free (SocksUdpGwClient *o) { DebugObject_Free(&o->d_obj); -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID // free connections while (!LinkedList1_IsEmpty(&o->connections_list)) { SocksUdpGwClient_connection *con = UPPER_OBJECT(LinkedList1_GetFirst(&o->connections_list), SocksUdpGwClient_connection, connections_list_node); @@ -569,7 +569,7 @@ void SocksUdpGwClient_SubmitPacket (SocksUdpGwClient *o, BAddr local_addr, BAddr DebugObject_Access(&o->d_obj); // see asserts in UdpGwClient_SubmitPacket -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID ASSERT(local_addr.type == BADDR_TYPE_IPV4 || local_addr.type == BADDR_TYPE_IPV6) ASSERT(remote_addr.type == BADDR_TYPE_IPV4 || remote_addr.type == BADDR_TYPE_IPV6) ASSERT(data_len >= 0) diff --git a/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h b/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h index eeda3710..773a3537 100644 --- a/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h +++ b/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h @@ -32,7 +32,7 @@ #include #include #include -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID #include #include #include @@ -58,7 +58,7 @@ typedef struct { BReactor *reactor; void *user; SocksUdpGwClient_handler_received handler_received; -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID int udpgw_mtu; int num_connections; int max_connections; @@ -74,7 +74,7 @@ typedef struct { DebugObject d_obj; } SocksUdpGwClient; -#ifdef BADVPN_SOCKS_UDP_RELAY +#ifdef ANDROID typedef struct { BAddr local_addr; BAddr remote_addr; diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index b7304bf0..0fb3e942 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -77,7 +77,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { def startShadowsocksDaemon() { val cmd: String = (Path.BASE + - "ss-local -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -u -f " + + "ss-local -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -u -f " + Path.BASE + "ss-local.pid") .format(config.proxy, config.remotePort, config.localPort, config.sitekey, config.encMethod) if (BuildConfig.DEBUG) Log.d(TAG, cmd) @@ -85,18 +85,11 @@ class ShadowsocksVpnService extends VpnService with BaseService { } def startDnsDaemon() { - val cmd = if (config.isUdpDns) { - (Path.BASE + - "ss-tunnel -b 0.0.0.0 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -L 8.8.8.8:53 -u -f " + - Path.BASE + "ss-tunnel.pid") - .format(config.proxy, config.remotePort, 8153, config.sitekey, config.encMethod) - } else { - val conf = ConfigUtils.PDNSD.format("0.0.0.0") - ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { - p.println(conf) - }) - Path.BASE + "pdnsd -c " + Path.BASE + "pdnsd.conf" - } + val conf = ConfigUtils.PDNSD.format("0.0.0.0") + ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { + p.println(conf) + }) + val cmd = Path.BASE + "pdnsd -c " + Path.BASE + "pdnsd.conf" if (BuildConfig.DEBUG) Log.d(TAG, cmd) System.exec(cmd) } @@ -192,7 +185,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { + "--socks-server-addr 127.0.0.1:%d " + "--tunfd %d " + "--tunmtu %d " - + "--loglevel 5 " + + "--loglevel 3 " + "--pid %stun2socks.pid") .format(PRIVATE_VLAN.format("2"), config.localPort, fd, VPN_MTU, Path.BASE) @@ -260,8 +253,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { ab.append("kill -9 `cat " + Path.BASE + "ss-local.pid`") ab.append("killall -9 ss-local") - ab.append("kill -9 `cat " + Path.BASE + "ss-tunnel.pid`") - ab.append("killall -9 ss-tunnel") ab.append("kill -9 `cat " + Path.BASE + "tun2socks.pid`") ab.append("killall -9 tun2socks") ab.append("kill -9 `cat " + Path.BASE + "pdnsd.pid`")