From dee5a19d36554a8f9a365efd65d13b134889bf63 Mon Sep 17 00:00:00 2001 From: Niall Sheridan Date: Sun, 19 Jun 2016 23:44:25 +0100 Subject: first pass at a certificate store --- cmd/dbinit/dbinit.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 cmd/dbinit/dbinit.go (limited to 'cmd/dbinit') diff --git a/cmd/dbinit/dbinit.go b/cmd/dbinit/dbinit.go new file mode 100644 index 0000000..4431ced --- /dev/null +++ b/cmd/dbinit/dbinit.go @@ -0,0 +1,61 @@ +package main + +import ( + "database/sql" + "flag" + "fmt" + "log" + "strings" + + "github.com/go-sql-driver/mysql" +) + +var ( + host = flag.String("host", "localhost", "host[:port]") + adminUser = flag.String("admin_user", "root", "Admin user") + adminPasswd = flag.String("admin_password", "", "Admin password") + dbUser = flag.String("db_user", "root", "Database user") + dbPasswd = flag.String("db_password", "", "Admin password") +) + +func main() { + flag.Parse() + var createTableStmt = []string{ + `CREATE DATABASE IF NOT EXISTS certs DEFAULT CHARACTER SET = 'utf8' DEFAULT COLLATE 'utf8_general_ci';`, + `USE certs;`, + `CREATE TABLE IF NOT EXISTS issued_certs ( + key_id VARCHAR(255) NOT NULL, + principals VARCHAR(255) NULL, + created_at INT(11) NULL, + expires_at INT(11) NULL, + revoked BOOLEAN DEFAULT NULL, + raw_key TEXT NULL, + PRIMARY KEY (key_id) + );`, + `GRANT ALL PRIVILEGES ON certs.* TO '` + *dbUser + `'@'%' IDENTIFIED BY '` + *dbPasswd + `';`, + } + + if len(strings.Split(*host, ":")) != 2 { + *host = fmt.Sprintf("%s:3306", *host) + } + conn := &mysql.Config{ + User: *adminUser, + Passwd: *adminPasswd, + Net: "tcp", + Addr: *host, + } + db, err := sql.Open("mysql", conn.FormatDSN()) + if err != nil { + log.Fatalf("Error connecting to database: %v", err) + } + defer db.Close() + if err := db.Ping(); err != nil { + log.Fatalf("Unable to connect to database.") + } + for _, stmt := range createTableStmt { + _, err := db.Exec(stmt) + if err != nil { + log.Fatalf("Error running setup: %v", err) + } + } +} -- cgit v1.2.3