#!/usr/bin/perl -w
use File::Copy;

open OLD, "/etc/samba/smbldap_conf.pm.rpmsave" or die "Can't open smbldap config file: $!";

my ($key, $filetomigrate,$backupfile);
my %configmap;
my @filestomigrate = ("/etc/smbldap-tools/smbldap.conf","/etc/smbldap-tools/smbldap_bind.conf");
my @newconf;

while (<OLD>) {
	if (m/^\$(_)?(\w*)\s*=\s*("|'|q\()(.*)("|'|\))\;/ || m/^\$(_)?(\w*)\s*=\s*("|'|q\()?(.*)\;/)
	{ 
		$configmap{$2} = ${4}
	}
}
close OLD;

foreach $filetomigrate (@filestomigrate) {
	open NEW, $filetomigrate or die "Can't read $filetomigrate,  $!";
	while (<NEW>) {
		foreach $key (keys(%configmap)) {
			if (m/^($key)\s*\=\"(.*)\"/) {
				s/^($key)(\s*)\=(\")(.*)(\")/${1}${2}=${3}$configmap{$key}${5}/;
			}
			s/\$(\{)?usersou(\})?/$configmap{usersou}/;
			s/\$(\{)?groupsou(\})?/$configmap{groupsou}/;
			s/\$(\{)?computersou(\})?/$configmap{computersou}/;
			s/\$(\{)?binddn(\})?/$configmap{binddn}/;
			s/\$(\{)?bindpasswd(\})?/$configmap{bindpasswd}/;
			s/\$(\{)?suffix(\})?/$configmap{suffix}/;
		}
		push @newconf, $_;
	}
	close NEW;

	$backupfile = $filetomigrate . ".bak";
	print "Making a backup of $filetomigrate to $backupfile\n";
	move ($filetomigrate,$backupfile) or die "Backing up $filetomigrate failed: $!\n";

	open MIGRATED, "> $filetomigrate";
	print MIGRATED @newconf;
	@newconf = "";
}
