Browse Source

per connection stream settings

Darien Raymond 9 years ago
parent
commit
f37b04a690
1 changed files with 36 additions and 3 deletions
  1. 36 3
      tools/conf/transport_internet.go

+ 36 - 3
tools/conf/transport_internet.go

@@ -154,9 +154,12 @@ func (this *TLSConfig) Build() (*loader.TypedSettings, error) {
 }
 
 type StreamConfig struct {
-	Network     *Network   `json:"network"`
-	Security    string     `json:"security"`
-	TLSSettings *TLSConfig `json:"tlsSettings"`
+	Network     *Network         `json:"network"`
+	Security    string           `json:"security"`
+	TLSSettings *TLSConfig       `json:"tlsSettings"`
+	TCPSettings *TCPConfig       `json:"tcpSettings"`
+	KCPSettings *KCPConfig       `json:"kcpSettings"`
+	WSSettings  *WebSocketConfig `json:"wsSettings"`
 }
 
 func (this *StreamConfig) Build() (*internet.StreamConfig, error) {
@@ -177,5 +180,35 @@ func (this *StreamConfig) Build() (*internet.StreamConfig, error) {
 		}
 		config.SecuritySettings = append(config.SecuritySettings, ts)
 	}
+	if this.TCPSettings != nil {
+		ts, err := this.TCPSettings.Build()
+		if err != nil {
+			return nil, errors.New("Failed to build TCP config: " + err.Error())
+		}
+		config.NetworkSettings = append(config.NetworkSettings, &internet.NetworkSettings{
+			Network:  v2net.Network_TCP,
+			Settings: ts,
+		})
+	}
+	if this.KCPSettings != nil {
+		ts, err := this.KCPSettings.Build()
+		if err != nil {
+			return nil, errors.New("Failed to build KCP config: " + err.Error())
+		}
+		config.NetworkSettings = append(config.NetworkSettings, &internet.NetworkSettings{
+			Network:  v2net.Network_KCP,
+			Settings: ts,
+		})
+	}
+	if this.WSSettings != nil {
+		ts, err := this.WSSettings.Build()
+		if err != nil {
+			return nil, errors.New("Failed to build WebSocket config: " + err.Error())
+		}
+		config.NetworkSettings = append(config.NetworkSettings, &internet.NetworkSettings{
+			Network:  v2net.Network_WebSocket,
+			Settings: ts,
+		})
+	}
 	return config, nil
 }