Quellcode durchsuchen

Add new option for preferring of new IP

tags/v1.0.3^2
9seconds vor 6 Jahren
Ursprung
Commit
07f00a363e
2 geänderte Dateien mit 26 neuen und 0 gelöschten Zeilen
  1. 20
    0
      config/config.go
  2. 6
    0
      main.go

+ 20
- 0
config/config.go Datei anzeigen

@@ -32,6 +32,13 @@ const (
32 32
 	SecretModeTLS
33 33
 )
34 34
 
35
+type PreferIP uint8
36
+
37
+const (
38
+	PreferIPv4 PreferIP = iota
39
+	PreferIPv6
40
+)
41
+
35 42
 const SimpleSecretLength = 16
36 43
 
37 44
 type OptionType uint8
@@ -40,6 +47,8 @@ const (
40 47
 	OptionTypeDebug OptionType = iota
41 48
 	OptionTypeVerbose
42 49
 
50
+	OptionTypePreferIP
51
+
43 52
 	OptionTypeBind
44 53
 	OptionTypePublicIPv4
45 54
 	OptionTypePublicIPv6
@@ -86,6 +95,7 @@ type Config struct {
86 95
 	Debug      bool       `json:"debug"`
87 96
 	Verbose    bool       `json:"verbose"`
88 97
 	SecretMode SecretMode `json:"secret_mode"`
98
+	PreferIP   PreferIP   `json:"prefer_ip"`
89 99
 
90 100
 	Secret []byte `json:"secret"`
91 101
 	AdTag  []byte `json:"adtag"`
@@ -105,6 +115,16 @@ func Init(options ...Opt) error { // nolint: gocyclo, funlen
105 115
 			C.Debug = opt.Value.(bool)
106 116
 		case OptionTypeVerbose:
107 117
 			C.Verbose = opt.Value.(bool)
118
+		case OptionTypePreferIP:
119
+			value := opt.Value.(string)
120
+			switch value {
121
+			case "ipv4":
122
+				C.PreferIP = PreferIPv4
123
+			case "ipv6":
124
+				C.PreferIP = PreferIPv6
125
+			default:
126
+				return fmt.Errorf("incorrect direct IP mode %s", value)
127
+			}
108 128
 		case OptionTypeBind:
109 129
 			C.Bind = opt.Value.(*net.TCPAddr)
110 130
 		case OptionTypePublicIPv4:

+ 6
- 0
main.go Datei anzeigen

@@ -43,6 +43,11 @@ var (
43 43
 		Short('v').
44 44
 		Envar("MTG_VERBOSE").
45 45
 		Bool()
46
+	runPreferIP = runCommand.Flag("prefer-ip",
47
+		"Prefer this IP protocol if possible. Valid options are 'ipv4' and 'ipv6'").
48
+		Envar("MTG_PREFER_DIRECT_IP").
49
+		Default("ipv6").
50
+		Enum("ipv4", "ipv6")
46 51
 	runBind = runCommand.Flag("bind",
47 52
 		"Host:Port to bind proxy to.").
48 53
 		Short('b').
@@ -130,6 +135,7 @@ func main() {
130 135
 		err := config.Init(
131 136
 			config.Opt{Option: config.OptionTypeDebug, Value: *runDebug},
132 137
 			config.Opt{Option: config.OptionTypeVerbose, Value: *runVerbose},
138
+			config.Opt{Option: config.OptionTypePreferIP, Value: *runPreferIP},
133 139
 			config.Opt{Option: config.OptionTypeBind, Value: *runBind},
134 140
 			config.Opt{Option: config.OptionTypePublicIPv4, Value: *runPublicIPv4},
135 141
 			config.Opt{Option: config.OptionTypePublicIPv6, Value: *runPublicIPv6},

Laden…
Abbrechen
Speichern