(dataSource *storepb.DataSource, migrationContext *ghostbase.MigrationContext)
| 444 | } |
| 445 | |
| 446 | func 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() |
no test coverage detected