diff options
-rw-r--r-- | mysql.go | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/mysql.go b/mysql.go new file mode 100644 index 0000000..d8dc39a --- /dev/null +++ b/mysql.go @@ -0,0 +1,77 @@ +package main + +import ( + "database/sql" + "fmt" + _ "github.com/go-sql-driver/mysql" + "time" +) + +const ( + DATABASE_USER = "root" + DATABASE_PASS = "pass" + DATABASE_CONNECTION = "" //e.g. "tcp(localhost:55555) + DATABASE_NAME = "netflow" +) + +func main() { + + db, err := sql.Open("mysql", DATABASE_USER+":"+DATABASE_PASS+"@/"+DATABASE_NAME) + if err != nil { + panic(err) + } + defer db.Close() + +} + +func insertCleanData(db *slq.DB, ipbSrc, ipbDst, volume string, time time.Time, port, occurences int) error { + prepStmt, err := db.Prepare("INSERT INTO clean_data (ipb_src, ipb_dst, time, port, volume, occurenaces) VALUES ( ? , ? , ? , ? , ? , ? , ?) ON DUPLICATE KEY UPDATE occurences = occurences + ?") + if err != nil { + return err + } + + _, err := prepStmt.Execute(ipbSrc, ipb_dst, time, port, volume, occurences, occurences) + if err != nil { + return err + } +} + +func insertASNIP(db *sql.DB, asn int, ipBlock string) error { + prepCheck, err := db.Prepare("SELECT asn FROM asnip WHERE ip_block = ?") + if err != nil { + return err + } + defer prepCheck.Close() + + rows, err := prepCheck.Exec(ipBlock) + if err != nil { + return err + } + if rows != nil { + return + } + + prepIns, err := db.Prepare("INSERT INTO asnip VALUES ( ? , ? )") + if err != nil { + return err + } + defer prepIns.Close() + + _, err = prepIns.Exec(asn, ipBlock) + if err != nil { + return err + } +} + +func removeASNIP(db *sql.DB, asn int, ipBlock string) error { + prepStmt, err := db.Prepare("DELETE FROM anip WHERE asn = ? AND ip_block = ?") + if err != nil { + return err + } + defer prepStmt.Close() + + _, err = prepStmt.Exec(asn, ipBlock) + if err != nil { + return err + } +} |