MCPcopy
hub / github.com/caddyserver/caddy / openDatabase

Method openDatabase

modules/caddypki/acmeserver/acmeserver.go:277–303  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

275}
276
277func (ash Handler) openDatabase() (*db.AuthDB, error) {
278 key := ash.getDatabaseKey()
279 database, loaded, err := databasePool.LoadOrNew(key, func() (caddy.Destructor, error) {
280 dbFolder := filepath.Join(caddy.AppDataDir(), "acme_server", key)
281 dbPath := filepath.Join(dbFolder, "db")
282
283 err := os.MkdirAll(dbFolder, 0o755)
284 if err != nil {
285 return nil, fmt.Errorf("making folder for CA database: %v", err)
286 }
287
288 dbConfig := &db.Config{
289 Type: "bbolt",
290 DataSource: dbPath,
291 }
292 database, err := db.New(dbConfig)
293 return databaseCloser{&database}, err
294 })
295
296 if loaded {
297 if c := ash.logger.Check(zapcore.DebugLevel, "loaded preexisting CA database"); c != nil {
298 c.Write(zap.String("db_key", key))
299 }
300 }
301
302 return database.(databaseCloser).DB, err
303}
304
305// makeClient creates an ACME client which will use a custom
306// resolver instead of net.DefaultResolver.

Callers 1

ProvisionMethod · 0.95

Calls 5

getDatabaseKeyMethod · 0.95
LoadOrNewMethod · 0.80
CheckMethod · 0.45
WriteMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected