Compare commits

..

No commits in common. "master" and "v1.1.2" have entirely different histories.

7 changed files with 74 additions and 79 deletions

View File

@ -40,41 +40,28 @@ jobs:
with:
version: v1.60
- name: build linux amd64
- name: build amd64
id: build-amd64
run: |
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-amd64" >> $GITHUB_OUTPUT
GOARCH=amd64 make clean build
- name: upload linux amd64
- name: upload amd64
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
with:
name: ${{ steps.build-amd64.outputs.ARTIFACT }}
path: out/bin/*
overwrite: true
- name: build linux arm64
- name: build arm64
id: build-arm64
run: |
echo "ARTIFACT=transocks-$(make version)_$(go env GOOS)-arm64" >> $GITHUB_OUTPUT
GOARCH=arm64 make clean build
- name: upload linux arm64
- name: upload arm64
uses: https://git.mousesoft.ru/actions/upload-artifact@v3
with:
name: ${{ steps.build-arm64.outputs.ARTIFACT }}
path: out/bin/*
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

View File

@ -10,6 +10,11 @@ on:
jobs:
release:
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:
- name: check-out
uses: https://git.mousesoft.ru/actions/checkout@v4
@ -22,6 +27,20 @@ jobs:
with:
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
run: |
go install github.com/kisielk/errcheck@latest
@ -38,29 +57,14 @@ jobs:
with:
version: v1.60
- name: build linux amd64
- name: build amd64
id: build-amd64
run: GOARCH=amd64 make build pkg-deb
- name: build linux arm64
- name: build arm64
id: build-arm64
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
env:
SSH_HOST: ${{ secrets.DEB_SSH_HOST }}

View File

@ -2,16 +2,6 @@
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
- **Added**

31
Dockerfile Normal file
View File

@ -0,0 +1,31 @@
# 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."

View File

@ -1,10 +0,0 @@
# 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

View File

@ -33,11 +33,6 @@ DIST_EXT := .tar.gz
DIST_OPTS := -czf
PKG_NAME := $(PROJECT_ID)_$(VERSION)_$(GOOS)-$(GOARCH)
DIST_FILE := $(PKG_NAME)$(DIST_EXT)
PKG_ARCH := $(GOARCH)
ifeq ($(PKG_ARCH),arm)
PKG_ARCH = armhf
endif
GREEN := $(shell tput -Txterm setaf 2)
YELLOW := $(shell tput -Txterm setaf 3)
@ -90,29 +85,28 @@ dist: ## Create binary distro package
@$(ECHO_CMD) "Dist\t\t${GREEN}[OK]${RESET}"
.PHONY:dist
DEB_NAME := $(PROJECT_ID)_$(VERSION_NUMBER)-1_$(PKG_ARCH)
DEB_NAME := $(PROJECT_ID)_$(VERSION_NUMBER)-1_$(GOARCH)
pkg-deb: ## Build debian package
@rm -rf $(TMPDIR)
@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
@mkdir -p $(TMPDIR)/$(DEB_NAME)/debian
@mkdir -p $(TMPDIR)/$(DEB_NAME)/DEBIAN
@cp -a $(BINDIR)/* $(TMPDIR)/$(DEB_NAME)/usr/bin/
@sed -e "s/VERSION/$(VERSION_NUMBER)/g" \
$(CURDIR)/build/package/debian/changelog.tpl \
> $(TMPDIR)/changelog
@sed -e "s/ARCH/$(PKG_ARCH)/g" $(CURDIR)/build/package/debian/control.tpl \
> $(TMPDIR)/control
DEB_HOST_ARCH=$(PKG_ARCH) dpkg-gencontrol -v$(VERSION_NUMBER)-1 \
-c$(TMPDIR)/control \
-l$(TMPDIR)/changelog \
-f$(TMPDIR)/$(DEB_NAME)/DEBIAN/files -Ptmp/$(DEB_NAME)
> $(TMPDIR)/$(DEB_NAME)/changelog
@sed -e "s/ARCH/$(GOARCH)/g" $(CURDIR)/build/package/debian/control.tpl \
> $(TMPDIR)/$(DEB_NAME)/control
DEB_HOST_ARCH=$(GOARCH) dpkg-gencontrol -v$(VERSION_NUMBER)-1 \
-c$(TMPDIR)/$(DEB_NAME)/control \
-l$(TMPDIR)/$(DEB_NAME)/changelog \
-f$(TMPDIR)/$(DEB_NAME)/debian/files -Ptmp/$(DEB_NAME)
dpkg-deb --build --root-owner-group $(TMPDIR)/$(DEB_NAME)
dpkg-genchanges --build=binary \
-c$(TMPDIR)/control \
-l$(TMPDIR)/changelog \
-f$(TMPDIR)/$(DEB_NAME)/DEBIAN/files \
-c$(TMPDIR)/$(DEB_NAME)/control \
-l$(TMPDIR)/$(DEB_NAME)/changelog \
-f$(TMPDIR)/$(DEB_NAME)/debian/files \
-u$(TMPDIR) -O$(OUTDIR)/$(DEB_NAME).changes
@mv $(TMPDIR)/*.deb $(OUTDIR)/
@$(ECHO_CMD) "pkg-deb\t\t${GREEN}[OK]${RESET}"

View File

@ -144,11 +144,10 @@ func (s *Server) handleConnection(ctx context.Context, conn net.Conn) {
if err != nil {
fields[log.FnError] = err.Error()
_ = s.logger.Warn("peekHTTP failed", fields)
} else if host != "" {
if strings.Contains(host, ":") {
host = host[:strings.Index(host, ":")]
} else {
if err == nil && host != "" {
addr = host + addr[strings.Index(addr, ":"):]
}
addr = host + addr[strings.Index(addr, ":"):]
}
reader = reader_n3
}