mirror of
				https://github.com/therootcompany/sclient
				synced 2025-10-31 05:02:50 +00:00 
			
		
		
		
	use conventional command and package paths
This commit is contained in:
		
							parent
							
								
									c786b0bd07
								
							
						
					
					
						commit
						d4eb17ea44
					
				| @ -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 | ||||
|  | ||||
							
								
								
									
										16
									
								
								build-all.sh
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								build-all.sh
									
									
									
									
									
								
							| @ -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 "" | ||||
|  | ||||
| @ -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) | ||||
							
								
								
									
										10
									
								
								sclient.go
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								sclient.go
									
									
									
									
									
								
							| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user