From: Stefan Schantl Date: Sat, 17 Nov 2012 15:35:38 +0000 (+0100) Subject: Add ovpn-ccd-convert script. X-Git-Url: http://git.ipfire.org/?p=people%2Fummeegge%2Fipfire-2.x.git;a=commitdiff_plain;h=07cdb8f659667b4e03a2014febca940165e723f0 Add ovpn-ccd-convert script. This script is required, to convert existing OpenVPN roadwarrior configurations to work with the new CCD extension. --- diff --git a/config/rootfiles/common/stage2 b/config/rootfiles/common/stage2 index 001755520a..6871cc9c65 100644 --- a/config/rootfiles/common/stage2 +++ b/config/rootfiles/common/stage2 @@ -95,6 +95,7 @@ usr/local/bin/vpn-watch #usr/local/share/zoneinfo #usr/local/src #usr/sbin +usr/sbin/ovpn-ccd-convert #usr/share #usr/share/doc #usr/share/doc/licenses diff --git a/lfs/stage2 b/lfs/stage2 index 5f038c3250..5059923aeb 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -89,6 +89,9 @@ $(TARGET) : chmod 755 /usr/local/bin/`basename $$i`; \ done + # Move script to correct place. + mv -vf /usr/local/bin/ovpn-ccd-convert /usr/sbin/ + # Nobody user -mkdir -p /home/nobody chown -R nobody:nobody /home/nobody diff --git a/src/scripts/ovpn-ccd-convert b/src/scripts/ovpn-ccd-convert new file mode 100644 index 0000000000..18c298cb70 --- /dev/null +++ b/src/scripts/ovpn-ccd-convert @@ -0,0 +1,45 @@ +#!/usr/bin/perl + +my %net=(); +my %ovpnconfig=(); +my @serverconf=(); +my $greennet; +my $greensubnet; + +require '/var/ipfire/general-functions.pl'; + +if ( -e "/var/run/openvpn.pid"){ + system('/usr/local/bin/openvpnctrl', '-k'); +} + +&General::readhash("/var/ipfire/ethernet/settings", \%net); + $greennet=$net{'GREEN_NETADDRESS'}; + $greensubnet=$net{'GREEN_NETMASK'}; +open(FILE,"/var/ipfire/ovpn/server.conf"); + while () { + $_=~s/\s*$//g; + if ($_ ne "route $greennet $greensubnet"){ + push (@serverconf,$_."\n"); + }else{ + print"\nFound ROUTE >>route $greennet $greensubnet<< in server.conf.. Deleted!"; + } + } + +&General::readhasharray("/var/ipfire/ovpn/ovpnconfig", \%ovpnconfig); +foreach my $key (keys %ovpnconfig){ + if($ovpnconfig{$key}[32] eq ''){ + open ( CCDRWCONF,'>',"/var/ipfire/ovpn/ccd/$ovpnconfig{$key}[2]") or die "Unable to create clientconfigfile $!"; + print CCDRWCONF "# OpenVPN Clientconfig from CCD extension by Copymaster#\n\n"; + print CCDRWCONF "#This client uses the dynamic pool\n\n"; + print CCDRWCONF "\n#Client gets routes to these Networks (behind IPFIRE)\n"; + print CCDRWCONF "push \"route $greennet $greensubnet\"\n"; + close CCDRWCONF; + print"Client $ovpnconfig{$key}[2] converted! \n"; + }else{ + print "Client $ovpnconfig{$key}[2] NOT converted!\n"; + } + $ovpnconfig{$key}[32] = 'dynamic'; +} +&General::writehasharray("/var/ipfire/ovpn/ovpnconfig", \%ovpnconfig); +system('/usr/local/bin/openvpnctrl', '-s'); +