For Android
This commit is contained in:
parent
a37f4d0019
commit
ebbc13f34d
@ -25,7 +25,8 @@ Evan 增强版特性
|
|||||||
* HTTP CONNECT方法支持自定义Host(常用于免流混淆)
|
* HTTP CONNECT方法支持自定义Host(常用于免流混淆)
|
||||||
- 例子: gost -L http://:8888 -F http://evan.run:80?host=cdn.dingding.com -F socks5://127.0.0.1:1080
|
- 例子: gost -L http://:8888 -F http://evan.run:80?host=cdn.dingding.com -F socks5://127.0.0.1:1080
|
||||||
* 修改默认User Agent为Google默认浏览器的UA,修改代理默认UA为nginx
|
* 修改默认User Agent为Google默认浏览器的UA,修改代理默认UA为nginx
|
||||||
* 兼容Android环境,针对Android环境下无法解析域名的问题(Android环境下默认使用114.114.114.114作为DNS,可使用启动参数-NS自定义)
|
* ~~兼容Android环境,针对Android环境下无法解析域名的问题(Android环境下默认使用114.114.114.114作为DNS,可使用启动参数-NS自定义)~~
|
||||||
|
- Android使用NDK交叉编译可以解决DNS无法解析问题,默认114.114.114.114的配置已经移除,-NS参数保留,交叉编译参考buildAndroid.sh
|
||||||
- 例子: gost -L http://:8888 -F http://evan.run:80 -NS 114.114.114.114:53/udp
|
- 例子: gost -L http://:8888 -F http://evan.run:80 -NS 114.114.114.114:53/udp
|
||||||
* 修复原版DNS解析的BUG
|
* 修复原版DNS解析的BUG
|
||||||
* 修复原版websocket协议中path参数不解码后发送问题
|
* 修复原版websocket协议中path参数不解码后发送问题
|
||||||
|
27
buildAndroid.sh
Normal file
27
buildAndroid.sh
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
NDK_VERSION_IF_MISSING=r23b
|
||||||
|
mkdir -p ndk
|
||||||
|
cd ndk
|
||||||
|
curl https://dl.google.com/android/repository/android-ndk-${NDK_VERSION_IF_MISSING}-linux.zip -L -o ndk.zip
|
||||||
|
unzip ndk.zip > /dev/null || exit $?
|
||||||
|
rm -f ndk.zip
|
||||||
|
[ ! -d android-ndk-${NDK_VERSION_IF_MISSING} ] && echo "Missing directory: android-ndk-${NDK_VERSION_IF_MISSING}" && exit 1
|
||||||
|
export ANDROID_NDK_ROOT=$PWD/android-ndk-${NDK_VERSION_IF_MISSING}
|
||||||
|
cd ..
|
||||||
|
fi
|
||||||
|
echo "ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT"
|
||||||
|
cd gost
|
||||||
|
CC=$(find $ANDROID_NDK_ROOT | grep 'armv7a-linux-androideabi23-clang$') \
|
||||||
|
GOOS="android" GOARCH="arm" CGO_ENABLED="1" \
|
||||||
|
go build -buildvcs=false -ldflags "-s -w" -a -o gost_android_arm
|
||||||
|
|
||||||
|
CC=$(find $ANDROID_NDK_ROOT | grep 'aarch64-linux-android23-clang$') \
|
||||||
|
GOOS="android" GOARCH="arm64" CGO_ENABLED="1" \
|
||||||
|
go build -buildvcs=false -ldflags "-s -w" -a -o gost_android_arm64
|
||||||
|
|
||||||
|
CC=$(find $ANDROID_NDK_ROOT | grep 'i686-linux-android23-clang$') \
|
||||||
|
GOOS="android" GOARCH="386" CGO_ENABLED="1" \
|
||||||
|
go build -buildvcs=false -ldflags "-s -w" -a -o gost_android_x86
|
||||||
|
|
||||||
|
CC=$(find $ANDROID_NDK_ROOT | grep 'x86_64-linux-android23-clang$') \
|
||||||
|
GOOS="android" GOARCH="amd64" CGO_ENABLED="1" \
|
||||||
|
go build -buildvcs=false -ldflags "-s -w" -a -o gost_android_x86_64
|
@ -1,12 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
@ -91,12 +89,6 @@ func main() {
|
|||||||
if baseCfg.ExternalResolver != "" {
|
if baseCfg.ExternalResolver != "" {
|
||||||
gost.DefaultExternalResolver = parseResolver(baseCfg.ExternalResolver)
|
gost.DefaultExternalResolver = parseResolver(baseCfg.ExternalResolver)
|
||||||
gost.DefaultExternalResolver.Init()
|
gost.DefaultExternalResolver.Init()
|
||||||
} else if os.Getenv("ANDROID_ROOT") != "" {
|
|
||||||
log.Logf("Android detected modify default DNS server to %v", gost.DefaultDNSServer)
|
|
||||||
net.DefaultResolver = &net.Resolver{Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
|
||||||
d := net.Dialer{}
|
|
||||||
return d.DialContext(ctx, network, gost.DefaultDNSServer)
|
|
||||||
}, PreferGo: true}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := start(); err != nil {
|
if err := start(); err != nil {
|
||||||
|
2
log.go
2
log.go
@ -3,10 +3,12 @@ package gost
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||||
|
log.SetOutput(os.Stdout)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LogLogger uses the standard log package as the logger
|
// LogLogger uses the standard log package as the logger
|
||||||
|
Loading…
Reference in New Issue
Block a user