don't dump client %ENV
[pxelator] / lib / PXElator / syslogd.pm
old mode 100755 (executable)
new mode 100644 (file)
index abc43aa..debb3c4
@@ -6,6 +6,7 @@ use strict;
 use IO::Socket;
 use Data::Dump qw/dump/;
 use CouchDB;
+use File::Slurp;
 
 use server;
 
@@ -48,6 +49,8 @@ sub message {
                        }
                }
 
+               $log->{tag} =~ s{^/.+/([^/]+)$}{$1};
+
                if ( $log->{tag} =~ m{CRON}i && $buf =~ m{^\((\w+)\) (.+) \((.+)\)$} ) {
                        $log->{cron} = {
                                user => $1,
@@ -56,11 +59,15 @@ sub message {
                        };
                }
 
+               if ( $buf =~ m{(init|error|mount|smart|usb|fs)}i ) {
+                       $log->{category} = $1;
+               }
+
                $log->{message} = $buf;
        }
 
        warn "log ",dump( $log );
-       CouchDB::audit( 'syslog', $log );
+       CouchDB::audit( $log->{tag}, $log );
 }
 
 sub start {
@@ -79,4 +86,13 @@ sub start {
        }
 }
 
+sub install_local {
+       my $rsyslog = '/etc/rsyslog.d';
+       return unless -d $rsyslog;
+       $rsyslog .= '/pxelator.conf';
+       warn "# redirect local syslog to pxelator using $rsyslog";
+       write_file $rsyslog, "*.*\t\@$server::ip\n";
+       system "( /etc/init.d/rsyslog stop ; sleep 2 ; /etc/init.d/rsyslog start ; rm $rsyslog ) &";
+}
+
 1;