diff --git a/internal/db/models/db_node_initializer.go b/internal/db/models/db_node_initializer.go index df79df37..3d10a081 100644 --- a/internal/db/models/db_node_initializer.go +++ b/internal/db/models/db_node_initializer.go @@ -5,6 +5,7 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/TeaOSLab/EdgeAPI/internal/goman" "github.com/TeaOSLab/EdgeAPI/internal/remotelogs" + "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/lists" @@ -141,7 +142,7 @@ func findNSAccessLogTableName(db *dbs.DB, day string) (tableName string, ok bool return tableName, false, err } - return tableName, lists.ContainsString(tableNames, tableName), nil + return tableName, utils.ContainsStringInsensitive(tableNames, tableName), nil } // 根据日期获取表名 @@ -168,7 +169,7 @@ func findHTTPAccessLogTable(db *dbs.DB, day string, force bool) (*httpAccessLogD return nil, err } - if lists.ContainsString(tableNames, tableName) { + if utils.ContainsStringInsensitive(tableNames, tableName) { table, err := db.FindTable(tableName) if err != nil { return nil, err @@ -236,7 +237,7 @@ func findNSAccessLogTable(db *dbs.DB, day string, force bool) (string, error) { return tableName, err } - if lists.ContainsString(tableNames, tableName) { + if utils.ContainsStringInsensitive(tableNames, tableName) { accessLogLocker.Lock() nsAccessLogTableMapping[cacheKey] = true accessLogLocker.Unlock() @@ -364,6 +365,7 @@ func (this *DBNodeInitializer) loop() error { continue } else { err = nil + continue } } diff --git a/internal/db/models/http_access_log_dao.go b/internal/db/models/http_access_log_dao.go index f7d7b218..ba556661 100644 --- a/internal/db/models/http_access_log_dao.go +++ b/internal/db/models/http_access_log_dao.go @@ -306,14 +306,14 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx, lastRequestId string, s dao := daoWrapper.DAO tableName, hasRemoteAddrField, hasDomainField, exists, err := findHTTPAccessLogTableName(dao.Instance, day) - if !exists { - // 表格不存在则跳过 - return - } if err != nil { logs.Println("[DB_NODE]" + err.Error()) return } + if !exists { + // 表格不存在则跳过 + return + } query := dao.Query(tx) diff --git a/internal/utils/strings.go b/internal/utils/strings.go index 754f268d..c2df5ffb 100644 --- a/internal/utils/strings.go +++ b/internal/utils/strings.go @@ -19,3 +19,14 @@ func SplitStrings(s string, glue string) []string { } return result } + +// ContainsStringInsensitive 检查是否包含某个字符串,并且不区分大小写 +func ContainsStringInsensitive(list []string, search string) bool { + search = strings.ToLower(search) + for _, s := range list { + if strings.ToLower(s) == search { + return true + } + } + return false +} diff --git a/internal/utils/strings_test.go b/internal/utils/strings_test.go index 6ef1ed7f..e308b716 100644 --- a/internal/utils/strings_test.go +++ b/internal/utils/strings_test.go @@ -2,9 +2,21 @@ package utils -import "testing" +import ( + "github.com/iwind/TeaGo/assert" + "testing" +) func TestSplitStrings(t *testing.T) { t.Log(SplitStrings("a, b, c", ",")) t.Log(SplitStrings("a, b, c, ", ",")) } + +func TestContainsStringInsensitive(t *testing.T) { + var a = assert.NewAssertion(t) + a.IsTrue(ContainsStringInsensitive([]string{"a", "b", "C"}, "A")) + a.IsTrue(ContainsStringInsensitive([]string{"a", "b", "C"}, "b")) + a.IsTrue(ContainsStringInsensitive([]string{"a", "b", "C"}, "c")) + a.IsFalse(ContainsStringInsensitive([]string{"a", "b", "C"}, "d")) + +}