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 {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Agents database
 | 
			
		||||
	db = database.InitSQLiteDB("/tmp/gontrol_agents.db")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) {
 | 
			
		||||
| 
						 | 
				
			
			@ -289,6 +292,8 @@ func main() {
 | 
			
		|||
	// sqlite3 has been initialized in init()
 | 
			
		||||
	defer logger.CloseDB()
 | 
			
		||||
 | 
			
		||||
	defer db.Close()
 | 
			
		||||
 | 
			
		||||
	var cfg Config
 | 
			
		||||
	readEnv(&cfg)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -310,8 +315,8 @@ func main() {
 | 
			
		|||
    webMux.Handle("/static/", http.FileServer(http.FS(staticFiles)))
 | 
			
		||||
	webMux.HandleFunc("/proxyAgent", proxyAgentHandler)
 | 
			
		||||
 | 
			
		||||
	db = database.InitDB (cfg.Database.Username, cfg.Database.Password, cfg.Database.Host, cfg.Database.Port, cfg.Database.Name)
 | 
			
		||||
	defer db.Close()
 | 
			
		||||
	// db := database.InitDB (cfg.Database.Username, cfg.Database.Password, cfg.Database.Host, cfg.Database.Port, cfg.Database.Name)
 | 
			
		||||
	// defer db.Close()
 | 
			
		||||
 | 
			
		||||
	name := randomname.GenerateRandomName()
 | 
			
		||||
	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")
 | 
			
		||||
	// 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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Printf("Database err is: %s", err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,26 +1,76 @@
 | 
			
		|||
package database
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	// "fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"database/sql"
 | 
			
		||||
	_ "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 {
 | 
			
		||||
	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)
 | 
			
		||||
/* This is the connection initializer for mysql */
 | 
			
		||||
// 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
 | 
			
		||||
	Agent_db, err = sql.Open("sqlite3", dbPath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	 	log.Println("Error opening DB: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err = db.Ping(); err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	log.Println("Connected to database")
 | 
			
		||||
	// CreateTableQuery := `CREATE TABLE IF NOT EXISTS logs (
 | 
			
		||||
	// 	id INTEGER PRIMARY KEY AUTOINCREMENT,
 | 
			
		||||
	// 	message TEXT,
 | 
			
		||||
	// 	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