From 4e949912d6ba395c7574767b52acd06a6026d58f Mon Sep 17 00:00:00 2001 From: db1234719 Date: Mon, 4 May 2026 08:11:16 +0330 Subject: [PATCH] feat: added the sqlite logging main logic added sqlite logic which is being used across the files to log whitelist requests --- sqlite_logger.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sqlite_logger.go diff --git a/sqlite_logger.go b/sqlite_logger.go new file mode 100644 index 0000000..48db20b --- /dev/null +++ b/sqlite_logger.go @@ -0,0 +1,44 @@ +package main + +import ( + "database/sql" + "log/slog" + "time" + + _ "modernc.org/sqlite" +) + +func initDB(dbPath string) (*sql.DB, error) { + db, err := sql.Open("sqlite", dbPath) + if err != nil { + return nil, err + } + query := ` + CREATE TABLE IF NOT EXISTS whitelist_audit ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + timestamp DATETIME NOT NULL, + action TEXT NOT NULL, + ip TEXT NOT NULL, + ttl_seconds INTEGER DEFAULT 0, + reason TEXT, + api_user TEXT + ); + CREATE INDEX IF NOT EXISTS idx_timestamp ON whitelist_audit(timestamp); + ` + _, err = db.Exec(query) + if err != nil { + return nil, err + } + return db, nil +} + +func logWhitelistEvent(db *sql.DB, action, ip string, ttl int, reason, apiUser string) { + _, err := db.Exec( + `INSERT INTO whitelist_audit(timestamp, action, ip, ttl_seconds, reason, api_user) + VALUES(?, ?, ?, ?, ?, ?)`, + time.Now(), action, ip, ttl, reason, apiUser, + ) + if err != nil { + slog.Error("failed to log whitelist event", "error", err) + } +} \ No newline at end of file