mirror of
https://github.com/p4gefau1t/trojan-go.git
synced 2024-04-21 12:21:34 +00:00
add makefile
This commit is contained in:
@@ -11,32 +11,28 @@ assignees: ''
|
||||
|
||||
我们建议您按照下方模板填写 Bug Report,以便我们收集更多的有效信息
|
||||
|
||||
# 简单描述这个 Bug:
|
||||
## 简单描述这个 Bug
|
||||
|
||||
## 如何复现这个 Bug
|
||||
|
||||
# 如何复现这个 Bug:
|
||||
在此描述复现这个Bug所需要的操作步骤
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
4.
|
||||
|
||||
### 服务器和客户端环境信息
|
||||
## 服务器和客户端环境信息
|
||||
|
||||
在此描述你的服务器和客户端所处的网络环境,系统架构,以及其他信息
|
||||
|
||||
### 服务端和客户端日志
|
||||
## 服务端和客户端日志
|
||||
|
||||
粘贴**故障发生时**,服务端和客户端日志
|
||||
|
||||
### 服务端和客户端配置文件
|
||||
## 服务端和客户端配置文件
|
||||
|
||||
可以复现该问题的客户端和服务端的完整配置
|
||||
可以复现该问题的客户端和服务端的完整配置(请隐去域名和IP等隐私信息)
|
||||
|
||||
### 服务端和客户端版本信息
|
||||
## 服务端和客户端版本信息
|
||||
|
||||
请执行 ./trojan-go -version并将输出完整粘贴在此处
|
||||
请执行./trojan-go -version并将输出完整粘贴在此处
|
||||
|
||||
### 其他信息
|
||||
## 其他信息
|
||||
|
||||
你认为对我们修复bug有帮助的任何信息都可以在这里写出来
|
||||
|
||||
@@ -23,9 +23,9 @@ jobs:
|
||||
- name: Test
|
||||
run: go test ./...
|
||||
- name: Build
|
||||
run: mkdir dist && go build -tags "full" -o dist
|
||||
run: make
|
||||
- name: Upload Binary
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: dist-${{ matrix.platform }}
|
||||
path: ./dist/
|
||||
name: bin-${{ matrix.platform }}
|
||||
path: ./bin/
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
git checkout $tag_name
|
||||
- name: Build
|
||||
run: |
|
||||
./build-all.sh
|
||||
./release.sh
|
||||
set -x
|
||||
assets=()
|
||||
for asset in ./release/*; do
|
||||
|
||||
+4
-4
@@ -2,13 +2,13 @@ FROM golang:alpine AS builder
|
||||
WORKDIR /
|
||||
RUN apk add --update git &&\
|
||||
git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git &&\
|
||||
cd trojan-go && mkdir release && go build -tags "full" -ldflags "-s -w" -o release &&\
|
||||
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O release/geosite.dat &&\
|
||||
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O release/geoip.dat
|
||||
cd trojan-go && make &&\
|
||||
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O bin/geosite.dat &&\
|
||||
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O bin/geoip.dat
|
||||
|
||||
FROM alpine
|
||||
WORKDIR /
|
||||
COPY --from=builder /trojan-go/release /usr/local/bin/
|
||||
COPY --from=builder /trojan-go/bin /usr/local/bin/
|
||||
COPY --from=builder /trojan-go/example/server.json /etc/trojan-go/config.json
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/trojan-go", "-config"]
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
NAME=trojan-go
|
||||
PACKAGE_NAME=github.com/p4gefau1t/trojan-go
|
||||
VERSION=`git describe`
|
||||
COMMIT=`git rev-parse HEAD`
|
||||
|
||||
BIN_DIR=bin
|
||||
VAR_SETTING=-X $(PACKAGE_NAME)/constant.Version=$(VERSION) -X $(PACKAGE_NAME)/constant.Commit=$(COMMIT)
|
||||
GOBUILD=CGO_ENABLED=0 go build -tags "full" -ldflags="-s -w $(VAR_SETTING)" -o $(BIN_DIR)/$(NAME)
|
||||
|
||||
normal: clean
|
||||
$(GOBUILD)
|
||||
|
||||
clean:
|
||||
-rm -frd $(BIN_DIR)
|
||||
|
||||
geoip.dat:
|
||||
wget https://github.com/v2ray/geoip/raw/release/geoip.dat
|
||||
|
||||
geosite.dat:
|
||||
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O geosite.dat
|
||||
|
||||
install: $(BIN_DIR)/$(NAME) geoip.dat geosite.dat
|
||||
mkdir -p /etc/$(NAME)
|
||||
mkdir -p /usr/share/$(NAME)
|
||||
cp example/*.json /etc/$(NAME)
|
||||
cp $(BIN_DIR)/$(NAME) /usr/bin/$(NAME)
|
||||
cp example/$(NAME).service /etc/systemd/system
|
||||
cp example/$(NAME)@.service /etc/systemd/system
|
||||
cp geosite.dat /usr/share/$(NAME)/geosite.dat
|
||||
cp geoip.dat /usr/share/$(NAME)/geoip.dat
|
||||
ln -fs /usr/share/$(NAME)/geoip.dat /usr/bin/
|
||||
ln -fs /usr/share/$(NAME)/geosite.dat /usr/bin/
|
||||
|
||||
uninstall:
|
||||
rm /etc/systemd/system/$(NAME).service
|
||||
rm /etc/systemd/system/$(NAME)@.service
|
||||
rm /usr/bin/$(NAME)
|
||||
rm -rd /etc/$(NAME)
|
||||
rm -rd /usr/share/$(NAME)
|
||||
rm /usr/bin/geoip.dat
|
||||
rm /usr/bin/geosite.dat
|
||||
|
||||
darwin-amd64:
|
||||
GOARCH=amd64 GOOS=darwin $(GOBUILD)
|
||||
|
||||
linux-386:
|
||||
GOARCH=386 GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-amd64:
|
||||
GOARCH=amd64 GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-armv5:
|
||||
GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD)
|
||||
|
||||
linux-armv6:
|
||||
GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD)
|
||||
|
||||
linux-armv7:
|
||||
GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD)
|
||||
|
||||
linux-armv8:
|
||||
GOARCH=arm64 GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-mips-softfloat:
|
||||
GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-mips-hardfloat:
|
||||
GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-mipsle-softfloat:
|
||||
GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-mipsle-hardfloat:
|
||||
GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-mips64:
|
||||
GOARCH=mips64 GOOS=linux $(GOBUILD)
|
||||
|
||||
linux-mips64le:
|
||||
GOARCH=mips64le GOOS=linux $(GOBUILD)
|
||||
|
||||
freebsd-386:
|
||||
GOARCH=386 GOOS=freebsd $(GOBUILD)
|
||||
|
||||
freebsd-amd64:
|
||||
GOARCH=amd64 GOOS=freebsd $(GOBUILD)
|
||||
|
||||
windows-386:
|
||||
GOARCH=386 GOOS=windows $(GOBUILD)
|
||||
|
||||
windows-amd64:
|
||||
GOARCH=amd64 GOOS=windows $(GOBUILD)
|
||||
@@ -340,9 +340,18 @@ Trojan-Go支持可插拔的传输层插件,并支持Shadowsocks [SIP003](https
|
||||
|
||||
确保你的Go版本 >= 1.14,推荐使用snap安装Go保持与上游同步。
|
||||
|
||||
下面的命令使用```make```进行编译
|
||||
|
||||
```shell
|
||||
git clone https://github.com/p4gefau1t/trojan-go.git
|
||||
cd trojan-go
|
||||
make
|
||||
make install #安装systemd服务等,可选
|
||||
```
|
||||
|
||||
你也可以使用Go自行编译和安装
|
||||
|
||||
```shell
|
||||
go build -tags "full"
|
||||
```
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
PLATFORMS="darwin/amd64 darwin/386"
|
||||
PLATFORMS="$PLATFORMS windows/amd64 windows/386"
|
||||
PLATFORMS="$PLATFORMS windows/arm"
|
||||
PLATFORMS="$PLATFORMS linux/amd64 linux/386"
|
||||
PLATFORMS="$PLATFORMS linux/ppc64 linux/ppc64le"
|
||||
PLATFORMS="$PLATFORMS linux/mips64 linux/mips64le"
|
||||
PLATFORMS="$PLATFORMS linux/mips linux/mipsle"
|
||||
PLATFORMS="$PLATFORMS linux/arm64 linux/arm"
|
||||
PLATFORMS="$PLATFORMS linux/s390x"
|
||||
PLATFORMS="$PLATFORMS dragonfly/amd64"
|
||||
PLATFORMS="$PLATFORMS openbsd/arm64 openbsd/arm"
|
||||
PLATFORMS="$PLATFORMS openbsd/amd64 openbsd/386"
|
||||
PLATFORMS="$PLATFORMS freebsd/amd64 freebsd/386"
|
||||
PLATFORMS="$PLATFORMS freebsd/arm64 freebsd/arm"
|
||||
|
||||
type setopt >/dev/null 2>&1
|
||||
|
||||
rm -rd release
|
||||
rm -rd temp
|
||||
rm ./*.dat
|
||||
|
||||
mkdir release
|
||||
mkdir temp
|
||||
|
||||
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O geosite.dat
|
||||
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O geoip.dat
|
||||
|
||||
|
||||
SCRIPT_NAME=`basename "$0"`
|
||||
FAILURES=""
|
||||
|
||||
PACKAGE_NAME="github.com/p4gefau1t/trojan-go"
|
||||
VERSION=`git describe`
|
||||
COMMIT=`git rev-parse HEAD`
|
||||
|
||||
VAR_SETTING=""
|
||||
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Version=$VERSION"
|
||||
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Commit=$COMMIT"
|
||||
|
||||
for PLATFORM in $PLATFORMS; do
|
||||
GOOS=${PLATFORM%/*}
|
||||
GOARCH=${PLATFORM#*/}
|
||||
ZIP_FILENAME="trojan-go-${GOOS}-${GOARCH}.zip"
|
||||
CMD="CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} go build -tags \"full\" -o temp -ldflags=\"-s -w ${VAR_SETTING}\""
|
||||
echo "${CMD}"
|
||||
eval $CMD || FAILURES="${FAILURES} ${PLATFORM}"
|
||||
zip -j release/$ZIP_FILENAME temp/* ./*.dat
|
||||
zip release/$ZIP_FILENAME example/*
|
||||
sha1sum release/$ZIP_FILENAME >> release/checksum.sha1
|
||||
rm temp/*
|
||||
done
|
||||
|
||||
# arm
|
||||
PLATFORMS_ARM="windows linux freebsd netbsd"
|
||||
for GOOS in $PLATFORMS_ARM; do
|
||||
# build for each ARM version
|
||||
GOARCH="arm"
|
||||
for GOARM in 7 6 5; do
|
||||
ZIP_FILENAME="trojan-go-${GOOS}-${GOARCH}v${GOARM}.zip"
|
||||
CMD="CGO_ENABLED=0 GOARM=${GOARM} GOOS=${GOOS} GOARCH=${GOARCH} go build -tags \"full\" -o temp -ldflags \"-s -w ${VAR_SETTING}\""
|
||||
echo "${CMD}"
|
||||
eval "${CMD}" || FAILURES="${FAILURES} ${GOOS}/${GOARCH}v${GOARM}"
|
||||
zip -j release/$ZIP_FILENAME temp/* ./*.dat
|
||||
zip release/$ZIP_FILENAME example/*
|
||||
sha1sum release/$ZIP_FILENAME >> release/checksum.sha1
|
||||
rm temp/*
|
||||
done
|
||||
done
|
||||
|
||||
|
||||
# eval errors
|
||||
if [[ "${FAILURES}" != "" ]]; then
|
||||
echo ""
|
||||
echo "${SCRIPT_NAME} failed on: ${FAILURES}"
|
||||
fi
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
PACKAGE_NAME="github.com/p4gefau1t/trojan-go"
|
||||
VERSION=`git describe`
|
||||
COMMIT=`git rev-parse HEAD`
|
||||
|
||||
VAR_SETTING=""
|
||||
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Version=$VERSION"
|
||||
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Commit=$COMMIT"
|
||||
|
||||
CGO_ENABLED=0 go build -tags "full" -ldflags="-s -w $VAR_SETTING"
|
||||
@@ -6,14 +6,19 @@ weight: 10
|
||||
|
||||
编译需要Go版本号高于1.14.x,请在编译前确认你的编译器版本。推荐使用snap安装和更新go。
|
||||
|
||||
编译过程非常简单
|
||||
编译方式非常简单,可以使用Makefile预设步骤进行编译:
|
||||
|
||||
```shell
|
||||
make
|
||||
make install #安装systemd服务等,可选
|
||||
```
|
||||
|
||||
或者直接使用Go进行编译:
|
||||
|
||||
```shell
|
||||
go build -tags "full" #编译完整版本
|
||||
```
|
||||
|
||||
build.sh中的命令禁用了cgo并去除可执行文件的调试符号以减小体积。
|
||||
|
||||
可以通过指定GOOS和GOARCH环境变量,指定交叉编译的目标操作系统和架构,例如
|
||||
|
||||
```shell
|
||||
@@ -21,7 +26,7 @@ GOOS=windows GOARCH=386 go build -tags "full" #windows x86
|
||||
GOOS=linux GOARCH=arm64 go build -tags "full" #linux arm64
|
||||
```
|
||||
|
||||
你可以使用build-all.sh进行批量的多个平台的交叉编译,release版本使用了这个脚本进行构建。
|
||||
你可以使用release.sh进行批量的多个平台的交叉编译,release版本使用了这个脚本进行构建。
|
||||
|
||||
Trojan-Go的大多数模块是可插拔的。在build文件夹下可以找到各个模块的导入声明。如果你不需要其中某些功能,或者需要缩小可执行文件的体积,可以使用构建标签(tags)进行模块的自定义,例如
|
||||
|
||||
|
||||
+5
-3
@@ -10,10 +10,10 @@
|
||||
"ssl": {
|
||||
"sni": "your-domain-name.com"
|
||||
},
|
||||
"mux" :{
|
||||
"mux": {
|
||||
"enabled": true
|
||||
},
|
||||
"router":{
|
||||
"router": {
|
||||
"enabled": true,
|
||||
"bypass": [
|
||||
"geoip:cn",
|
||||
@@ -27,6 +27,8 @@
|
||||
"proxy": [
|
||||
"geosite:geolocation-!cn"
|
||||
],
|
||||
"default_policy": "proxy"
|
||||
"default_policy": "proxy",
|
||||
"geoip": "/usr/share/trojan-go/geoip.dat",
|
||||
"geosite": "/usr/share/trojan-go/geosite.dat"
|
||||
}
|
||||
}
|
||||
+5
-3
@@ -12,10 +12,12 @@
|
||||
"key": "your_key.key",
|
||||
"sni": "your-domain-name.com"
|
||||
},
|
||||
"router":{
|
||||
"router": {
|
||||
"enabled": true,
|
||||
"block": [
|
||||
"geoip:private"
|
||||
]
|
||||
],
|
||||
"geoip": "/usr/share/trojan-go/geoip.dat",
|
||||
"geosite": "/usr/share/trojan-go/geosite.dat"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
User=nobody
|
||||
ExecStart=/usr/bin/trojan-go -config /etc/trojan-go/config.json
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
@@ -6,7 +6,7 @@ After=network.target network-online.target nss-lookup.target mysql.service maria
|
||||
[Service]
|
||||
Type=simple
|
||||
StandardError=journal
|
||||
User=root
|
||||
User=nobody
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
ExecStart=/usr/bin/trojan-go -config /etc/trojan-go/%i.json
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
PLATFORMS="$PLATFORMS darwin-amd64"
|
||||
PLATFORMS="$PLATFORMS linux-386"
|
||||
PLATFORMS="$PLATFORMS linux-amd64"
|
||||
PLATFORMS="$PLATFORMS linux-armv5"
|
||||
PLATFORMS="$PLATFORMS linux-armv6"
|
||||
PLATFORMS="$PLATFORMS linux-armv7"
|
||||
PLATFORMS="$PLATFORMS linux-armv8"
|
||||
PLATFORMS="$PLATFORMS linux-mips-softfloat"
|
||||
PLATFORMS="$PLATFORMS linux-mips-hardfloat"
|
||||
PLATFORMS="$PLATFORMS linux-mipsle-softfloat"
|
||||
PLATFORMS="$PLATFORMS linux-mipsle-hardfloat"
|
||||
PLATFORMS="$PLATFORMS linux-mips64"
|
||||
PLATFORMS="$PLATFORMS linux-mips64le"
|
||||
PLATFORMS="$PLATFORMS freebsd-386"
|
||||
PLATFORMS="$PLATFORMS freebsd-amd64"
|
||||
PLATFORMS="$PLATFORMS windows-386"
|
||||
PLATFORMS="$PLATFORMS windows-amd64"
|
||||
|
||||
rm -rdf release
|
||||
rm -rdf temp
|
||||
mkdir release
|
||||
mkdir temp
|
||||
|
||||
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O temp/geosite.dat
|
||||
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O temp/geoip.dat
|
||||
|
||||
for PLATFORM in $PLATFORMS; do
|
||||
make clean
|
||||
eval "make $PLATFORM" || FAILURES="${PLATFORM}"
|
||||
if [[ "${FAILURES}" != "" ]]; then
|
||||
echo "failed on: ${FAILURES}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ZIP_FILENAME=trojan-go-$PLATFORM.zip
|
||||
zip -j release/$ZIP_FILENAME bin/trojan-go
|
||||
zip release/$ZIP_FILENAME example/*
|
||||
zip -j release/$ZIP_FILENAME temp/*
|
||||
done
|
||||
|
||||
make clean
|
||||
rm -rdf temp
|
||||
Reference in New Issue
Block a user