<?php
class PRODUCT
{
public $product = null;
public $version = null;
public $edition = '';
public $type = 'LSWS';
public $tmp_path = null;
public $processes = 1;
public $new_release = null;
public $new_version = null;
public $cur_build = 0;
public $installed_releases = array();
private function __construct()
{
$this->init();
}
public static function GetInstance()
{
if ( !isset($GLOBALS['_PRODUCT_']) )
$GLOBALS['_PRODUCT_'] = new PRODUCT();
return $GLOBALS['_PRODUCT_'];
}
function init() {
$this->processes = DUtil::grab_input("server", 'LSWS_CHILDREN','int');
$matches = array();
$this->product = 'LiteSpeed Web Server';
$str = DUtil::grab_input("server",'LSWS_EDITION');
if ( preg_match('/^(.*)\/(.*)\/(.*)$/i', $str, $matches ) ) {
$this->edition = strtoupper(trim($matches[2]));
$this->version = trim($matches[3]);
}
$this->tmp_path = "/tmp/lshttpd/";
}
function getInstalled() {
$srt = DUtil::grab_input("server",'LS_SERVER_ROOT');
$dir = $srt . 'bin';
$dh = @opendir($dir);
if ($dh) {
while (($fname = readdir($dh)) !== false) {
$matches = array();
if (preg_match('/^lswsctrl\.(.*)$/', $fname, $matches)) {
$this->installed_releases[] = $matches[1];
}
}
closedir($dh);
}
$buildfile = $srt . 'BUILD';
if ( file_exists($buildfile)) {
$this->cur_build = trim(file_get_contents($buildfile));
}
}
function isInstalled($version) {
$state = FALSE;
foreach($this->installed_releases as $value) {
if($version == $value) {
return TRUE;
}
}
return $state;
}
function refreshVersion() {
$srt = DUtil::grab_input("server",'LS_SERVER_ROOT');
$versionfile = $srt . 'VERSION';
$this->version = trim( file_get_contents($versionfile) );
$buildfile = $srt . 'BUILD';
if ( file_exists($buildfile)) {
$this->cur_build = trim(file_get_contents($buildfile));
}
}
function getNewVersion() {
$srt = DUtil::grab_input("server",'LS_SERVER_ROOT');
$dir = $srt . 'autoupdate';
$releasefile = $srt . 'autoupdate/release';
if ( file_exists($releasefile) ) {
$this->new_release = trim( file_get_contents($releasefile) );
$matches = array();
if (strpos($this->new_release, '-')) {
if ( preg_match( '/^(.*)-/', $this->new_release, $matches ) ) {
$this->new_version = $matches[1];
}
}
else {
$this->new_version = $this->new_release;
}
}
}
}