]> git.ipfire.org Git - people/ummeegge/ipfire-2.x.git/commitdiff
Add ovpn-ccd-convert script.
authorStefan Schantl <stefan.schantl@ipfire.org>
Sat, 17 Nov 2012 15:35:38 +0000 (16:35 +0100)
committerStefan Schantl <stefan.schantl@ipfire.org>
Sat, 17 Nov 2012 15:35:38 +0000 (16:35 +0100)
This script is required, to convert existing OpenVPN roadwarrior configurations to
work with the new CCD extension.

config/rootfiles/common/stage2
lfs/stage2
src/scripts/ovpn-ccd-convert [new file with mode: 0644]

index 001755520a90e40def1100e0cbcf3a0e25b0c449..6871cc9c65fa8aa69ba7f3727da5dfa066096262 100644 (file)
@@ -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
index 5f038c325024f8fa25295aea1179d9dea84be707..5059923aeb8f16af0ccf2408da39739ab426b98f 100644 (file)
@@ -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 (file)
index 0000000..18c298c
--- /dev/null
@@ -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 (<FILE>) {
+                                       $_=~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');
+