diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-02-08 01:39:39 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-02-08 01:39:39 +0000 |
| commit | 7e07e3dc843798bdbc7a03428ca054adaff2fb72 (patch) | |
| tree | 34d0f9f8c2ee11bdc281e6e4d18cad444253fe36 /lib/puppet/network/server/logger.rb | |
| parent | 6d8068eddd0d29ec53f62557eb53f6ebb8e40591 (diff) | |
| download | puppet-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-x | lib/puppet/network/server/logger.rb | 52 |
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$ |
