diff --git a/assets/source.yaml b/assets/source.yaml index 4d45dee..3840568 100644 --- a/assets/source.yaml +++ b/assets/source.yaml @@ -1,4 +1,8 @@ sources: + - type: webfuzzsub + options: + url: https://raw.githubusercontent.com/du5/free/master/sub.list + - type: subscribe options: url: https://raw.githubusercontent.com/ssrsub/ssr/master/v2ray @@ -19,6 +23,3 @@ sources: - type: web-freessrxyz options: - - - type: web-lucnorg - options: diff --git a/getter/web_lucn_org.go b/getter/web_lucn_org.go deleted file mode 100644 index 6ed6f62..0000000 --- a/getter/web_lucn_org.go +++ /dev/null @@ -1,85 +0,0 @@ -package getter - -import ( - "encoding/base64" - "encoding/json" - "io/ioutil" - "sync" - - "github.com/zu1k/proxypool/proxy" - "github.com/zu1k/proxypool/tool" -) - -func init() { - Register("web-lucnorg", NewWebLucnorg) -} - -const lucnorgSsrLink = "https://lncn.org/api/ssrList" - -type WebLucnOrg struct { -} - -func NewWebLucnorg(options tool.Options) (getter Getter, err error) { - return &WebLucnOrg{}, nil -} - -func (w *WebLucnOrg) Get() proxy.ProxyList { - resp, err := tool.GetHttpClient().Post(lucnorgSsrLink, nil) - if err != nil { - return nil - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil - } - - response := struct { - Code string `json:"code"` - Ssrs string `json:"ssrs"` - }{} - err = json.Unmarshal(body, &response) - if err != nil { - return nil - } - - dec := decryptAesForLucn(response.Code, response.Ssrs) - if dec == nil { - return nil - } - - type node struct { - Url string `json:"url"` - } - ssrs := make([]node, 0) - err = json.Unmarshal(dec, &ssrs) - if err != nil { - return nil - } - - result := make([]string, 0) - for _, node := range ssrs { - result = append(result, node.Url) - } - return StringArray2ProxyArray(result) -} - -func (w *WebLucnOrg) Get2Chan(pc chan proxy.Proxy, wg *sync.WaitGroup) { - defer wg.Done() - nodes := w.Get() - for _, node := range nodes { - pc <- node - } -} - -func decryptAesForLucn(code string, c string) []byte { - if code == "" { - code = "abclnv561cqqfg30" - } - cipher, err := base64.StdEncoding.DecodeString(c) - if err != nil { - return nil - } - result := tool.AesEcbDecryptWithPKCS7Unpadding(cipher, []byte(code)) - return result -} diff --git a/source.yaml b/source.yaml index 1b1c0a4..6464b37 100644 --- a/source.yaml +++ b/source.yaml @@ -311,6 +311,3 @@ sources: - type: web-freessrxyz options: - - - type: web-lucnorg - options: diff --git a/tool/aes.go b/tool/aes.go deleted file mode 100644 index d10d6a5..0000000 --- a/tool/aes.go +++ /dev/null @@ -1,43 +0,0 @@ -package tool - -import ( - "bytes" - "crypto/aes" -) - -func PKCS7Padding(ciphertext []byte, blockSize int) []byte { - padding := blockSize - len(ciphertext)%blockSize - padtext := bytes.Repeat([]byte{byte(padding)}, padding) - return append(ciphertext, padtext...) -} - -func PKCS7UnPadding(origData []byte) []byte { - length := len(origData) - unpadding := int(origData[length-1]) - return origData[:(length - unpadding)] -} - -func AesEcbDecryptWithPKCS7Unpadding(data, key []byte) []byte { - block, _ := aes.NewCipher(key) - decrypted := make([]byte, len(data)) - size := block.BlockSize() - - for bs, be := 0, size; bs < len(data); bs, be = bs+size, be+size { - block.Decrypt(decrypted[bs:be], data[bs:be]) - } - - return PKCS7UnPadding(decrypted) -} - -func AesEcbEncryptWithPKCS7Padding(data, key []byte) []byte { - block, _ := aes.NewCipher(key) - data = PKCS7Padding(data, block.BlockSize()) - decrypted := make([]byte, len(data)) - size := block.BlockSize() - - for bs, be := 0, size; bs < len(data); bs, be = bs+size, be+size { - block.Encrypt(decrypted[bs:be], data[bs:be]) - } - - return decrypted -}