#!/bin/sh
###########################################################################
#
# OpenKeyServer installation script v1.1
# Copyright (c) 1998,1999 Highware, Inc. All rights reserved.
#
###########################################################################

OS=`uname -s`
if [ $OS = 'Linux' ];
then
	DOMAINNAME=`dnsdomainname`;
	AWK=awk;
elif	[ $OS = 'SunOS' ];
then
	DOMAINNAME=`domainname`;
	AWK=nawk;
elif	[ $OS = 'FreeBSD' ];
then
	DOMAINNAME=`domainname`;
	AWK=awk;
elif	[ $OS = 'Rhapsody' ];
then
	DOMAINNAME=`domainname`;
	AWK=awk;
else
	DOMAINNAME='<your-domain-name>';
	AWK=nawk;
fi
SED=sed
DEFAULT_OKS_TAR_FILE=`ls oks-*.tar | sort | tail -1`
DEFAULT_OKS_BASE_DIR="/usr/local/oks"
DEFAULT_SMTP_SERVER="mail.$DOMAINNAME"
DEFAULT_POP3_SERVER=$DEFAULT_SMTP_SERVER
DEFAULT_EMAIL_ADDRESS="pgp-keys@$DOMAINNAME"
DEFAULT_CONF_DIR="etc"
DEFAULT_WEBPAGES_DIR="share/webpages"
DEFAULT_PRESERVE_DIR="$DEFAULT_CONF_DIR/preserve"
YES="(y|Y|Yes|YES)"
NO="(n|N|No|NO)"
YESNO="$YES|$NO"
IPADDR="[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
EMAILADDRESS=".*@.*"
COMPANYNAME="...+"
URL="^http://.*"
OKS_PRESERVE_CONFIG=0
OKSD_CONF="oksd.conf"
OKS_HTTP_CONF="oks_http.conf"
OKS_SMTP_CONF="oks_smtp.conf"


###########################################################################


error()
{
	printf "\n$1"
	abort
}


###########################################################################


abort()
{
	printf "\n\nOpenKeyServer installation aborted !\n\n\n"
	exit 1
}


###########################################################################


prompt()
{
	ALLOWED="THIS IS WHAT IS ALLOWED"
	ANSWER=""

	# Repeat until the answer is found in the allowed answers
	until ( echo "$ANSWER" | egrep "$ALLOWED" > /dev/null )
	do 

		# First make a nice prompt
		printf "$1"

		if [ ! -z "$2" ]
		then
			printf "[$2] "
		fi

		read ANSWER

		# If there is a default answer and nothing has been entered
		if [ ! -z "$2" ] && [ -z "$ANSWER" ]
		then
			ANSWER=$2
		fi

		# Set what we have to match
		if [ -z "$3" ]
		then
			ALLOWED=".*"
		else
			ALLOWED=$3
		fi

	done
}


###########################################################################


selectfile()
{
	OKS_TAR_FILE=""

	until ( test -f "$OKS_TAR_FILE" )
	do
		prompt "\nPlease enter distribution file : " $DEFAULT_OKS_TAR_FILE

		OKS_TAR_FILE=$ANSWER

		if [ ! -f "$OKS_TAR_FILE" ]
		then
			printf "Distribution file \"$OKS_TAR_FILE\" not found !!"
		fi
	done

	if [ `dirname $OKS_TAR_FILE` = "." ]
	then
		OKS_TAR_FILE=`pwd`/`basename $OKS_TAR_FILE`
	fi
}


###########################################################################


selectdir()
{
	OKS_BASE_DIR=""

	until ( test -d "$OKS_BASE_DIR" -a -n "$OKS_BASE_DIR" )
 	do
		prompt "\nPlease enter installation directory : " $DEFAULT_OKS_BASE_DIR
		OKS_BASE_DIR=$ANSWER

		if [ ! -d "$OKS_BASE_DIR" ]
		then
			prompt "\n\"$OKS_BASE_DIR\" not found. Do you want to create it ? " "Yes" $YESNO
			
			if ( echo $ANSWER | egrep "$YES" > /dev/null )
			then
				mkdir $OKS_BASE_DIR || abort
			fi
		fi
	done

	OKS_CONF_DIR="$OKS_BASE_DIR/$DEFAULT_CONF_DIR"
}


###########################################################################


