#!/usr/bin/perl

###############################################################################
#                                                                             #
# IPFire.org - A linux based firewall                                         #
# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
#                                                                             #
# 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/>.       #
#                                                                             #
###############################################################################
#                                                                             #
# This script converts old openvpn ccd files with underscore                  #
# to files with spaces to make them working with openvpn 2.3 again            #
# STEP1: read ovpnconfig and verify cert names                                #
# STEP2: if neccessary convert ccd file                                       #
#                                                                             #
###############################################################################

require '/var/ipfire/general-functions.pl';

my %configovpn=();
my $ccdpath="/var/ipfire/ovpn/ccd/";
my $ovpnconfig="/var/ipfire/ovpn/ovpnconfig";

&General::readhasharray ($ovpnconfig,\%configovpn);

&check_config();

sub check_config {
	print "Converting CCD files...\n";
	chdir($ccdpath);

	foreach my $key (sort keys %configovpn){
		# Skip everything else but roadwarrior connections.
		next if ($configovpn{$key}[3] ne 'host');

		# Skip all connections with no space in the CN name.
		next if ($configovpn{$key}[2] !~ " ");

		my $ccdname = $configovpn{$key}[2];
		$ccdname =~ tr/ /_/;

		# Rename the CCD file if one with the old format exists.
		if (-e "$ccdname") {
			print " Renaming $ccdname -> $configovpn{$key}[2]...\n";
			rename($ccdname, $configovpn{$key}[2]);
		}
	}
}
