| skipped 81 lines |
82 | 82 | | return "", false |
83 | 83 | | } |
84 | 84 | | return combo.String(), true |
| 85 | + | case 3: |
| 86 | + | if !strings.Contains(in, "@") { |
| 87 | + | return "", false |
| 88 | + | } |
| 89 | + | split := strings.Split(in, "@") |
| 90 | + | if !strings.Contains(split[0], ":") { |
| 91 | + | return "", false |
| 92 | + | } |
| 93 | + | splitAuth := strings.Split(split[0], ":") |
| 94 | + | splitServ := strings.Split(split[1], ":") |
| 95 | + | _, isDomain := dns.IsDomainName(splitServ[0]) |
| 96 | + | if isDomain && isNumber(splitServ[1]) { |
| 97 | + | return buildProxyString(splitAuth[0], splitAuth[1], |
| 98 | + | splitServ[0], splitServ[1], false), true |
| 99 | + | } |
| 100 | + | if _, err := ipa.ParseIPPort(split[1]); err == nil { |
| 101 | + | return buildProxyString(splitAuth[0], splitAuth[1], |
| 102 | + | splitServ[0], splitServ[1], false), true |
| 103 | + | } |
85 | 104 | | case 4: |
86 | 105 | | _, isDomain := dns.IsDomainName(split[0]) |
87 | 106 | | if isDomain && isNumber(split[1]) { |
| skipped 20 lines |