shadowTLS/cmd/server.go

41 lines
1.1 KiB
Go

package cmd
import (
"fmt"
"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) {
if !verifyAndParseEncryptionKey() {
fmt.Println("[Server] Invalid encryption key length")
return
}
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)
}