#!/bin/sh
# rds 11 August 2006    
# Generic Script to install License Management Software. 

test `uname -s` = Linux && echocmd="echo -e" || echocmd="echo"

# ******** Ensure that the following variable always contains the version no
# ******** of the current License Manager.
THISVER=129
#*********

if test ! -w /etc/passwd
then
	$echocmd "root でなければこのスクリプトは実行できません"
	exit 1
fi

set +u

unset COBPATH
unset COBDATA

COBSW=""
export COBSW

WARN=0
COBDIR=`pwd`
export COBDIR

LD_LIBRARY_PATH=$COBDIR/lib:$LD_LIBRARY_PATH:/lib
export LD_LIBRARY_PATH

# Initialise ASLM if used
if test -x ./initaslm
then
	./initaslm
else
	if test -x ../aslmf/initaslm
	then
		../aslmf/initaslm
	fi
fi

OLDVERNO=`./lmfgetpv v`
if test "$OLDVERNO." != "."
then
	ADMINDIR=`./lmfgetpv p`

# update existing PRODFILE if located
	if test "$ADMINDIR." != "."
	then
		./lmfgetpv i $ADMINDIR
# now copy it to this directory for later use
		if test "$?" = "0"
		then
			cp $ADMINDIR/PRODFILE .
		fi
	fi

	if test "$ADMINDIR." = "."
	then
# license manager running, but its launch directory no longer exists 
		if test "$OLDVERNO" -lt "$THISVER"
		then
			$echocmd "\n"
			$echocmd "現在、このバージョンより古い License Manager が"
			$echocmd "システム上で動作しています。"
	        fi

		if test "$OLDVERNO" -eq "$THISVER"
		then
			$echocmd "\n"
			$echocmd "現在、このバージョンより古い可能性のある License Manager が"
			$echocmd "システム上で動作しています。"
		fi

		if test "$OLDVERNO" -gt "$THISVER"
		then     
			$echocmd "\n"
			$echocmd "現在、このバージョンより新しい License Manager が"
			$echocmd "システム上で動作しています。"
		fi

		$echocmd "しかし、ロード元のディレクトリが既に存在しません。\n"
        	$echocmd "現在動作中の License Manager を今すぐ停止しますか? (y/n)"
        	read y
	        case "$y" in
               		y*|Y*)  ./lmfgetpv k
	                       $echocmd "\nLicense Manager 停止\n"
                       		;;
                        *)      ;;
        	esac

               $echocmd "\nこのバージョンの License Manager のインストールを続けますか (y/n)?"
               read y
               case "$y" in
                   y*|Y*)  OLDVERNO=
	                   ADMINDIR=
                           ;;
                   *)      exit 1
                           ;;
               esac
	fi
fi

if test "$OLDVERNO." != "."
then
	if test "$OLDVERNO" -lt "$THISVER"
# license manager running, and its launch directory is located        
	then
		$echocmd "\n"
		$echocmd "現在、このバージョンより古い License Manager が"
		$echocmd "システム上で動作しています。これは、 $ADMINDIR にインストール"
		$echocmd "されています。\n"
                $echocmd "このバージョンをインストールしてアップグレードすることをお推めします。"
                $echocmd "既存のインストール済みライセンスはそのままで影響は受けません。"
		$echocmd "この新しいバージョンの License Manager をインストールする場合は、"
        fi

	if test "$OLDVERNO" -eq "$THISVER"
	then
		$echocmd "\n"
		$echocmd "現在、このバージョンより古い可能性のある License Manager が"
		$echocmd "システム上で動作しています。これは、 $ADMINDIR にインストール"
		$echocmd "されています。\n"
                $echocmd "このバージョンをインストールしてアップグレードすることをお推めします。"
                $echocmd "既存のインストール済みライセンスはそのままで影響は受けません。"
		$echocmd "この新しいバージョンの License Manager をインストールする場合は、"
        fi

	if test "$OLDVERNO" -gt "$THISVER"
	then     
		$echocmd "\n"
		$echocmd "現在、このバージョンより新しい License Manager が"
		$echocmd "システム上で動作しています。これは、 $ADMINDIR にインストール"
		$echocmd "されています。\n"
		$echocmd "既に動作しているものより古いバージョンの License Manager を"
		$echocmd "インストールしようとしています。\n"
		$echocmd "それでもこの古いバージョンの License Manager をインストールする場合は、"
        fi

	$echocmd "$ADMINDIR にインストールされます。現在動作中のバージョンは停止しなければいけません。\n"
	$echocmd "$ADMINDIR にインストールしますか\n"
        $echocmd "(これにより現在動作中の License Manager は停止します) ? (y/n)"
        read y
        case "$y" in
               y*|Y*)  ./lmfgetpv k
		       while test -w "$ADMINDIR/mflm_manager"
		       do
			    rm $ADMINDIR/mflm_manager
		       done
                       $echocmd "\nLicense Manager 停止\n"
                       ;;
               *)      $echocmd "\nこの新しいバージョンの License Manager を"
                       $echocmd "$ADMINDIR とは違うディレクトリにインストールしますか? (y/n)"
                       read y
                       case "$y" in
                           y*|Y*)  OLDADMINDIR=$ADMINDIR
                                   ADMINDIR=
                                   ;;
                           *)      exit 1
                                   ;;
                       esac
			;;
        esac
