From: Christian Schmidt Date: Sat, 16 Jan 2010 12:08:01 +0000 (+0100) Subject: Fixed connscheduler reconnecting even if not pppoe. X-Git-Tag: v2.9-beta1~520 X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=commitdiff_plain;h=b68117f5eb732adb42167c42f69d05070d099f9e Fixed connscheduler reconnecting even if not pppoe. The reconnect should only get active if RED_TYPE is set to pppoe, otherwise is should break and log. Added info to config that this reconnect only works forWe have to ensure that reconnect is not called by any static or dynamic RED_TYPE. --- diff --git a/config/cfgroot/connscheduler.conf b/config/cfgroot/connscheduler.conf index 9bcf1955d5..379ac92453 100644 --- a/config/cfgroot/connscheduler.conf +++ b/config/cfgroot/connscheduler.conf @@ -1 +1 @@ -on,reconnect,,05:00,weekdays,,Mon Tue Wed Thu Fri Sat Sun ,,MorningReconnect +on,reconnect,,05:00,weekdays,,Mon Tue Wed Thu Fri Sat Sun ,,MorningReconnect for pppoe diff --git a/config/rootfiles/core/35/filelists/files b/config/rootfiles/core/35/filelists/files index 15fca78431..a6bf811153 100644 --- a/config/rootfiles/core/35/filelists/files +++ b/config/rootfiles/core/35/filelists/files @@ -13,3 +13,5 @@ lib/modules/2.6.27.42-ipfire-xen/kernel/net/ieee80211/ieee80211_crypt_tkip.off lib/modules/2.6.27.42-ipfire-xen/kernel/net/ieee80211/ieee80211_crypt_wep.off srv/web/ipfire/cgi-bin/outgoingfw.cgi var/ipfire/outgoing/bin/outgoingfw.pl +usr/local/bin/connscheduler +var/ipfire/connscheduler/connscheduler.conf diff --git a/src/scripts/connscheduler b/src/scripts/connscheduler index bc4d4eb656..ceb411601e 100644 --- a/src/scripts/connscheduler +++ b/src/scripts/connscheduler @@ -21,6 +21,9 @@ $weekday = ($weekday + 6) % 7; # get the closest thing possible $minute = int($minute / 5) * 5; +my $swroot = "/var/ipfire"; +my %ethernetsettings; +&readhash("${swroot}/ethernet/settings", \%ethernetsettings); if ( $ARGV[0] eq 'hangup' ) { @@ -117,7 +120,11 @@ sub dial sub reconnect -{ +{ + if ( $ethernetsettings{'RED_TYPE'} ne 'PPPOE' ){ + &General::log("ConnSched skipped because not running pppoe"); + exit; + } &hangup() if ( -e "${General::swroot}/red/active" ); # now wait for active triggerfile and ppp daemon to disappear # wait maximum 60 seconds @@ -242,3 +249,31 @@ sub timer } } } + +sub readhash +{ + my $filename = $_[0]; + my $hash = $_[1]; + my ($var, $val); + + if (-e $filename) + { + open(FILE, $filename) or die "Unable to read file $filename"; + while () + { + chop; + ($var, $val) = split /=/, $_, 2; + if ($var) + { + $val =~ s/^\'//g; + $val =~ s/\'$//g; + + # Untaint variables read from hash + $var =~ /([A-Za-z0-9_-]*)/; $var = $1; + $val =~ /([\w\W]*)/; $val = $1; + $hash->{$var} = $val; + } + } + close FILE; + } +} \ No newline at end of file