intial import
This commit is contained in:
commit
2e90d32ce2
5 changed files with 264 additions and 0 deletions
72
data.go
Normal file
72
data.go
Normal 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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue