aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPuppet Letsencrypt <>2023-01-06 23:13:08 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2023-01-06 23:13:08 +0100
commita6ea72ad11bac841afae5e239e02c86621427b6d (patch)
tree0c38017ef7997fdfe00ac33c8c71909fc6805feb
parentInitial code. (diff)
downloadhugonikanor-letsencrypt-a6ea72ad11bac841afae5e239e02c86621427b6d.tar.gz
hugonikanor-letsencrypt-a6ea72ad11bac841afae5e239e02c86621427b6d.tar.xz
Import other projects fact.
-rw-r--r--lib/facter/letsencrypt_directory.rb33
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