-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
87 lines (72 loc) · 2.1 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package main
import (
"fmt"
"os"
client "quic-tunnel/client"
"quic-tunnel/logger"
serv "quic-tunnel/server"
"github.com/spf13/cobra"
)
var (
logd = logger.Loger
)
// servCmd represents the command to start the server
var servCmd = &cobra.Command{
Use: "server",
Short: "Starts the QUIC tunnel server",
Run: func(cmd *cobra.Command, args []string) {
server, _ := cmd.Flags().GetString("server")
port, _ := cmd.Flags().GetString("port")
serverAddr := server + ":" + port
// Ensure server flag is set
if server == "" {
logd.Info("⚠️ Server address is required. Use --server to specify it.")
fmt.Println(cmd.UsageString())
os.Exit(1)
}
// Start the server
serv.StartServer(serverAddr)
},
}
var clientCmd = &cobra.Command{
Use: "client",
Short: "Starts the QUIC tunnel client",
Run: func(cmd *cobra.Command, args []string) {
server, _ := cmd.Flags().GetString("server")
port, _ := cmd.Flags().GetString("port")
serverAddr := server + ":" + port
// Ensure server flag is set
if server == "" {
logd.Info("⚠️ Server address is required. Use --server to specify it.")
fmt.Println(cmd.UsageString())
os.Exit(1)
}
// Start the server
client.StartClient(serverAddr)
},
}
func main() {
os.Setenv("DEBUG", "false")
// Define root Cobra command
rootCmd := &cobra.Command{Use: "quic-tunnel"}
// Add flags for server command
servCmd.Flags().String("server", "", "Server address (e.g., localhost or 0.0.0.0)")
servCmd.Flags().String("port", "4222", "Port number")
// Add flags for client command
clientCmd.Flags().String("server", "", "Remote Server address.")
clientCmd.Flags().String("port", "4222", "Port number")
// Mark --server and --port required for server
_ = servCmd.MarkFlagRequired("server")
_ = servCmd.MarkFlagRequired("port")
// Mark --server and --port as required for client
_ = clientCmd.MarkFlagRequired("server")
_ = clientCmd.MarkFlagRequired("port")
// Add start command to root
rootCmd.AddCommand(servCmd)
rootCmd.AddCommand(clientCmd)
// Execute the command
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}