diff options
Diffstat (limited to 'etc/rc.newwanip')
-rwxr-xr-x | etc/rc.newwanip | 146 |
1 files changed, 77 insertions, 69 deletions
diff --git a/etc/rc.newwanip b/etc/rc.newwanip index 23ecae0..5580a9c 100755 --- a/etc/rc.newwanip +++ b/etc/rc.newwanip @@ -1,80 +1,88 @@ #!/usr/local/bin/php -f <?php -/* $Id$ */ /* - rc.newwanip - part of m0n0wall (http://m0n0.ch/wall) - - Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. + rc.newwanip + part of m0n0wall (http://m0n0.ch/wall) + + Copyright (C) 2003-2005 Manuel Kasper <mk@neon1.net>. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ - /* parse the configuration and include all functions used below */ - require_once("config.inc"); - require_once("functions.inc"); + /* parse the configuration and include all functions used below */ + require_once("config.inc"); + require_once("functions.inc"); - /* WAN IP address has changed */ - $curwanip = get_current_wan_address(); + /* WAN IP address has changed */ - /* dhclient or MPD told us that the IP address has changed; - let's see if that's really true to avoid reloading things - when it's not really necessary (dhclient likes to - execute its dhclient-exit-hooks also on renewals) - */ - if (file_exists("{$g['vardb_path']}/wanip")) { - $oldwanip = chop(file_get_contents("{$g['vardb_path']}/wanip")); + /* make sure to wait until the boot scripts have finished */ + while (file_exists("{$g['varrun_path']}/booting")) { + sleep(1); + } - if ($curwanip == $oldwanip) - return 0; /* nothing to do */ - } + $curwanip = get_current_wan_address(); - /* relaunch pftpx */ - system_start_ftp_helpers(); + /* dhclient or MPD told us that the IP address has changed; + let's see if that's really true to avoid reloading things + when it's not really necessary (dhclient likes to + execute its dhclient-exit-hooks also on renewals) + */ + if (file_exists("{$g['vardb_path']}/wanip")) { + $oldwanip = chop(file_get_contents("{$g['vardb_path']}/wanip")); - /* resync ipfilter */ - filter_configure_sync(); + if ($curwanip == $oldwanip) + return 0; /* nothing to do */ + } + + /* reload firewall rules */ + filter_rules_generate(); + + /* flush NAT table */ + filter_flush_nat_table(); + + /* reconfigure IPsec tunnels */ + vpn_ipsec_configure(true); - /* reconfigure IPsec tunnels */ - vpn_ipsec_configure(true); - - /* regenerate resolv.conf if DNS overrides are allowed or the BigPond - client is enabled */ - if (isset($config['system']['dnsallowoverride']) || - ($config['interfaces']['wan']['ipaddr'] == "bigpond")) - system_resolvconf_generate(true); - - /* fire up the BigPond client, if necessary */ - if ($config['interfaces']['wan']['ipaddr'] == "bigpond") - interfaces_wan_bigpond_configure($curwanip); - - /* write current WAN IP to file */ - $fd = @fopen("{$g['vardb_path']}/wanip", "w"); - if ($fd) { - fwrite($fd, $curwanip); - fclose($fd); - } - - /* Update dynamic DNS */ - services_dyndns_configure(); -?> + /* regenerate resolv.conf if DNS overrides are allowed or the BigPond + client is enabled */ + if (isset($config['system']['dnsallowoverride']) || + ($config['interfaces']['wan']['ipaddr'] == "bigpond")) + system_resolvconf_generate(true); + + /* fire up the BigPond client, if necessary */ + if ($config['interfaces']['wan']['ipaddr'] == "bigpond") + interfaces_wan_bigpond_configure($curwanip); + + /* perform RFC 2136 DNS update */ + services_dnsupdate_process(); + + /* write current WAN IP to file */ + $fd = @fopen("{$g['vardb_path']}/wanip", "w"); + if ($fd) { + fwrite($fd, $curwanip); + fclose($fd); + } + + filter_configure_sync(); + +?>
\ No newline at end of file |