preserveconfig()
{
	if [ -f "$OKS_CONF_DIR/oksd.conf" ] || [ -f "$OKS_CONF_DIR/oks_http.conf" ] || [ -f "$OKS_CONF_DIR/oks_smtp.conf" ]
	then
		prompt "\nPrevious configuration files found. Do you want to preserve them ? " "Yes" $YESNO
		if ( echo $ANSWER | egrep "$YES"> /dev/null )
		then
			OKS_PRESERVE_CONFIG=1
			OKS_PRESERVE_DIR="$OKS_BASE_DIR/$DEFAULT_PRESERVE_DIR"
			mkdir $OKS_PRESERVE_DIR > /dev/null 2>&1
			cp $OKS_CONF_DIR/*.conf $OKS_PRESERVE_DIR > /dev/null
		fi
	fi
}


###########################################################################


untaroks()
{
	printf "\nInstalling distribution in $OKS_BASE_DIR ..."
	( cd $OKS_BASE_DIR; tar xfp $OKS_TAR_FILE ) || abort

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		cp $OKS_PRESERVE_DIR/*.conf $OKS_CONF_DIR > /dev/null
	fi

	printf "Done !\n"
}


###########################################################################


getconfigvalue()
{
	$AWK "( ( ( \"DELIM\" \$1 ) \"DELIM\" ) ~ ( ( \"DELIM\" \"$2\" ) \"DELIM\" ) ){ print \$2 }" $OKS_CONF_DIR/$1
}


###########################################################################


setconfigvalue()
{
	$AWK "/^$2/{ print \$1 \"\t\" \""$3"\"; next }/.*/{ print \$0 }" $OKS_CONF_DIR/$1 > $OKS_CONF_DIR/$1.2
	mv $OKS_CONF_DIR/$1.2 $OKS_CONF_DIR/$1
}


###########################################################################


configureoks()
{
	printf "\n\nConfiguring OpenKeyServer\n"

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_COMPANYNAME=`getconfigvalue $OKS_HTTP_CONF company`
	else
		DEFAULT_OKS_COMPANYNAME=""
	fi

	printf "\nWhat is your company name ?\n"
	printf "This name will be used inside your web pages in\n"
	printf "order to personalize your OpenKeyServer.\n"

	ANSWER=""

	prompt "Company name : " "$DEFAULT_OKS_COMPANYNAME" "$COMPANYNAME"

	OKS_COMPANY_NAME=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_ADMINISTRATOR=`getconfigvalue $OKS_HTTP_CONF admin`
	else
		DEFAULT_OKS_ADMINISTRATOR=""
	fi

	prompt "\nWhat is the email address of this keyserver administrator ? " "$DEFAULT_OKS_ADMINISTRATOR" $EMAILADDRESS

	OKS_ADMINISTRATOR=$ANSWER
}


###########################################################################


configureoksd()
{
	printf "\n\nConfiguring OpenKeyServer Database Server\n"
	
	DEFAULT_OKSD_BIND_ADDRESS=`getconfigvalue $OKSD_CONF bindaddress`

	prompt "\nBind address : " $DEFAULT_OKSD_BIND_ADDRESS $IPADDR

	OKSD_BIND_ADDRESS=$ANSWER

	DEFAULT_OKSD_BIND_PORT=`getconfigvalue $OKSD_CONF bindport`

	OKSD_BIND_PORT=0

	until ( test $OKSD_BIND_PORT -gt 0 )
	do
		prompt "\nBind port : " $DEFAULT_OKSD_BIND_PORT ".+"
		OKSD_BIND_PORT=$ANSWER
	done

	DEFAULT_OKSD_SYSLOG_FACILITY=`getconfigvalue $OKSD_CONF syslogfacility`

	prompt "\nSyslog facility : " $DEFAULT_OKSD_SYSLOG_FACILITY

	OKSD_SYSLOG_FACILITY=$ANSWER

	DEFAULT_OKSD_DATABASE_NAME=`getconfigvalue $OKSD_CONF databasename`

	prompt "\nDatabase name : " $DEFAULT_OKSD_DATABASE_NAME

	OKSD_DATABASE_NAME=$ANSWER
}


###########################################################################


