summaryrefslogtreecommitdiff
path: root/sqlQueries.go
diff options
context:
space:
mode:
Diffstat (limited to 'sqlQueries.go')
-rw-r--r--sqlQueries.go40
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
}