Skip to content

Commit cc334c9

Browse files
committed
Remove Slipstream support from CLI
Drop all Slipstream code, embedded binary support, and the Rust/C/OpenSSL CI build pipeline. Slipstream configs now show an unsupported type error directing users to the app. CLI builds are now Go-only on ubuntu-latest.
1 parent 5da9c01 commit cc334c9

7 files changed

Lines changed: 11 additions & 415 deletions

File tree

.github/workflows/release-cli.yml

Lines changed: 2 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -17,117 +17,27 @@ on:
1717
default: true
1818

1919
jobs:
20-
# Build slipstream-client for each platform first
21-
build-slipstream:
22-
strategy:
23-
fail-fast: false
24-
matrix:
25-
include:
26-
- target: x86_64-pc-windows-msvc
27-
suffix: windows-amd64
28-
ext: .exe
29-
os: windows-latest
30-
- target: x86_64-unknown-linux-gnu
31-
suffix: linux-amd64
32-
os: ubuntu-latest
33-
- target: aarch64-unknown-linux-gnu
34-
suffix: linux-arm64
35-
os: ubuntu-latest
36-
cross: true
37-
cc: aarch64-linux-gnu-gcc
38-
ar: aarch64-linux-gnu-ar
39-
- target: x86_64-apple-darwin
40-
suffix: darwin-amd64
41-
os: macos-15
42-
cmake_osx_arch: x86_64
43-
- target: aarch64-apple-darwin
44-
suffix: darwin-arm64
45-
os: macos-15
46-
47-
runs-on: ${{ matrix.os }}
48-
49-
steps:
50-
- name: Checkout repository
51-
uses: actions/checkout@v4
52-
with:
53-
submodules: recursive
54-
token: ${{ secrets.SUBMODULE_TOKEN }}
55-
56-
- name: Install Rust toolchain
57-
uses: dtolnay/rust-toolchain@stable
58-
with:
59-
targets: ${{ matrix.target }}
60-
61-
- name: Install cross-compilation tools (Linux ARM64)
62-
if: matrix.cross
63-
run: |
64-
sudo apt-get update
65-
sudo apt-get install -y gcc-aarch64-linux-gnu
66-
67-
- name: Install Windows build dependencies (Perl, pkg-config)
68-
if: runner.os == 'Windows'
69-
run: choco install strawberryperl pkgconfiglite -y
70-
71-
- name: Build slipstream-client
72-
working-directory: app/src/main/rust/slipstream-rust
73-
shell: bash
74-
env:
75-
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
76-
CC: ${{ matrix.cc || '' }}
77-
AR: ${{ matrix.ar || '' }}
78-
CMAKE_OSX_ARCHITECTURES: ${{ matrix.cmake_osx_arch || '' }}
79-
CONFIG_ENCRYPTION_KEY: ${{ secrets.CONFIG_ENCRYPTION_KEY }}
80-
run: |
81-
# On Windows, prefer Strawberry Perl over Git Bash perl for OpenSSL
82-
if [ -d "/c/Strawberry/perl/bin" ]; then
83-
export PATH="/c/Strawberry/perl/bin:$PATH"
84-
fi
85-
# Unset CC/AR if empty so the build system uses its defaults
86-
[ -z "$CC" ] && unset CC
87-
[ -z "$AR" ] && unset AR
88-
# macOS x86_64 cross-compilation from ARM64 runner
89-
if [ -n "${CMAKE_OSX_ARCHITECTURES:-}" ]; then
90-
export CFLAGS="-arch ${CMAKE_OSX_ARCHITECTURES}"
91-
export CXXFLAGS="-arch ${CMAKE_OSX_ARCHITECTURES}"
92-
fi
93-
cargo build --release --bin slipstream-client \
94-
--target ${{ matrix.target }} \
95-
--features openssl-vendored,picoquic-minimal-build
96-
97-
- name: Upload slipstream binary
98-
uses: actions/upload-artifact@v4
99-
with:
100-
name: slipstream-${{ matrix.suffix }}
101-
path: app/src/main/rust/slipstream-rust/target/${{ matrix.target }}/release/slipstream-client${{ matrix.ext }}
102-
103-
# Build Go CLI with embedded slipstream binary
10420
build-cli:
105-
needs: build-slipstream
10621
strategy:
22+
fail-fast: false
10723
matrix:
10824
include:
10925
- goos: darwin
11026
goarch: amd64
11127
suffix: darwin-amd64
112-
slipstream_suffix: darwin-amd64
11328
- goos: darwin
11429
goarch: arm64
11530
suffix: darwin-arm64
116-
slipstream_suffix: darwin-arm64
11731
- goos: linux
11832
goarch: amd64
11933
suffix: linux-amd64
120-
slipstream_suffix: linux-amd64
12134
- goos: linux
12235
goarch: arm64
12336
suffix: linux-arm64
124-
slipstream_suffix: linux-arm64
12537
- goos: windows
12638
goarch: amd64
12739
suffix: windows-amd64
128-
slipstream_suffix: windows-amd64
12940
ext: .exe
130-
slipstream_ext: .exe
13141

