diff --git a/pkg/serverconfigs/filterconfigs/filter_dec2hex.go b/pkg/serverconfigs/filterconfigs/filter_dec2hex.go new file mode 100644 index 0000000..913540d --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_dec2hex.go @@ -0,0 +1,20 @@ +package filterconfigs + +import ( + "fmt" + "github.com/iwind/TeaGo/types" +) + +type Dec2HexFilter struct { +} + +// 初始化 +func (this *Dec2HexFilter) Init() error { + return nil +} + +// 执行过滤 +func (this *Dec2HexFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) { + v := types.Int64(input) + return fmt.Sprintf("%x", v), true, nil +} diff --git a/pkg/serverconfigs/filterconfigs/filter_dec2hex_test.go b/pkg/serverconfigs/filterconfigs/filter_dec2hex_test.go new file mode 100644 index 0000000..afe330c --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_dec2hex_test.go @@ -0,0 +1,15 @@ +package filterconfigs + +import ( + "testing" +) + +func TestDec2HexFilter_Do(t *testing.T) { + filter := &Dec2HexFilter{} + err := filter.Init() + if err != nil { + t.Fatal(err) + } + t.Log(filter.Do("123456", nil)) + t.Log(filter.Do("1", nil)) +} diff --git a/pkg/serverconfigs/filterconfigs/filter_hex2dec.go b/pkg/serverconfigs/filterconfigs/filter_hex2dec.go new file mode 100644 index 0000000..0ba2645 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_hex2dec.go @@ -0,0 +1,21 @@ +package filterconfigs + +import ( + "github.com/iwind/TeaGo/types" + "math/big" +) + +type Hex2DecFilter struct { +} + +// 初始化 +func (this *Hex2DecFilter) Init() error { + return nil +} + +// 执行过滤 +func (this *Hex2DecFilter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) { + n := new(big.Int) + n.SetString(types.String(input), 16) + return n.Uint64(), true, nil +} diff --git a/pkg/serverconfigs/filterconfigs/filter_hex2dec_test.go b/pkg/serverconfigs/filterconfigs/filter_hex2dec_test.go new file mode 100644 index 0000000..f9848b1 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_hex2dec_test.go @@ -0,0 +1,29 @@ +package filterconfigs + +import ( + stringutil "github.com/iwind/TeaGo/utils/string" + "testing" +) + +func TestHex2DecFilter_Do(t *testing.T) { + filter := &Hex2DecFilter{} + err := filter.Init() + if err != nil { + t.Fatal(err) + } + t.Log(filter.Do("0e", nil)) + t.Log(filter.Do("e", nil)) + + { + result, _, _ := filter.Do("123", nil) + t.Logf("%x", result) + } + + { + md5 := stringutil.Md5("123456") + t.Log("md5:", md5) + result, _, _ := filter.Do(md5, nil) + t.Log(result) + t.Logf("%x", result) + } +} diff --git a/pkg/serverconfigs/filterconfigs/filter_sha1.go b/pkg/serverconfigs/filterconfigs/filter_sha1.go new file mode 100644 index 0000000..ea3ed3e --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_sha1.go @@ -0,0 +1,20 @@ +package filterconfigs + +import ( + "crypto/sha1" + "fmt" + "github.com/iwind/TeaGo/types" +) + +type Sha1Filter struct { +} + +// 初始化 +func (this *Sha1Filter) Init() error { + return nil +} + +// 执行过滤 +func (this *Sha1Filter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) { + return fmt.Sprintf("%x", sha1.Sum([]byte(types.String(input)))), true, nil +} diff --git a/pkg/serverconfigs/filterconfigs/filter_sha1_test.go b/pkg/serverconfigs/filterconfigs/filter_sha1_test.go new file mode 100644 index 0000000..f9beb7f --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_sha1_test.go @@ -0,0 +1,9 @@ +package filterconfigs + +import "testing" + +func TestSha1Filter_Do(t *testing.T) { + filter := &Sha1Filter{} + t.Log(filter.Do("123456", nil)) + t.Log(filter.Do("", nil)) +} diff --git a/pkg/serverconfigs/filterconfigs/filter_sha256.go b/pkg/serverconfigs/filterconfigs/filter_sha256.go new file mode 100644 index 0000000..38dc8f1 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_sha256.go @@ -0,0 +1,20 @@ +package filterconfigs + +import ( + "crypto/sha256" + "fmt" + "github.com/iwind/TeaGo/types" +) + +type Sha256Filter struct { +} + +// 初始化 +func (this *Sha256Filter) Init() error { + return nil +} + +// 执行过滤 +func (this *Sha256Filter) Do(input interface{}, options interface{}) (output interface{}, goNext bool, err error) { + return fmt.Sprintf("%x", sha256.Sum256([]byte(types.String(input)))), true, nil +} diff --git a/pkg/serverconfigs/filterconfigs/filter_sha256_test.go b/pkg/serverconfigs/filterconfigs/filter_sha256_test.go new file mode 100644 index 0000000..b6eb171 --- /dev/null +++ b/pkg/serverconfigs/filterconfigs/filter_sha256_test.go @@ -0,0 +1,9 @@ +package filterconfigs + +import "testing" + +func TestSha256Filter_Do(t *testing.T) { + filter := &Sha256Filter{} + t.Log(filter.Do("123456", nil)) + t.Log(filter.Do("", nil)) +} diff --git a/pkg/serverconfigs/filterconfigs/filters.go b/pkg/serverconfigs/filterconfigs/filters.go index be220f1..fd94aac 100644 --- a/pkg/serverconfigs/filterconfigs/filters.go +++ b/pkg/serverconfigs/filterconfigs/filters.go @@ -19,6 +19,10 @@ var allFilters = map[string]FilterInterface{ "base64Encode": new(Base64EncodeFilter), "base64Decode": new(Base64DecodeFilter), "length": new(LengthFilter), + "hex2dec": new(Hex2DecFilter), + "dec2hex": new(Dec2HexFilter), + "sha1": new(Sha1Filter), + "sha256": new(Sha256Filter), } // 查找Filter