| ' . substr($buffer, 0, 26);
$result .= ' | ';
$i = strpos($buffer, ']', 27);
$result .= ( substr($buffer, 28, $i - 28) );
$result .= ' | ';
$result .= htmlspecialchars(substr($buffer, $i + 2));
}
} elseif ($start) {
// multi-line output
$result .= ' ' . htmlspecialchars($buffer);
}
$curpos = ftell($fd);
if ($curpos >= $endpos) {
break;
}
} while ($buffer = fgets($fd));
fclose($fd);
if ($start) {
$result .= ' |
' . "\n";
}
$res = [];
$res[] = $line;
$res[] = $totalLine;
$res[] = $result;
return $res;
}
public function getServerLog()
{
if ($this->serverLog == null) {
require_once('ConfigFileEx.php');
$confpath = $_SERVER['LS_SERVER_ROOT'] . "conf/httpd_config.xml"; //fixed location
$logpath = ConfigFileEx::grepTagValue($confpath, 'logging.log.fileName');
$first = substr($logpath, 0, 1);
if ($first == '$') {
if (strncasecmp('$SERVER_ROOT', $logpath, 12) == 0) {
$logpath = $_SERVER['LS_SERVER_ROOT'] . substr($logpath, 13);
}
} elseif ($first == '/') {
if (isset($_SERVER['LS_CHROOT'])) {
$root = $_SERVER['LS_CHROOT'];
$len = strlen($root);
if (strncmp($logpath, $root, $len) == 0) {
$logpath = substr($logpath, $len);
}
}
} else {
// treat relative path to SERVER_ROOT
$logpath = $_SERVER['LS_SERVER_ROOT'] . $logpath;
}
$this->serverLog = str_replace('//', '/', $logpath);
}
return $this->serverLog;
}
public function download($version)
{
//validate param
if (!preg_match("/^\d+\.\d+(\.\d+)?(RC\d+)?$/", $version)) {
return false;
}
$product = PRODUCT::GetInstance();
// e.g.: 'lsws-4.0.10-ent-i386-linux.tar.gz'
$edition = 'std';
if ($product->edition == 'ENTERPRISE') {
$edition = 'ent';
}
$platform = $_SERVER['LS_PLATFORM'];
if (strpos($platform, 'freebsd') !== false) {
$pfrelease = explode('.', php_uname('r'));
if ($pfrelease[0] >= 6) {
$platform .= '6';
}
}
$main_ver = $version[0] . '.0';
$file = strtolower($product->type) . '-' . $version . '-' . $edition . '-' . $platform . '.tar.gz';
$downloadurl = 'http://download.litespeedtech.com/packages/' . $main_ver . '/' . $file;
$savedfile = $_SERVER['LS_SERVER_ROOT'] . 'autoupdate/' . $file;
//echo "download url: $downloadurl\n";
$buffer = file_get_contents($downloadurl);
if ($buffer == false) {
return false;
}
$saved = fopen($savedfile, 'wb');
if ($saved == false) {
return false;
}
$i = fwrite($saved, $buffer);
if (!fclose($saved) || $i == false) {
return false;
}
return true;
}
public function loadParam(&$holder, $line)
{
$t = preg_split('/[\s,:]/', $line, -1, PREG_SPLIT_NO_EMPTY);
$c = count($t) / 2;
for ($i = 0; $i < $c; ++$i) {
if (is_array($holder) && array_key_exists($t[2 * $i], $holder)) {
$holder[$t[2 * $i]] += $t[2 * $i + 1];
} else {
$holder[$t[2 * $i]] = $t[2 * $i + 1];
}
}
}
public static function GetLoadAvg()
{
$avgload = \sys_getloadavg();
if ($avgload === false) {
return 'N/A';
}
return implode(', ', array_map(function($load) {
return round($load, 3);
}, $avgload));
}
}