13242
runs-on: ubuntu-latest
13343

@@ -143,16 +53,6 @@ jobs:
14353
with:
14454
go-version-file: cli/go.mod
14555

146-
- name: Download slipstream binary
147-
uses: actions/download-artifact@v4
148-
with:
149-
name: slipstream-${{ matrix.slipstream_suffix }}
150-
path: ./slipstream-download
151-
152-
- name: Embed slipstream binary
153-
run: |
154-
cp ./slipstream-download/slipstream-client${{ matrix.slipstream_ext }} cli/embedded/slipstream-client
155-
15656
- name: Build
15757
working-directory: cli
15858
env:
@@ -165,7 +65,7 @@ jobs:
16565
if [ -n "${{ secrets.CONFIG_ENCRYPTION_KEY }}" ]; then
16666
LDFLAGS="${LDFLAGS} -X main.configKey=${{ secrets.CONFIG_ENCRYPTION_KEY }}"
16767
fi
168-
go build -tags embed_slipstream -trimpath -ldflags="${LDFLAGS}" -o ../slipnet-${{ matrix.suffix }}${{ matrix.ext }} .
68+
go build -trimpath -ldflags="${LDFLAGS}" -o ../slipnet-${{ matrix.suffix }}${{ matrix.ext }} .
16969
17070
- name: Compress with UPX (Linux/macOS only)
17171
if: matrix.goos != 'windows'

cli/Makefile

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
.PHONY: build build-slipstream build-cli windows resolvers clean
1+
.PHONY: build windows resolvers clean
22

33
VERSION ?= dev
4-
RUST_DIR := ../app/src/main/rust/slipstream-rust
5-
SLIPSTREAM_BIN := $(RUST_DIR)/target/release/slipstream-client
64

75
# CONFIG_ENCRYPTION_KEY: 64-char hex string for slipnet-enc:// decryption.
8-
# Same key used by the Rust build (see slipstream-client/build.rs).
96
# Pass via: make CONFIG_ENCRYPTION_KEY=abc123...
107
CONFIG_ENCRYPTION_KEY ?=
118

@@ -17,20 +14,9 @@ ifneq ($(CONFIG_ENCRYPTION_KEY),)
1714
BUILD_TAGS += has_config_key
1815
endif
1916

20-
# Default: full build (Rust + Go with embedded binary)
21-
build: build-slipstream build-cli
22-
23-
build-slipstream:
24-
CONFIG_ENCRYPTION_KEY=$(CONFIG_ENCRYPTION_KEY) \
25-
cargo build --release --bin slipstream-client \
26-
--features openssl-vendored,picoquic-minimal-build \
27-
--manifest-path $(RUST_DIR)/Cargo.toml
28-
mkdir -p embedded
29-
gzip -9 -c $(SLIPSTREAM_BIN) > embedded/slipstream-client.gz
30-
31-
build-cli: keygen resolvers
17+
build: keygen resolvers
3218
CGO_ENABLED=0 garble -seed=random build \
33-
-tags 'embed_slipstream $(BUILD_TAGS)' -trimpath \
19+
-tags '$(BUILD_TAGS)' -trimpath \
3420
-ldflags='$(LDFLAGS)' \
3521
-o slipnet .
3622

