162 lines
4.8 KiB
YAML
162 lines
4.8 KiB
YAML
name: Build go-socks5-ssh-proxy
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
schedule:
|
|
# Run daily build at 08:30 UTC
|
|
- cron: '00 08 30 * *'
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
# The go version to use for builds. We set check-latest to true when
|
|
# installing, so we get the latest patch version that matches the
|
|
# expression.
|
|
GO_VERSION: "~1.22.5"
|
|
|
|
jobs:
|
|
release:
|
|
name: Build release
|
|
environment: prod
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repository code
|
|
uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
cache: true
|
|
check-latest: true
|
|
|
|
- name: Use config_release.go from action secrets
|
|
uses: mobiledevops/secret-to-file-action@v1 # TODO native in Makefile, can be unsafe...
|
|
with:
|
|
base64-encoded-secret: ${{ secrets.CONFIG_RELEASE_GO_FILE }}
|
|
filename: "config_release.go"
|
|
|
|
- name: Use resources/ssh_private_key from action secrets
|
|
uses: mobiledevops/secret-to-file-action@v1 # TODO native in Makefile, can be unsafe...
|
|
with:
|
|
base64-encoded-secret: ${{ secrets.RESOURCES_SSH_PRIVATE_KEY }}
|
|
filename: "ssh_private_key"
|
|
working-directory: "./resources"
|
|
|
|
- run: make release
|
|
|
|
- name: Store release artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: dist-release
|
|
path: |
|
|
dist
|
|
|
|
release-dll:
|
|
name: Build release DLL
|
|
environment: prod
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repository code
|
|
uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
cache: true
|
|
check-latest: true
|
|
|
|
- name: Set up MinGW
|
|
uses: egor-tensin/setup-mingw@v2
|
|
with:
|
|
platform: x64
|
|
|
|
- name: Use config_release.go from action secrets
|
|
uses: mobiledevops/secret-to-file-action@v1 # TODO native in Makefile, can be unsafe...
|
|
with:
|
|
base64-encoded-secret: ${{ secrets.CONFIG_RELEASE_GO_FILE }}
|
|
filename: "config_release.go"
|
|
|
|
- name: Use resources/ssh_private_key from action secrets
|
|
uses: mobiledevops/secret-to-file-action@v1 # TODO native in Makefile, can be unsafe...
|
|
with:
|
|
base64-encoded-secret: ${{ secrets.RESOURCES_SSH_PRIVATE_KEY }}
|
|
filename: "ssh_private_key"
|
|
working-directory: "./resources"
|
|
|
|
- name: Run GoReleaser to build release DLL
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
# either 'goreleaser' (default) or 'goreleaser-pro'
|
|
distribution: goreleaser
|
|
# 'latest', 'nightly', or a semver
|
|
version: '~> v2'
|
|
args: release --clean --snapshot
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Store release artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: dist-release-dll
|
|
path: |
|
|
dist
|
|
|
|
release-obfuscate:
|
|
name: Build release obfuscated
|
|
runs-on: windows-latest
|
|
needs:
|
|
- release
|
|
- release-dll
|
|
steps:
|
|
- name: Check out Alcatraz
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: 'weak1337/Alcatraz'
|
|
|
|
- name: Download release artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: dist-release
|
|
|
|
- name: Download release-dll artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: dist-release-dll
|
|
|
|
- name: Dir
|
|
run: "Get-ChildItem -Path . -Force -Recurse"
|
|
|
|
- name: Run Alcatraz-con.exe on release EXE
|
|
run: "./x64/Release/Alcatraz-con.exe socks5-ssh-proxy.exe"
|
|
|
|
- name: Run Alcatraz-con.exe on release DLL
|
|
run: "./x64/Release/Alcatraz-con.exe dll_windows_amd64_v1/go-socks5-ssh-proxy.dll"
|
|
|
|
- name: Create dist directory and move obfuscated artifacts
|
|
run: |
|
|
# Define source files and destination directory
|
|
$sourceFiles = @("socks5-ssh-proxy.exe", "dll_windows_amd64_v1/go-socks5-ssh-proxy.dll")
|
|
$destinationDir = "dist"
|
|
|
|
# Create the destination directory if it doesn't exist
|
|
if (-not (Test-Path -Path $destinationDir)) {
|
|
New-Item -ItemType Directory -Path $destinationDir
|
|
}
|
|
|
|
# Move each file to the destination directory
|
|
foreach ($file in $sourceFiles) {
|
|
if (Test-Path -Path $file) {
|
|
Move-Item -Path $file -Destination $destinationDir
|
|
Write-Output "Moved $file to $destinationDir"
|
|
} else {
|
|
Write-Output "File $file does not exist"
|
|
}
|
|
}
|
|
|
|
- name: Store release artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: dist-release-obfuscated
|
|
path: |
|
|
dist
|