diff options
| author | Hamidreza Ghavami <70919649+hamid-gh98@users.noreply.github.com> | 2023-05-20 20:16:42 +0300 |
|---|---|---|
| committer | Hamidreza Ghavami <70919649+hamid-gh98@users.noreply.github.com> | 2023-05-20 20:16:42 +0300 |
| commit | 786a3ac992043e1e1ca398d4b408e34d9ae46973 (patch) | |
| tree | 0cefdc30de4d4c5f5ce489dc92613ce01449200e /web/global/hashStorage.go | |
| parent | 8c5648eb09b0d6d1479f102156e8a548ed478caa (diff) | |
FIX hashStorage
Diffstat (limited to 'web/global/hashStorage.go')
| -rw-r--r-- | web/global/hashStorage.go | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/web/global/hashStorage.go b/web/global/hashStorage.go index 099a54ed..3d5a6a0d 100644 --- a/web/global/hashStorage.go +++ b/web/global/hashStorage.go @@ -3,8 +3,10 @@ package global import ( "crypto/md5" "encoding/hex" + "regexp" "sync" "time" + "x-ui/util/common" ) type HashEntry struct { @@ -59,15 +61,23 @@ func (h *HashStorage) saveValue(query string) string { return md5HashString } -func (h *HashStorage) GetValue(hash string) string { +func (h *HashStorage) GetValue(hash string) (string, error) { h.RLock() defer h.RUnlock() entry, exists := h.Data[hash] if !exists { - return hash + if h.isMD5(hash) { + return "", common.NewError("hash not found in storage!") + } + return hash, nil } - return entry.Value + return entry.Value, nil +} + +func (h *HashStorage) isMD5(hash string) bool { + match, _ := regexp.MatchString("^[a-f0-9]{32}$", hash) + return match } func (h *HashStorage) RemoveExpiredHashes() { |
