Skip to content

Commit c891d6f

Browse files
committed
removing interface
1 parent 4621ca6 commit c891d6f

File tree

4 files changed

+30
-18
lines changed

4 files changed

+30
-18
lines changed

database.go

+17-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"log"
77
"os"
88

9+
"github.com/go-mysql-org/go-mysql/client"
910
_ "github.com/go-sql-driver/mysql"
1011
)
1112

@@ -42,8 +43,18 @@ func InitOverseerConnection() *sql.DB {
4243
return InitializeDatabase(user, pass, host, port, dbName)
4344
}
4445

45-
func InitLocalDatabase() *sql.DB {
46-
return InitializeDatabase("root", "root", "localhost", "3306", "IMPOSTER")
46+
func InitLocalDatabase() *client.Conn {
47+
c, err := client.Connect("localhost:3306", "root", "root", "IMPOSTER")
48+
if err != nil {
49+
fmt.Println("Error while connecting to database")
50+
panic(err)
51+
}
52+
err = c.Ping()
53+
if err != nil {
54+
fmt.Println("Error while pinging database")
55+
panic(err)
56+
}
57+
return c
4758

4859
}
4960
func QueryFor(db *sql.DB, query string) []string {
@@ -78,19 +89,19 @@ func QueryForTwoColumns(db *sql.DB, query string) [][2]string {
7889
}
7990
return props
8091
}
81-
func Populate(db *sql.DB, query string, inserts []string) {
82-
_, err := db.Exec("USE IMPOSTER")
92+
func Populate(db *client.Conn, query string, inserts []string) {
93+
_, err := db.Execute("USE IMPOSTER")
8394
if err != nil {
8495
fmt.Println("Error while connecting to database")
8596
panic(err)
8697
}
87-
_, err = db.Exec(query)
98+
_, err = db.Execute(query)
8899
if err != nil {
89100
fmt.Println("Error while connecting to database")
90101
panic(err)
91102
}
92103
for _, ins := range inserts {
93-
_, err = db.Exec(ins)
104+
_, err = db.Execute(ins)
94105
if err != nil {
95106
fmt.Println("Error while connecting to database")
96107
panic(err)

main.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package main
22

33
import (
4-
"database/sql"
54
"fmt"
65
"log"
76
"net"
87
"strings"
8+
9+
"github.com/go-mysql-org/go-mysql/client"
910
)
1011

1112
var ()
@@ -15,7 +16,7 @@ type selection struct {
1516
table []string
1617
}
1718

18-
func handleConn(c net.Conn, tableName string, db *sql.DB) {
19+
func handleConn(c net.Conn, tableName string, db *client.Conn) {
1920
p := InitializeProxy(c, tableName, db)
2021

2122
log.Printf("new connection: %s\n", c.RemoteAddr())
@@ -56,10 +57,10 @@ func main() {
5657
for _, v := range inserts {
5758
log.Println(v)
5859
}
59-
var memdb *sql.DB = InitLocalDatabase()
60-
defer memdb.Close()
60+
var localDb *client.Conn = InitLocalDatabase()
61+
defer localDb.Close()
6162
log.Println("Database provider init")
62-
Populate(memdb, createCommand, inserts)
63+
Populate(localDb, createCommand, inserts)
6364

6465
// start proxying
6566
socket, err := net.Listen("tcp", "127.0.0.1:3307")
@@ -73,7 +74,7 @@ func main() {
7374
if err != nil {
7475
log.Fatalf("failed to accept connection: %s", err.Error())
7576
}
76-
go handleConn(originSocket, s.table[0], memdb)
77+
go handleConn(originSocket, s.table[0], localDb)
7778
}
7879

7980
}

proxy.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package main
22

33
import (
4-
"database/sql"
54
"fmt"
65
"log"
76
"net"
@@ -14,11 +13,11 @@ import (
1413
type Proxy struct {
1514
server *server.Conn // proxy server-side -- from client to server
1615
client *client.Conn // proxy server0side 00 from server to real db
17-
spoof *sql.DB
16+
spoof *client.Conn
1817
spoofed string
1918
}
2019

21-
func InitializeProxy(c net.Conn, tableName string, db *sql.DB) *Proxy {
20+
func InitializeProxy(c net.Conn, tableName string, db *client.Conn) *Proxy {
2221
p := &Proxy{}
2322
_client, err := client.Connect(fmt.Sprintf("%s:%d", host, 3306), user, pass, "")
2423
if err != nil {

remote-handler.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package main
22

33
import (
4-
"database/sql"
54
"fmt"
65
"log"
76
"strings"
@@ -12,11 +11,11 @@ import (
1211

1312
type ProxyRequestHandler struct {
1413
remoteDb *client.Conn
15-
spoof *sql.DB
14+
spoof *client.Conn
1615
spoofed string
1716
}
1817

19-
func NewRemoteHandler(c *client.Conn, t string, db *sql.DB) ProxyRequestHandler {
18+
func NewRemoteHandler(c *client.Conn, t string, db *client.Conn) ProxyRequestHandler {
2019
return ProxyRequestHandler{remoteDb: c, spoofed: t, spoof: db}
2120
}
2221

@@ -38,6 +37,8 @@ func (h ProxyRequestHandler) HandleQuery(query string) (*mysql.Result, error) {
3837
return nil, nil
3938
}
4039
if strings.Contains(query, h.spoofed) {
40+
r, err := h.spoof.Execute(query)
41+
return r, err
4142
}
4243
res, err := h.remoteDb.Execute(query)
4344

0 commit comments

Comments
 (0)