if (!($path = realpath($path))) { exit(sprintf($message, $path)); } return $path; } $argv = $_SERVER['argv']; $autoloadDir = $bootstrapDir = null; $useNewDirectoryStructure = false; // allow the base path to be passed as the first argument, or default if (!empty($argv[1])) { $bootstrapDir = getRealpath($argv[1]); } if (!empty($argv[2])) { $autoloadDir = getRealpath($argv[2]); } if (!empty($argv[3])) { $useNewDirectoryStructure = true; } $rootDir = __DIR__ . '/../../../../../../../..'; if (null === $autoloadDir) { $autoloadDir = getRealpath($rootDir . '/app', 'Looks like you don\'t have a standard layout.'); } if (null === $bootstrapDir) { $bootstrapDir = $autoloadDir; if ($useNewDirectoryStructure) { $bootstrapDir = getRealpath($rootDir . '/var'); } } require_once $autoloadDir . '/autoload.php'; // here we pass realpaths as resolution between absolute and relative path can be wrong ScriptHandler::doBuildBootstrap($bootstrapDir);
$config = array("upload" => 1, "remoteupload" => 1, "delete" => 1, "rename" => 1, "edit" => 1, "chmod" => 1, "extract" => 1, "download" => 1, "selfdownload" => 1, "createdir" => 1, "createfile" => 1, "zipnload" => 1, "multiselect" => 1, "showlastmodified" => 0, "showfilesize" => 1, "showowner" => 1, "showgroup" => 1, "showpath" => 0, "showrights" => 2, "showhtdocs" => 1, "showhiddenfiles" => 1, "defaulttimezone" => "Europe/Berlin", "ajaxrequest" => 1); /**************************************************************************************** DONT CHANGE ANYTHING BELOW! ****************************************************************************************/ $curVersion = '1.0'; /**************************************************************************************** PHP API - SECTION ****************************************************************************************/ // API Switch // decides if the script should work as an API which returns JSON if (isset($_POST["api"])) { if ($_POST["api"] == "getRealpath") { if (isset($_POST["dir"]) && $_POST["dir"] != "") { getRealpath($_POST["dir"]); } else { echo json_encode(array("realpath" => "")); } } elseif ($_POST["api"] == "getFiles") { if (isset($_POST["dir"]) && isPathValid($_POST["dir"])) { getFiles($_POST["dir"]); } else { getFiles(""); } } else { if (isset($_POST["dir"]) && isPathValid($_POST["dir"])) { switch ($_POST["api"]) { case "createDir": createDir($_POST["dir"], $_POST["dirname"]); break;
public function go() { header("Content-Type: text/html; charset=UTF-8"); // Import Libraries \framework\import("org.yeager.framework.tools.password"); \framework\import("org.yeager.ui.common"); \framework\import("org.yeager.ui.koala"); \framework\import("org.yeager.ui.icons"); \framework\import("org.yeager.framework.tools.password"); \framework\import("org.yeager.framework.tools.http.redirect"); \framework\import("org.yeager.framework.tools.http.byteserve"); \framework\import("org.yeager.core.versionable"); \framework\import("org.yeager.core.tree"); \framework\import("org.yeager.core.permissions"); \framework\import("org.yeager.core.privileges"); \framework\import("org.yeager.core.propertysettings"); \framework\import("org.yeager.core.properties"); \framework\import("org.yeager.core.history"); \framework\import("org.yeager.core.jsqueue"); \framework\import("org.yeager.core.tags"); \framework\import("org.yeager.core.comments"); \framework\import("org.yeager.core.cblock"); \framework\import("org.yeager.core.cblockmgr"); \framework\import("org.yeager.core.entrymasks"); \framework\import("org.yeager.core.page"); \framework\import("org.yeager.core.pagemgr"); \framework\import("org.yeager.core.file"); \framework\import("org.yeager.core.filemgr"); \framework\import("org.yeager.core.filetypes"); \framework\import("org.yeager.core.views"); \framework\import("org.yeager.core.mailing"); \framework\import("org.yeager.core.mailingmgr"); \framework\import("org.yeager.core.templates"); \framework\import("org.yeager.core.usergroups"); \framework\import("org.yeager.core.sites"); \framework\import("org.yeager.core.languages"); \framework\import("org.yeager.core.reftracker"); \framework\import("org.yeager.core.scheduler"); \framework\import("org.yeager.core.extensionmgr"); \framework\import("org.yeager.core.extensions"); \framework\import("org.yeager.core.fileprocessor"); \framework\import("org.yeager.core.cblockprocessor"); \framework\import("org.yeager.core.emailprocessor"); \framework\import("org.yeager.core.pageprocessor"); \framework\import("org.yeager.core.user"); \framework\import("org.yeager.core.usermgr"); \framework\import("org.yeager.core.tree"); \framework\import('org.yeager.core.updater'); \framework\import('org.yeager.core.archive'); // Set UTF8 for DB Singleton::YDB()->Execute("SET NAMES 'utf8';"); // Set ADODB-Fetchmode to ADODB_FETCH_ASSOC Singleton::YDB()->SetFetchMode(ADODB_FETCH_ASSOC); // Create instance of Koala class $koala = new Koala($this->yeager); $username = $this->session->getSessionVar("username"); $password = $this->session->getSessionVar("password"); Singleton::register("session", $this->session); Singleton::register("request", $this->request); Singleton::register("config", $this->config); Singleton::register("UserMgr", new UserMgr()); Singleton::register("guiUS", $this->request->parameters['us']); Singleton::register("guiLH", $this->request->parameters['lh']); // Get frontend timezone $this->frontendTimezone = (string) Singleton::config()->getVar('CONFIG/TIMEZONES/FRONTEND'); if (!$this->frontendTimezone) { $this->frontendTimezone = 'Europe/Berlin'; } $userID = Singleton::UserMgr()->validate($username, $password); Singleton::register("Usergroups", new Usergroups()); if (!$userID) { $userID = Singleton::UserMgr()->getAnonymousID(); $this->authenticated = false; } else { $this->authenticated = true; if ($userID != Singleton::UserMgr()->getAnonymousID()) { $this->session->setPSessionVar("username", $username); $this->session->setPSessionVar("password", $password); $this->session->setPSessionVar("userid", $userID); $this->session->setPSessionVar("isvalidated", true); } if ($this->session->getSessionVar('keepLoggedIn')) { $this->session->cookie_time = time() + 60 * 60 * 24 * 365; } else { $cookie_time = (int) Singleton::config()->getVar("CONFIG/SESSION/COOKIES/TIME"); $this->session->cookie_time = $cookie_time; } } // write roles to sessions for cachekey $user = new User($userID); $roles = $user->getUsergroupIDs(); if ($userID != Singleton::UserMgr()->getAnonymousID()) { $this->session->setPSessionVar("userroles", $roles); $this->session->setPSessionVar("userid", $userID); $this->session->setCookie("yg-userid", $userID); $roleHash = ""; foreach ($roles as $r) { $roleHash .= $r["ID"] . "x"; } $this->session->setCookie("yg-userroles", $roleHash); } elseif ($_COOKIE['yg-userid']) { // remove cookie if set $this->session->removeCookie("yg-userid"); $this->session->removeCookie("yg-userroles"); } $backendAllowed = $user->checkPermission('RBACKEND'); if ((!$this->authenticated || !$backendAllowed) && $this->frontendMode != 'true') { if ($this->page != 'responder' && ($this->request->parameters['handler'] != 'userLogin' || $this->request->parameters['handler'] != 'recoverLogin' || $this->request->parameters['handler'] != 'setNewPassword')) { $header = $_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden'; header($header); echo $header; die; } } $user_timezone = $user->properties->getValue('TIMEZONE'); $timezoneAbbreviations = timezone_abbreviations_list(); foreach ($timezoneAbbreviations as $timezoneAbbreviations_item) { foreach ($timezoneAbbreviations_item as $timezone_item) { if ($timezone_item['timezone_id'] == $user_timezone) { global $tz; $tz = $timezone_item; } } } Singleton::register("Tags", new Tags()); Singleton::register("cbMgr", new CblockMgr()); Singleton::register("fileMgr", new FileMgr()); Singleton::register("sites", new Sites()); Singleton::register("templates", new Templates()); Singleton::register("entrymasks", new Entrymasks()); Singleton::register("mailingMgr", new MailingMgr()); Singleton::register("comments", new Comments()); Singleton::register("filetypes", new Filetypes()); Singleton::register("views", new Views()); Singleton::register("app", $this); Singleton::register("koala", $koala); $versioninfo = new Updater(); $versionp = $versioninfo->current_version_string; $this->yeager_version = $versionp; $this->yeager_revision = substr(YEAGER_REVISION, 4, 7); //$this->yeager_date = YEAGER_DATE; // get page to display if (empty($this->page)) { $this->page = "default"; } if (empty($this->action)) { $this->action = $this->request->parameters['action']; } $this->base = $this->request->script_name . "/" . strtolower($this->applicationname); /* yeager */ $this->docpath = Singleton::config()->getVar('CONFIG/DIRECTORIES/DOCPATH'); $this->docabsolut = $this->baseabsolut = $this->request->prefix . "://" . $this->request->http_host . $this->docpath; $this->imgpath = $this->request->prefix . "://" . $this->request->http_host . $this->docpath . "ui/img/"; $this->doc = $this->app_httproot; $this->sid = $this->session->id; $this->sidparam = "sid=" . $this->sid; // Regular Expressions for URL parsing $internalprefix = str_replace('/', '\\/', Singleton::config()->getVar('CONFIG/REFTRACKER/INTERNALPREFIX')); $this->URLRegEx1 = '/(.*)' . $internalprefix . '([a-z]*)\\/([0-9]*)(\\/*)(.*)/'; $this->URLRegEx2 = '/(.*)' . $internalprefix . '([a-z]*)\\/([0-9]*)\\/([0-9]*)(\\/*)(.*)/'; $filesdir = Singleton::config()->getVar('CONFIG/DIRECTORIES/FILESDIR'); $filesdoc = Singleton::config()->getVar('CONFIG/DIRECTORIES/FILESDOC'); $userpicdir = Singleton::config()->getVar('CONFIG/DIRECTORIES/USERPICDIR'); $embeddedCblockFolder = (int) Singleton::config()->getVar("CONFIG/EMBEDDED_CBLOCKFOLDER"); if (strlen($filesdir) < 1) { $filesdir = "files/"; } if (strlen($userpicdir) < 1) { $userpicdir = $filesdir; } if (strlen($filesdoc) < 1) { $filesdoc = "/yeager/files/"; } if (strlen($embeddedCblockFolder) < 1 || $embeddedCblockFolder == 99999) { throw new Exception("No or wrong blindfolder configured!"); } $this->filesdir = $filesdir; $this->filesdoc = $filesdoc; $this->userpicdir = $userpicdir; $this->modules = Singleton::config()->getVars("CONFIG/MODULES"); $this->files_procs = array_merge(Singleton::config()->getVars("CONFIG/FILES_PROCESSORS"), Singleton::config()->getVars("CONFIG/FILE_PROCESSORS")); $this->page_procs = Singleton::config()->getVars("CONFIG/PAGE_PROCESSORS"); $this->cblock_procs = Singleton::config()->getVars("CONFIG/CBLOCK_PROCESSORS"); $this->email_procs = Singleton::config()->getVars("CONFIG/EMAIL_PROCESSORS"); $this->filesprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/FILES_PROCS"); $this->pageprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/PAGE_PROCS"); $this->cblockprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/CBLOCK_PROCS"); $this->emailprocdir = (string) Singleton::config()->getVar("CONFIG/DIRECTORIES/EMAIL_PROCS"); $this->templates = new Templates(); $this->templatedir = $this->approot . (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/TEMPLATEDIR'); $this->templatedoc = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/TEMPLATEDOC'); $this->templatedirabsolut = $this->request->prefix . "://" . $this->request->http_host . $this->templatedoc; $this->extensiondir = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/EXTENSIONSDIR'); $this->extensiondoc = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/EXTENSIONSDOC'); $this->processordir = (string) Singleton::config()->getVar('CONFIG/DIRECTORIES/PROCESSORSDIR'); $this->webroot = "/" . rtrim(ltrim((string) Singleton::config()->getVar("CONFIG/DIRECTORIES/WEBROOT"), '/'), '/') . '/'; if ($this->webroot == "//") { $this->webroot = "/"; } $this->devmode = (string) Singleton::config()->getVar('CONFIG/DEVMODE'); $this->languages = new Languages(); $forceLangInclude = (string) Singleton::config()->getVar('CONFIG/PAGES/' . strtoupper($this->page) . '/FORCE_LANG_INCLUDE'); if ($this->frontendMode != 'true' || $forceLangInclude == 'true') { // Read default language from config-file if ($this->authenticated) { $user = new User(Singleton::UserMgr()->getCurrentUserID()); $langid = $user->getLanguage(); $langinfo = $this->languages->get($langid); $lang = $langinfo["CODE"]; } else { // Check if we have a language which matches the browser-language $browserLanguages = array(); $tmpBrowserLanguages = explode(',', strtoupper(str_replace(' ', '', $_SERVER["HTTP_ACCEPT_LANGUAGE"]))); foreach ($tmpBrowserLanguages as $tmpBrowserLanguage) { array_push($browserLanguages, substr($tmpBrowserLanguage, 0, 2)); } $browserLanguages = array_values(array_unique($browserLanguages)); foreach ($browserLanguages as $browserLanguage) { if (!$lang) { if (file_exists($this->approot . "ui/lang/" . $browserLanguage . ".php")) { $lang = $browserLanguage; } } } } // When everything fails, fallback to default language if (strlen($lang) < 1) { $defaultLanguage = Singleton::config()->getVar('CONFIG/DEFAULT_LANGUAGE'); $lang = $defaultLanguage ? $defaultLanguage : 'DE'; } require_once $this->approot . "ui/lang/" . $lang . ".php"; } $this->itext =& $itext; Singleton::register("itext", $itext); if (!is_readable($this->page_file) || is_dir($this->page_file)) { $this->error->raise("Page " . $this->page . "'s code (" . $this->page_file . ") not found.", ERR_DEBUG); } else { $this->error->raise("loading " . $this->page_file, ERR_DEBUG); if ($this->page_template != "") { require_once "libs/org/smarty/libs/Smarty.class.php"; $smarty = new Smarty(); $this->smarty = $smarty; $smarty->compile_check = true; $smarty->debugging = false; $smarty->use_sub_dirs = false; // FIXME move to installer @mkdir($this->tmpdir . 'templates_compile', 0700); @mkdir($this->tmpdir . 'templates_cache', 0700); $smarty->compile_dir = $this->tmpdir . 'templates_compile'; $smarty->cache_dir = $this->tmpdir . 'templates_cache'; $smarty->force_compile = (string) $this->config->getVar('CONFIG/CACHE/SMARTY_FORCECOMPILE'); $smarty->caching = 0; $smarty->load_filter('output', 'trimwhitespace'); $smarty->assign("yeager_version", $this->yeager_version); $smarty->assign("yeager_revision", $this->yeager_revision); //$smarty->assign("yeager_date",$this->yeager_date); $smarty->assign("lang", $lang); $smarty->assign("docabsolut", $this->docabsolut); $smarty->assign("baseabsolut", $this->baseabsolut); $smarty->assign("imgpath", $this->imgpath); $smarty->assign("internalprefix", (string) Singleton::config()->getVar('CONFIG/REFTRACKER/INTERNALPREFIX')); $smarty->assign("request_prefix", $this->request->prefix); $smarty->assign("extensiondoc", $this->extensiondoc); $smarty->assign("extensiondir", $this->extensiondir); $smarty->assign("is_authenticated", $this->authenticated); $smarty->assign("base", $this->base); $smarty->assign("page", $this->page); $smarty->assign("sid", $this->sid); $smarty->assign("sidparam", $this->sidparam); $smarty->assign("templatedir", $this->templatedir); $smarty->assign("templatedoc", $this->templatedoc); $smarty->assign("templatedirabsolut", $this->templatedirabsolut); $smarty->assign("approot", getRealpath($this->approot)); $smarty->assign("devmode", $this->devmode); $smarty->assign("webroot", $this->webroot); $smarty->assign("URLRegEx1", $this->URLRegEx1); require_once $this->approot . "libs/org/yeager/ui/smarty_modifiers.php"; } $smarty->assign("itext", $itext); Singleton::register("smarty", $smarty); if ($_SERVER['HTTP_X_YEAGER_AUTHENTICATION'] == 'suppress') { $authHeader = 'X-Yeager-Authenticated: delayed'; } else { $authHeader = 'X-Yeager-Authenticated: ' . ($this->authenticated ? 'true' : 'false'); } header($authHeader); if ($this->frontendMode == "true" && $this->cached) { // capture ob include_once $this->page_file; $output = ob_get_clean(); Singleton::FC()->write("output", $output); Singleton::FC()->flush(); echo $output; } else { include_once $this->page_file; } if ($this->frontendMode != 'true') { $koala->getQueuedCommands(); $koala->go(); } } }
<?php include "helper.php"; $goToNextStep = true; clearstatcache(); $showPermissions = array(); foreach ($filePermissions as $key => $value) { $error = ""; $values = str_split($value); $file = getRealpath(dirname(getenv('SCRIPT_FILENAME')) . "/" . $config['applicationPath'] . $key); if (file_exists($file)) { foreach ($values as $char) { switch ($char) { case "r": if (!is_readable($file)) { $error = "Not readable"; } break; case "w": if (!is_writable($file)) { $error = "Not writeable"; } break; // funzt bei manchen servern nicht richtig... // case "x": if (!is_executable($file)) $error = "Not executeable"; break; } } } else { $error = "File doesnt exist!"; } // combine string for user easy reading
$contentareas = $templateMgr->getContentareas($template); // Get all navigations $navigations = $templateMgr->getNavis($template); $hasdefault = false; foreach ($navigations as $idx => $navigation) { if ($navigation['DEFAULT'] == 1) { $hasdefault = true; $defaultnavi = $navigation['CODE']; } } if (!$hasdefault) { $navigations[0]['DEFAULT'] = 1; $defaultnavi = $navigations[0]['CODE']; } // Check for template preview $templatepreviewdir = getRealpath(sConfig()->getVar('CONFIG/DIRECTORIES/TEMPLATEPREVIEWDIR')) . '/'; $found_files = glob($templatepreviewdir . $template . '-*'); if ($found_files !== false && count($found_files) > 0) { $previewfile = explode('/', $found_files[0]); $previewfile = $previewfile[count($previewfile) - 1]; $previewdir = sConfig()->getVar('CONFIG/DIRECTORIES/TEMPLATEPREVIEWDIR'); } // Add template for Contentareas to Array $contentareas[] = array('CODE' => '__FIELDTITLE__', 'NAME' => '__FIELDNAME__'); // Add template for Navigations to Array $navigations[] = array('CODE' => '__FIELDTITLE__', 'NAME' => '__FIELDNAME__'); $templateInfo['PREVIEWPATH'] = $previewdir . $previewfile; $templateInfo['PREVIEW'] = $previewfile; $smarty->assign('templateInfo', $templateInfo); $smarty->assign('timestamp', time()); $smarty->assign("object", $template);
{ if (!($path = realpath($path))) { exit(sprintf($message, $path)); } return $path; } $argv = $_SERVER['argv']; $autoloadDir = $bootstrapDir = null; $useNewDirectoryStructure = false; // allow the base path to be passed as the first argument, or default if (isset($argv[1])) { $bootstrapDir = getRealpath($argv[1]); if (isset($argv[2])) { $autoloadDir = getRealpath($argv[2]); } if (isset($argv[3])) { $useNewDirectoryStructure = true; } } if (null === $autoloadDir) { $autoloadDir = getRealpath(__DIR__ . '/../../../../../../../../app', 'Looks like you don\'t have a standard layout.'); } if (null === $bootstrapDir) { $bootstrapDir = $autoloadDir; if (file_exists(__DIR__ . '/../../../../../../../../var/' . ScriptHandler::NEW_STRUCTURE_NOTIFIER)) { $bootstrapDir = getRealpath(__DIR__ . '/../../../../../../../../var'); } } require_once $autoloadDir . '/autoload.php'; // here we pass realpaths as resolution between absolute and relative path can be wrong ScriptHandler::doBuildBootstrap($bootstrapDir, $autoloadDir, $useNewDirectoryStructure);
/** * Gets the path of the Template preview * * @param int $templateId Template Id * @return string Template preview path */ function getPreviewPath($templateId) { // Check for template preview $templatePreviewDir = getRealpath(sConfig()->getVar('CONFIG/DIRECTORIES/TEMPLATEPREVIEWDIR')) . '/'; $foundFiles = glob($templatePreviewDir . $templateId . '-*'); if ($foundFiles !== false && count($foundFiles) > 0) { $previewFile = explode('/', $foundFiles[0]); $previewFile = $previewFile[count($previewFile) - 1]; $previewDir = sConfig()->getVar('CONFIG/DIRECTORIES/TEMPLATEPREVIEWDIR'); } return $previewDir . $previewFile; }
function getdirectorysize($root) { $root = getRealpath($root); $size = 0; $fileList = getfilelist($root); foreach ($fileList as $file) { $size += filesize($root . "/" . $file); } $dirList = getdirlist($root); foreach ($dirList as $dir) { $size += getdirectorysize($root . "/" . $dir); } return $size; }