diff options
author | Puppet Letsencrypt <> | 2023-01-06 23:13:08 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-01-06 23:13:08 +0100 |
commit | a6ea72ad11bac841afae5e239e02c86621427b6d (patch) | |
tree | 0c38017ef7997fdfe00ac33c8c71909fc6805feb /lib/facter | |
parent | Initial code. (diff) | |
download | hugonikanor-letsencrypt-a6ea72ad11bac841afae5e239e02c86621427b6d.tar.gz hugonikanor-letsencrypt-a6ea72ad11bac841afae5e239e02c86621427b6d.tar.xz |
Import other projects fact.
Diffstat (limited to 'lib/facter')
-rw-r--r-- | lib/facter/letsencrypt_directory.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/facter/letsencrypt_directory.rb b/lib/facter/letsencrypt_directory.rb new file mode 100644 index 0000000..d21bb1c --- /dev/null +++ b/lib/facter/letsencrypt_directory.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +# Borrowed from puppet-letsencrypt + +require 'openssl' +require 'pathname' + +Facter.add(:letsencrypt_directory) do + confine kernel: %w[FreeBSD Linux OpenBSD] + + setcode do + certs = {} + + # locate the certificate repository + livedir = ['/etc/letsencrypt/live', '/etc/certbot/live']. + map { |path| Pathname.new path }. + find(&:directory?) + + unless livedir.nil? + Pathname.new(livedir).children.select(&:directory?).each do |path| + pem = File.join(path, 'cert.pem') + cert = OpenSSL::X509::Certificate.new(File.new(pem).read) + san = cert.extensions.find { |e| e.oid == 'subjectAltName' } + names = san.value.split(',').map { |entry| entry.split(':')[1] } + names.each do |n| + certs[n] = path.to_s + end + end + end + + certs + end +end |