# IPFire Connection Scheduler (F)Cron Job
#
# This code is distributed under the terms of the GPL
+# The original code is taken from weizen_42.
+# See /home/httpd/cgi-bin/connscheduler.cgi
#
use strict;
require '/var/ipfire/general-functions.pl';
require '/var/ipfire/connscheduler/lib.pl';
-
# seems to be necessary
my $sleep_after_profile = 5;
#
sub hangup
{
+ # Kill connectd if running to prevent redial
+ system('/bin/killall', 'connectd');
+
unless ( -e "${General::swroot}/red/active" )
{
&General::log("ConnSched already disconnected");
}
&General::log("ConnSched disconnect");
- unless ( system('/etc/rc.d/rc.red', 'stop') == 0 )
+ unless ( system('/etc/rc.d/init.d/network', 'stop', 'red') == 0 )
{
&General::log("ConnSched disconnect failed: $?");
return;
}
# now wait for active triggerfile and ppp daemon to disappear
+ # wait maximum 60 seconds
+ my $counter = 60;
sleep 1;
- while ( -e "${General::swroot}/red/active" || -e '/var/run/ppp-ipcop.pid' )
+ while ( -e "${General::swroot}/red/active" || -e '/var/run/ppp-ipfire.pid' || $counter == 0 )
{
sleep 1;
+ $counter--;
}
}
}
&General::log("ConnSched connect");
- unless ( system('/etc/rc.d/rc.red', 'start') == 0 )
+ unless ( system('/etc/rc.d/init.d/network', 'start', 'red') == 0 )
{
&General::log("ConnSched connect failed: $?");
return;
sub reconnect
{
&hangup() if ( -e "${General::swroot}/red/active" );
+ # now wait for active triggerfile and ppp daemon to disappear
+ # wait maximum 60 seconds
+ my $counter = 60;
+ sleep 1;
+ while ( -e "${General::swroot}/red/active" || -e '/var/run/ppp-ipfire.pid' || $counter == 0 )
+ {
+ sleep 1;
+ $counter--;
+ }
&dial();
}
# Method to change Profile from pppsetup.cgi
unlink("${General::swroot}/ppp/settings");
link("${General::swroot}/ppp/settings-$profile", "${General::swroot}/ppp/settings");
- system ("/bin/touch", "${General::swroot}/ppp/updatesettings");
+ system ("/usr/bin/touch", "${General::swroot}/ppp/updatesettings");
if ( $restart_red == 1 )
{
&General::log("ConnSched shutdown");
system ("/usr/local/bin/ipfirereboot", "down");
}
+ elsif ( $CONNSCHED::config[$i]{'ACTION'} eq 'ipsecstart' )
+ {
+ &General::log("ConnSched ipsecstart");
+ system ("/usr/local/bin/ipsecctrl", "S");
+ }
+ elsif ( $CONNSCHED::config[$i]{'ACTION'} eq 'ipsecstop' )
+ {
+ &General::log("ConnSched ipsecstop");
+ system ("/usr/local/bin/ipsecctrl", "D");
+ }
+ else
+ {
+ # okay ? an event we don't know about
+ }
}
}