summaryrefslogtreecommitdiffstats
path: root/lib/puppet/network/server/logger.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-08 01:39:39 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-08 01:39:39 +0000
commit7e07e3dc843798bdbc7a03428ca054adaff2fb72 (patch)
tree34d0f9f8c2ee11bdc281e6e4d18cad444253fe36 /lib/puppet/network/server/logger.rb
parent6d8068eddd0d29ec53f62557eb53f6ebb8e40591 (diff)
downloadpuppet-7e07e3dc843798bdbc7a03428ca054adaff2fb72.tar.gz
puppet-7e07e3dc843798bdbc7a03428ca054adaff2fb72.tar.xz
puppet-7e07e3dc843798bdbc7a03428ca054adaff2fb72.zip
Moving all of the client and server code into a single network/ directory. In other words, more code structure cleanup.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2179 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/network/server/logger.rb')
-rwxr-xr-xlib/puppet/network/server/logger.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/puppet/network/server/logger.rb b/lib/puppet/network/server/logger.rb
new file mode 100755
index 000000000..f6bf9ba88
--- /dev/null
+++ b/lib/puppet/network/server/logger.rb
@@ -0,0 +1,52 @@
+require 'yaml'
+
+class Puppet::Network::Server
+ 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)
+ unless message
+ raise Puppet::DevError, "Did not receive message"
+ end
+
+ Puppet.info message.inspect
+ # if the client is set, then we're not local
+ if client
+ begin
+ message = YAML.load(CGI.unescape(message))
+ #message = message
+ rescue => detail
+ raise XMLRPC::FaultException.new(
+ 1, "Could not unYAML log message from %s" % client
+ )
+ end
+ end
+
+ unless message
+ raise Puppet::DevError, "Could not resurrect message"
+ end
+
+ # Mark it as remote, so it's not sent to syslog
+ message.remote = true
+
+ if client
+ if ! message.source or message.source == "Puppet"
+ message.source = client
+ end
+ end
+
+ Puppet::Util::Log.newmessage(message)
+
+ # This is necessary or XMLRPC gets all pukey
+ return ""
+ end
+ end
+end
+
+# $Id$