configureoks_http()
{
	printf "\n\nConfiguring OpenKeyServer HTTP gateway\n"
	
	DEFAULT_OKS_HTTP_BIND_ADDRESS=`getconfigvalue $OKS_HTTP_CONF bindaddress`

	prompt "\nBind address : " $DEFAULT_OKS_HTTP_BIND_ADDRESS $IPADDR

	OKS_HTTP_BIND_ADDRESS=$ANSWER

	DEFAULT_OKS_HTTP_BIND_PORT=`getconfigvalue $OKS_HTTP_CONF bindport`

	OKS_HTTP_BIND_PORT=0

	until ( test $OKS_HTTP_BIND_PORT -gt 0 )
	do
		prompt "\nBind port : " $DEFAULT_OKS_HTTP_BIND_PORT ".+"
		OKS_HTTP_BIND_PORT=$ANSWER
	done

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_HTTP_SYSLOG_FACILITY=`getconfigvalue $OKS_HTTP_CONF syslogfacility`
	else
		DEFAULT_OKS_HTTP_SYSLOG_FACILITY=$OKSD_SYSLOG_FACILITY
	fi

	prompt "\nSyslog facility : " $DEFAULT_OKS_HTTP_SYSLOG_FACILITY

	OKS_HTTP_SYSLOG_FACILITY=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_HTTP_SMTP_SERVER=`getconfigvalue $OKS_HTTP_CONF smtpserver`
	else
		DEFAULT_OKS_HTTP_SMTP_SERVER=$DEFAULT_SMTP_SERVER
	fi
	
	prompt "\nSMTP server : " $DEFAULT_OKS_HTTP_SMTP_SERVER

	OKS_HTTP_SMTP_SERVER=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_BASE_URL=`getconfigvalue $OKS_HTTP_CONF baseurl`
	else
		if ( test $OKS_HTTP_BIND_ADDRESS = "0.0.0.0" )
		then
			DEFAULT_OKS_BASE_URL="http://`uname -n`"
		else
			DEFAULT_OKS_BASE_URL="http://$OKS_HTTP_BIND_ADDRESS"
		fi
	fi

	printf "\nWhat is the base URL of your web server ?\n"
	printf "Your OpenKeyServer HTTP gateway is provided with a set of web pages you\n"
	printf "can store on your web server in order to access it through any web browser.\n"
	printf "This base URL will be used to build the links between these different web\n"
	printf "pages and must not contain any reference to any file. Valid base URLs are\n"
	printf "for instance http://www.some.site.edu and http://www.some.site.edu/keyserver\n"
	printf "Note that the trailing / must not be introduced.\n"
	printf "When the installation is done, don't forget to copy the directories located in\n"
	printf "$OKS_BASE_DIR/$DEFAULT_WEBPAGES_DIR on your web server.\n"
	
	prompt "Base URL : " "$DEFAULT_OKS_BASE_URL" $URL

	OKS_BASE_URL=$ANSWER
}


###########################################################################


configureoks_smtp()
{
	printf "\n\nConfiguring OpenKeyServer SMTP gateway\n"

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SMTP_POP3_SERVER=`getconfigvalue $OKS_SMTP_CONF pop3server`
	else
		DEFAULT_OKS_SMTP_POP3_SERVER=$DEFAULT_POP3_SERVER
	fi

	prompt "\nPOP3 server : " $DEFAULT_OKS_SMTP_POP3_SERVER
	OKS_SMTP_POP3_SERVER=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SMTP_POP3_LOGIN=`getconfigvalue $OKS_SMTP_CONF pop3login`
	else
		DEFAULT_OKS_SMTP_POP3_LOGIN=""
	fi

	prompt "\nPOP3 login : " $DEFAULT_OKS_SMTP_POP3_LOGIN
	OKS_SMTP_POP3_LOGIN=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SMTP_POP3_PASSWORD=`getconfigvalue $OKS_SMTP_CONF pop3password`
	else
		DEFAULT_OKS_SMTP_POP3_PASSWORD=""
	fi

	prompt "\nPOP3 password : " $DEFAULT_OKS_SMTP_POP3_PASSWORD
	
	OKS_SMTP_POP3_PASSWORD=$ANSWER

	prompt "\nMailbox polling interval (in seconds) : " "`getconfigvalue $OKS_SMTP_CONF pollinterval`"

	OKS_SMTP_POLLINTERVAL=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SMTP_SYSLOG_FACILITY=`getconfigvalue $OKS_SMTP_CONF syslogfacility`
	else
		DEFAULT_OKS_SMTP_SYSLOG_FACILITY=$OKS_HTTP_SYSLOG_FACILITY
	fi

	prompt "\nSyslog facility : " $DEFAULT_OKS_SMTP_SYSLOG_FACILITY

	OKS_SMTP_SYSLOG_FACILITY=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SMTP_SMTP_SERVER=`getconfigvalue $OKS_SMTP_CONF smtpserver`
	else
		DEFAULT_OKS_SMTP_SMTP_SERVER=$OKS_HTTP_SMTP_SERVER
	fi

	prompt "\nSMTP server : " $DEFAULT_OKS_SMTP_SMTP_SERVER

	OKS_SMTP_SMTP_SERVER=$ANSWER
}


