mirror of
				https://github.com/therootcompany/sclient
				synced 2024-11-16 17:09:00 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			aac3959dc7
			...
			bc4aeb3124
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | bc4aeb3124 | ||
|  | 8783d46849 | ||
|  | b27b32700c | 
| @ -3,25 +3,34 @@ before: | ||||
|     - go mod download | ||||
|     - go generate ./... | ||||
| builds: | ||||
|   - main: ./cmd/sclient/main.go | ||||
|   - main: ./cmd/sclient/ | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - linux | ||||
|       - windows | ||||
|       - darwin | ||||
|       - linux | ||||
|       - freebsd | ||||
|       - windows | ||||
|       - js | ||||
|     goarch: | ||||
|       - 386 | ||||
|       - amd64 | ||||
|       - arm | ||||
|       - arm64 | ||||
|       - wasm | ||||
|     goarm: | ||||
|       - 6 | ||||
|       - 7 | ||||
|     goamd64: | ||||
|       - v2 | ||||
|     ignore: | ||||
|       - goos: windows | ||||
|         goarch: 386 | ||||
|       - goos: windows | ||||
|         goarm: 6 | ||||
|       - goos: windows | ||||
|         goarm: 7 | ||||
| archives: | ||||
|   - replacements: | ||||
|       386: i386 | ||||
|       amd64: x86_64 | ||||
|   - id: sclient-binary | ||||
|     format: tar.xz | ||||
|     format_overrides: | ||||
|       - goos: windows | ||||
|         format: zip | ||||
|  | ||||
							
								
								
									
										18
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								README.md
									
									
									
									
									
								
							| @ -70,10 +70,11 @@ sclient [flags] <remote> <local> | ||||
| ``` | ||||
| 
 | ||||
| - flags | ||||
|   - -s, --silent less verbose logging | ||||
|   - -k, --insecure ignore invalid TLS (SSL/HTTPS) certificates | ||||
|   - --servername <string> spoof SNI (to disable use IP as <remote> and do | ||||
|   - `-s`, `--silent` less verbose logging | ||||
|   - `-k`, `--insecure` ignore invalid TLS (SSL/HTTPS) certificates | ||||
|   - `--servername <domain>` spoof SNI (to disable use IP as <remote> and do | ||||
|     not use this option) | ||||
|   - `--alpn <protocol-list>` | ||||
| - remote | ||||
|   - must have servername (i.e. example.com) | ||||
|   - port is optional (default is 443) | ||||
| @ -81,6 +82,17 @@ sclient [flags] <remote> <local> | ||||
|   - address is optional (default is localhost) | ||||
|   - must have port (i.e. 3000) | ||||
| 
 | ||||
|   -alpn string | ||||
|     	acceptable protocols, ex: 'h2,http/1.1' 'http/1.1' (default) 'ssh' (default "http/1.1") | ||||
|   -insecure | ||||
|     	ignore bad TLS/SSL/HTTPS certificates | ||||
|   -k	alias for --insecure | ||||
|   -s	alias of --silent | ||||
|   -servername string | ||||
|     	specify a servername different from <remote> (to disable SNI use an IP as <remote> and do use this option) | ||||
|   -silent | ||||
|     	less verbose output | ||||
| 
 | ||||
| # Examples | ||||
| 
 | ||||
| Bridge between `telebit.cloud` and local port `3000`. | ||||
|  | ||||
| @ -40,20 +40,30 @@ func usage() { | ||||
| 
 | ||||
| func main() { | ||||
| 	if len(os.Args) >= 2 { | ||||
| 		if "version" == strings.TrimLeft(os.Args[1], "-") { | ||||
| 		if os.Args[1] == "-V" || strings.TrimLeft(os.Args[1], "-") == "version" { | ||||
| 			fmt.Printf("%s\n", ver()) | ||||
| 			os.Exit(0) | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	var alpnList string | ||||
| 	var insecure bool | ||||
| 	var servername string | ||||
| 	var silent bool | ||||
| 
 | ||||
| 	flag.Usage = usage | ||||
| 	insecure := flag.Bool("k", false, "alias for --insecure") | ||||
| 	silent := flag.Bool("s", false, "alias of --silent") | ||||
| 	servername := flag.String("servername", "", "specify a servername different from <remote> (to disable SNI use an IP as <remote> and do use this option)") | ||||
| 	flag.BoolVar(insecure, "insecure", false, "ignore bad TLS/SSL/HTTPS certificates") | ||||
| 	flag.BoolVar(silent, "silent", false, "less verbose output") | ||||
| 
 | ||||
| 	flag.StringVar(&alpnList, "alpn", "", "acceptable protocols, ex: 'h2,http/1.1' 'http/1.1' 'ssh'") | ||||
| 	flag.BoolVar(&insecure, "k", false, "alias for --insecure") | ||||
| 	flag.BoolVar(&silent, "s", false, "alias of --silent") | ||||
| 	flag.StringVar(&servername, "servername", "", "specify a servername different from <remote> (to disable SNI use an IP as <remote> and do not use this option)") | ||||
| 	flag.BoolVar(&insecure, "insecure", false, "ignore bad TLS/SSL/HTTPS certificates") | ||||
| 	flag.BoolVar(&silent, "silent", false, "less verbose output") | ||||
| 
 | ||||
| 	flag.Parse() | ||||
| 
 | ||||
| 	alpns := parseOptionList(alpnList) | ||||
| 	remotestr := flag.Arg(0) | ||||
| 	localstr := flag.Arg(1) | ||||
| 
 | ||||
| @ -71,9 +81,10 @@ func main() { | ||||
| 	sclient := &sclient.Tunnel{ | ||||
| 		RemotePort:         443, | ||||
| 		LocalAddress:       "localhost", | ||||
| 		InsecureSkipVerify: *insecure, | ||||
| 		ServerName:         *servername, | ||||
| 		Silent:             *silent, | ||||
| 		InsecureSkipVerify: insecure, | ||||
| 		ServerName:         servername, | ||||
| 		Silent:             silent, | ||||
| 		NextProtos:         alpns, | ||||
| 	} | ||||
| 
 | ||||
| 	remote := strings.Split(remotestr, ":") | ||||
| @ -124,3 +135,18 @@ func main() { | ||||
| 		//os.Exit(6) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // parsers "a,b,c" "a b c" and "a, b, c" all the same | ||||
| func parseOptionList(optionList string) []string { | ||||
| 	optionList = strings.TrimSpace(optionList) | ||||
| 
 | ||||
| 	if len(optionList) == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	options := []string{} | ||||
| 	optionList = strings.ReplaceAll(optionList, ",", " ") | ||||
| 	options = strings.Fields(optionList) | ||||
| 
 | ||||
| 	return options | ||||
| } | ||||
|  | ||||
| @ -17,6 +17,7 @@ type Tunnel struct { | ||||
| 	LocalAddress       string | ||||
| 	LocalPort          int | ||||
| 	InsecureSkipVerify bool | ||||
| 	NextProtos         []string | ||||
| 	ServerName         string | ||||
| 	Silent             bool | ||||
| } | ||||
| @ -29,6 +30,7 @@ func (t *Tunnel) DialAndListen() error { | ||||
| 		&tls.Config{ | ||||
| 			ServerName:         t.ServerName, | ||||
| 			InsecureSkipVerify: t.InsecureSkipVerify, | ||||
| 			NextProtos:         t.NextProtos, | ||||
| 		}) | ||||
| 
 | ||||
| 	if err != nil { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user