fi
if test "$ADMINDIR." = "."
then
	WARN=1

	DEFDIR="/opt/microfocus/mflmf"

	INVALID=TRUE
	while test "$INVALID" = "TRUE"
	do
		$echocmd "\nLicense Manager をインストールするディレクトリ名を入力してください"
		$echocmd "(デフォルトディレクトリ $DEFDIR にする場合は Enter を押してください)"  
		INVALID=FALSE
		read ADMINDIR

		if test "$ADMINDIR" = "`pwd`"
		then
			INVALID=TRUE
			$echocmd "このディレクトリにはインストールできません"
		fi

		if test "$ADMINDIR" = "."
		then
			INVALID=TRUE
			$echocmd "このディレクトリにはインストールできません"
		fi

		if test "$ADMINDIR" = "./"
		then
			INVALID=TRUE
			$echocmd "このディレクトリにはインストールできません"
		fi
		if expr "$ADMINDIR" : '[^\/]' > /dev/null
		then
			INVALID=TRUE
			$echocmd "'/' で始まる絶対パス名を入力してください。"
		fi
	done


	if test "$ADMINDIR." = "."
	then
		ADMINDIR=$DEFDIR
	fi

        if test "$OLDADMINDIR" = "$ADMINDIR"
        then
           $echocmd "License Manager を停止しないと、ここにはインストールできません!"
           exit 1
        fi

	if test ! -d "$ADMINDIR"
	then
		$echocmd "$ADMINDIR は存在しません。"
		$echocmd "作成しますか? (y/n) "
		read y
		case "$y" in
			y*|Y*)	mkdir -p $ADMINDIR
				chmod 777 $ADMINDIR
				;;
			*)	ADMINDIR=
				exit 1
				;;
		esac
	fi
fi

# Check this version no against version in install directory (if any)
if test "$WARN" = "1"
then
  if test -f $ADMINDIR/LMFVERNO
  then
	OLDVERNO=`cat $ADMINDIR/LMFVERNO`
	if test "$OLDVERNO" -gt "$THISVER"
	then     
		$echocmd "\n"
		$echocmd "このバージョンより新しい License Manager が"
		$echocmd "既に $ADMINDIR にインストール"
		$echocmd "されています。\n"
		$echocmd "既にインストール済みものより古いバージョンの License Manager を"
		$echocmd "インストールしようとしています。\n"
		INVALID=TRUE
		while test "$INVALID" = "TRUE"
		do
        		$echocmd "$ADMINDIR にインストールを続けますか (y/n) "
		        read y
       			case "$y" in
       	        		y*|Y*)  INVALID=FALSE
                                   ;;
       	        		n*|N*)  exit 1
                                   ;;
	                        *)      ;;
                       esac
		done
        fi
  fi
fi

if test ! -d $ADMINDIR/lib
then	
	mkdir $ADMINDIR/lib
	chmod 777 $ADMINDIR/lib
fi
if test ! -d $ADMINDIR/terminfo
then
	mkdir $ADMINDIR/terminfo
	chmod 777 $ADMINDIR/terminfo
fi


# update/create PRODFILE 
./lmfgetpv i $ADMINDIR
 
# now copy it to this directory so tar doesn't overwrite it
if test "$?" = "0"
then
	cp $ADMINDIR/PRODFILE .
