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