onion classes updates from tor: support direct onion services also
authorPeter Palfrader <peter@palfrader.org>
Sat, 30 Jul 2016 17:46:16 +0000 (19:46 +0200)
committerPeter Palfrader <peter@palfrader.org>
Sat, 30 Jul 2016 17:46:16 +0000 (19:46 +0200)
modules/onion/manifests/balance.pp
modules/onion/manifests/service.pp
modules/puppetmaster/lib/puppet/parser/functions/onion_global_service_hostname.rb

index 4019e26..06ada88 100644 (file)
@@ -32,7 +32,7 @@ class onion::balance {
 
        @@concat::fragment { "onion::balance::onionbalance-services.yaml":
                target  => "/srv/puppet.debian.org/puppet-facts/onionbalance-services.yaml",
-               content => $onion_balance_service_hostname,
+               content => "${onion_balance_service_hostname}\n",
                tag     => "onionbalance-services.yaml",
        }
 }
index c8ea548..c7f08dd 100644 (file)
@@ -2,7 +2,8 @@ define onion::service (
        $port,
        $target_address,
        $target_port,
-       $ensure = present
+       $ensure = present,
+       $direct = false
 ) {
        if ($ensure == "ifstatic") {
                $my_ensure = has_static_component($name) ? {
@@ -31,6 +32,14 @@ define onion::service (
                                order   => "50-${name}-20",
                                tag     => "onion::balance::$name",
                        }
+
+                       if ($direct) {
+                               @@concat::fragment { "onion::balance::onionbalance-services.yaml::${name}":
+                                       target  => "/srv/puppet.torproject.org/puppet-facts/onionbalance-services.yaml",
+                                       content => "{\"${name}\": \"${onion_hn}\"}\n",
+                                       tag     => "onionbalance-services.yaml",
+                               }
+                       }
                }
        }
 }
index dce7740..41e160d 100644 (file)
@@ -14,7 +14,10 @@ module Puppet::Parser::Functions
     facts = IO.read(fn)
 
     require 'json'
-    parsed = JSON.parse(facts)
+    parsed = {}
+    facts.each_line do |l|
+      p.update(JSON.parse(l))
+    end
     return parsed[servicename]
   end
 end