MCPcopy Create free account
hub / github.com/bytebase/bytebase / writeTLSMaterialTempFiles

Function writeTLSMaterialTempFiles

backend/component/ghost/config.go:446–518  ·  view source on GitHub ↗
(dataSource *storepb.DataSource, migrationContext *ghostbase.MigrationContext)

Source from the content-addressed store, hash-verified

444}
445
446func writeTLSMaterialTempFiles(dataSource *storepb.DataSource, migrationContext *ghostbase.MigrationContext) (func(), error) {
447 var cleanupFiles []string
448 cleanup := func() {
449 for _, fileName := range cleanupFiles {
450 _ = os.Remove(fileName)
451 }
452 }
453
454 if dataSource.GetSslCa() != "" {
455 caFile, err := os.CreateTemp(os.TempDir(), "gh-ost-tls-ca-*")
456 if err != nil {
457 return nil, errors.Wrap(err, "failed to create temporary CA file")
458 }
459 if _, err := caFile.WriteString(dataSource.GetSslCa()); err != nil {
460 _ = caFile.Close()
461 _ = os.Remove(caFile.Name())
462 return nil, errors.Wrap(err, "failed to write temporary CA file")
463 }
464 if err := caFile.Close(); err != nil {
465 _ = os.Remove(caFile.Name())
466 return nil, errors.Wrap(err, "failed to close temporary CA file")
467 }
468 cleanupFiles = append(cleanupFiles, caFile.Name())
469 migrationContext.TLSCACertificate = caFile.Name()
470 }
471
472 if dataSource.GetSslCert() != "" || dataSource.GetSslKey() != "" {
473 if dataSource.GetSslCert() == "" || dataSource.GetSslKey() == "" {
474 cleanup()
475 return nil, errors.Errorf("ssl-cert and ssl-key must be both set or unset")
476 }
477
478 certFile, err := os.CreateTemp(os.TempDir(), "gh-ost-tls-cert-*")
479 if err != nil {
480 cleanup()
481 return nil, errors.Wrap(err, "failed to create temporary client certificate file")
482 }
483 if _, err := certFile.WriteString(dataSource.GetSslCert()); err != nil {
484 _ = certFile.Close()
485 _ = os.Remove(certFile.Name())
486 cleanup()
487 return nil, errors.Wrap(err, "failed to write temporary client certificate file")
488 }
489 if err := certFile.Close(); err != nil {
490 _ = os.Remove(certFile.Name())
491 cleanup()
492 return nil, errors.Wrap(err, "failed to close temporary client certificate file")
493 }
494 cleanupFiles = append(cleanupFiles, certFile.Name())
495 migrationContext.TLSCertificate = certFile.Name()
496
497 keyFile, err := os.CreateTemp(os.TempDir(), "gh-ost-tls-key-*")
498 if err != nil {
499 cleanup()
500 return nil, errors.Wrap(err, "failed to create temporary client key file")
501 }
502 if _, err := keyFile.WriteString(dataSource.GetSslKey()); err != nil {
503 _ = keyFile.Close()

Callers 1

NewMigrationContextFunction · 0.85

Calls 7

ErrorfMethod · 0.80
CloseMethod · 0.65
NameMethod · 0.65
cleanupFunction · 0.50
GetSslCaMethod · 0.45
GetSslCertMethod · 0.45
GetSslKeyMethod · 0.45

Tested by

no test coverage detected