moved from mysql to sqlite for the agents database
This commit is contained in:
parent
43847559ac
commit
ca7da7fc62
9
main.go
9
main.go
|
@ -70,6 +70,9 @@ func init() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Agents database
|
||||||
|
db = database.InitSQLiteDB("/tmp/gontrol_agents.db")
|
||||||
}
|
}
|
||||||
|
|
||||||
func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) {
|
func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) {
|
||||||
|
@ -289,6 +292,8 @@ func main() {
|
||||||
// sqlite3 has been initialized in init()
|
// sqlite3 has been initialized in init()
|
||||||
defer logger.CloseDB()
|
defer logger.CloseDB()
|
||||||
|
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
var cfg Config
|
var cfg Config
|
||||||
readEnv(&cfg)
|
readEnv(&cfg)
|
||||||
|
|
||||||
|
@ -310,8 +315,8 @@ func main() {
|
||||||
webMux.Handle("/static/", http.FileServer(http.FS(staticFiles)))
|
webMux.Handle("/static/", http.FileServer(http.FS(staticFiles)))
|
||||||
webMux.HandleFunc("/proxyAgent", proxyAgentHandler)
|
webMux.HandleFunc("/proxyAgent", proxyAgentHandler)
|
||||||
|
|
||||||
db = database.InitDB (cfg.Database.Username, cfg.Database.Password, cfg.Database.Host, cfg.Database.Port, cfg.Database.Name)
|
// db := database.InitDB (cfg.Database.Username, cfg.Database.Password, cfg.Database.Host, cfg.Database.Port, cfg.Database.Name)
|
||||||
defer db.Close()
|
// defer db.Close()
|
||||||
|
|
||||||
name := randomname.GenerateRandomName()
|
name := randomname.GenerateRandomName()
|
||||||
fmt.Sprintf("Server instance: %s", name)
|
fmt.Sprintf("Server instance: %s", name)
|
||||||
|
|
|
@ -55,7 +55,8 @@ func CreateAgent(db *sql.DB, w http.ResponseWriter, r * http.Request) (http.Resp
|
||||||
// initalContact := r.FormValue("initialContact")
|
// initalContact := r.FormValue("initialContact")
|
||||||
// lastContact := r.FormValue("lastContact")
|
// lastContact := r.FormValue("lastContact")
|
||||||
|
|
||||||
query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact) VALUES (?, ?, ?, ?, ?, NOW(), NOW())"
|
// query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact) VALUES (?, ?, ?, ?, ?, NOW(), NOW())"
|
||||||
|
query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)"
|
||||||
_, err = db.Exec(query, agentId, agentName, agentType, IPv4Address, addPort)
|
_, err = db.Exec(query, agentId, agentName, agentType, IPv4Address, addPort)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Database err is: %s", err)
|
log.Printf("Database err is: %s", err)
|
||||||
|
|
|
@ -1,26 +1,76 @@
|
||||||
package database
|
package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
// "fmt"
|
||||||
"log"
|
"log"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
Agent_db *sql.DB
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func InitDB (dbUser string, dbPassword string, dbHost string, dbPort int16, dbName string ) *sql.DB {
|
/* This is the connection initializer for mysql */
|
||||||
var db *sql.DB
|
// func InitDB (dbUser string, dbPassword string, dbHost string, dbPort int16, dbName string ) *sql.DB {
|
||||||
|
// var db *sql.DB
|
||||||
|
// var err error
|
||||||
|
// dbOpen := fmt.Sprintf("%s:%s@(%s:%d)/%s?parseTime=true", dbUser,dbPassword, dbHost, dbPort, dbName)
|
||||||
|
// db, err = sql.Open("mysql", dbOpen)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if err = db.Ping(); err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
// log.Println("Connected to database")
|
||||||
|
|
||||||
|
// return db
|
||||||
|
// }
|
||||||
|
|
||||||
|
func InitSQLiteDB(dbPath string) *sql.DB {
|
||||||
var err error
|
var err error
|
||||||
dbOpen := fmt.Sprintf("%s:%s@(%s:%d)/%s?parseTime=true", dbUser,dbPassword, dbHost, dbPort, dbName)
|
Agent_db, err = sql.Open("sqlite3", dbPath)
|
||||||
db, err = sql.Open("mysql", dbOpen)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Println("Error opening DB: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = db.Ping(); err != nil {
|
// CreateTableQuery := `CREATE TABLE IF NOT EXISTS logs (
|
||||||
log.Fatal(err)
|
// id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
}
|
// message TEXT,
|
||||||
log.Println("Connected to database")
|
// timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
// level TEXT
|
||||||
|
// );`
|
||||||
|
|
||||||
return db
|
// id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
|
||||||
|
CreateTableQuery :=`CREATE TABLE IF NOT EXISTS agents (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
agentId INTEGER UNIQUE,
|
||||||
|
agentType TEXT,
|
||||||
|
agentName TEXT,
|
||||||
|
IPv4Address TEXT,
|
||||||
|
initialContact datetime,
|
||||||
|
lastContact datetime,
|
||||||
|
addPort TEXT
|
||||||
|
);`
|
||||||
|
|
||||||
|
_, err = Agent_db.Exec(CreateTableQuery)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error creating table: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Agent_db
|
||||||
|
}
|
||||||
|
|
||||||
|
func CloseDB() {
|
||||||
|
if Agent_db != nil {
|
||||||
|
err := Agent_db.Close()
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error closing database: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue