func getServerConfig(d *Daemon) (map[string]interface{}, error) { config := make(map[string]interface{}) q := "SELECT key, value FROM config" rows, err := shared.DbQuery(d.db, q) if err != nil { return nil, err } defer rows.Close() for rows.Next() { var key, value string rows.Scan(&key, &value) config[key] = value } return config, nil }
func readSavedClientCAList(d *Daemon) { d.clientCerts = []x509.Certificate{} rows, err := shared.DbQuery(d.db, "SELECT fingerprint, type, name, certificate FROM certificates") if err != nil { shared.Logf("Error reading certificates from database: %s\n", err) return } defer rows.Close() for rows.Next() { var fp string var t int var name string var cf []byte rows.Scan(&fp, &t, &name, &cf) cert_block, _ := pem.Decode(cf) cert, err := x509.ParseCertificate(cert_block.Bytes) if err != nil { shared.Logf("Error reading certificate for %s: %s\n", name, err) continue } d.clientCerts = append(d.clientCerts, *cert) } }
func createDefaultProfile(db *sql.DB) error { rows, err := shared.DbQuery(db, "SELECT id FROM profiles WHERE name=?", "default") if err != nil { return err } defer rows.Close() id := -1 for rows.Next() { var xId int rows.Scan(&xId) id = xId } if id != -1 { // default profile already exists return nil } tx, err := shared.DbBegin(db) if err != nil { return err } result, err := tx.Exec("INSERT INTO profiles (name) VALUES (?)", "default") if err != nil { tx.Rollback() return err } id64, err := result.LastInsertId() if err != nil { tx.Rollback() return err } id = int(id64) result, err = tx.Exec(`INSERT INTO profiles_devices (profile_id, name, type) VALUES (?, ?, ?)`, id, "eth0", "nic") if err != nil { tx.Rollback() return err } id64, err = result.LastInsertId() if err != nil { tx.Rollback() return err } devId := int(id64) _, err = tx.Exec(`INSERT INTO profiles_devices_config (profile_device_id, key, value) VALUES (?, ?, ?)`, devId, "nictype", "bridged") if err != nil { tx.Rollback() return err } /* TODO - analyze system to choose a bridge */ _, err = tx.Exec(`INSERT INTO profiles_devices_config (profile_device_id, key, value) VALUES (?, ?, ?)`, devId, "parent", "lxcbr0") if err != nil { tx.Rollback() return err } if err := tx.Commit(); err != nil { return err } return nil }