52 lines
1.1 KiB
Perl
Executable File
52 lines
1.1 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
use strict;
|
|
use warnings;
|
|
use diagnostics;
|
|
use sigtrap qw/handler signal_handler normal-signals/;
|
|
use Tie::Syslog;
|
|
use My::Savepid qw(savepid);
|
|
use My::parser::parser;
|
|
use Glib;
|
|
|
|
my $config_file = '/usr/local/etc/parserfilter.conf';
|
|
my $pidfile = '/var/run/parserfilter.pid';
|
|
my $program = $0;
|
|
|
|
unless(-f $config_file) {
|
|
die "Configuration file $config_file does not exist";
|
|
}
|
|
|
|
my $x;
|
|
my $loop = Glib::MainLoop->new;
|
|
my $parser = My::parser::parser->new($config_file);
|
|
my $time = Glib::Timeout->add(1000, \&loopsie);
|
|
|
|
if(my $tp = fork) {
|
|
exit 0;
|
|
} else {
|
|
my $pid = $$;
|
|
$x = tie *STDERR, 'Tie::Syslog', 'local0.err',$program,'pid','unix';
|
|
$x->ExtendedSTDERR();
|
|
&savepid($pid,$pidfile);
|
|
close STDIN;
|
|
$parser->load_parsers;
|
|
$loop->run;
|
|
}
|
|
|
|
sub loopsie {
|
|
my $result = $parser->parse_all;
|
|
return 1 if($result);
|
|
return 0;
|
|
}
|
|
|
|
sub signal_handler {
|
|
my $signal = shift;
|
|
if($signal eq 'HUP') {
|
|
$parser->{'config'}->{'logger'}->reload_log;
|
|
$parser->{'config'}->{'logger'}->log('Log reloaded');
|
|
} else {
|
|
$loop->quit;
|
|
$parser->{'config'}->{'logger'}->log("$program stopped");
|
|
}
|
|
}
|