@@ -54,4 +40,3 @@ endif
5440

5541
clean:
5642
rm -f slipnet slipnet.exe key_generated.go resolvers.txt
57-
rm -rf embedded/slipstream-client embedded/slipstream-client.gz

cli/embed_slipstream.go

Lines changed: 0 additions & 10 deletions
This file was deleted.

cli/embed_slipstream_stub.go

Lines changed: 0 additions & 5 deletions
This file was deleted.

cli/interactive.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func runInteractive() {
4848
fmt.Printf("║ SlipNet CLI %-25s ║\n", version)
4949
fmt.Println("╠══════════════════════════════════════════════════╣")
5050
fmt.Println("║ ║")
51-
fmt.Println("║ 1) Connect (DNSTT / NoizDNS / Slipstream) ║")
51+
fmt.Println("║ 1) Connect (DNSTT / NoizDNS) ║")
5252
fmt.Println("║ 2) DNS Scanner ║")
5353
fmt.Println("║ 3) DNS Scanner + E2E Test ║")
5454
fmt.Println("║ 4) Quick Scan (single IP) ║")
@@ -135,8 +135,8 @@ func interactiveConnectWithURI(uri string) {
135135

136136
var querySize int
137137
var queryPadding int
138-
// Query size and padding only apply to DNSTT/NoizDNS, not Slipstream
139-
if profile.TunnelType != "ss" && profile.TunnelType != "slipstream_ssh" {
138+
// Query size and padding apply to DNSTT/NoizDNS tunnel types
139+
if profile.TunnelType == "dnstt" || profile.TunnelType == "dnstt_ssh" || profile.TunnelType == "sayedns" || profile.TunnelType == "sayedns_ssh" || profile.TunnelType == "" {
140140
fmt.Println()
141141
fmt.Println(" DNS query size (smaller = stealthier, slower):")
142142
fmt.Println(" 0) Full capacity (fastest, default)")

cli/main.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -345,13 +345,6 @@ func connectWithParams(uri string, portOverride int, hostOverride string, dnsOve
345345
switch profile.TunnelType {
346346
case "dnstt", "dnstt_ssh", "sayedns", "sayedns_ssh":
347347
// DNSTT/NoizDNS — handled below via noizdns/mobile
348-
case "ss", "slipstream_ssh":
349-
// Slipstream — handled via slipstream-client subprocess
350-
if portOverride > 0 {
351-
profile.Port = portOverride
352-
}
353-
connectSlipstream(profile, profile.Host, profile.Port)
354-
return
355348
case "ssh", "direct_ssh":
356349
if portOverride > 0 {
357350
profile.Port = portOverride
@@ -364,9 +357,9 @@ func connectWithParams(uri string, portOverride int, hostOverride string, dnsOve
364357
}
365358
connectSOCKS5(profile)
366359
return
367-
case "doh", "snowflake", "naive":
360+
case "ss", "slipstream_ssh", "doh", "snowflake", "naive":
368361
log.Fatalf("This config uses tunnel type %q which is not supported by the CLI.\n"+
369-
"SlipNet CLI supports DNSTT, NoizDNS, Slipstream, SSH, and SOCKS5 tunnel types.\n"+
362+
"SlipNet CLI supports DNSTT, NoizDNS, SSH, and SOCKS5 tunnel types.\n"+
370363
"Use the SlipNet app for other tunnel types.", profile.TunnelType)
371364
default:
372365
if profile.TunnelType != "" {
@@ -806,7 +799,7 @@ func runScanCommand(args []string) {
806799

807800
func printUsage() {
808801
prog := filepath.Base(os.Args[0])
809-
fmt.Fprintf(os.Stderr, `SlipNet CLI %s - Tunnel proxy (DNSTT, NoizDNS, Slipstream, SSH, SOCKS5)
802+
fmt.Fprintf(os.Stderr, `SlipNet CLI %s - Tunnel proxy (DNSTT, NoizDNS, SSH, SOCKS5)
810803
811804
Usage:
812805
%s [options] slipnet://BASE64...

0 commit comments

Comments
 (0)