This commit is contained in:
wenyifan
2022-09-01 15:24:36 +08:00
commit 7213e64b89
15 changed files with 631 additions and 0 deletions

35
cmd/client.go Normal file
View File

@ -0,0 +1,35 @@
package cmd
import (
"github.com/spf13/cobra"
"shadowTLS/shadow"
)
type ClientParam struct {
ListenAddr string
ServerAddr string
SNI string
}
var (
clientParams *ClientParam
clientCmd = &cobra.Command{
Use: "client",
Short: "Client mode",
Run: func(cmd *cobra.Command, args []string) {
client := shadow.NewClient(clientParams.ListenAddr, clientParams.ServerAddr, clientParams.SNI)
client.Start()
},
}
)
func init() {
clientParams = &ClientParam{}
clientCmd.Flags().StringVarP(&clientParams.ListenAddr, "listen", "l", "0.0.0.0:18080", "Listen address and port")
clientCmd.Flags().StringVarP(&clientParams.ServerAddr, "saddr", "s", "", "Server address and port")
clientCmd.Flags().StringVarP(&clientParams.SNI, "domain", "d", "", "Domain name used for TLS Handshake")
clientCmd.MarkFlagRequired("listen")
clientCmd.MarkFlagRequired("saddr")
clientCmd.MarkFlagRequired("sni")
rootCmd.AddCommand(clientCmd)
}

25
cmd/root.go Normal file
View File

@ -0,0 +1,25 @@
package cmd
import (
"fmt"
"github.com/spf13/cobra"
"os"
)
var (
rootCmd = &cobra.Command{
Use: "shadowTLS",
Short: "Pack TCP connection and perform real TLS handshake to confuse firewall",
}
)
func init() {
rootCmd.CompletionOptions.DisableDefaultCmd = true
}
func Execute() {
if err := rootCmd.Execute(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}

35
cmd/server.go Normal file
View File

@ -0,0 +1,35 @@
package cmd
import (
"github.com/spf13/cobra"
"shadowTLS/shadow"
)
type ServerParam struct {
ListenAddr string
TargetAddr string
FakeAddr string
}
var (
serverParams *ServerParam
serverCmd = &cobra.Command{
Use: "server",
Short: "Server mode",
Run: func(cmd *cobra.Command, args []string) {
server := shadow.NewServer(serverParams.ListenAddr, serverParams.TargetAddr, serverParams.FakeAddr)
server.Start()
},
}
)
func init() {
serverParams = &ServerParam{}
serverCmd.Flags().StringVarP(&serverParams.ListenAddr, "listen", "l", "0.0.0.0:443", "Listen address and port")
serverCmd.Flags().StringVarP(&serverParams.TargetAddr, "target", "t", "", "target address and port to be proxied")
serverCmd.Flags().StringVarP(&serverParams.FakeAddr, "faddr", "f", "", "Address and port of server to make TLS")
serverCmd.MarkFlagRequired("listen")
serverCmd.MarkFlagRequired("target")
serverCmd.MarkFlagRequired("faddr")
rootCmd.AddCommand(serverCmd)
}