]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/ppp/ip-up
make.sh: Introduce DEFAULT_PARALLELISM
[ipfire-2.x.git] / src / ppp / ip-up
index 4dc6c05a94506ef637757b14d9a3bf1b152828b6..b059a297d1cf2855e06e5fa8bf585be8196f29e5 100644 (file)
@@ -1,58 +1,83 @@
-#!/usr/bin/perl
-#
-# SmoothWall CGIs
-#
-# This code is distributed under the terms of the GPL
-#
-# (c) The SmoothWall Team
-#
-# $Id: ip-up,v 1.3.2.3 2005/01/26 12:23:26 riddles Exp $
-#
-
-use strict;
-require '/var/ipfire/general-functions.pl';
-
-&General::log("PPP has gone up on $ARGV[0]");
-umask 022;
-
-my %pppsettings;
-
-# read vars back from file.
-&General::readhash("${General::swroot}/ppp/settings", \%pppsettings);
-
-if ( ( $pppsettings{'TYPE'} eq 'isdn') &&
-               ( $pppsettings{'COMPORT'} eq 'isdn2')  && 
-               ( $pppsettings{'USEIBOD'} eq 'off') ) {
-       system('/usr/sbin/isdnctrl', 'dial', 'ippp1');
-}
-
-my $dns = $pppsettings{'DNS'};
-my $primarydns = $pppsettings{'DNS1'};
-my $secondarydns = $pppsettings{'DNS2'};
-if ($dns eq 'Automatic') {
-       if (!($pppsettings{'TYPE'} =~ /^isdn/))
-       {
-               if (open(FILE, ">${General::swroot}/red/dns1")) { print FILE $ENV{'DNS1'}; close FILE; }
-               if (open(FILE, ">${General::swroot}/red/dns2")) { print FILE $ENV{'DNS2'}; close FILE; }
-       }
+#!/bin/sh
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+. /etc/sysconfig/rc
+. $rc_functions
+
+PRIMARY_DNS=$DNS1
+SECONDARY_DNS=$DNS2
+
+eval $(/usr/local/bin/readhash /var/ipfire/ppp/settings)
+
+if [ "$DNS" == "Automatic" ]; then
+       if [ "$TYPE" == "isdn" ]; then
+               echo -n "$MS_DNS1" > /var/ipfire/red/dns1
+               echo -n "$MS_DNS2" > /var/ipfire/red/dns2
+       else
+               if [ "$PRIMARY_DNS" == "10.11.12.13" ]; then
+                       echo -n "$DNS1" > /var/ipfire/red/dns1
+               else
+                       echo -n "$PRIMARY_DNS" > /var/ipfire/red/dns1
+               fi
+               if [ "$SECONDARY_DNS" == "10.11.12.14" ]; then
+                       echo -n "$DNS2" > /var/ipfire/red/dns2
+               else
+                       echo -n "$SECONDARY_DNS" > /var/ipfire/red/dns2
+               fi
+       fi
+else
+       echo -n "$DNS1" > /var/ipfire/red/dns1
+       echo -n "$DNS2" > /var/ipfire/red/dns2
+fi
+
+echo -n "$1" > /var/ipfire/red/iface
+echo -n "$4" > /var/ipfire/red/local-ipaddress
+echo -n "$5" > /var/ipfire/red/remote-ipaddress
+touch /var/ipfire/red/active
+
+/sbin/ip route replace default via ${IPREMOTE} dev ppp0
+run_subdir ${rc_base}/init.d/networking/red.up/
+
+#Check if gateway has answerd to ping, if not replace with ping.ipfire.org
+TEST=`/usr/bin/ping -c 2 $5 2>/dev/null | tail -2 | head -1 | cut -d"," -f2`;
+
+grep -v -E "\<gateway\>" /etc/hosts > /tmp/hosts
+
+if [ "$TEST" == " 2 received" ]; then
+       #ping the ppp-gateway
+       echo "$5        gateway" >> /tmp/hosts
+else
+       #no answer
+       HOST=`host ping.ipfire.org`;
+       FIRE=`echo $HOST | cut -d" " -f4`;
+       CHK=`echo $HOST | cut -d" " -f3`;
+       if [ "$CHK" == "address" ]; then
+           #use ping.ipfire.org
+           echo "$FIRE gateway" >> /tmp/hosts
        else
-       {
-               if (open(FILE, ">${General::swroot}/red/dns1")) { print FILE $ENV{'MS_DNS1'}; close FILE; }
-               if (open(FILE, ">${General::swroot}/red/dns2")) { print FILE $ENV{'MS_DNS2'}; close FILE; }
-       }
-} else {
-       if (open(FILE, ">${General::swroot}/red/dns1")) { print FILE $pppsettings{'DNS1'}; close FILE; }
-       if (open(FILE, ">${General::swroot}/red/dns2")) { print FILE $pppsettings{'DNS2'}; close FILE; }
-}
-
-if (open(FILE, ">${General::swroot}/red/iface")) { print FILE $ARGV[0]; close (FILE); }
-if (open(FILE, ">${General::swroot}/red/local-ipaddress"))  { print FILE $ARGV[3]; close (FILE); }
-if (open(FILE, ">${General::swroot}/red/remote-ipaddress")) { print FILE $ARGV[4]; close (FILE); }
-
-system('/usr/bin/touch', "${General::swroot}/red/active");
-system('/etc/rc.d/init.d/net/red/update');
-
-# Beep when ppp goes up or down. Silence if 'nobeeps' file exists.
-if ( ! -e "${General::swroot}/ppp/nobeeps") {
-       system "/bin/echo -en '\a' >/dev/console";
-}
+           #DNS lookup failed use direct ip
+           echo "81.3.27.38    gateway" >> /tmp/hosts
+       fi
+fi
+mv /tmp/hosts /etc/hosts
+
+[ -e "/var/ipfire/ppp/nobeeps" ] || /etc/rc.d/init.d/beep up
+