return;
}
+my $FIREWALL_RELOAD_INDICATOR = "${General::swroot}/forward/reread";
+
+sub firewall_config_changed() {
+ open FILE, ">$FIREWALL_RELOAD_INDICATOR" or die "Could not open $FIREWALL_RELOAD_INDICATOR";
+ close FILE;
+}
+
+sub firewall_needs_reload() {
+ if (-e "$FIREWALL_RELOAD_INDICATOR") {
+ return 1;
+ }
+
+ return 0;
+}
+
+sub firewall_reload() {
+ system("/usr/local/bin/forwardfwctrl");
+}
+
1;
&newrule;
}else{
if($fwdfwsettings{'nosave2'} ne 'on'){
- &rules;
+ &General::firewall_config_changed();
}
&base;
}
}
}
&General::writehasharray($fwdfwsettings{'config'}, \%togglehash);
- &rules;
+ &General::firewall_config_changed();
&base;
}
if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw togglelog'})
}
}
&General::writehasharray($fwdfwsettings{'config'}, \%togglehash);
- &rules;
+ &General::firewall_config_changed();
&base;
}
if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw reread'})
{
- &reread_rules;
+ &General::firewall_reload();
&base;
}
if ($fwdfwsettings{'ACTION'} eq 'editrule')
<td align="right">
END
- if (-f "${General::swroot}/forward/reread") {
+ if (&General::firewall_needs_reload()) {
print <<END;
<input type='submit' name='ACTION' value='$Lang::tr{'fwdfw reread'}' style='font-weight: bold; color: green;'>
END
delete $delhash{$last_key};
&General::writehasharray($fwdfwsettings{'config'}, \%delhash);
- &rules;
+ &General::firewall_config_changed();
if($fwdfwsettings{'nobase'} ne 'on'){
&base;
}
}
&General::writehasharray("$configfwdfw", \%configfwdfw);
- &rules;
+ &General::firewall_config_changed();
}
sub dec_counter
{
}
}
&General::writehasharray($fwdfwsettings{'config'}, \%uphash);
- &rules;
+ &General::firewall_config_changed();
}
sub pos_down
{
}
}
&General::writehasharray($fwdfwsettings{'config'}, \%downhash);
- &rules;
-}
-sub rules
-{
- if (!-f "${General::swroot}/forward/reread"){
- system("touch ${General::swroot}/forward/reread");
- system("touch ${General::swroot}/fwhosts/reread");
- }
-}
-sub reread_rules
-{
- system("/usr/local/bin/forwardfwctrl");
- if ( -f "${General::swroot}/forward/reread"){
- system("rm ${General::swroot}/forward/reread");
- system("rm ${General::swroot}/fwhosts/reread");
- }
+ &General::firewall_config_changed();
}
sub saverule
{
$fwdfwsettings{'oldrulenumber'}--;
}
&General::writehasharray("$config", $hash);
- &rules;
+ &General::firewall_config_changed();
}elsif($fwdfwsettings{'rulepos'} > $fwdfwsettings{'oldrulenumber'}){
my %tmp=();
my $val=$fwdfwsettings{'rulepos'}-$fwdfwsettings{'oldrulenumber'};
$fwdfwsettings{'oldrulenumber'}++;
}
&General::writehasharray("$config", $hash);
- &rules;
+ &General::firewall_config_changed();
}
}
}
END
## ACTION ####
-if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwdfw reread'})
-{
- &reread_rules;
- &showmenu;
-}
# Update
if ($fwhostsettings{'ACTION'} eq 'updatenet' )
{
}
$fwhostsettings{'updatesrv'} = '';
if($needrules eq 'on'){
- &rules;
+ &General::firewall_config_changed();
}
&addservice;
}
$fwhostsettings{'NETREMARK'}='';
#check if an edited net affected groups and need to reload rules
if ($needrules eq 'on'){
- &rules;
+ &General::firewall_config_changed();
}
&addnet;
&viewtablenet;
$fwhostsettings{'HOSTREMARK'}='';
#check if we need to update rules while host was edited
if($needrules eq 'on'){
- &rules;
+ &General::firewall_config_changed();
}
&addhost;
&viewtablehost;
#check if ruleupdate is needed
if($count > 0 )
{
- &rules;
+ &General::firewall_config_changed();
}
&addgrp;
&viewtablegrp;
$fwhostsettings{'updatesrvgrp'}='on';
}
if ($count gt 0){
- &rules;
+ &General::firewall_config_changed();
}
&addservicegrp;
&viewtableservicegrp;
}
}
&General::writehasharray("$configgrp", \%customgrp);
- if ($fwhostsettings{'grpcnt'} > 0){&rules;}
+ if ($fwhostsettings{'grpcnt'} > 0){
+ &General::firewall_config_changed();
+ }
if ($fwhostsettings{'update'} eq 'on'){
$fwhostsettings{'remark'}= $grpremark;
$fwhostsettings{'grp_name'}=$grpname;
}
}
&General::writehasharray("$configsrvgrp", \%customservicegrp);
- &rules;
+ &General::firewall_config_changed();
if ($fwhostsettings{'updatesrvgrp'} eq 'on'){
$fwhostsettings{'SRVGRP_NAME'}=$grpname;
$fwhostsettings{'SRVGRP_REMARK'}=$grpremark;
&showmenu;
}
### FUNCTIONS ###
-sub showmenu
-{
- if (-f "${General::swroot}/forward/reread"){
- print "<table border='1' rules='groups' bgcolor='lightgreen' width='100%'><form method='post'><td><div style='font-size:11pt; font-weight: bold;vertical-align: middle; '><input type='submit' name='ACTION' value='$Lang::tr{'fwdfw reread'}' style='font-face: Comic Sans MS; color: green; font-weight: bold; font-size: 14pt;'>    $Lang::tr{'fwhost reread'}</td></tr></table></form><br>";
- }
+sub showmenu {
&Header::openbox('100%', 'left',$Lang::tr{'fwhost menu'});
print "$Lang::tr{'fwhost welcome'}";
print<<END;
}
}
}
-sub rules
-{
- if (!-f "${General::swroot}/fwhosts/reread"){
- system("touch ${General::swroot}/fwhosts/reread");
- system("touch ${General::swroot}/forward/reread");
- }
-}
-sub reread_rules
-{
- system ("/usr/local/bin/forwardfwctrl");
- if ( -f "${General::swroot}/fwhosts/reread"){
- system("rm ${General::swroot}/fwhosts/reread");
- system("rm ${General::swroot}/forward/reread");
- }
-
-}
-sub decrease
-{
+
+sub decrease {
my $grp=$_[0];
&General::readhasharray("$confignet", \%customnetwork);
&General::readhasharray("$confighost", \%customhost);
&General::readhash("${General::swroot}/main/settings", \%mainsettings);
&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
-
-
&Header::showhttpheaders();
&Header::getcgihash(\%fwdfwsettings);
&Header::openpage($Lang::tr{'fwdfw menu'}, 1, '');
-&Header::openbigbox('100%', 'center',$errormessage);
+&Header::openbigbox('100%', 'center', $errormessage);
-if ($fwdfwsettings{'ACTION'} eq ''){
-&p2pblock;
-}
-if ($fwdfwsettings{'ACTION'} eq 'togglep2p')
-{
+if ($fwdfwsettings{'ACTION'} eq 'togglep2p') {
open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
@p2ps = <FILE>;
close FILE;
print FILE "$p2pline[0];$p2pline[1];$p2pline[2];\n";
}
close FILE;
- &rules;
- &p2pblock;
-}
-if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw reread'})
-{
- &reread_rules;
- &p2pblock;
-}
+ &General::firewall_config_changed();
+ &p2pblock();
+} else {
+ &p2pblock();
+}
sub p2pblock
{
- if (-f "${General::swroot}/forward/reread"){
- print "<table border='1' rules='groups' bgcolor='lightgreen' width='100%'><form method='post'><td><div style='font-size:11pt; font-weight: bold;vertical-align: middle; '><input type='submit' name='ACTION' value='$Lang::tr{'fwdfw reread'}' style='font-face: Comic Sans MS; color: green; font-weight: bold; font-size: 14pt;'>    $Lang::tr{'fwhost reread'}</div></td></tr></table></form><br>";
- }
my $gif;
open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
@p2ps = <FILE>;
print"<br><br><br><table width='100%'><tr><td align='left'>$Lang::tr{'fwdfw p2p txt'}</td></tr></table>";
&Header::closebox();
}
-sub rules
-{
- if (!-f "${General::swroot}/forward/reread"){
- system("touch ${General::swroot}/forward/reread");
- system("touch ${General::swroot}/fwhosts/reread");
- }
-}
-sub reread_rules
-{
- system("/usr/local/bin/forwardfwctrl");
- if ( -f "${General::swroot}/forward/reread"){
- system("rm ${General::swroot}/forward/reread");
- system("rm ${General::swroot}/fwhosts/reread");
- }
-}
+
&Header::closebigbox();
&Header::closepage();
*
*/
+#include <unistd.h>
+
#include "setuid.h"
int main(int argc, char *argv[]) {
if (!(initsetuid()))
exit(1);
- safe_system("/var/ipfire/forward/bin/rules.pl");
+ int retval = safe_system("/var/ipfire/forward/bin/rules.pl");
+
+ /* If rules.pl has been successfully executed, the indicator
+ * file is removed. */
+ if (retval == 0) {
+ unlink("/var/ipfire/forward/reread");
+ }
+
return 0;
}