From 90e7052258e7cebf0df442a5d3b9436553e5c764 Mon Sep 17 00:00:00 2001 From: AI Engineer Date: Tue, 12 May 2026 23:10:29 +0800 Subject: [PATCH] refactor: align with crypto.DefaultAES interface --- .gitignore | 7 +++++-- Base.go | 13 ++++++++----- DB.go | 22 ++++++++++++---------- Stmt.go | 4 +--- go.mod | 2 +- go.sum | 36 ++++++++++++------------------------ 6 files changed, 39 insertions(+), 45 deletions(-) diff --git a/.gitignore b/.gitignore index bfad8f6..c964fd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ .log.meta.json - .ai/ - .geminiignore +.gemini +env.json +env.yml +env.yaml +/CODE-FULL.md diff --git a/Base.go b/Base.go index b0f21d0..faa1215 100644 --- a/Base.go +++ b/Base.go @@ -10,7 +10,6 @@ import ( "time" "apigo.cc/go/cast" - "apigo.cc/go/log" ) var structFieldsCache = sync.Map{} @@ -78,10 +77,10 @@ func baseExec(db *sql.DB, tx *sql.Tx, query string, args ...any) *ExecResult { } else if db != nil { r, err = db.Exec(query, args...) } else { - return &ExecResult{Sql: &query, Args: args, usedTime: log.MakeUsedTime(startTime, time.Now()), Error: errors.New("operate on a bad connection")} + return &ExecResult{Sql: &query, Args: args, usedTime: makeUsedTime(startTime, time.Now()), Error: errors.New("operate on a bad connection")} } endTime := time.Now() - usedTime := log.MakeUsedTime(startTime, endTime) + usedTime := makeUsedTime(startTime, endTime) if err != nil { return &ExecResult{Sql: &query, Args: args, usedTime: usedTime, Error: err} @@ -89,6 +88,10 @@ func baseExec(db *sql.DB, tx *sql.Tx, query string, args ...any) *ExecResult { return &ExecResult{Sql: &query, Args: args, usedTime: usedTime, result: r} } +func makeUsedTime(startTime, endTime time.Time) float32 { + return float32(endTime.UnixNano()-startTime.UnixNano()) / 1e6 +} + func flatArgs(args []any) []any { for i, arg := range args { if arg == nil { @@ -114,10 +117,10 @@ func baseQuery(db *sql.DB, tx *sql.Tx, query string, args ...any) *QueryResult { } else if db != nil { rows, err = db.Query(query, args...) } else { - return &QueryResult{Sql: &query, Args: args, usedTime: log.MakeUsedTime(startTime, time.Now()), Error: errors.New("operate on a bad connection")} + return &QueryResult{Sql: &query, Args: args, usedTime: makeUsedTime(startTime, time.Now()), Error: errors.New("operate on a bad connection")} } endTime := time.Now() - usedTime := log.MakeUsedTime(startTime, endTime) + usedTime := makeUsedTime(startTime, endTime) if err != nil { return &QueryResult{Sql: &query, Args: args, usedTime: usedTime, Error: err} diff --git a/DB.go b/DB.go index f39f07b..a674cb7 100644 --- a/DB.go +++ b/DB.go @@ -161,9 +161,9 @@ func (dbInfo *Config) ConfigureBy(setting string) { if sslCa != "" && sslCert != "" && sslKey != "" { sslName := id.Get12BytesUltraPerSecond() dbInfo.SSL = sslName - decryptedCa, _ := confAes.DecryptBytes([]byte(sslCa)) - decryptedCert, _ := confAes.DecryptBytes([]byte(sslCert)) - decryptedKey, _ := confAes.DecryptBytes([]byte(sslKey)) + decryptedCa, _ := confAES.DecryptBytes([]byte(sslCa)) + decryptedCert, _ := confAES.DecryptBytes([]byte(sslCert)) + decryptedKey, _ := confAES.DecryptBytes([]byte(sslKey)) tlsConf := BuildTLSConfig(decryptedCa, decryptedCert, decryptedKey, sslSkipVerify) if tlsConf != nil { dbInfo.tls = tlsConf @@ -221,14 +221,16 @@ type TableField struct { IsVersion bool } -var confAes, _ = crypto.NewAESCBCAndEraseKey([]byte("?GQ$0K0GgLdO=f+~L68PLm$uhKr4'=tV"), []byte("VFs7@sK61cj^f?HZ")) -var keysSetted = sync.Once{} +var confAES *crypto.Symmetric + +func init() { + crypto.OnSetDefaultAES(func(aes *crypto.Symmetric) { + confAES = aes + }) +} func SetEncryptKeys(key, iv []byte) { - keysSetted.Do(func() { - confAes.Close() - confAes, _ = crypto.NewAESGCMAndEraseKey(key, iv) - }) + crypto.SetDefaultAES(key, iv) } type dbLogger struct { @@ -445,7 +447,7 @@ func getDB(name string, logger *log.Logger, useCache bool) *DB { if conf.Password != "" { if encryptedPassword, err := base64.URLEncoding.DecodeString(conf.Password); err == nil { - if pwdSafeBuf, err := confAes.Decrypt(encryptedPassword); err == nil { + if pwdSafeBuf, err := confAES.Decrypt(encryptedPassword); err == nil { conf.pwd = pwdSafeBuf } } diff --git a/Stmt.go b/Stmt.go index 09be20c..456f6c3 100644 --- a/Stmt.go +++ b/Stmt.go @@ -4,8 +4,6 @@ import ( "database/sql" "errors" "time" - - "apigo.cc/go/log" ) type Stmt struct { @@ -24,7 +22,7 @@ func (stmt *Stmt) Exec(args ...any) *ExecResult { startTime := time.Now() r, err := stmt.conn.Exec(args...) endTime := time.Now() - usedTime := log.MakeUsedTime(startTime, endTime) + usedTime := makeUsedTime(startTime, endTime) if err != nil { stmt.logger.LogQueryError(err.Error(), *stmt.lastSql, stmt.lastArgs, usedTime) return &ExecResult{Sql: stmt.lastSql, Args: stmt.lastArgs, usedTime: usedTime, logger: stmt.logger, Error: err} diff --git a/go.mod b/go.mod index 40059f1..c40835c 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( apigo.cc/go/file v1.3.0 // indirect filippo.io/edwards25519 v1.2.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/gomodule/redigo v1.9.3 // indirect + github.com/gomodule/redigo v2.0.0+incompatible // indirect github.com/google/uuid v1.6.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect diff --git a/go.sum b/go.sum index b057724..df14bdc 100644 --- a/go.sum +++ b/go.sum @@ -1,25 +1,14 @@ -apigo.cc/go/cast v1.2.10 h1:wa9/hz6GW6Z+5co6l7LftMn2Eo06WpVHHDCCQphnmH8= -apigo.cc/go/cast v1.2.10/go.mod h1:lGlwImiOvHxG7buyMWhFzcdvQzmSaoKbmr7bcDfUpHk= -apigo.cc/go/config v1.0.8 h1:ZvontnJngNJrm6EJAPYmPhmBnLC9V7g5kZLiuN1MT60= -apigo.cc/go/config v1.0.8/go.mod h1:FCZj70MCejeWwv81O7sdpg0zmjOzglAMmNEfT3dQYzw= -apigo.cc/go/crypto v1.1.1 h1:AE0jNtKzcq4euz6fL9MAYEHQpbIEfDTHv2mriP/juig= -apigo.cc/go/crypto v1.1.1/go.mod h1:Q26As+TQrNs6olGkiVdD6649DJirxA4CUBT4oukKPuw= -apigo.cc/go/encoding v1.1.2 h1:reSrLkyYrtZsf4S91XPdyBY2AQpvA43n9q0Q9wz5uJA= -apigo.cc/go/encoding v1.1.2/go.mod h1:iLuvrYHEK8mLnk8jijx5Sv1tInFreny0yGNBouA1d20= -apigo.cc/go/file v1.0.8 h1:GPkixU080cvrmz7cbdXkC2DqMvsWWyY3UzoyUVQYFvs= -apigo.cc/go/file v1.0.8/go.mod h1:T/wYji/va0S+JM2fAHonhKpnXKIELk/bmgnFEgMMY2s= -apigo.cc/go/id v1.0.7 h1:vXCK8mUW3s4cJYmli0o2BxgyI9XbJrG8gSGJOP2Fe4g= -apigo.cc/go/id v1.0.7/go.mod h1:wXBrPpcEpyUDM7bp7M5uPM9zFw4VcnvXMQLw4Yd+uZE= -apigo.cc/go/log v1.1.16 h1:uqPqeHvs+FdNupLBzzamJmY4oHAqtPEkGuW/pW5i2nQ= -apigo.cc/go/log v1.1.16/go.mod h1:bOfPXjrX2bY+FNG9eEtBnvaVXoxZDGvz0jQfF3s/mYk= -apigo.cc/go/rand v1.0.6 h1:p51rkaDrYUdZPIRbQAujZmQelWg2ipAMts33A/tG7QE= -apigo.cc/go/rand v1.0.6/go.mod h1:mZ/4Soa3bk+XvDaqPWJuUe1bfEi4eThBj1XmEAuYxsk= -apigo.cc/go/redis v1.0.9 h1:5MnCchcDgoVnGHQn+KJF9PJXXRayK9nlZg+Q0lTnMoU= -apigo.cc/go/redis v1.0.9/go.mod h1:SVOD7iuUL/jxYEa28qObDQf4GY9UVSKjhM9vVj9TXLI= -apigo.cc/go/safe v1.0.7 h1:f0d+v9K2dHPyG5DNqhyddCmAmSiIqIfkPi/AMED/iQI= -apigo.cc/go/safe v1.0.7/go.mod h1:Hu7TVDWPe/I+nBZfYJH4mt+ROzG+rwk2D1zHTXj/2eE= -apigo.cc/go/shell v1.0.6 h1:RngaSMr2AkAFDl545A1Ln+D8ckqV2jknUp4PohDaLIA= -apigo.cc/go/shell v1.0.6/go.mod h1:X7Nozjd7oau4nvAJCI21vxrxfd4ZL5nE4C6eUsmi2Hc= +apigo.cc/go/cast v1.3.0 h1:ZTcLYijkqZjSWSCSpJUWMfzJYeJKbwKxquKkPrFsROQ= +apigo.cc/go/config v1.3.0 h1:TwI3bv3D+BJrAnFx+o62HQo3FarY2Ge3SCGsKchFYGg= +apigo.cc/go/crypto v1.3.0 h1:rGRrrb5O+4M50X5hVUmJQbXx3l87zzlcgzGtUvZrZL8= +apigo.cc/go/encoding v1.3.0 h1:8jqNHoZBR8vOU/BGsLFebfp1Txa1UxDRpd7YwzIFLJs= +apigo.cc/go/file v1.3.0 h1:xG9FcY3Rv6Br83r9pq9QsIXFrplx4g8ITOkHSzfzXRg= +apigo.cc/go/id v1.3.0 h1:Tr2Yj0Rl19lfwW5wBTJ407o/zgo2oVRLE20WWEgJzdE= +apigo.cc/go/log v1.3.0 h1:61Z80WGN6SnhgxgoR8xuVYIieMdjlJKmf8JX1HXzp0Y= +apigo.cc/go/rand v1.3.0 h1:k+UFAhMySwXf+dq8Om9TniZV6fm6gAE0evbrqMEdwQU= +apigo.cc/go/redis v1.3.0 h1:3NJE3xPXzhCwL+Mh1iyphFrsKWEuPlY26LHJfMVFSeU= +apigo.cc/go/safe v1.3.0 h1:uctdAUsphT9p60Tk4oS5xPCe0NoIdOHfsYv4PNS0Rok= +apigo.cc/go/shell v1.3.0 h1:hdxuYPN/7T2BuM/Ja8AjVUhbRqU/wpi8OjcJVziJ0nw= filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo= filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -29,8 +18,7 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/go-sql-driver/mysql v1.10.0 h1:Q+1LV8DkHJvSYAdR83XzuhDaTykuDx0l6fkXxoWCWfw= github.com/go-sql-driver/mysql v1.10.0/go.mod h1:M+cqaI7+xxXGG9swrdeUIoPG3Y3KCkF0pZej+SK+nWk= -github.com/gomodule/redigo v1.9.3 h1:dNPSXeXv6HCq2jdyWfjgmhBdqnR6PRO3m/G05nvpPC8= -github.com/gomodule/redigo v1.9.3/go.mod h1:KsU3hiK/Ay8U42qpaJk+kuNa3C+spxapWpM+ywhcgtw= +github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=