From f6ceaa03052e6878afd53a4bbb7f4429849fe25a Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 19 May 2014 15:30:59 +0200 Subject: OO style modules --- modules/minilinux.inc.php | 153 ++++++++++++++++++++++++---------------------- 1 file changed, 81 insertions(+), 72 deletions(-) (limited to 'modules/minilinux.inc.php') diff --git a/modules/minilinux.inc.php b/modules/minilinux.inc.php index 72af0eb4..6e68a34e 100644 --- a/modules/minilinux.inc.php +++ b/modules/minilinux.inc.php @@ -1,88 +1,97 @@ $files, 'token' => Session::get('token'))); -} + if (!User::hasPermission('superadmin')) { + Message::addError('no-permission'); + Util::redirect('?do=Main'); + } + } -function checkFile(&$files, $name) -{ - static $someId = 0; - $remote = CONFIG_REMOTE_ML . "/${name}.md5"; - $localTarget = CONFIG_HTTP_DIR . "/default/${name}"; - $local = "${localTarget}.md5"; - $localLock = "${localTarget}.lck"; + protected function doRender() + { + $files = array(); + mkdir(CONFIG_HTTP_DIR . "/default", 0755, true); + $this->checkFile($files, 'kernel'); + $this->checkFile($files, 'initramfs-stage31'); + $this->checkFile($files, 'stage32.sqfs'); + $this->checkFile($files, 'vmware.sqfs'); + $this->checkFile($files, 'nvidia_libs.sqfs'); + Render::addTemplate('page-minilinux', array( + 'files' => $files, + 'token' => Session::get('token') + )); + } - // Maybe already in progress? - if (file_exists($localLock)) { - $data = explode(' ', file_get_contents($localLock)); - if (count($data) == 2) { - $pid = (int)$data[0]; - if (posix_kill($pid, 0)) { - $files[] = array( - 'file' => $name, - 'id' => 'id' . $someId++, - 'pid' => $pid, - 'progress' => $data[1] - ); - return true; - } else { + private function checkFile(&$files, $name) + { + static $someId = 0; + $remote = CONFIG_REMOTE_ML . "/${name}.md5"; + $localTarget = CONFIG_HTTP_DIR . "/default/${name}"; + $local = "${localTarget}.md5"; + $localLock = "${localTarget}.lck"; + + // Maybe already in progress? + if (file_exists($localLock)) { + $data = explode(' ', file_get_contents($localLock)); + if (count($data) == 2) { + $pid = (int)$data[0]; + if (posix_kill($pid, 0)) { + $files[] = array( + 'file' => $name, + 'id' => 'id' . $someId++, + 'pid' => $pid, + 'progress' => $data[1] + ); + return true; + } else { + unlink($localLock); + } + } else { unlink($localLock); - } - } else { - unlink($localLock); - } - } + } + } - // Not in progress, normal display - if (!file_exists($local) || filemtime($local) + 300 < time()) { - if (file_exists($localTarget)) { - $existingMd5 = md5_file($localTarget); + // Not in progress, normal display + if (!file_exists($local) || filemtime($local) + 300 < time()) { + if (file_exists($localTarget)) { + $existingMd5 = md5_file($localTarget); + } else { + $existingMd5 = ''; + } + if (file_put_contents($local, $existingMd5) === false) { + @unlink($local); + Message::addWarning('error-write', $local); + } } else { - $existingMd5 = ''; + $existingMd5 = file_get_contents($local); } - if (file_put_contents($local, $existingMd5) === false) { - @unlink($local); - Message::addWarning('error-write', $local); + $existingMd5 = strtolower(preg_replace('/[^0-9a-f]/is', '', $existingMd5)); + $remoteMd5 = Util::download($remote, 3, $code); + $remoteMd5 = strtolower(preg_replace('/[^0-9a-f]/is', '', $remoteMd5)); + if ($code != 200) { + Message::addError('remote-timeout', $remote, $code); + return false; } - } else { - $existingMd5 = file_get_contents($local); - } - $existingMd5 = strtolower(preg_replace('/[^0-9a-f]/is', '', $existingMd5)); - $remoteMd5 = Util::download($remote, 3, $code); - $remoteMd5 = strtolower(preg_replace('/[^0-9a-f]/is', '', $remoteMd5)); - if ($code != 200) { - Message::addError('remote-timeout', $remote, $code); - return false; - } - if ($existingMd5 === $remoteMd5) { - // Up to date + if ($existingMd5 === $remoteMd5) { + // Up to date + $files[] = array( + 'file' => $name, + 'id' => 'id' . $someId++, + ); + return true; + } + // New version on server $files[] = array( - 'file' => $name, - 'id' => 'id' . $someId++, + 'file' => $name, + 'id' => 'id' . $someId++, + 'update' => true ); return true; } - // New version on server - $files[] = array( - 'file' => $name, - 'id' => 'id' . $someId++, - 'update' => true - ); - return true; } - -- cgit v1.2.3-55-g7522