###########################################################################


configureoks_synchro()
{
	printf "\n\nConfiguring OpenKeyServer Synchronization\n"

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_EMAIL_ADDRESS=`getconfigvalue $OKS_SMTP_CONF me`
	else
		DEFAULT_OKS_EMAIL_ADDRESS=$DEFAULT_EMAIL_ADDRESS
	fi

	prompt "\nEmail address of this Keyserver : " $DEFAULT_OKS_EMAIL_ADDRESS $EMAILADDRESS

	OKS_HTTP_EMAIL_ADDRESS=$ANSWER

	OKS_SMTP_EMAIL_ADDRESS=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SYNC_ERRORS=`getconfigvalue $OKS_SMTP_CONF errors`
	else
		DEFAULT_OKS_SYNC_ERRORS=$OKS_ADMINISTRATOR
	fi

	prompt "\nEmail address for synchro errors : " $DEFAULT_OKS_SYNC_ERRORS $EMAILADDRESS

	OKS_HTTP_SYNC_ERRORS=$ANSWER

	OKS_SMTP_SYNC_ERRORS=$ANSWER

	if ( test $OKS_PRESERVE_CONFIG -ne 0 )
	then
		DEFAULT_OKS_SYNC_SITES=`egrep "^site" $OKS_CONF_DIR/*.conf | $AWK '{ print $2 }' | sort | uniq | $AWK '{ printf $1 " " }'`
	else
		DEFAULT_OKS_SYNC_SITES=""
	fi

	prompt "\nEmail addresses of Keyservers to synchronize with ( space separated ) : " " $DEFAULT_OKS_SYNC_SITES" ""

	OKS_HTTP_SYNC_SITES=$ANSWER

	OKS_SMTP_SYNC_SITES=$ANSWER
}


###########################################################################


saveconfig_oksd()
{
	setconfigvalue $OKSD_CONF bindaddress $OKSD_BIND_ADDRESS
	setconfigvalue $OKSD_CONF bindport $OKSD_BIND_PORT
	setconfigvalue $OKSD_CONF syslogfacility $OKSD_SYSLOG_FACILITY
	setconfigvalue $OKSD_CONF databasename $OKSD_DATABASE_NAME
	if ( test $OKS_PRESERVE_CONFIG -eq 0 )
	then
		setconfigvalue $OKSD_CONF databasedir "$OKS_BASE_DIR`getconfigvalue $OKSD_CONF databasedir`"
		setconfigvalue $OKSD_CONF recoverdir "$OKS_BASE_DIR`getconfigvalue $OKSD_CONF recoverdir`"
	fi
}


###########################################################################


