###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2015 IPFire Development Team #
+# Copyright (C) 2015-2016 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
close(FILE);
# Send filename and message to the parser,
- # which will return if an action has to be performed.
- my $action = &Guardian::Parser::Parser("$parser", @message);
+ # which will return if any actions have to be performed.
+ my @actions = &Guardian::Parser::Parser("$parser", @message);
# Send the action to the main process and put it into
# the queue.
- if (defined ($action)) {
+ if (@actions) {
# Lock the queue.
lock($queue);
- # Put the required action into the queue.
- $queue->enqueue($action);
+ # Loop through the actions array, and perform
+ # every single action.
+ foreach my $action (@actions) {
+ # Prevent from enqueuing empty actions.
+ if (defined($action)) {
+ # Put the required action into the queue.
+ $queue->enqueue($action);
+ }
+ }
}
} else {
# Sleep for 10ms until the next round of the loop will start.
#
sub Socket () {
# Create the Server socket by calling the responsible function.
- my $server = &Guardian::Socket::Server();
+ my $server = &Guardian::Socket::Server($mainsettings{SocketOwner});
# Log successfull creation of socket.
$logger->Log("debug", "Listening to Socket...");
$SIG{TERM} = \&Shutdown;
$SIG{QUIT} = \&Shutdown;
$SIG{HUP} = \&Reload;
+ $SIG{USR1} = \&ReloadIgnoreList;
}
#
# Update logger object in mainsettings hash.
$mainsettings{Logger} = $logger;
- # Update ignore list, if one has been specified.
- if (exists($mainsettings{IgnoreFile})) {
- &Guardian::Events::GenerateIgnoreList($mainsettings{IgnoreFile});
- }
+ # Update ignore list.
+ &ReloadIgnoreList();
# Re-generate hash of monitored files.
%monitored_files = &Guardian::Base::GenerateMonitoredFiles(\%mainsettings, \%monitored_files);
&StartWorkers();
}
+#
+## ReloadIgnoreList function.
+#
+## This function will be called if the signal handler recieves a "SIGUSR1" signal,
+## or the reload-ignore-list command will be sent via the socket connection. It just
+## performs a simple check if an ignore file has been configured and calls the responsible
+## function on the events module.
+#
+sub ReloadIgnoreList () {
+ # Update ignore list, if an ignorefile has been specified.
+ if (exists($mainsettings{IgnoreFile})) {
+ # Log reload of the ignore list.
+ $logger->Log("info", "Reloading ignore list...");
+
+ # Call responsible function from the events module.
+ &Guardian::Events::GenerateIgnoreList($mainsettings{IgnoreFile});
+ }
+}
+
#
## Shutdown function.
#