refactor: align with crypto.DefaultAES interface
This commit is contained in:
parent
53f64af5f2
commit
90e7052258
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,5 +1,8 @@
|
|||||||
.log.meta.json
|
.log.meta.json
|
||||||
|
|
||||||
.ai/
|
.ai/
|
||||||
|
|
||||||
.geminiignore
|
.geminiignore
|
||||||
|
.gemini
|
||||||
|
env.json
|
||||||
|
env.yml
|
||||||
|
env.yaml
|
||||||
|
/CODE-FULL.md
|
||||||
|
|||||||
13
Base.go
13
Base.go
@ -10,7 +10,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"apigo.cc/go/cast"
|
"apigo.cc/go/cast"
|
||||||
"apigo.cc/go/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var structFieldsCache = sync.Map{}
|
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 {
|
} else if db != nil {
|
||||||
r, err = db.Exec(query, args...)
|
r, err = db.Exec(query, args...)
|
||||||
} else {
|
} 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()
|
endTime := time.Now()
|
||||||
usedTime := log.MakeUsedTime(startTime, endTime)
|
usedTime := makeUsedTime(startTime, endTime)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &ExecResult{Sql: &query, Args: args, usedTime: usedTime, Error: err}
|
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}
|
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 {
|
func flatArgs(args []any) []any {
|
||||||
for i, arg := range args {
|
for i, arg := range args {
|
||||||
if arg == nil {
|
if arg == nil {
|
||||||
@ -114,10 +117,10 @@ func baseQuery(db *sql.DB, tx *sql.Tx, query string, args ...any) *QueryResult {
|
|||||||
} else if db != nil {
|
} else if db != nil {
|
||||||
rows, err = db.Query(query, args...)
|
rows, err = db.Query(query, args...)
|
||||||
} else {
|
} 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()
|
endTime := time.Now()
|
||||||
usedTime := log.MakeUsedTime(startTime, endTime)
|
usedTime := makeUsedTime(startTime, endTime)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &QueryResult{Sql: &query, Args: args, usedTime: usedTime, Error: err}
|
return &QueryResult{Sql: &query, Args: args, usedTime: usedTime, Error: err}
|
||||||
|
|||||||
22
DB.go
22
DB.go
@ -161,9 +161,9 @@ func (dbInfo *Config) ConfigureBy(setting string) {
|
|||||||
if sslCa != "" && sslCert != "" && sslKey != "" {
|
if sslCa != "" && sslCert != "" && sslKey != "" {
|
||||||
sslName := id.Get12BytesUltraPerSecond()
|
sslName := id.Get12BytesUltraPerSecond()
|
||||||
dbInfo.SSL = sslName
|
dbInfo.SSL = sslName
|
||||||
decryptedCa, _ := confAes.DecryptBytes([]byte(sslCa))
|
decryptedCa, _ := confAES.DecryptBytes([]byte(sslCa))
|
||||||
decryptedCert, _ := confAes.DecryptBytes([]byte(sslCert))
|
decryptedCert, _ := confAES.DecryptBytes([]byte(sslCert))
|
||||||
decryptedKey, _ := confAes.DecryptBytes([]byte(sslKey))
|
decryptedKey, _ := confAES.DecryptBytes([]byte(sslKey))
|
||||||
tlsConf := BuildTLSConfig(decryptedCa, decryptedCert, decryptedKey, sslSkipVerify)
|
tlsConf := BuildTLSConfig(decryptedCa, decryptedCert, decryptedKey, sslSkipVerify)
|
||||||
if tlsConf != nil {
|
if tlsConf != nil {
|
||||||
dbInfo.tls = tlsConf
|
dbInfo.tls = tlsConf
|
||||||
@ -221,14 +221,16 @@ type TableField struct {
|
|||||||
IsVersion bool
|
IsVersion bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var confAes, _ = crypto.NewAESCBCAndEraseKey([]byte("?GQ$0K0GgLdO=f+~L68PLm$uhKr4'=tV"), []byte("VFs7@sK61cj^f?HZ"))
|
var confAES *crypto.Symmetric
|
||||||
var keysSetted = sync.Once{}
|
|
||||||
|
func init() {
|
||||||
|
crypto.OnSetDefaultAES(func(aes *crypto.Symmetric) {
|
||||||
|
confAES = aes
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func SetEncryptKeys(key, iv []byte) {
|
func SetEncryptKeys(key, iv []byte) {
|
||||||
keysSetted.Do(func() {
|
crypto.SetDefaultAES(key, iv)
|
||||||
confAes.Close()
|
|
||||||
confAes, _ = crypto.NewAESGCMAndEraseKey(key, iv)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type dbLogger struct {
|
type dbLogger struct {
|
||||||
@ -445,7 +447,7 @@ func getDB(name string, logger *log.Logger, useCache bool) *DB {
|
|||||||
|
|
||||||
if conf.Password != "" {
|
if conf.Password != "" {
|
||||||
if encryptedPassword, err := base64.URLEncoding.DecodeString(conf.Password); err == nil {
|
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
|
conf.pwd = pwdSafeBuf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
Stmt.go
4
Stmt.go
@ -4,8 +4,6 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"apigo.cc/go/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Stmt struct {
|
type Stmt struct {
|
||||||
@ -24,7 +22,7 @@ func (stmt *Stmt) Exec(args ...any) *ExecResult {
|
|||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
r, err := stmt.conn.Exec(args...)
|
r, err := stmt.conn.Exec(args...)
|
||||||
endTime := time.Now()
|
endTime := time.Now()
|
||||||
usedTime := log.MakeUsedTime(startTime, endTime)
|
usedTime := makeUsedTime(startTime, endTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
stmt.logger.LogQueryError(err.Error(), *stmt.lastSql, stmt.lastArgs, usedTime)
|
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}
|
return &ExecResult{Sql: stmt.lastSql, Args: stmt.lastArgs, usedTime: usedTime, logger: stmt.logger, Error: err}
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -23,7 +23,7 @@ require (
|
|||||||
apigo.cc/go/file v1.3.0 // indirect
|
apigo.cc/go/file v1.3.0 // indirect
|
||||||
filippo.io/edwards25519 v1.2.0 // indirect
|
filippo.io/edwards25519 v1.2.0 // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // 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/google/uuid v1.6.0 // indirect
|
||||||
github.com/jackc/pgpassfile v1.0.0 // indirect
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
||||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
||||||
|
|||||||
36
go.sum
36
go.sum
@ -1,25 +1,14 @@
|
|||||||
apigo.cc/go/cast v1.2.10 h1:wa9/hz6GW6Z+5co6l7LftMn2Eo06WpVHHDCCQphnmH8=
|
apigo.cc/go/cast v1.3.0 h1:ZTcLYijkqZjSWSCSpJUWMfzJYeJKbwKxquKkPrFsROQ=
|
||||||
apigo.cc/go/cast v1.2.10/go.mod h1:lGlwImiOvHxG7buyMWhFzcdvQzmSaoKbmr7bcDfUpHk=
|
apigo.cc/go/config v1.3.0 h1:TwI3bv3D+BJrAnFx+o62HQo3FarY2Ge3SCGsKchFYGg=
|
||||||
apigo.cc/go/config v1.0.8 h1:ZvontnJngNJrm6EJAPYmPhmBnLC9V7g5kZLiuN1MT60=
|
apigo.cc/go/crypto v1.3.0 h1:rGRrrb5O+4M50X5hVUmJQbXx3l87zzlcgzGtUvZrZL8=
|
||||||
apigo.cc/go/config v1.0.8/go.mod h1:FCZj70MCejeWwv81O7sdpg0zmjOzglAMmNEfT3dQYzw=
|
apigo.cc/go/encoding v1.3.0 h1:8jqNHoZBR8vOU/BGsLFebfp1Txa1UxDRpd7YwzIFLJs=
|
||||||
apigo.cc/go/crypto v1.1.1 h1:AE0jNtKzcq4euz6fL9MAYEHQpbIEfDTHv2mriP/juig=
|
apigo.cc/go/file v1.3.0 h1:xG9FcY3Rv6Br83r9pq9QsIXFrplx4g8ITOkHSzfzXRg=
|
||||||
apigo.cc/go/crypto v1.1.1/go.mod h1:Q26As+TQrNs6olGkiVdD6649DJirxA4CUBT4oukKPuw=
|
apigo.cc/go/id v1.3.0 h1:Tr2Yj0Rl19lfwW5wBTJ407o/zgo2oVRLE20WWEgJzdE=
|
||||||
apigo.cc/go/encoding v1.1.2 h1:reSrLkyYrtZsf4S91XPdyBY2AQpvA43n9q0Q9wz5uJA=
|
apigo.cc/go/log v1.3.0 h1:61Z80WGN6SnhgxgoR8xuVYIieMdjlJKmf8JX1HXzp0Y=
|
||||||
apigo.cc/go/encoding v1.1.2/go.mod h1:iLuvrYHEK8mLnk8jijx5Sv1tInFreny0yGNBouA1d20=
|
apigo.cc/go/rand v1.3.0 h1:k+UFAhMySwXf+dq8Om9TniZV6fm6gAE0evbrqMEdwQU=
|
||||||
apigo.cc/go/file v1.0.8 h1:GPkixU080cvrmz7cbdXkC2DqMvsWWyY3UzoyUVQYFvs=
|
apigo.cc/go/redis v1.3.0 h1:3NJE3xPXzhCwL+Mh1iyphFrsKWEuPlY26LHJfMVFSeU=
|
||||||
apigo.cc/go/file v1.0.8/go.mod h1:T/wYji/va0S+JM2fAHonhKpnXKIELk/bmgnFEgMMY2s=
|
apigo.cc/go/safe v1.3.0 h1:uctdAUsphT9p60Tk4oS5xPCe0NoIdOHfsYv4PNS0Rok=
|
||||||
apigo.cc/go/id v1.0.7 h1:vXCK8mUW3s4cJYmli0o2BxgyI9XbJrG8gSGJOP2Fe4g=
|
apigo.cc/go/shell v1.3.0 h1:hdxuYPN/7T2BuM/Ja8AjVUhbRqU/wpi8OjcJVziJ0nw=
|
||||||
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=
|
|
||||||
filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
|
filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
|
||||||
filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=
|
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=
|
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/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 h1:Q+1LV8DkHJvSYAdR83XzuhDaTykuDx0l6fkXxoWCWfw=
|
||||||
github.com/go-sql-driver/mysql v1.10.0/go.mod h1:M+cqaI7+xxXGG9swrdeUIoPG3Y3KCkF0pZej+SK+nWk=
|
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 v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
|
||||||
github.com/gomodule/redigo v1.9.3/go.mod h1:KsU3hiK/Ay8U42qpaJk+kuNa3C+spxapWpM+ywhcgtw=
|
|
||||||
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=
|
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/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user