summaryrefslogtreecommitdiffstats
path: root/lib/puppet/server/logger.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/server/logger.rb')
-rwxr-xr-xlib/puppet/server/logger.rb48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/puppet/server/logger.rb b/lib/puppet/server/logger.rb
new file mode 100755
index 000000000..7afad92b9
--- /dev/null
+++ b/lib/puppet/server/logger.rb
@@ -0,0 +1,48 @@
+module Puppet
+class Server # :nodoc:
+ class LoggerError < RuntimeError; end
+
+ # Receive logs from remote hosts.
+ class Logger < Handler
+ @interface = XMLRPC::Service::Interface.new("puppetlogger") { |iface|
+ iface.add_method("void addlog(string)")
+ }
+
+ # accept a log message from a client, and route it accordingly
+ def addlog(message, client = nil, clientip = nil)
+ # if the client is set, then we're not local
+ if client
+ begin
+ message = Marshal::load(CGI.unescape(message))
+ #message = message
+ rescue => detail
+ raise XMLRPC::FaultException.new(
+ 1, "Could not unMarshal log message from %s" % client
+ )
+ end
+ end
+
+ # Mark it as remote, so it's not sent to syslog
+ message.remote = true
+
+ if client
+ if ! message.source or message.source == "Puppet"
+ #unless message.source or message.source != "Puppet"
+ message.source = client
+ else
+ puts message.source.inspect
+ end
+ else
+ puts "No client"
+ end
+
+ Puppet::Log.newmessage(message)
+
+ # This is necessary or XMLRPC gets all pukey
+ return ""
+ end
+ end
+end
+end
+
+# $Id$