#!/bin/sh # OpenVPN dynamic ip reconfiguration script # Copyright (C) 2009 Andrea Borgia # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. . /etc/functions.sh . /etc/init.d/openvpn reconfig_service_with_dynamic_address() { local section="$1" local enable=0 local ipaddr="" # Config read/write examples: # config_get ipaddr vpn_name local # config_set vpn_name local $ipaddr # disabled? config_get_bool enable "$section" enable 0 [ "$enable" == 0 ] && return 0 ipaddr=`ifconfig "$ifname" | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1` [ -z "$ipaddr" ] && return 0 config_set "$section" local "$ipaddr" } if [ "$INTERFACE" = "wan" ]; then local ifname="" config_load network config_get ifname wan ifname [ -z "$ifname" ] && return 0 config_load openvpn case "${ACTION:-ifup}" in ifup) config_foreach reconfig_service_with_dynamic_address openvpn config_foreach stop_service openvpn config_foreach start_service openvpn ;; ifdown) config_foreach stop_service openvpn ;; esac fi