diff options
Diffstat (limited to 'sqlQueries.go')
-rw-r--r-- | sqlQueries.go | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/sqlQueries.go b/sqlQueries.go index 6048b4c..03f87fb 100644 --- a/sqlQueries.go +++ b/sqlQueries.go @@ -11,9 +11,9 @@ const ( TIMEZONE = "UTC" ) -//Retrieves limit rawdata entries that are older than tim +//Retrieves limit Rawdata entries that are older than tim //limit <= 0 returns all entries that are older than tim -func fetchRawData(db *sql.DB, cfg *Config, tim time.Time) (rDat []rawData, err error) { +func fetchRawData(db *sql.DB, cfg *Config, tim time.Time) (rDat []RawData, err error) { var prepSel *sql.Stmt if cfg.Limit > 0 { @@ -56,9 +56,9 @@ func fetchRawData(db *sql.DB, cfg *Config, tim time.Time) (rDat []rawData, err e return } for rows.Next() { - var r rawData + var r RawData var tim []byte - err = rows.Scan(&r.ipSrc, &r.ipDst, &r.asSrc, &r.asDst, &r.portSrc, &r.portDst, &r.packets, &r.pktLenDist, &tim) + err = rows.Scan(&r.IpSrc, &r.IpDst, &r.AsSrc, &r.AsDst, &r.PortSrc, &r.PortDst, &r.Packets, &r.PktLenDist, &tim) if err != nil { log.Println("Failed to scan result of query") return @@ -69,7 +69,7 @@ func fetchRawData(db *sql.DB, cfg *Config, tim time.Time) (rDat []rawData, err e return } - _, err = prepUp.Exec(time.Now(), r.ipSrc, r.ipDst, r.asSrc, r.asDst, r.portSrc, r.portDst, r.packets, r.pktLenDist, r.time) + _, err = prepUp.Exec(time.Now(), r.IpSrc, r.IpDst, r.AsSrc, r.AsDst, r.PortSrc, r.PortDst, r.Packets, r.PktLenDist, r.time) if err != nil { log.Println("Failed to query prepared update") tx.Rollback() @@ -104,15 +104,15 @@ func purgeAllProcessed(db *sql.DB, cfg *Config, tim time.Time) (err error) { return } -//Removes all rawdata that is in rDat from the database -func purgeRawData(tx *sql.Tx, cfg *Config, rDat []rawData) (err error) { +//Removes all Rawdata that is in rDat from the database +func purgeRawData(tx *sql.Tx, cfg *Config, rDat []RawData) (err error) { prepStmt, err := tx.Prepare("DELETE FROM " + cfg.RawTable + " WHERE ip_src = ? AND ip_dst = ? AND as_src = ? AND as_dst = ? AND port_src = ? AND port_dst = ? AND packets = ? AND pkt_len_distrib = ? AND stamp_processed IS NOT NULL LIMIT 1") if err != nil { return } for _, r := range rDat { - _, err = prepStmt.Exec(r.ipSrc, r.ipDst, r.asSrc, r.asDst, r.portSrc, r.portDst, r.packets, r.pktLenDist) + _, err = prepStmt.Exec(r.IpSrc, r.IpDst, r.AsSrc, r.AsDst, r.PortSrc, r.PortDst, r.Packets, r.PktLenDist) if err != nil { return } @@ -135,6 +135,30 @@ func insertCleanData(tx *sql.Tx, cfg *Config, cd []cleanedData) error { } } + return err +} + +func insertCleanDataToDB(cfg *Config, cd []cleanedData) error { + db, err := sql.Open("mysql", cfg.DBUser+":"+cfg.DBPass+"@"+cfg.DBConn+"/"+cfg.DBName) + if err != nil { + log.Println("Failed to connect to db") + return err + } + defer db.Close() + + prepStmt, err := db.Prepare("INSERT INTO " + cfg.CleanTable + " (ipb_src, ipb_dst, as_src, as_dst, port_src, port_dst, occurences, volume, time_added) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? ) ON DUPLICATE KEY UPDATE occurences = occurences + ?") + if err != nil { + log.Println("Failed to prepare statement") + return err + } + + for ix := range cd { + _, err = prepStmt.Exec(cd[ix].ipbSrc, cd[ix].ipbDst, cd[ix].asSrc, cd[ix].asDst, cd[ix].portSrc, cd[ix].portDst, cd[ix].occurences, cd[ix].volume, cd[ix].time, cd[ix].occurences) + if err != nil { + log.Println("Failed to execute statement") + return err + } + } return nil } |