saveconfig_oks_http()
{
	setconfigvalue $OKS_HTTP_CONF company $OKS_COMPANY_NAME
	setconfigvalue $OKS_HTTP_CONF admin $OKS_ADMINISTRATOR
	setconfigvalue $OKS_HTTP_CONF baseurl $OKS_BASE_URL
	setconfigvalue $OKS_HTTP_CONF bindaddress $OKS_HTTP_BIND_ADDRESS
	setconfigvalue $OKS_HTTP_CONF bindport $OKS_HTTP_BIND_PORT
	setconfigvalue $OKS_HTTP_CONF syslogfacility $OKS_HTTP_SYSLOG_FACILITY
	setconfigvalue $OKS_HTTP_CONF databaseaddress $OKSD_BIND_ADDRESS
	setconfigvalue $OKS_HTTP_CONF databaseport $OKSD_BIND_PORT
	setconfigvalue $OKS_HTTP_CONF smtpserver $OKS_HTTP_SMTP_SERVER
	# We are forced to overwrite previous template parameters 
	setconfigvalue $OKS_HTTP_CONF extract "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF extract`"
	setconfigvalue $OKS_HTTP_CONF search "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF search`"
	setconfigvalue $OKS_HTTP_CONF submit "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF submit`"
	setconfigvalue $OKS_HTTP_CONF nomatch "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF nomatch`"
	setconfigvalue $OKS_HTTP_CONF error "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF error`"	
	setconfigvalue $OKS_HTTP_CONF enextract "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF enextract`"
	setconfigvalue $OKS_HTTP_CONF ensearch "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF ensearch`"
	setconfigvalue $OKS_HTTP_CONF ensubmit "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF ensubmit`"
	setconfigvalue $OKS_HTTP_CONF ennomatch "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF ennomatch`"
	setconfigvalue $OKS_HTTP_CONF enerror "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF enerror`"	
	setconfigvalue $OKS_HTTP_CONF sherlock "$OKS_BASE_DIR`getconfigvalue $OKS_HTTP_CONF sherlock`"	

	setconfigvalue $OKS_HTTP_CONF errors $OKS_HTTP_SYNC_ERRORS
	setconfigvalue $OKS_HTTP_CONF me $OKS_HTTP_EMAIL_ADDRESS

	for SITE in $OKS_HTTP_SYNC_SITES; do
		if ( ( test $OKS_PRESERVE_CONFIG -eq 0 ) \
			|| ( test -z "`egrep "^site.*$SITE" $OKS_CONF_DIR/$OKS_HTTP_CONF`" ) )
		then
			echo "site	$SITE" >> $OKS_CONF_DIR/$OKS_HTTP_CONF;
		fi
	done
}


###########################################################################


saveconfig_oks_smtp()
{
	setconfigvalue $OKS_SMTP_CONF company $OKS_COMPANY_NAME
	setconfigvalue $OKS_SMTP_CONF admin $OKS_ADMINISTRATOR
	setconfigvalue $OKS_SMTP_CONF baseurl $OKS_BASE_URL
	setconfigvalue $OKS_SMTP_CONF smtpserver $OKS_SMTP_SMTP_SERVER
	setconfigvalue $OKS_SMTP_CONF pollinterval $OKS_SMTP_POLLINTERVAL
	setconfigvalue $OKS_SMTP_CONF syslogfacility $OKS_SMTP_SYSLOG_FACILITY
	setconfigvalue $OKS_SMTP_CONF helpdir "$OKS_BASE_DIR`getconfigvalue $OKS_SMTP_CONF helpdir`"
	setconfigvalue $OKS_SMTP_CONF databaseaddress $OKSD_BIND_ADDRESS
	setconfigvalue $OKS_SMTP_CONF databaseport $OKSD_BIND_PORT
	setconfigvalue $OKS_SMTP_CONF pop3server $OKS_SMTP_POP3_SERVER
	setconfigvalue $OKS_SMTP_CONF pop3login $OKS_SMTP_POP3_LOGIN
	setconfigvalue $OKS_SMTP_CONF pop3password $OKS_SMTP_POP3_PASSWORD
	# We are forced to overwrite previous template parameters 
	setconfigvalue $OKS_SMTP_CONF error "$OKS_BASE_DIR`getconfigvalue $OKS_SMTP_CONF error`"	
	setconfigvalue $OKS_SMTP_CONF extract "$OKS_BASE_DIR`getconfigvalue $OKS_SMTP_CONF extract`"
	setconfigvalue $OKS_SMTP_CONF search "$OKS_BASE_DIR`getconfigvalue $OKS_SMTP_CONF search`"
	setconfigvalue $OKS_SMTP_CONF submit "$OKS_BASE_DIR`getconfigvalue $OKS_SMTP_CONF submit`"
	setconfigvalue $OKS_SMTP_CONF nomatch "$OKS_BASE_DIR`getconfigvalue $OKS_SMTP_CONF nomatch`"

	setconfigvalue $OKS_SMTP_CONF errors $OKS_SMTP_SYNC_ERRORS
	setconfigvalue $OKS_SMTP_CONF me $OKS_SMTP_EMAIL_ADDRESS

	for SITE in $OKS_SMTP_SYNC_SITES; do
		if ( ( test $OKS_PRESERVE_CONFIG -eq 0 ) \
			|| ( test -z "`egrep "^site.*$SITE" $OKS_CONF_DIR/$OKS_SMTP_CONF`" ) )
		then
			echo "site	$SITE" >> $OKS_CONF_DIR/$OKS_SMTP_CONF;
		fi
	done
}


