| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package net
- import (
- "strings"
- "v2ray.com/core/common/collect"
- )
- func ParseNetwork(nwStr string) Network {
- if network, found := Network_value[nwStr]; found {
- return Network(network)
- }
- switch strings.ToLower(nwStr) {
- case "tcp":
- return Network_TCP
- case "udp":
- return Network_UDP
- case "kcp":
- return Network_KCP
- case "ws":
- return Network_WebSocket
- default:
- return Network_Unknown
- }
- }
- func (this Network) AsList() *NetworkList {
- return &NetworkList{
- Network: []Network{this},
- }
- }
- func (this Network) SystemString() string {
- switch this {
- case Network_TCP, Network_RawTCP:
- return "tcp"
- case Network_UDP, Network_KCP:
- return "udp"
- default:
- return "unknown"
- }
- }
- func (this Network) UrlPrefix() string {
- switch this {
- case Network_TCP, Network_RawTCP:
- return "tcp"
- case Network_UDP:
- return "udp"
- case Network_KCP:
- return "kcp"
- case Network_WebSocket:
- return "ws"
- default:
- return "unknown"
- }
- }
- // NewNetworkList construsts a NetWorklist from the given StringListeralList.
- func NewNetworkList(networks collect.StringList) *NetworkList {
- list := &NetworkList{
- Network: make([]Network, networks.Len()),
- }
- for idx, network := range networks {
- list.Network[idx] = ParseNetwork(network)
- }
- return list
- }
- // HashNetwork returns true if the given network is in this NetworkList.
- func (this NetworkList) HasNetwork(network Network) bool {
- for _, value := range this.Network {
- if string(value) == string(network) {
- return true
- }
- }
- return false
- }
- func (this NetworkList) Get(idx int) Network {
- return this.Network[idx]
- }
|