intial import

This commit is contained in:
Thomas Preisner 2018-09-09 21:38:37 +02:00
commit 2e90d32ce2
5 changed files with 264 additions and 0 deletions

72
data.go Normal file
View file

@ -0,0 +1,72 @@
package main
import (
"fmt"
"database/sql"
_ "github.com/lib/pq"
)
//TODO: move into separate config file?
const (
DBHost = "127.0.0.1"
DBPort = 5432
DBUser = "username"
DBPass = "password"
DBName = "database"
)
type userData struct {
nameserver string
zonename string
hostname string
tsigkey string
}
func prepareDatabase() (*sql.DB, error) {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s " +
"sslmode=disable", DBHost, DBPort, DBUser, DBPass,
DBName)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
return nil, err
}
_, err = db.Exec("CREATE TABLE IF NOT EXISTS users " +
"(id SERIAL PRIMARY KEY, username VARCHAR(255) NULL, " +
"password VARCHAR(255) NULL, salt VARCHAR(255) NULL, " +
"nameserver VARCHAR(255) NULL, zone VARCHAR(255) NULL, " +
"hostname VARCHAR(255) NULL, tsig VARCHAR(255) NULL)")
if err != nil {
db.Close()
return nil, err
}
return db, nil
}
func getPasswordForUser(db *sql.DB, username string) (string, bool) {
var password string
row := db.QueryRow("SELECT password FROM users WHERE username=$1", username)
err := row.Scan(&password)
if err != nil {
if err == sql.ErrNoRows {
return "", false
} else {
panic(err)
}
}
return password, true
}
func getDataForUser(db *sql.DB, username string) (userData, error) {
var data userData
row := db.QueryRow("SELECT nameserver, zone, hostname, tsig " +
"FROM users WHERE username=$1", username)
err := row.Scan(&data.nameserver, &data.zonename, &data.hostname,
&data.tsigkey)
if err != nil {
return data, err
}
return data, nil
}