From fa6e5841bf777eeba59abbff20746f92cc3e2d83 Mon Sep 17 00:00:00 2001 From: Kr328 <39107975+Kr328@users.noreply.github.com> Date: Fri, 15 Nov 2019 09:15:27 +0800 Subject: [PATCH] add load default --- core/src/main/golang/go.mod | 2 + core/src/main/golang/go.sum | 63 ++++++++++++++++++++++++++++ core/src/main/golang/load.go | 13 ++++++ core/src/main/golang/log/log.go | 42 +++++++++++++++++++ core/src/main/golang/main.go | 20 --------- core/src/main/golang/profile/load.go | 63 ++++++++++++++++++++++++++++ 6 files changed, 183 insertions(+), 20 deletions(-) create mode 100644 core/src/main/golang/go.sum create mode 100644 core/src/main/golang/load.go create mode 100644 core/src/main/golang/log/log.go create mode 100644 core/src/main/golang/profile/load.go diff --git a/core/src/main/golang/go.mod b/core/src/main/golang/go.mod index 05cb130..f127708 100644 --- a/core/src/main/golang/go.mod +++ b/core/src/main/golang/go.mod @@ -1,3 +1,5 @@ module github.com/kr328/clash-for-android go 1.13 + +require github.com/Dreamacro/clash v0.16.1-0.20191112020912-8e10e67b8925 diff --git a/core/src/main/golang/go.sum b/core/src/main/golang/go.sum new file mode 100644 index 0000000..736f2cf --- /dev/null +++ b/core/src/main/golang/go.sum @@ -0,0 +1,63 @@ +github.com/Dreamacro/clash v0.16.1-0.20191112020912-8e10e67b8925 h1:MukeaV6O94OWvqzcd3C635+xQNa8spHqKEI0E+ovXnA= +github.com/Dreamacro/clash v0.16.1-0.20191112020912-8e10e67b8925/go.mod h1:4ZBtABBmIGqISniBtu9fpYORrE5mKqIP8SMCTrNNVNY= +github.com/Dreamacro/go-shadowsocks2 v0.1.5-0.20191012162057-46254afc8b68 h1:UBDLpj1IGVkUcUBuZWE6DmZApPTZcnmcV6AfyDN/yhg= +github.com/Dreamacro/go-shadowsocks2 v0.1.5-0.20191012162057-46254afc8b68/go.mod h1:Y8obOtHDOqxMGHjPglfCiXZBKExOA9VL6I6sJagOwYM= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/cors v1.0.0 h1:e6x8k7uWbUwYs+aXDoiUzeQFT6l0cygBYyNhD7/1Tg0= +github.com/go-chi/cors v1.0.0/go.mod h1:K2Yje0VW/SJzxiyMYu6iPQYa7hMjQX2i/F491VChg1I= +github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= +github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= +github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/miekg/dns v1.1.22 h1:Jm64b3bO9kP43ddLjL2EY3Io6bmy1qGb9Xxz6TqS6rc= +github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/oschwald/geoip2-golang v1.3.0 h1:D+Hsdos1NARPbzZ2aInUHZL+dApIzo8E0ErJVsWcku8= +github.com/oschwald/geoip2-golang v1.3.0/go.mod h1:0LTTzix/Ao1uMvOhAV4iLU0Lz7eCrP94qZWBTDKf0iE= +github.com/oschwald/maxminddb-golang v1.5.0 h1:rmyoIV6z2/s9TCJedUuDiKht2RN12LWJ1L7iRGtWY64= +github.com/oschwald/maxminddb-golang v1.5.0/go.mod h1:3jhIUymTJ5VREKyIhWm66LJiQt04F0UCDdodShpjWsY= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191011234655-491137f69257 h1:ry8e2D+cwaV6hk7lb3aRTjjZo24shrbK0e11QEOkTIg= +golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe h1:6fAMxZRR6sl1Uq8U61gxU+kPTs2tR8uOySCbBP7BN/M= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/eapache/channels.v1 v1.1.0 h1:5bGAyKKvyCTWjSj7mhefG6Lc68VyN4MH1v8/7OoeeB4= +gopkg.in/eapache/channels.v1 v1.1.0/go.mod h1:BHIBujSvu9yMTrTYbTCjDD43gUhtmaOtTWDe7sTv1js= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/core/src/main/golang/load.go b/core/src/main/golang/load.go new file mode 100644 index 0000000..d5e5fb1 --- /dev/null +++ b/core/src/main/golang/load.go @@ -0,0 +1,13 @@ +package main + +//#include +import "C" +import "github.com/kr328/clash-for-android/log" +import "github.com/kr328/clash-for-android/profile" + +//export Java_com_github_kr328_clash_core_Clash_loadDefault +func Java_com_github_kr328_clash_core_Clash_loadDefault(env *C.JNIEnv, class C.jclass) { + log.Info("Clash load default") + + profile.LoadDefault() +} diff --git a/core/src/main/golang/log/log.go b/core/src/main/golang/log/log.go new file mode 100644 index 0000000..44b7e02 --- /dev/null +++ b/core/src/main/golang/log/log.go @@ -0,0 +1,42 @@ +package log + +/* +#cgo LDFLAGS: -llog +#include +#include +#include + +#define TAG "ClashForAndroid" + +static void log_info(const char *msg) { + __android_log_print(ANDROID_LOG_INFO, "ClashForAndroid", "%s", msg); +} + +static void log_error(const char *msg) { + __android_log_print(ANDROID_LOG_ERROR, "ClashForAndroid", "%s", msg); +} + +static void log_warn(const char *msg) { + __android_log_print(ANDROID_LOG_WARN, "ClashForAndroid", "%s", msg); +} +*/ +import "C" +import "unsafe" + +func Info(msg string) { + log := C.CString(msg) + C.log_info(log) + C.free(unsafe.Pointer(log)) +} + +func Error(msg string) { + log := C.CString(msg) + C.log_error(log) + C.free(unsafe.Pointer(log)) +} + +func Warn(msg string) { + log := C.CString(msg) + C.log_warn(log) + C.free(unsafe.Pointer(log)) +} \ No newline at end of file diff --git a/core/src/main/golang/main.go b/core/src/main/golang/main.go index 396911b..7905807 100644 --- a/core/src/main/golang/main.go +++ b/core/src/main/golang/main.go @@ -1,25 +1,5 @@ package main -/* -#cgo LDFLAGS: -llog -#include -#include -#include - -static void log_print(const char *msg) { - __android_log_print(ANDROID_LOG_INFO, "ClashForAndroid", "%s", msg); -} -*/ -import "C" -import "unsafe" - -//export Java_com_github_kr328_clash_core_Clash_loadDefault -func Java_com_github_kr328_clash_core_Clash_loadDefault(env *C.JNIEnv, class C.jclass) { - log := C.CString("Hello World form go") - C.log_print(log) - C.free(unsafe.Pointer(log)) -} - func main() { } diff --git a/core/src/main/golang/profile/load.go b/core/src/main/golang/profile/load.go new file mode 100644 index 0000000..8034292 --- /dev/null +++ b/core/src/main/golang/profile/load.go @@ -0,0 +1,63 @@ +package profile + +import ( + "net" + + "github.com/Dreamacro/clash/component/auth" + "github.com/Dreamacro/clash/config" + "github.com/Dreamacro/clash/constant" + "github.com/Dreamacro/clash/dns" + "github.com/Dreamacro/clash/hub/executor" + "github.com/Dreamacro/clash/log" + "github.com/Dreamacro/clash/tunnel" +) + +func LoadDefault() { + defaultC := &config.Config{ + General: &config.General{ + Port: 0, + SocksPort: 0, + RedirPort: 0, + Authentication: []string{}, + AllowLan: false, + BindAddress: "*", + Mode: tunnel.Direct, + LogLevel: log.SILENT, + ExternalController: "", + ExternalUI: "", + Secret: "", + }, + DNS: &config.DNS{ + Enable: false, + IPv6: false, + NameServer: []dns.NameServer{}, + Fallback: []dns.NameServer{}, + FallbackFilter: config.FallbackFilter{ + GeoIP: false, + IPCIDR: []*net.IPNet{}, + }, + Listen: "", + EnhancedMode: dns.NORMAL, + FakeIPRange: nil, + }, + Experimental: &config.Experimental{ + IgnoreResolveFail: false, + }, + Hosts: nil, + Rules: []constant.Rule{}, + Users: []auth.AuthUser{}, + Proxies: map[string]constant.Proxy{}, + } + + executor.ApplyConfig(defaultC, true) +} + +func LoadFromFile(path string) error { + cfg, err := config.Parse(path) + if err != nil { + return err + } + + executor.ApplyConfig(cfg, true) + return nil +}