diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/facter/monkeysphere.rb | 42 | ||||
-rw-r--r-- | lib/puppet/provider/identify_certifier/monkeysphere.rb | 57 | ||||
-rw-r--r-- | lib/puppet/type/identity_certifier.rb | 10 |
3 files changed, 109 insertions, 0 deletions
diff --git a/lib/facter/monkeysphere.rb b/lib/facter/monkeysphere.rb new file mode 100644 index 0000000..1d7d68e --- /dev/null +++ b/lib/facter/monkeysphere.rb @@ -0,0 +1,42 @@ +has_hostkey = false +pgp_fingerprint = ' ' +pgp_id = ' ' +ssh_fingerprint = ' ' + +if File.exist?('/usr/sbin/monkeysphere-host') + + sk = %x{/usr/sbin/monkeysphere-host show-keys} + if $? == 0 + has_hostkey = true + sk.lines.each do |line| + m = line.match('^OpenPGP fingerprint:(.*)$') + if m + pgp_fingerprint = m[1].strip + end + m = line.match('^uid (.*)$') + if m + pgp_id = m[1].strip + end + m = line.match('^ssh fingerprint:(.*)$') + if m + ssh_fingerprint = m[1].strip + end + end + end +end + +Facter.add("monkeysphere_has_hostkey") do + setcode{ has_hostkey } +end + +Facter.add("monkeysphere_pgp_fp") do + setcode{ pgp_fingerprint } +end + +Facter.add("monkeysphere_pgp_id") do + setcode{ pgp_id } +end + +Facter.add("monkeysphere_ssh_fp") do + setcode{ ssh_fingerprint } +end diff --git a/lib/puppet/provider/identify_certifier/monkeysphere.rb b/lib/puppet/provider/identify_certifier/monkeysphere.rb new file mode 100644 index 0000000..49ea6e6 --- /dev/null +++ b/lib/puppet/provider/identify_certifier/monkeysphere.rb @@ -0,0 +1,57 @@ +## + + +require 'puppet/provider/package' +require "open3" + +Puppet::Type.type(:identity_certifier).provide(:monkeysphere, + :parent => Puppet::Provider::Package) do + + commands :monkeysphereauth => "/usr/sbin/monkeysphere-authentication" + + desc "asdf" + + # retrieve the current set of mysql users + def self.instances + ids = [] + + cmd = "#{command(:monkeysphereauth)} list-id-certifiers" + execpipe(cmd) do |process| + process.each do |line| + m = line.match( "^[0-9A-Z]{32}([0-9A-Z]{8}):" ) + if m + ids << new( { :ensure => :present, :pgpid => m.group(1) } ) + end + end + end + return ids + end + + def create + Open3.popen3("monkeysphere-authentication add-id-certifier #{resource[:pgpid]}") do |i, o, e| + i.puts( "Y" ) + o.readlines() + end + end + + def destroy + Open3.popen3("monkeysphere-authentication remove-id-certifier #{resource[:pgpid]}") do |i, o, e| + i.puts( "Y" ) + o.readlines() + end + end + + def exists? + + cil = %x{/usr/sbin/monkeysphere-authentication list-id-certifiers} + if $? == 0 + cil.lines.each do |line| + m = line.match( '^[0-9A-Z]*' + resource[:pgpid] + ':' ) + if m + return true + end + end + end + return false + end +end diff --git a/lib/puppet/type/identity_certifier.rb b/lib/puppet/type/identity_certifier.rb new file mode 100644 index 0000000..cc8295f --- /dev/null +++ b/lib/puppet/type/identity_certifier.rb @@ -0,0 +1,10 @@ +Puppet::Type.newtype(:identity_certifier) do + @doc = "Manage monkeysphere identity-certifiers" + + ensurable + newparam(:pgpid) do + desc "The pgp id of the certifier" + isnamevar + end + +end |