refactor: align with crypto.DefaultAES interface

This commit is contained in:
AI Engineer 2026-05-12 23:10:29 +08:00
parent 53f64af5f2
commit 90e7052258
6 changed files with 39 additions and 45 deletions

7
.gitignore vendored
View File

@ -1,5 +1,8 @@
.log.meta.json
.ai/
.geminiignore
.gemini
env.json
env.yml
env.yaml
/CODE-FULL.md

13
Base.go
View File

@ -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}

22
DB.go
View File

@ -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
}
}

View File

@ -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}

2
go.mod
View File

@ -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

36
go.sum
View File

@ -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=