mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-07 11:17:56 +08:00
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package proxy
|
|
|
|
import "strings"
|
|
|
|
// FixedIPProvider 固定IP列表提供者
|
|
type FixedIPProvider struct {
|
|
ips []ProxyIP
|
|
}
|
|
|
|
// NewFixedIPProvider 创建固定IP列表提供者
|
|
func NewFixedIPProvider(proxyURLs []string) *FixedIPProvider {
|
|
ips := make([]ProxyIP, 0, len(proxyURLs))
|
|
for _, proxyURL := range proxyURLs {
|
|
// 简单解析代理URL
|
|
// 格式: http://ip:port 或 socks5://user:pass@ip:port
|
|
protocol := "http"
|
|
if strings.HasPrefix(proxyURL, "socks5://") {
|
|
protocol = "socks5"
|
|
proxyURL = strings.TrimPrefix(proxyURL, "socks5://")
|
|
} else if strings.HasPrefix(proxyURL, "http://") {
|
|
proxyURL = strings.TrimPrefix(proxyURL, "http://")
|
|
} else if strings.HasPrefix(proxyURL, "https://") {
|
|
protocol = "https"
|
|
proxyURL = strings.TrimPrefix(proxyURL, "https://")
|
|
}
|
|
|
|
ips = append(ips, ProxyIP{
|
|
IP: proxyURL,
|
|
Protocol: protocol,
|
|
})
|
|
}
|
|
|
|
return &FixedIPProvider{ips: ips}
|
|
}
|
|
|
|
func (p *FixedIPProvider) GetIPList() ([]ProxyIP, error) {
|
|
return p.ips, nil
|
|
}
|
|
|
|
func (p *FixedIPProvider) RefreshIPList() ([]ProxyIP, error) {
|
|
return p.ips, nil
|
|
}
|