#!/bin/sh

set -e

TMP_PHP_SCRIPT=/tmp/sb_getkey.php
TMP_PKP_CHILD=/tmp/php_child.php

trap "rm -f $TMP_PHP_SCRIPT $TMP_PKP_CHILD" EXIT

cat > $TMP_PKP_CHILD << 'EOF'
<?php
	class Tmp_Pkp13 extends SB_Pkp13 {
		public function getPassword() { return $this->_getPassword(); } 
		public function getLogin() { return $this->_getLogin(); } 
	}

EOF


cat > $TMP_PHP_SCRIPT << 'EOF'
<?php

function load_ioncube() {
        $__oc=strtolower(substr(php_uname(),0,3));
        $__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');
        if (!extension_loaded('ionCube Loader')) {
		//If at first you don't succeed,
                if (!@dl($__ln)) {
			//try,
			if (!@dl('../'.$__ln)) {
				//try, again.
				@dl('../../'.$__ln);
			}
		}
        }
	else { return; }
	//Then quit. No use being a damn fool about it.
        if (!extension_loaded('ionCube Loader')) {
		echo "No ioncube extension\n";
		exit(1);
	}
}
function load_sitebuilder2() {
  if (!extension_loaded("sitebuilder")) {
        if (!dl("sitebuilder.so")) {
                echo "No sitebuilder core\n";
                exit(1);
        }
  }
}

function load_sitebuilder3() {
  if (!extension_loaded("sitebuilder3")) {
        if (!dl("sitebuilder3.so")) {
                echo "No sitebuilder3 core\n";
                exit(1);
        }
  }
}

if($argc < 3) {
  echo "No enough arguments\n";
  exit(1);
}

$sb_path = $argv[1];
$version = $argv[2];

//See if we are asked to check if this php can run sitebuilder
if ($sb_path === "checkphp") {
	load_ioncube();
	if ($version{0} == '3' || $version{0} == '4') {
		load_sitebuilder3();
	}
	else {
		load_sitebuilder2();
	}
	exit(0);
}

echo "Key Info v1.0\n";

if($version{0} == '3' || $version{0} == '4') {
  load_sitebuilder3();
  load_ioncube();

  require_once($sb_path.'/htdocs/init.php');
  require_once('SB/autoload.php');
  require_once('/tmp/php_child.php');

  $license = new sb_license('');
  Base_Registry::put('license', $license);
  SB_Key::loadActiveKey();

  $pkp13 = new Tmp_Pkp13();
  echo $pkp13->getLogin() . "\n"; //[ka_product_login]
  echo $pkp13->getPassword() . "\n"; //[ka_product_password]
  echo Base_Pkp13::getDefaultServerUrl()."\n"; //[ka_url]
  echo $license->getProperty('key-number')."\n"; //[key_number]
  echo $license->getProperty('update_password')."\n"; //[key_update_password]

} else if($version{0} == '2') {
  load_sitebuilder2();
  load_ioncube();

  require_once($sb_path.'/include/consts.inc');
  require_once($sb_path.'/include/kernel/licensekey.php');
  $key = $oLicenseKey->SB_GetKey();
  if(!is_array($key) || (is_array($key) && sizeof($key) == 0)) {
	echo "Unable to get key information";
	exit(1);
  }
  echo "SiteBuilderLogin\n";
  echo "yH86i0LjWE70n3Lehf1bvTyzQ5t09oVu\n";
  echo "https://ka.swsoft.com:5224\n";
  echo $key['key_number']."\n";
  echo $key['update_password']."\n";
} else {
  echo "Unknown version\n";
  exit(1);
}

?>
EOF


if [ -d /usr/local/sitebuilder ] && [ -f /usr/local/sitebuilder/.version ]; then
	SITEBUILDER_PATH="/usr/local/sitebuilder"
elif  [ -d /opt/sitebuilder ] && [ -f /opt/sitebuilder/.version ]; then
	SITEBUILDER_PATH="/opt/sitebuilder"
else
	echo "SiteBuilder not found"
	exit 1
fi

sb_version=`cat ${SITEBUILDER_PATH}/.version`

if [ -z "$sb_version" ]; then
  echo "SiteBuilder not found"
  exit 3
fi

#major_sb_version=`echo $sb_version | cut -d. -f1` 

PHPCLI_PATHS="/usr/local/sitebuilder/bin/php \
	 /opt/php52/bin/php5 \
	 /opt/php51/bin/php5 \
	 /opt/php5/bin/php \
	 /usr/bin/php5 \
	 /usr/bin/php \
	 /usr/local/bin/php"
phpcli_path=

for path in  $PHPCLI_PATHS; do
  [ -x $path ] || continue;
  php_ver=`echo "<?php echo phpversion(); ?>" | $path -q 2>/dev/null | awk -F. '{print \$1\$2}'`;
  ($path $TMP_PHP_SCRIPT checkphp $sb_version >/dev/null 2>&1) || continue;
  phpcli_path=$path
  break;
done								

if [ -z $phpcli_path ] || [ ! -x $phpcli_path ]; then
  echo "No PHP for this version of SiteBuilder was found"
  exit 2
fi

if $phpcli_path -v 2>/dev/null | grep -q '(cgi)'; then
	$phpcli_path $TMP_PHP_SCRIPT $SITEBUILDER_PATH $sb_version 2>/dev/null | tail -6
else
	$phpcli_path $TMP_PHP_SCRIPT $SITEBUILDER_PATH $sb_version 2>/dev/null
fi

exit 0

