From cbe32f02560ab0449d163d23ea473709f64b8476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Sun, 3 May 2020 00:01:03 +0800 Subject: [PATCH 1/3] modular build with tags --- build-all.sh | 2 +- build.sh | 2 +- build_api.go | 7 +++ build_base.go | 27 +++++++++++ build_cert.go | 7 +++ build_client.go | 7 +++ build_full.go | 8 ++++ build_mysql.go | 7 +++ build_relay.go | 7 +++ build_router.go | 7 +++ build_server.go | 7 +++ main.go | 38 ---------------- stat/{db/db.go => mysql/mysql.go} | 2 +- stat/{db/db_test.go => mysql/mysql_test.go} | 2 +- update/update.go | 50 --------------------- 15 files changed, 88 insertions(+), 92 deletions(-) create mode 100644 build_api.go create mode 100644 build_base.go create mode 100644 build_cert.go create mode 100644 build_client.go create mode 100644 build_full.go create mode 100644 build_mysql.go create mode 100644 build_relay.go create mode 100644 build_router.go create mode 100644 build_server.go delete mode 100644 main.go rename stat/{db/db.go => mysql/mysql.go} (99%) rename stat/{db/db_test.go => mysql/mysql_test.go} (98%) delete mode 100644 update/update.go diff --git a/build-all.sh b/build-all.sh index b7bff33..7fd5504 100755 --- a/build-all.sh +++ b/build-all.sh @@ -35,7 +35,7 @@ for PLATFORM in $PLATFORMS; do GOOS=${PLATFORM%/*} GOARCH=${PLATFORM#*/} ZIP_FILENAME="trojan-go-${GOOS}-${GOARCH}.zip" - CMD="CGO_ENABLE=0 GOOS=${GOOS} GOARCH=${GOARCH} go build -o temp $@ -ldflags=\"-s -w\"" + CMD="CGO_ENABLE=0 GOOS=${GOOS} GOARCH=${GOARCH} go build -tags \"full\" -o temp $@ -ldflags=\"-s -w\"" echo "${CMD}" eval $CMD || FAILURES="${FAILURES} ${PLATFORM}" zip -j release/$ZIP_FILENAME temp/* ./*.dat diff --git a/build.sh b/build.sh index cc6d4c0..79d1501 100755 --- a/build.sh +++ b/build.sh @@ -1 +1 @@ -CGO_ENABLE=0 go build -ldflags="-s -w" +CGO_ENABLE=0 go build -tags "full" -ldflags="-s -w" diff --git a/build_api.go b/build_api.go new file mode 100644 index 0000000..f00bd95 --- /dev/null +++ b/build_api.go @@ -0,0 +1,7 @@ +// +build api full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/api" +) diff --git a/build_base.go b/build_base.go new file mode 100644 index 0000000..7fb2bfa --- /dev/null +++ b/build_base.go @@ -0,0 +1,27 @@ +package main + +import ( + "flag" + + "github.com/p4gefau1t/trojan-go/common" + "github.com/p4gefau1t/trojan-go/log" + + _ "github.com/p4gefau1t/trojan-go/stat/memory" + _ "github.com/p4gefau1t/trojan-go/log/golog" + _ "github.com/p4gefau1t/trojan-go/version" + //_ "github.com/p4gefau1t/trojan-go/log/simplelog" +) + +func main() { + flag.Parse() + for { + h, err := common.PopOptionHandler() + if err != nil { + log.Fatal("invalid options") + } + err = h.Handle() + if err == nil { + break + } + } +} diff --git a/build_cert.go b/build_cert.go new file mode 100644 index 0000000..9c9085d --- /dev/null +++ b/build_cert.go @@ -0,0 +1,7 @@ +// +build cert full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/cert" +) diff --git a/build_client.go b/build_client.go new file mode 100644 index 0000000..c982c0a --- /dev/null +++ b/build_client.go @@ -0,0 +1,7 @@ +// +build client full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/proxy/client" +) diff --git a/build_full.go b/build_full.go new file mode 100644 index 0000000..cb15328 --- /dev/null +++ b/build_full.go @@ -0,0 +1,8 @@ +// +build full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/daemon" + _ "github.com/p4gefau1t/trojan-go/easy" +) diff --git a/build_mysql.go b/build_mysql.go new file mode 100644 index 0000000..db1f4d9 --- /dev/null +++ b/build_mysql.go @@ -0,0 +1,7 @@ +// +build mysql full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/stat/mysql" +) diff --git a/build_relay.go b/build_relay.go new file mode 100644 index 0000000..b149d8f --- /dev/null +++ b/build_relay.go @@ -0,0 +1,7 @@ +// +build relay full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/proxy/relay" +) diff --git a/build_router.go b/build_router.go new file mode 100644 index 0000000..d2bc176 --- /dev/null +++ b/build_router.go @@ -0,0 +1,7 @@ +// +build router full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/router/mixed" +) diff --git a/build_server.go b/build_server.go new file mode 100644 index 0000000..f359344 --- /dev/null +++ b/build_server.go @@ -0,0 +1,7 @@ +// +build server full + +package main + +import ( + _ "github.com/p4gefau1t/trojan-go/proxy/server" +) diff --git a/main.go b/main.go deleted file mode 100644 index 5d02248..0000000 --- a/main.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - "flag" - - "github.com/p4gefau1t/trojan-go/common" - "github.com/p4gefau1t/trojan-go/log" - - //the following modules are optional - //you can comment some of them if you don't need them - _ "github.com/p4gefau1t/trojan-go/api" - _ "github.com/p4gefau1t/trojan-go/cert" - _ "github.com/p4gefau1t/trojan-go/daemon" - _ "github.com/p4gefau1t/trojan-go/easy" - _ "github.com/p4gefau1t/trojan-go/log/golog" - _ "github.com/p4gefau1t/trojan-go/proxy/client" - _ "github.com/p4gefau1t/trojan-go/proxy/relay" - _ "github.com/p4gefau1t/trojan-go/proxy/server" - _ "github.com/p4gefau1t/trojan-go/router/mixed" - _ "github.com/p4gefau1t/trojan-go/stat/db" - _ "github.com/p4gefau1t/trojan-go/stat/memory" - _ "github.com/p4gefau1t/trojan-go/version" - //_ "github.com/p4gefau1t/trojan-go/log/simplelog" -) - -func main() { - flag.Parse() - for { - h, err := common.PopOptionHandler() - if err != nil { - log.Fatal("invalid options") - } - err = h.Handle() - if err == nil { - break - } - } -} diff --git a/stat/db/db.go b/stat/mysql/mysql.go similarity index 99% rename from stat/db/db.go rename to stat/mysql/mysql.go index da99681..e9885ac 100644 --- a/stat/db/db.go +++ b/stat/mysql/mysql.go @@ -1,4 +1,4 @@ -package db +package mysql import ( "context" diff --git a/stat/db/db_test.go b/stat/mysql/mysql_test.go similarity index 98% rename from stat/db/db_test.go rename to stat/mysql/mysql_test.go index 3f396ae..6908d10 100644 --- a/stat/db/db_test.go +++ b/stat/mysql/mysql_test.go @@ -1,4 +1,4 @@ -package db +package mysql import ( "context" diff --git a/update/update.go b/update/update.go deleted file mode 100644 index 928bf8c..0000000 --- a/update/update.go +++ /dev/null @@ -1,50 +0,0 @@ -package update - -import ( - "io" - "net/http" - "os" - - "github.com/p4gefau1t/trojan-go/common" -) - -func downloadFile(url string, filepath string) error { - resp, err := http.Get(url) - if err != nil { - return err - } - defer resp.Body.Close() - - out, err := os.Create(filepath) - if err != nil { - return err - } - defer out.Close() - - _, err = io.Copy(out, resp.Body) - if err != nil { - return err - } - return nil -} - -func downloadGeoSite() error { - filename := "geosite.dat" - url := "https://github.com/v2ray/domain-list-community/raw/release/dlc.dat" - return downloadFile(url, filename) -} - -func downloadGeoIP() error { - filename := "geoip.dat" - url := "https://raw.githubusercontent.com/v2ray/geoip/release/geoip.dat" - return downloadFile(url, filename) -} - -type updateOption struct { - args *string - common.OptionHandler -} - -func init() { - // TODO auto updating -} From 88ccef72405cf20f4f212ed51f14300311f46ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Sun, 3 May 2020 00:03:50 +0800 Subject: [PATCH 2/3] fix actions --- .github/workflows/dev-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 7dbfcc1..80ce07b 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -21,7 +21,7 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - name: Build - run: mkdir dist && go build -o dist + run: mkdir dist && go build -tags "full" -o dist - name: Upload Binary uses: actions/upload-artifact@v1 with: From 7ae9d479d37863c4ec4281f70882765b45bf0425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Sun, 3 May 2020 00:29:28 +0800 Subject: [PATCH 3/3] move build modules to ./build --- build_api.go => build/api.go | 2 +- build_cert.go => build/cert.go | 2 +- build_client.go => build/client.go | 2 +- build_full.go => build/full.go | 2 +- build_mysql.go => build/mysql.go | 2 +- build_relay.go => build/relay.go | 2 +- build_router.go => build/router.go | 2 +- build_server.go => build/server.go | 2 +- build_base.go => main.go | 4 +++- 9 files changed, 11 insertions(+), 9 deletions(-) rename build_api.go => build/api.go (83%) rename build_cert.go => build/cert.go (84%) rename build_client.go => build/client.go (85%) rename build_full.go => build/full.go (88%) rename build_mysql.go => build/mysql.go (85%) rename build_relay.go => build/relay.go (85%) rename build_router.go => build/router.go (85%) rename build_server.go => build/server.go (85%) rename build_base.go => main.go (91%) diff --git a/build_api.go b/build/api.go similarity index 83% rename from build_api.go rename to build/api.go index f00bd95..8ca581b 100644 --- a/build_api.go +++ b/build/api.go @@ -1,6 +1,6 @@ // +build api full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/api" diff --git a/build_cert.go b/build/cert.go similarity index 84% rename from build_cert.go rename to build/cert.go index 9c9085d..7ac84e5 100644 --- a/build_cert.go +++ b/build/cert.go @@ -1,6 +1,6 @@ // +build cert full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/cert" diff --git a/build_client.go b/build/client.go similarity index 85% rename from build_client.go rename to build/client.go index c982c0a..f855ca0 100644 --- a/build_client.go +++ b/build/client.go @@ -1,6 +1,6 @@ // +build client full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/proxy/client" diff --git a/build_full.go b/build/full.go similarity index 88% rename from build_full.go rename to build/full.go index cb15328..2b03b29 100644 --- a/build_full.go +++ b/build/full.go @@ -1,6 +1,6 @@ // +build full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/daemon" diff --git a/build_mysql.go b/build/mysql.go similarity index 85% rename from build_mysql.go rename to build/mysql.go index db1f4d9..47c71e7 100644 --- a/build_mysql.go +++ b/build/mysql.go @@ -1,6 +1,6 @@ // +build mysql full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/stat/mysql" diff --git a/build_relay.go b/build/relay.go similarity index 85% rename from build_relay.go rename to build/relay.go index b149d8f..3643225 100644 --- a/build_relay.go +++ b/build/relay.go @@ -1,6 +1,6 @@ // +build relay full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/proxy/relay" diff --git a/build_router.go b/build/router.go similarity index 85% rename from build_router.go rename to build/router.go index d2bc176..365d161 100644 --- a/build_router.go +++ b/build/router.go @@ -1,6 +1,6 @@ // +build router full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/router/mixed" diff --git a/build_server.go b/build/server.go similarity index 85% rename from build_server.go rename to build/server.go index f359344..e980c3e 100644 --- a/build_server.go +++ b/build/server.go @@ -1,6 +1,6 @@ // +build server full -package main +package build import ( _ "github.com/p4gefau1t/trojan-go/proxy/server" diff --git a/build_base.go b/main.go similarity index 91% rename from build_base.go rename to main.go index 7fb2bfa..e7c637e 100644 --- a/build_base.go +++ b/main.go @@ -5,11 +5,13 @@ import ( "github.com/p4gefau1t/trojan-go/common" "github.com/p4gefau1t/trojan-go/log" - + _ "github.com/p4gefau1t/trojan-go/stat/memory" _ "github.com/p4gefau1t/trojan-go/log/golog" _ "github.com/p4gefau1t/trojan-go/version" //_ "github.com/p4gefau1t/trojan-go/log/simplelog" + + _ "github.com/p4gefau1t/trojan-go/build" ) func main() {