43 lines
925 B
Go
43 lines
925 B
Go
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
|
|
);
|
|
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)
|
|
VALUES(?, ?, ?, ?, ?)`,
|
|
time.Now(), action, ip, ttl, reason,
|
|
)
|
|
if err != nil {
|
|
slog.Error("failed to log whitelist event", "error", err)
|
|
}
|
|
} |