Skip to content

Commit 93b66af

Browse files
mysql: ignore warning log + misc updates (#4702)
1 parent 5bd9d9e commit 93b66af

File tree

4 files changed

+41
-5
lines changed

4 files changed

+41
-5
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ require (
6868
github.com/go-git/go-git/v5 v5.11.0
6969
github.com/go-ldap/ldap/v3 v3.4.5
7070
github.com/go-pg/pg v8.0.7+incompatible
71-
github.com/go-sql-driver/mysql v1.6.0
71+
github.com/go-sql-driver/mysql v1.7.1
7272
github.com/h2non/filetype v1.1.3
7373
github.com/labstack/echo/v4 v4.10.2
7474
github.com/lib/pq v1.10.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,8 +379,8 @@ github.com/go-rod/rod v0.114.0/go.mod h1:aiedSEFg5DwG/fnNbUOTPMTTWX3MRj6vIs/a684
379379
github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU=
380380
github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
381381
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
382-
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
383-
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
382+
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
383+
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
384384
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
385385
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
386386
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=

pkg/js/libs/mysql/mysql.go

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import (
44
"context"
55
"database/sql"
66
"fmt"
7+
"io"
8+
"log"
79
"net"
810
"net/url"
911
"time"
1012

11-
_ "github.com/go-sql-driver/mysql"
13+
"github.com/go-sql-driver/mysql"
1214
"github.com/praetorian-inc/fingerprintx/pkg/plugins"
1315
mysqlplugin "github.com/praetorian-inc/fingerprintx/pkg/plugins/services/mysql"
1416
utils "github.com/projectdiscovery/nuclei/v3/pkg/js/utils"
@@ -66,6 +68,24 @@ func (c *MySQLClient) ConnectWithDB(host string, port int, username, password, d
6668
return connect(host, port, username, password, dbName)
6769
}
6870

71+
// ConnectWithDSN connects to MySQL database using given DSN.
72+
// we override mysql dialer with fastdialer so it respects network policy
73+
func (c *MySQLClient) ConnectWithDSN(dsn string) (bool, error) {
74+
db, err := sql.Open("mysql", dsn)
75+
if err != nil {
76+
return false, err
77+
}
78+
defer db.Close()
79+
db.SetMaxOpenConns(1)
80+
db.SetMaxIdleConns(0)
81+
82+
_, err = db.Exec("select 1")
83+
if err != nil {
84+
return false, err
85+
}
86+
return true, nil
87+
}
88+
6989
func connect(host string, port int, username, password, dbName string) (bool, error) {
7090
if host == "" || port <= 0 {
7191
return false, fmt.Errorf("invalid host or port")
@@ -78,7 +98,7 @@ func connect(host string, port int, username, password, dbName string) (bool, er
7898

7999
target := net.JoinHostPort(host, fmt.Sprintf("%d", port))
80100

81-
db, err := sql.Open("mysql", fmt.Sprintf("%v:%v@tcp(%v)/%s",
101+
db, err := sql.Open("mysql", fmt.Sprintf("%v:%v@tcp(%v)/%s?allowOldPasswords=1",
82102
url.PathEscape(username),
83103
url.PathEscape(password),
84104
target,
@@ -87,6 +107,8 @@ func connect(host string, port int, username, password, dbName string) (bool, er
87107
return false, err
88108
}
89109
defer db.Close()
110+
db.SetMaxOpenConns(1)
111+
db.SetMaxIdleConns(0)
90112

91113
_, err = db.Exec("select 1")
92114
if err != nil {
@@ -115,6 +137,8 @@ func (c *MySQLClient) ExecuteQuery(host string, port int, username, password, db
115137
return "", err
116138
}
117139
defer db.Close()
140+
db.SetMaxOpenConns(1)
141+
db.SetMaxIdleConns(0)
118142

119143
rows, err := db.Query(query)
120144
if err != nil {
@@ -126,3 +150,7 @@ func (c *MySQLClient) ExecuteQuery(host string, port int, username, password, db
126150
}
127151
return string(resp), nil
128152
}
153+
154+
func init() {
155+
_ = mysql.SetLogger(log.New(io.Discard, "", 0))
156+
}

pkg/protocols/common/protocolstate/state.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package protocolstate
22

33
import (
4+
"context"
45
"fmt"
56
"net"
67
"net/url"
78

9+
"github.com/go-sql-driver/mysql"
810
"github.com/pkg/errors"
911
"golang.org/x/net/proxy"
1012

@@ -133,6 +135,12 @@ func Init(options *types.Options) error {
133135
return errors.Wrap(err, "could not create dialer")
134136
}
135137
Dialer = dialer
138+
139+
// override dialer in mysql
140+
mysql.RegisterDialContext("tcp", func(ctx context.Context, addr string) (net.Conn, error) {
141+
return Dialer.Dial(ctx, "tcp", addr)
142+
})
143+
136144
return nil
137145
}
138146

0 commit comments

Comments
 (0)