Browse Source

use conventional command and package paths

tags/v1.2.0
AJ ONeal 1 year ago
parent
commit
d4eb17ea44
4 changed files with 21 additions and 17 deletions
  1. +2
    -2
      README.md
  2. +9
    -7
      build-all.sh
  3. +5
    -3
      cmd/sclient/main.go
  4. +5
    -5
      sclient.go

+ 2
- 2
README.md View File

@@ -52,12 +52,12 @@ For the moment you'll have to install go and compile `sclient` yourself:
```bash
git clone https://git.coolaj86.com/coolaj86/sclient.go.git
pushd sclient.go
go build -o dist/sclient sclient*.go
go build -o dist/sclient cmd/sclient/main.go
rsync -av dist/sclient /usr/local/bin/sclient
```

```bash
go run sclient*.go example.com:443 localhost:3000
go run cmd/sclient/main.go example.com:443 localhost:3000
```

Usage


+ 9
- 7
build-all.sh View File

@@ -1,29 +1,31 @@
#GOOS=windows GOARCH=amd64 go install
go tool dist list

gocmd=cmd/sclient/main.go
golib=""
echo ""

echo ""
echo "Windows amd64"
GOOS=windows GOARCH=amd64 go build -o dist/windows/amd64/sclient.exe sclient*.go
GOOS=windows GOARCH=amd64 go build -o dist/windows/amd64/sclient.exe $gocmd $golib
echo "Windows 386"
GOOS=windows GOARCH=386 go build -o dist/windows/386/sclient.exe sclient*.go
GOOS=windows GOARCH=386 go build -o dist/windows/386/sclient.exe $gocmd $golib

echo ""
echo "Darwin (macOS) amd64"
GOOS=darwin GOARCH=amd64 go build -o dist/darwin/amd64/sclient sclient*.go
GOOS=darwin GOARCH=amd64 go build -o dist/darwin/amd64/sclient $gocmd $golib

echo ""
echo "Linux amd64"
GOOS=linux GOARCH=amd64 go build -o dist/linux/amd64/sclient sclient*.go
GOOS=linux GOARCH=amd64 go build -o dist/linux/amd64/sclient $gocmd $golib
echo "Linux 386"

echo ""
GOOS=linux GOARCH=386 go build -o dist/linux/386/sclient sclient*.go
GOOS=linux GOARCH=386 go build -o dist/linux/386/sclient $gocmd $golib
echo "RPi 3 B+ ARMv7"
GOOS=linux GOARCH=arm GOARM=7 go build -o dist/linux/armv7/sclient sclient*.go
GOOS=linux GOARCH=arm GOARM=7 go build -o dist/linux/armv7/sclient $gocmd $golib
echo "RPi Zero ARMv5"
GOOS=linux GOARCH=arm GOARM=5 go build -o dist/linux/armv5/sclient sclient*.go
GOOS=linux GOARCH=arm GOARM=5 go build -o dist/linux/armv5/sclient $gocmd $golib

echo ""
echo ""


sclient-cli.go → cmd/sclient/main.go View File

@@ -6,10 +6,12 @@ import (
"os"
"strconv"
"strings"

sclient "git.coolaj86.com/sclient.go"
)

func usage() {
fmt.Fprintf(os.Stderr, "\nusage: go run sclient*.go <remote> <local>\n"+
fmt.Fprintf(os.Stderr, "\nusage: sclient <remote> <local>\n"+
"\n"+
" ex: sclient example.com 3000\n"+
" (sclient example.com:443 localhost:3000)\n"+
@@ -39,7 +41,7 @@ func main() {
}
}

opts := &SclientOpts{}
opts := &sclient.PipeOpts{}
opts.RemotePort = 443
opts.LocalAddress = "localhost"
opts.InsecureSkipVerify = *insecure
@@ -85,7 +87,7 @@ func main() {
}
}

sclient := &Sclient{}
sclient := &sclient.Tun{}
err := sclient.DialAndListen(opts)
if nil != err {
fmt.Fprintf(os.Stderr, "%s\n", err)

+ 5
- 5
sclient.go View File

@@ -1,4 +1,4 @@
package main
package sclient

import (
"crypto/tls"
@@ -40,7 +40,7 @@ type Rwc interface {
RemoteAddr() net.Addr
}

type SclientOpts struct {
type PipeOpts struct {
RemoteAddress string
RemotePort int
LocalAddress string
@@ -48,7 +48,7 @@ type SclientOpts struct {
InsecureSkipVerify bool
}

type Sclient struct{}
type Tun struct{}

func pipe(r Rwc, w Rwc, t string) {
buffer := make([]byte, 2048)
@@ -86,7 +86,7 @@ func pipe(r Rwc, w Rwc, t string) {
}
}

func handleConnection(remote string, conn Rwc, opts *SclientOpts) {
func handleConnection(remote string, conn Rwc, opts *PipeOpts) {
sclient, err := tls.Dial("tcp", remote,
&tls.Config{InsecureSkipVerify: opts.InsecureSkipVerify})

@@ -108,7 +108,7 @@ func handleConnection(remote string, conn Rwc, opts *SclientOpts) {
pipe(sclient, conn, "remote")
}

func (*Sclient) DialAndListen(opts *SclientOpts) error {
func (*Tun) DialAndListen(opts *PipeOpts) error {
remote := opts.RemoteAddress + ":" + strconv.Itoa(opts.RemotePort)
conn, err := tls.Dial("tcp", remote,
&tls.Config{InsecureSkipVerify: opts.InsecureSkipVerify})


Loading…
Cancel
Save