###########################################################################


saveconfig_web_pages()
{	
	for WEBPAGE in `find "$OKS_BASE_DIR/$DEFAULT_WEBPAGES_DIR" -name \*.htm -print`; do
		$SED "s/<?oks_company_name>/$OKS_COMPANY_NAME/g" $WEBPAGE > $WEBPAGE.2
		mv $WEBPAGE.2 $WEBPAGE
	done

	for WEBPAGE in `find "$OKS_BASE_DIR/$DEFAULT_WEBPAGES_DIR" -name \*.htm -print`; do
		$SED "s/<?oks_administrator>/$OKS_ADMINISTRATOR/g" $WEBPAGE > $WEBPAGE.2
		mv $WEBPAGE.2 $WEBPAGE
	done

	if ( test $OKS_HTTP_BIND_ADDRESS = "0.0.0.0" )
	then
		VALID_OKS_HTTP_BIND_ADDRESS=`uname -n`
	else
		VALID_OKS_HTTP_BIND_ADDRESS=$OKS_HTTP_BIND_ADDRESS
	fi

	for WEBPAGE in `find "$OKS_BASE_DIR/$DEFAULT_WEBPAGES_DIR" -name \*.htm -print`; do
		$SED "s/<?oks_http_bind_address>/$VALID_OKS_HTTP_BIND_ADDRESS/g" $WEBPAGE > $WEBPAGE.2
		mv $WEBPAGE.2 $WEBPAGE
	done

	for WEBPAGE in `find "$OKS_BASE_DIR/$DEFAULT_WEBPAGES_DIR" -name \*.htm -print`; do
		$SED "s/<?oks_http_bind_port>/$OKS_HTTP_BIND_PORT/g" $WEBPAGE > $WEBPAGE.2
		mv $WEBPAGE.2 $WEBPAGE
	done
}


###########################################################################


createdatabase()
{
	OKSD_DATABASE_DIR=`getconfigvalue $OKSD_CONF chroot``getconfigvalue $OKSD_CONF databasedir`

	( $OKS_BASE_DIR/bin/oksdb_create $OKSD_DATABASE_NAME $OKSD_DATABASE_DIR > /dev/null ) || error "Cannot create database in $OKSD_DATABASE_DIR"

	prompt "\n\nDo you want to load records to the OpenKeyServer's database now ? " "Yes" $YESNO

	if ( echo "$ANSWER" | egrep "$YES" > /dev/null )
	then
		ANSWER="empty"

		until ( test -z "$ANSWER" )
 		do
			prompt "\nEnter the path of the PGP keyring to store (ENTER to finish) : "
	
			if [ ! -z "$ANSWER" ] 
			then
				if [ -f "$ANSWER" ]
				then	
					printf "\n"
					$OKS_BASE_DIR/bin/oksdb_update $OKSD_DATABASE_NAME $OKSD_DATABASE_DIR $ANSWER || printf "\nDatabase in $OKSD_DATABASE_DIR not updated\n"
				else
					printf "\n\"$ANSWER\" not found. Please try again.\n"
				fi
			fi
		done

		printf "\nDatabase successfully created\n"
	fi
}


###########################################################################
#
# MAIN
#
###########################################################################

umask 077

clear

printf "\n\nOpenKeyServer installation utility\n"

selectfile

selectdir

preserveconfig

untaroks

clear

configureoks

clear

configureoksd

clear

configureoks_http

clear

configureoks_smtp

clear

configureoks_synchro

clear

printf "\n\nSaving OpenKeyServer configuration parameters... Please wait\n"

saveconfig_oksd

saveconfig_oks_http

saveconfig_oks_smtp

saveconfig_web_pages

printf "\nThe web pages located in your directory $OKS_BASE_DIR/$DEFAULT_WEBPAGES_DIR\n"
printf "are now configured. Don't forget to copy them to your web server directory.\n"

prompt "\nPress enter..." 

clear

createdatabase

clear

printf "\n\nOpenKeyServer installation done !\n\n"

exit 0


###########################################################################
