export function readLinuxCertificates()

in runtimes/runtimes/util/standalone/certificatesReaders.ts [23:74]


export function readLinuxCertificates(): string[] {
    const allFiles = [...UNIX_CERT_FILES]
    const certificates: string[] = []
    let firstError: Error | undefined
    let hasSeenCertificate = false

    // Step 1: Collect all certificate files from directories
    for (const dir of UNIX_CERT_DIRS) {
        try {
            const dirFiles = readdirSync(dir).map(file => path.join(dir, file))
            allFiles.push(...dirFiles)
        } catch (error: any) {
            firstError ??= error
        }
    }

    // Step 2: Extract certificates from all collected files
    for (const file of allFiles) {
        try {
            const content = readFileSync(file, 'utf8')
            const matches = content.match(PEM_CERT_REGEXP)

            // Skip if no certificates found in this file
            if (!matches) continue

            // Track if we've found any valid certificates
            hasSeenCertificate = hasSeenCertificate || matches.length > 0

            // Add trimmed certificates to our collection
            const validCertificates = matches.map(cert => cert.trim())
            certificates.push(...validCertificates)
        } catch (error: any) {
            firstError ??= error
        }
    }

    // Step 3: Handle errors and return results
    if (!hasSeenCertificate && firstError) {
        const errorMessage = 'Error when reading Linux certificates'
        console.log(errorMessage)
        OperationalTelemetryProvider.getTelemetryForScope(TELEMETRY_SCOPES.RUNTIMES).emitEvent({
            errorOrigin: 'caughtError',
            errorName: firstError?.name ?? 'unknown',
            errorType: 'linuxCertificateReader',
            errorMessage: errorMessage,
        })
        console.error(firstError)
        return []
    }

    return certificates
}