Files
proxypool/pkg/provider/sssub.go
2020-09-07 12:02:44 +08:00

63 lines
1.3 KiB
Go

package provider
import (
"encoding/json"
"strconv"
"strings"
"github.com/zu1k/proxypool/pkg/tool"
"github.com/zu1k/proxypool/pkg/proxy"
)
type SSSub struct {
Base
}
type ssJson struct {
Remarks string `json:"remarks"`
Server string `json:"server"`
ServerPort string `json:"server_port"`
Method string `json:"method"`
Password string `json:"password"`
Plugin string `json:"plugin"`
PluginOpts map[string]interface{} `json:"plugin_opts"`
}
func (sub SSSub) Provide() string {
sub.Types = "ss"
sub.preFilter()
proxies := make([]ssJson, 0, sub.Proxies.Len())
for _, p := range *sub.Proxies {
pp := p.(*proxy.Shadowsocks)
proxies = append(proxies, ssJson{
Remarks: pp.Name,
Server: pp.Server,
ServerPort: strconv.Itoa(pp.Port),
Method: pp.Cipher,
Password: pp.Password,
Plugin: pp.Plugin,
PluginOpts: pp.PluginOpts,
})
}
text, err := json.Marshal(proxies)
if err != nil {
return ""
}
return string(text)
}
type SIP002Sub struct {
Base
}
func (sub SIP002Sub) Provide() string {
sub.Types = "ss"
sub.preFilter()
var resultBuilder strings.Builder
for _, p := range *sub.Proxies {
resultBuilder.WriteString(p.Link() + "\n")
}
return tool.Base64EncodeString(resultBuilder.String(), false)
}