fi

# delete any db that may have been previously created by user trying to
# use this directory as his lmf install directory. Failure to do this will
# cause this db to be installed as an invalid db to the lmf install directory. 

OLDDB=0
if test -f ./mflmfdb
then
	OLDDB=1
fi
if test -f ./mflmfdb.idx
then
	OLDDB=1
fi
if test -f ./mflmfdbX
then
	OLDDB=1
fi
if test -f ./mflmfdbX.idx
then
	OLDDB=1
fi
if test "$OLDDB" = "1"
then
	$echocmd "\n"
	$echocmd "カレントディレクトリに予期しないライセンスデータベースが存在しています。"
	INVALID=TRUE
	while test "$INVALID" = "TRUE"
	do
		$echocmd "このデータベースを削除してからインストールを続行しますか? (y/n) "
	        read y
		case "$y" in
               		y*|Y*)  INVALID=FALSE
                                rm ./mflmfdb*
                                ;;
        		n*|N*)  exit 1
                                ;;
               		*) 	;;
                esac
	done
fi


# cp -r * $ADMINDIR
# use tar instead of cp to maintain links

tar cf - . | (cd $ADMINDIR ; tar xf - )

if test ! -f $ADMINDIR/mflmfdb
then
	cd $ADMINDIR
	./bin/rts32 lmfnewdb
fi	
 
# create empty log/backup files now so restricted access not a problem
touch $ADMINDIR/mflm-history
touch $ADMINDIR/MF-LMF.log
touch $ADMINDIR/mflmfdbX
touch $ADMINDIR/mflmfdbX.idx

# create an LMFVERNO file
$echocmd $THISVER > $ADMINDIR/LMFVERNO

rm $ADMINDIR/lmfinstall

$echocmd "スーパユーザだけがライセンス管理システムにアクセスできるようにしますか? (y/n)"
read y
case "$y" in
	y*|Y*)  chmod 700 $ADMINDIR
      		;;
	*)      ;;
esac

chmod 555 $ADMINDIR/*
chmod 544 $ADMINDIR/mflm_manager
chmod 777 $ADMINDIR/mflmfdb*

$echocmd "echo Starting MFLM License Manager" > $ADMINDIR/mflmrcscript
$echocmd "COBDIR=$ADMINDIR" >> $ADMINDIR/mflmrcscript
$echocmd "export COBDIR" >> $ADMINDIR/mflmrcscript
 
$echocmd "LD_LIBRARY_PATH=\$COBDIR/lib:\$LD_LIBRARY_PATH:/lib" >> $ADMINDIR/mflmrcscript
$echocmd "export LD_LIBRARY_PATH" >> $ADMINDIR/mflmrcscript


$echocmd "cd $ADMINDIR" >> $ADMINDIR/mflmrcscript

$echocmd "./mflm_manager" >> $ADMINDIR/mflmrcscript
chmod 755 $ADMINDIR/mflmrcscript

$echocmd "License Manager をブート時に自動で起動させることを推奨します。"
$echocmd "License Manager をブート時に自動で起動させますか? (y/n)"
read y
case "$y" in
	y*|Y*)	
			cp $ADMINDIR/mflmrcscript /etc
			chmod 755 /etc/mflmrcscript
                        cp /etc/inittab /etc/inittab.bak
			check=`grep mflmrcscript /etc/inittab`
			if [ ! -z "$check" ]
			then
				fgrep -v "mflmrcscript" /etc/inittab.bak > /etc/inittab
			fi
 			$echocmd "mF:2345:wait:sh /etc/mflmrcscript > /dev/null 2>&1" >> /etc/inittab
       		;;

	*)	$echocmd "\nLicense Manager をブート時を自動で起動するには、"
                $echocmd "$ADMINDIR/mflmrcscript を /etc にコピーして、"
		$echocmd "ファイル /etc/inittab に以下のエントリを追加してください。:"
		$echocmd "mF:2345:wait:sh /etc/mflmrcscript > /dev/null 2>&1"
		$echocmd "\n詳細は、ご使用の OS のマニュアルを参照してください。\n"
		;;
esac
	
$echocmd $ADMINDIR > /tmp/lmfinstalldir
$echocmd "LMF のインストールを完了しました。\n"
