mikuli.cz

:)
git clone https://git.sr.ht/~ashymad/mikuli.cz
Log | Files | Refs

commit f5a6f712ebc820cefebd5ed53a0ce3f24350845d
parent 5de9c6df471390709e5c10ab5c9129b3f141b422
Author: markseu <mark2011@mayberg.se>
Date:   Sun,  6 Sep 2015 17:59:14 +0200

Core update (user restriction)

Diffstat:
MREADME.md | 2+-
Msystem/config/config.ini | 4++--
Msystem/core/core-commandline.php | 18+++++++-----------
Msystem/core/core-webinterface.php | 15+++++++++++----
Msystem/core/core.php | 3++-
5 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/README.md b/README.md @@ -1,4 +1,4 @@ -Yellow 0.5.32 +Yellow 0.5.33 ============= [![Yellow](https://raw.githubusercontent.com/wiki/datenstrom/yellow/images/yellow.jpg)](http://datenstrom.se/yellow) diff --git a/system/config/config.ini b/system/config/config.ini @@ -23,6 +23,7 @@ templateDir = system/themes/templates/ mediaDir = media/ imageDir = media/images/ staticDir = cache/ +staticAccessFile = .htaccess staticDefaultFile = index.html staticErrorFile = error.html contentDir = content/ @@ -42,12 +43,11 @@ sidebar = sidebar parser = markdown parserSafeMode = 0 multiLanguageMode = 0 -commandlineIgnoreLocation = -commandlineSystemFile = .htaccess webinterfaceLocation = /edit/ webinterfaceServerScheme = http webinterfaceUserHashAlgorithm = bcrypt webinterfaceUserHashCost = 10 +webinterfaceUserHome = / webinterfaceUserFile = user.ini webinterfaceNewFile = page-new-(.*).txt webinterfaceMetaFilePrefix = published diff --git a/system/core/core-commandline.php b/system/core/core-commandline.php @@ -5,7 +5,7 @@ // Command line core plugin class YellowCommandline { - const Version = "0.5.4"; + const Version = "0.5.5"; var $yellow; //access to API var $content; //number of content pages var $media; //number of media files @@ -18,8 +18,6 @@ class YellowCommandline function onLoad($yellow) { $this->yellow = $yellow; - $this->yellow->config->setDefault("commandlineIgnoreLocation", ""); - $this->yellow->config->setDefault("commandlineSystemFile", ".htaccess"); } // Handle command @@ -332,7 +330,7 @@ class YellowCommandline if(!empty($path)) { if($path == rtrim($this->yellow->config->get("staticDir"), '/')) $ok = true; - if(is_file("$path/".$this->yellow->config->get("commandlineSystemFile"))) $ok = true; + if(is_file("$path/".$this->yellow->config->get("staticAccessFile"))) $ok = true; if(is_file("$path/yellow.php")) $ok = false; } return $ok; @@ -346,14 +344,12 @@ class YellowCommandline $serverName = $this->yellow->config->get("serverName"); $serverBase = $this->yellow->config->get("serverBase"); $this->yellow->page->setRequestInformation($serverScheme, $serverName, $serverBase, "", ""); - if($this->yellow->config->isExisting("commandlineIgnoreLocation")) - { - $regex = "#^".$this->yellow->config->get("commandlineIgnoreLocation")."#"; - } foreach($this->yellow->pages->index(true, true) as $page) { - if(!empty($regex) && preg_match($regex, $page->location)) continue; - array_push($locations, $page->location); + if($page->get("status")!="ignore" && $page->get("status")!="draft") + { + array_push($locations, $page->location); + } } if(!$this->yellow->pages->find("/") && $this->yellow->config->get("multiLanguageMode")) array_unshift($locations, "/"); return $locations; @@ -386,7 +382,7 @@ class YellowCommandline $files[$fileName] = $path.$this->yellow->config->get("themeLocation").basename($fileName); } $fileNames = array(); - array_push($fileNames, $this->yellow->config->get("commandlineSystemFile")); + array_push($fileNames, $this->yellow->config->get("staticAccessFile")); array_push($fileNames, $this->yellow->config->get("configDir").$this->yellow->config->get("robotsFile")); foreach($fileNames as $fileName) $files[$fileName] = "$path/".basename($fileName); return $files; diff --git a/system/core/core-webinterface.php b/system/core/core-webinterface.php @@ -5,7 +5,7 @@ // Web interface core plugin class YellowWebinterface { - const Version = "0.5.22"; + const Version = "0.5.23"; var $yellow; //access to API var $active; //web interface is active? (boolean) var $userLoginFailed; //web interface login failed? (boolean) @@ -26,6 +26,7 @@ class YellowWebinterface $this->yellow->config->setDefault("webinterfaceServerName", $this->yellow->config->get("serverName")); $this->yellow->config->setDefault("webinterfaceUserHashAlgorithm", "bcrypt"); $this->yellow->config->setDefault("webinterfaceUserHashCost", "10"); + $this->yellow->config->setDefault("webinterfaceUserHome", "/"); $this->yellow->config->setDefault("webinterfaceUserFile", "user.ini"); $this->yellow->config->setDefault("webinterfaceNewFile", "page-new-(.*).txt"); $this->yellow->config->setDefault("webinterfaceMetaFilePrefix", "published"); @@ -397,14 +398,20 @@ class YellowWebinterface // Return permission to change page function getUserPermission($location, $fileName) { - $userPermission = is_dir(dirname($fileName)) && strlenu(basename($fileName))<128; + $userPermission = NULL; foreach($this->yellow->plugins->plugins as $key=>$value) { if(method_exists($value["obj"], "onUserPermission")) { - $userPermission &= $value["obj"]->onUserPermission($location, $fileName, $this->users); + $userPermission = $value["obj"]->onUserPermission($location, $fileName, $this->users); + if(!is_null($userPermission)) break; } } + if(is_null($userPermission)) + { + $userPermission = is_dir(dirname($fileName)) && strlenu(basename($fileName))<128; + $userPermission &= substru($location, 0, strlenu($this->users->getHome())) == $this->users->getHome(); + } return $userPermission; } @@ -635,7 +642,7 @@ class YellowWebinterfaceUsers { $name = strreplaceu(',', '-', empty($name) ? $this->yellow->config->get("sitename") : $name); $language = strreplaceu(',', '-', empty($language) ? $this->yellow->config->get("language") : $language); - $home = strreplaceu(',', '-', empty($home) ? "/" : $home); + $home = strreplaceu(',', '-', empty($home) ? $this->yellow->config->get("webinterfaceUserHome") : $home); $fileDataNew .= "$email,$hash,$name,$language,$home\n"; } return $this->yellow->toolbox->createFile($fileName, $fileDataNew); diff --git a/system/core/core.php b/system/core/core.php @@ -5,7 +5,7 @@ // Yellow main class class Yellow { - const Version = "0.5.32"; + const Version = "0.5.33"; var $page; //current page var $pages; //pages from file system var $files; //files from file system @@ -46,6 +46,7 @@ class Yellow $this->config->setDefault("mediaDir", "media/"); $this->config->setDefault("imageDir", "media/images/"); $this->config->setDefault("staticDir", "cache/"); + $this->config->setDefault("staticAccessFile", ".htaccess"); $this->config->setDefault("staticDefaultFile", "index.html"); $this->config->setDefault("staticErrorFile", "error.html"); $this->config->setDefault("contentDir", "content/");