forked from ms/transocks
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
22397c6815 | |||
7bfa2786db | |||
6fdd75fbb0 | |||
c692b8881d | |||
ffbd6b14fa | |||
13a9bd1aa1 | |||
26ac2ef39c | |||
4b36ccffaa | |||
9792ba4376 | |||
ba1b89b252 | |||
1dff7ec332 | |||
c429f40125 |
@ -40,28 +40,41 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
version: v1.60
|
version: v1.60
|
||||||
|
|
||||||
- name: build amd64
|
- name: build linux amd64
|
||||||
id: build-amd64
|
id: build-amd64
|
||||||
run: |
|
run: |
|
||||||
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-amd64" >> $GITHUB_OUTPUT
|
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-amd64" >> $GITHUB_OUTPUT
|
||||||
GOARCH=amd64 make clean build
|
GOARCH=amd64 make clean build
|
||||||
|
|
||||||
- name: upload amd64
|
- name: upload linux amd64
|
||||||
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
|
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.build-amd64.outputs.ARTIFACT }}
|
name: ${{ steps.build-amd64.outputs.ARTIFACT }}
|
||||||
path: out/bin/*
|
path: out/bin/*
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
- name: build arm64
|
- name: build linux arm64
|
||||||
id: build-arm64
|
id: build-arm64
|
||||||
run: |
|
run: |
|
||||||
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-arm64" >> $GITHUB_OUTPUT
|
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-arm64" >> $GITHUB_OUTPUT
|
||||||
GOARCH=arm64 make clean build
|
GOARCH=arm64 make clean build
|
||||||
|
|
||||||
- name: upload arm64
|
- name: upload linux arm64
|
||||||
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
|
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.build-arm64.outputs.ARTIFACT }}
|
name: ${{ steps.build-arm64.outputs.ARTIFACT }}
|
||||||
path: out/bin/*
|
path: out/bin/*
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
|
- name: build linux arm32
|
||||||
|
id: build-arm32
|
||||||
|
run: |
|
||||||
|
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-arm32" >> $GITHUB_OUTPUT
|
||||||
|
GOARCH=arm make clean build
|
||||||
|
|
||||||
|
- name: upload linux arm32
|
||||||
|
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: ${{ steps.build-arm32.outputs.ARTIFACT }}
|
||||||
|
path: out/bin/*
|
||||||
|
overwrite: true
|
||||||
|
@ -10,11 +10,6 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
|
||||||
version: ${{ steps.meta.outputs.VERSION }}
|
|
||||||
changes: ${{ steps.meta.outputs.CHANGES }}
|
|
||||||
artifact_amd64: ${{ steps.build-amd.outputs.ARTIFACT }}
|
|
||||||
artifact_arm64: ${{ steps.build-arm.outputs.ARTIFACT }}
|
|
||||||
steps:
|
steps:
|
||||||
- name: check-out
|
- name: check-out
|
||||||
uses: https://git.mousesoft.ru/actions/checkout@v4
|
uses: https://git.mousesoft.ru/actions/checkout@v4
|
||||||
@ -27,20 +22,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
go-version: ">=1.22"
|
go-version: ">=1.22"
|
||||||
|
|
||||||
- name: meta
|
|
||||||
id: meta
|
|
||||||
env:
|
|
||||||
SSH_HOST: ${{ secrets.DEB_SSH_HOST }}
|
|
||||||
run: |
|
|
||||||
echo "VERSION=$(make version)" >> $GITHUB_OUTPUT
|
|
||||||
echo 'CHANGES<<EOF' >> $GITHUB_OUTPUT
|
|
||||||
gawk -f scripts/changes.awk -v version=$(make version-number) CHANGELOG.md >> $GITHUB_OUTPUT
|
|
||||||
echo EOF >> $GITHUB_OUTPUT
|
|
||||||
mkdir -p out
|
|
||||||
sed -e "s/DEB_SSH_HOST/$SSH_HOST/g" deploy/dput/mousesoft.json.tpl > out/mousesoft.json
|
|
||||||
mkdir -p /etc/dput.d/profiles
|
|
||||||
cp out/mousesoft.json /etc/dput.d/profiles/
|
|
||||||
|
|
||||||
- name: set-up dependencies
|
- name: set-up dependencies
|
||||||
run: |
|
run: |
|
||||||
go install github.com/kisielk/errcheck@latest
|
go install github.com/kisielk/errcheck@latest
|
||||||
@ -57,14 +38,29 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
version: v1.60
|
version: v1.60
|
||||||
|
|
||||||
- name: build amd64
|
- name: build linux amd64
|
||||||
id: build-amd64
|
|
||||||
run: GOARCH=amd64 make build pkg-deb
|
run: GOARCH=amd64 make build pkg-deb
|
||||||
|
|
||||||
- name: build arm64
|
- name: build linux arm64
|
||||||
id: build-arm64
|
|
||||||
run: GOARCH=arm64 make build pkg-deb
|
run: GOARCH=arm64 make build pkg-deb
|
||||||
|
|
||||||
|
- name: build linux arm32
|
||||||
|
run: GOARCH=arm make build pkg-deb
|
||||||
|
|
||||||
|
- name: meta
|
||||||
|
id: meta
|
||||||
|
env:
|
||||||
|
SSH_HOST: ${{ secrets.DEB_SSH_HOST }}
|
||||||
|
run: |
|
||||||
|
echo "VERSION=$(make version)" >> $GITHUB_OUTPUT
|
||||||
|
echo 'CHANGES<<EOF' >> $GITHUB_OUTPUT
|
||||||
|
gawk -f scripts/changes.awk -v version=$(make version-number) CHANGELOG.md >> $GITHUB_OUTPUT
|
||||||
|
echo EOF >> $GITHUB_OUTPUT
|
||||||
|
mkdir -p out
|
||||||
|
sed -e "s/DEB_SSH_HOST/$SSH_HOST/g" deploy/dput/mousesoft.json.tpl > out/mousesoft.json
|
||||||
|
mkdir -p /etc/dput.d/profiles
|
||||||
|
cp out/mousesoft.json /etc/dput.d/profiles/
|
||||||
|
|
||||||
- name: deploy packages
|
- name: deploy packages
|
||||||
env:
|
env:
|
||||||
SSH_HOST: ${{ secrets.DEB_SSH_HOST }}
|
SSH_HOST: ${{ secrets.DEB_SSH_HOST }}
|
||||||
|
10
CHANGELOG.md
10
CHANGELOG.md
@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [1.1.4](https://git.mousesoft.ru/alexey/transocks/releases/tag/v1.1.4) - 2024-11-05
|
||||||
|
|
||||||
|
- **Fixed**
|
||||||
|
- Bug in method `Server.handleConnection`.
|
||||||
|
|
||||||
|
## [1.1.3](https://git.mousesoft.ru/alexey/transocks/releases/tag/v1.1.3) - 2024-11-03
|
||||||
|
|
||||||
|
- **Added**
|
||||||
|
- Build linux-arm32 package.
|
||||||
|
|
||||||
## [1.1.2](https://git.mousesoft.ru/alexey/transocks/releases/tag/v1.1.2) - 2024-11-02
|
## [1.1.2](https://git.mousesoft.ru/alexey/transocks/releases/tag/v1.1.2) - 2024-11-02
|
||||||
|
|
||||||
- **Added**
|
- **Added**
|
||||||
|
31
Dockerfile
31
Dockerfile
@ -1,31 +0,0 @@
|
|||||||
# Start by building the application.
|
|
||||||
FROM docker.io/golang:1.22 AS build
|
|
||||||
|
|
||||||
WORKDIR /usr/src/transocks
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
RUN CGO_ENABLED=0 go build -trimpath -o transocks ./cmd/transocks
|
|
||||||
|
|
||||||
# Now copy it into our base image.
|
|
||||||
FROM gcr.io/distroless/static-debian12:nonroot
|
|
||||||
|
|
||||||
COPY --from=build /usr/src/transocks/transocks /usr/bin/transocks
|
|
||||||
|
|
||||||
VOLUME [ "/etc/transocks" ]
|
|
||||||
ENTRYPOINT [ "/usr/bin/transocks" ]
|
|
||||||
|
|
||||||
ARG IMAGE_CREATED
|
|
||||||
ARG IMAGE_VERSION
|
|
||||||
ARG IMAGE_REVISION
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.created="${IMAGE_CREATED}" \
|
|
||||||
org.opencontainers.image.authors="MouseSoft" \
|
|
||||||
org.opencontainers.image.url="https://git.mousesoft.ru/alexey/transocks" \
|
|
||||||
org.opencontainers.image.documentation="https://git.mousesoft.ru/alexey/transocks/src/branch/master/README.md" \
|
|
||||||
org.opencontainers.image.source="https://git.mousesoft.ru/alexey/transocks" \
|
|
||||||
org.opencontainers.image.version="${IMAGE_VERSION}" \
|
|
||||||
org.opencontainers.image.revision="${IMAGE_REVISION}" \
|
|
||||||
org.opencontainers.image.vendor="MouseSoft" \
|
|
||||||
org.opencontainers.image.licenses="MIT" \
|
|
||||||
org.opencontainers.image.title="transocks - a transparent SOCKS5/HTTP proxy" \
|
|
||||||
org.opencontainers.image.description="transocks is a background service to redirect TCP connections transparently to a SOCKS5 server or a HTTP proxy server like Squid."
|
|
10
configs/transocks.example.toml
Normal file
10
configs/transocks.example.toml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# listening address of transocks.
|
||||||
|
listen = "localhost:1081" # default is "localhost:1081"
|
||||||
|
|
||||||
|
#proxy_url = "socks5://10.20.30.40:1080" # for SOCKS5 server
|
||||||
|
#proxy_url = "http://10.20.30.40:3128" # for HTTP proxy server
|
||||||
|
|
||||||
|
[log]
|
||||||
|
#filename = "/path/to/file" # default to stderr
|
||||||
|
level = "info" # critical", error, warning, info, debug
|
||||||
|
#format = "json" # plain, logfmt, json
|
32
makefile
32
makefile
@ -33,6 +33,11 @@ DIST_EXT := .tar.gz
|
|||||||
DIST_OPTS := -czf
|
DIST_OPTS := -czf
|
||||||
PKG_NAME := $(PROJECT_ID)_$(VERSION)_$(GOOS)-$(GOARCH)
|
PKG_NAME := $(PROJECT_ID)_$(VERSION)_$(GOOS)-$(GOARCH)
|
||||||
DIST_FILE := $(PKG_NAME)$(DIST_EXT)
|
DIST_FILE := $(PKG_NAME)$(DIST_EXT)
|
||||||
|
PKG_ARCH := $(GOARCH)
|
||||||
|
|
||||||
|
ifeq ($(PKG_ARCH),arm)
|
||||||
|
PKG_ARCH = armhf
|
||||||
|
endif
|
||||||
|
|
||||||
GREEN := $(shell tput -Txterm setaf 2)
|
GREEN := $(shell tput -Txterm setaf 2)
|
||||||
YELLOW := $(shell tput -Txterm setaf 3)
|
YELLOW := $(shell tput -Txterm setaf 3)
|
||||||
@ -85,28 +90,29 @@ dist: ## Create binary distro package
|
|||||||
@$(ECHO_CMD) "Dist\t\t${GREEN}[OK]${RESET}"
|
@$(ECHO_CMD) "Dist\t\t${GREEN}[OK]${RESET}"
|
||||||
.PHONY:dist
|
.PHONY:dist
|
||||||
|
|
||||||
DEB_NAME := $(PROJECT_ID)_$(VERSION_NUMBER)-1_$(GOARCH)
|
DEB_NAME := $(PROJECT_ID)_$(VERSION_NUMBER)-1_$(PKG_ARCH)
|
||||||
|
|
||||||
pkg-deb: ## Build debian package
|
pkg-deb: ## Build debian package
|
||||||
@rm -rf $(TMPDIR)
|
@rm -rf $(TMPDIR)
|
||||||
@mkdir -p $(TMPDIR)/$(DEB_NAME)/usr/bin
|
|
||||||
@mkdir -p $(TMPDIR)/$(DEB_NAME)/debian
|
|
||||||
@mkdir -p $(TMPDIR)/$(DEB_NAME)/DEBIAN
|
@mkdir -p $(TMPDIR)/$(DEB_NAME)/DEBIAN
|
||||||
|
@mkdir -p $(TMPDIR)/$(DEB_NAME)/etc
|
||||||
|
@mkdir -p $(TMPDIR)/$(DEB_NAME)/usr/bin
|
||||||
|
@cp $(CURDIR)/configs/transocks.example.toml $(TMPDIR)/$(DEB_NAME)/etc/transocks.toml
|
||||||
@cp -a $(BINDIR)/* $(TMPDIR)/$(DEB_NAME)/usr/bin/
|
@cp -a $(BINDIR)/* $(TMPDIR)/$(DEB_NAME)/usr/bin/
|
||||||
@sed -e "s/VERSION/$(VERSION_NUMBER)/g" \
|
@sed -e "s/VERSION/$(VERSION_NUMBER)/g" \
|
||||||
$(CURDIR)/build/package/debian/changelog.tpl \
|
$(CURDIR)/build/package/debian/changelog.tpl \
|
||||||
> $(TMPDIR)/$(DEB_NAME)/changelog
|
> $(TMPDIR)/changelog
|
||||||
@sed -e "s/ARCH/$(GOARCH)/g" $(CURDIR)/build/package/debian/control.tpl \
|
@sed -e "s/ARCH/$(PKG_ARCH)/g" $(CURDIR)/build/package/debian/control.tpl \
|
||||||
> $(TMPDIR)/$(DEB_NAME)/control
|
> $(TMPDIR)/control
|
||||||
DEB_HOST_ARCH=$(GOARCH) dpkg-gencontrol -v$(VERSION_NUMBER)-1 \
|
DEB_HOST_ARCH=$(PKG_ARCH) dpkg-gencontrol -v$(VERSION_NUMBER)-1 \
|
||||||
-c$(TMPDIR)/$(DEB_NAME)/control \
|
-c$(TMPDIR)/control \
|
||||||
-l$(TMPDIR)/$(DEB_NAME)/changelog \
|
-l$(TMPDIR)/changelog \
|
||||||
-f$(TMPDIR)/$(DEB_NAME)/debian/files -Ptmp/$(DEB_NAME)
|
-f$(TMPDIR)/$(DEB_NAME)/DEBIAN/files -Ptmp/$(DEB_NAME)
|
||||||
dpkg-deb --build --root-owner-group $(TMPDIR)/$(DEB_NAME)
|
dpkg-deb --build --root-owner-group $(TMPDIR)/$(DEB_NAME)
|
||||||
dpkg-genchanges --build=binary \
|
dpkg-genchanges --build=binary \
|
||||||
-c$(TMPDIR)/$(DEB_NAME)/control \
|
-c$(TMPDIR)/control \
|
||||||
-l$(TMPDIR)/$(DEB_NAME)/changelog \
|
-l$(TMPDIR)/changelog \
|
||||||
-f$(TMPDIR)/$(DEB_NAME)/debian/files \
|
-f$(TMPDIR)/$(DEB_NAME)/DEBIAN/files \
|
||||||
-u$(TMPDIR) -O$(OUTDIR)/$(DEB_NAME).changes
|
-u$(TMPDIR) -O$(OUTDIR)/$(DEB_NAME).changes
|
||||||
@mv $(TMPDIR)/*.deb $(OUTDIR)/
|
@mv $(TMPDIR)/*.deb $(OUTDIR)/
|
||||||
@$(ECHO_CMD) "pkg-deb\t\t${GREEN}[OK]${RESET}"
|
@$(ECHO_CMD) "pkg-deb\t\t${GREEN}[OK]${RESET}"
|
||||||
|
@ -144,10 +144,11 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
fields[log.FnError] = err.Error()
|
fields[log.FnError] = err.Error()
|
||||||
_ = s.logger.Warn("peekHTTP failed", fields)
|
_ = s.logger.Warn("peekHTTP failed", fields)
|
||||||
} else {
|
} else if host != "" {
|
||||||
if err == nil && host != "" {
|
if strings.Contains(host, ":") {
|
||||||
addr = host + addr[strings.Index(addr, ":"):]
|
host = host[:strings.Index(host, ":")]
|
||||||
}
|
}
|
||||||
|
addr = host + addr[strings.Index(addr, ":"):]
|
||||||
}
|
}
|
||||||
reader = reader_n3
|
reader = reader_n3
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user