#!/usr/bin/perl ############################################################################### # # # IPFire.org - A linux based firewall # # Copyright (C) 2007-2025 IPFire 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 # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program. If not, see . # # # ############################################################################### use strict; # enable only the following on debugging purpose #use warnings; #use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; my %logsettings=(); my %checked=(); my %selected=(); my $errormessage=''; &Header::showhttpheaders(); $logsettings{'LOGVIEW_REVERSE'} = 'off'; $logsettings{'LOGVIEW_VIEWSIZE'} = '150'; $logsettings{'LOGWATCH_LEVEL'} = 'Low'; $logsettings{'LOGWATCH_KEEP'} = '56'; my @VS = ('15','50','100','150','250','500'); $logsettings{'ENABLE_REMOTELOG'} = 'off'; $logsettings{'REMOTELOG_ADDR'} = ''; $logsettings{'REMOTELOG_PROTOCOL'} = 'udp'; $logsettings{'ACTION'} = ''; &Header::getcgihash(\%logsettings); if ($logsettings{'ACTION'} eq $Lang::tr{'save'}) { if ($logsettings{'ENABLE_REMOTELOG'} eq 'on') { unless ( &General::validfqdn($logsettings{'REMOTELOG_ADDR'}) || &General::validip ($logsettings{'REMOTELOG_ADDR'})) { $errormessage = $Lang::tr{'invalid logserver address'}; } unless ($logsettings{'REMOTELOG_PROTOCOL'} =~ /^udp|tcp$/) { $errormessage = $Lang::tr{'invalid logserver protocol'}; } } unless ($logsettings{'LOGWATCH_KEEP'} =~ /^\d+$/) { $errormessage = $Lang::tr{'invalid keep time'}; } unless ($logsettings{'LOGWATCH_LEVEL'} =~ /^Low|Med|High$/) { $errormessage = $Lang::tr{'invalid input'}; } unless ($errormessage) { &General::writehash("${General::swroot}/logging/settings", \%logsettings); system('/usr/local/bin/syslogdctrl') == 0 or $errormessage = "$Lang::tr{'bad return code'} " . $?/256; } } &General::readhash("${General::swroot}/logging/settings", \%logsettings); $checked{'ENABLE_REMOTELOG'}{'off'} = ''; $checked{'ENABLE_REMOTELOG'}{'on'} = ''; $checked{'ENABLE_REMOTELOG'}{$logsettings{'ENABLE_REMOTELOG'}} = "checked='checked'"; $selected{'REMOTELOG_PROTOCOL'}{'udp'} = ''; $selected{'REMOTELOG_PROTOCOL'}{'tcp'} == ''; $selected{'REMOTELOG_PROTOCOL'}{$logsettings{'REMOTELOG_PROTOCOL'}} = "selected='selected'"; $checked{'LOGVIEW_REVERSE'}{'off'} = ''; $checked{'LOGVIEW_REVERSE'}{'on'} = ''; $checked{'LOGVIEW_REVERSE'}{$logsettings{'LOGVIEW_REVERSE'}} = "checked='checked'"; $selected{'LOGWATCH_LEVEL'}{'Low'} = ''; $selected{'LOGWATCH_LEVEL'}{'Med'} = ''; $selected{'LOGWATCH_LEVEL'}{'High'} = ''; $selected{'LOGWATCH_LEVEL'}{$logsettings{'LOGWATCH_LEVEL'}} = "selected='selected'"; map ($selected{'LOGVIEW_VIEWSIZE'}{$_} = '', @VS); $selected{'LOGVIEW_VIEWSIZE'}{$logsettings{'LOGVIEW_VIEWSIZE'}} = "selected='selected'"; &Header::openpage($Lang::tr{'log settings'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); if ($errormessage) { &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); print "$errormessage \n"; &Header::closebox(); } print "
\n"; &Header::openbox('100%', 'left', $Lang::tr{'log viewing options'}); print < $Lang::tr{'reverse sort'} $Lang::tr{'log lines per page'}:   $Lang::tr{'days'} $Lang::tr{'detail level'}: END ; &Header::closebox(); &Header::openbox('100%', 'left', $Lang::tr{'remote logging'}); $logsettings{'REMOTELOG_ADDR'} = &Header::escape($logsettings{'REMOTELOG_ADDR'}); print < $Lang::tr{'enabled'} $Lang::tr{'log server address'} $Lang::tr{'log server protocol'} END ; &Header::closebox(); print <
END ; print "\n"; &Header::closebigbox(); &Header::closepage();