diff --git a/url/share_link.go b/url/share_link.go index 40a1cf4..a3cd6d3 100644 --- a/url/share_link.go +++ b/url/share_link.go @@ -19,7 +19,8 @@ var validTypes = map[string]struct{}{ } var validEncryptionProviders = map[string]struct{}{ - "ss": {}, + "ss": {}, + "none": {}, } var validSSEncryptionMap = map[string]struct{}{ @@ -179,9 +180,8 @@ func NewShareInfoFromURL(shareLink string) (info ShareInfo, e error) { e = errors.New("ss password cannot be empty") return } - } else { - e = errors.New(fmt.Sprintf("encryption param %s is not supported", info.Encryption)) - return + } else if encryptionProviderName == "none" { + // no encryption. do nothing. } } diff --git a/url/share_link_test.go b/url/share_link_test.go index b5d9804..4b30079 100644 --- a/url/share_link_test.go +++ b/url/share_link_test.go @@ -219,6 +219,11 @@ func TestNewShareInfoFromURL_Encryption_Unknown(t *testing.T) { assert.Error(t, e, "unknown encryption should not be supported") } +func TestNewShareInfoFromURL_Encryption_None(t *testing.T) { + _, e := NewShareInfoFromURL("trojan-go://what@ever.me?encryption=none") + assert.Nil(t, e, "should support none encryption") +} + func TestNewShareInfoFromURL_Encryption_SS_NotSupportedMethods(t *testing.T) { invalidMethods := []string{"rc4-md5", "rc4", "des-cfb", "table", "salsa20-ctr"} for _, invalidMethod := range invalidMethods {