mikuli.cz

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

commit 5ea88a4569da5e71b4c2b8cb5355c35a6cb06a1f
parent 0a0a67420a8533f2ec0edf5a76ce39fa73743ca0
Author: markseu <mark2011@mayberg.se>
Date:   Thu,  5 Jan 2017 10:39:42 +0100

System update (refactoring)

Diffstat:
Msystem/plugins/language.php | 7-------
Msystem/plugins/webinterface.css | 2+-
Msystem/plugins/webinterface.js | 2+-
Msystem/plugins/webinterface.php | 60++++++++++++++++++++++++++++--------------------------------
4 files changed, 30 insertions(+), 41 deletions(-)

diff --git a/system/plugins/language.php b/system/plugins/language.php @@ -6,13 +6,6 @@ class YellowLanguage { const VERSION = "0.6.13"; - var $yellow; //access to API - - // Handle initialisation - function onLoad($yellow) - { - $this->yellow = $yellow; - } } $yellow->plugins->register("language", "YellowLanguage", YellowLanguage::VERSION); diff --git a/system/plugins/webinterface.css b/system/plugins/webinterface.css @@ -1,4 +1,4 @@ -/* Yellow web interface 0.6.17 */ +/* Yellow web interface 0.6.18 */ .yellow-bar { position:relative; overflow:hidden; height:2em; margin-bottom:10px; } .yellow-bar-left { display:block; float:left; } diff --git a/system/plugins/webinterface.js b/system/plugins/webinterface.js @@ -4,7 +4,7 @@ // Yellow API var yellow = { - version: "0.6.17", + version: "0.6.18", action: function(action) { yellow.webinterface.action(action, "none"); }, onLoad: function() { yellow.webinterface.loadInterface(); }, onClick: function(e) { yellow.webinterface.hidePanesOnClick(yellow.toolbox.getEventElement(e)); }, diff --git a/system/plugins/webinterface.php b/system/plugins/webinterface.php @@ -5,7 +5,7 @@ // Web interface plugin class YellowWebinterface { - const VERSION = "0.6.17"; + const VERSION = "0.6.18"; var $yellow; //access to API var $response; //web interface response var $users; //web interface users @@ -179,7 +179,7 @@ class YellowWebinterface function processRequest($serverScheme, $serverName, $base, $location, $fileName) { $statusCode = 0; - if($this->checkUser($location, $fileName)) + if($this->checkUser($serverScheme, $serverName, $base, $location, $fileName)) { switch($_REQUEST["action"]) { @@ -200,8 +200,10 @@ class YellowWebinterface case "delete": $statusCode = $this->processRequestDelete($serverScheme, $serverName, $base, $location, $fileName); break; } } else { + $this->yellow->pages->requestHandler = "core"; switch($_REQUEST["action"]) { + case "": $statusCode = $this->processRequestShow($serverScheme, $serverName, $base, $location, $fileName); break; case "signup": $statusCode = $this->processRequestSignup($serverScheme, $serverName, $base, $location, $fileName); break; case "confirm": $statusCode = $this->processRequestConfirm($serverScheme, $serverName, $base, $location, $fileName); break; case "approve": $statusCode = $this->processRequestApprove($serverScheme, $serverName, $base, $location, $fileName); break; @@ -209,17 +211,12 @@ class YellowWebinterface case "reconfirm": $statusCode = $this->processRequestReconfirm($serverScheme, $serverName, $base, $location, $fileName); break; case "change": $statusCode = $this->processRequestChange($serverScheme, $serverName, $base, $location, $fileName); break; } - } - if($statusCode==0) - { if($this->response->action=="fail") $this->yellow->page->error(500, "Login failed, [please log in](javascript:yellow.action('login');)!"); - $this->yellow->pages->requestHandler = "core"; - $statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false); } return $statusCode; } - // Process request to show page + // Process request to show file function processRequestShow($serverScheme, $serverName, $base, $location, $fileName) { $statusCode = 0; @@ -265,7 +262,7 @@ class YellowWebinterface { $statusCode = 302; $this->response->userEmail = ""; - $this->users->destroyCookie("login"); + $this->response->destroyCookie($serverScheme, $serverName, $base); $location = $this->yellow->lookup->normaliseUrl( $this->yellow->config->get("serverScheme"), $this->yellow->config->get("serverName"), @@ -377,7 +374,7 @@ class YellowWebinterface if($this->response->status=="ok") { $this->response->userEmail = ""; - $this->users->destroyCookie("login"); + $this->response->destroyCookie($serverScheme, $serverName, $base); $this->response->status = $this->response->sendMail($serverScheme, $serverName, $base, $email, "information") ? "done" : "error"; if($this->response->status=="error") $this->yellow->page->error(500, "Can't send email on this server!"); } @@ -498,7 +495,7 @@ class YellowWebinterface if($this->response->status=="ok") { $this->response->userEmail = ""; - $this->users->destroyCookie("login"); + $this->response->destroyCookie($serverScheme, $serverName, $base); $this->response->status = $this->response->sendMail($serverScheme, $serverName, $base, $email, "information") ? "done" : "error"; if($this->response->status=="error") $this->yellow->page->error(500, "Can't send email on this server!"); } @@ -659,7 +656,7 @@ class YellowWebinterface } // Check web interface user - function checkUser($location, $fileName) + function checkUser($serverScheme, $serverName, $base, $location, $fileName) { if($_POST["action"]=="login") { @@ -667,7 +664,7 @@ class YellowWebinterface $password = $_POST["password"]; if($this->users->checkUser($email, $password)) { - $this->users->createCookie("login", $email); + $this->response->createCookie($serverScheme, $serverName, $base, $email); $this->response->userEmail = $email; $this->response->userRestrictions = $this->getUserRestrictions($email, $location, $fileName); $this->response->language = $this->response->getLanguage($email); @@ -969,6 +966,19 @@ class YellowResponse } return $text; } + + // Create browser cookie + function createCookie($serverScheme, $serverName, $base, $email) + { + $session = $this->webinterface->users->createSession($email); + setcookie("login", "$email,$session", time()+60*60*24*365, "$base/", "", $serverScheme=="https"); + } + + // Destroy browser cookie + function destroyCookie($serverScheme, $serverName, $base) + { + setcookie("login", "", time()-60*60, "$base/", "", $serverScheme=="https"); + } // Send mail to user function sendMail($serverScheme, $serverName, $base, $email, $action) @@ -1065,8 +1075,6 @@ class YellowUsers if(!empty($matches[1]) && !empty($matches[2])) { list($hash, $name, $language, $status, $modified, $pending, $home) = explode(',', $matches[2]); - if(!is_numeric($modified)) { $home = $pending; $pending = $modified; $modified = 946684800; } //TODO: remove later, converts old file format - $home = empty($home) ? $pending : $home; //TODO: remove later, converts old file format $this->set($matches[1], $hash, $name, $language, $status, $modified, $pending, $home); if(defined("DEBUG") && DEBUG>=3) echo "YellowUsers::load email:$matches[1]<br/>\n"; } @@ -1085,8 +1093,6 @@ class YellowUsers list($hash, $name, $language, $status, $modified, $pending, $home) = explode(',', $matches[2]); if($status=="active" || $status=="inactive") { - if(!is_numeric($modified)) { $home = $pending; $pending = $modified; $modified = 946684800; } //TODO: remove later, converts old file format - $home = empty($home) ? $pending : $home; //TODO: remove later, converts old file format $pending = "none"; $fileDataNew .= "$matches[1]: $hash,$name,$language,$status,$modified,$pending,$home\n"; } @@ -1152,7 +1158,7 @@ class YellowUsers $this->users[$email]["home"] = $home; } - // Check user login + // Check user login from email and password function checkUser($email, $password) { $algorithm = $this->yellow->config->get("webinterfaceUserHashAlgorithm"); @@ -1160,32 +1166,22 @@ class YellowUsers $this->yellow->toolbox->verifyHash($password, $algorithm, $this->users[$email]["hash"]); } - // Check user login from browser cookie + // Check user login from email and session function checkCookie($email, $session) { return $this->isExisting($email) && $this->users[$email]["status"]=="active" && $this->yellow->toolbox->verifyHash($this->users[$email]["hash"], "sha256", $session); } - // Create browser cookie - function createCookie($cookieName, $email) + // Create session + function createSession($email) { if($this->isExisting($email)) { - $serverScheme = $this->yellow->config->get("webinterfaceServerScheme"); - $location = $this->yellow->config->get("serverBase").$this->yellow->config->get("webinterfaceLocation"); $session = $this->yellow->toolbox->createHash($this->users[$email]["hash"], "sha256"); if(empty($session)) $session = "error-hash-algorithm-sha256"; - setcookie($cookieName, "$email,$session", time()+60*60*24*365, $location, "", $serverScheme=="https"); } - } - - // Destroy browser cookie - function destroyCookie($cookieName) - { - $serverScheme = $this->yellow->config->get("webinterfaceServerScheme"); - $location = $this->yellow->config->get("serverBase").$this->yellow->config->get("webinterfaceLocation"); - setcookie($cookieName, "", time()-60*60, $location, "", $serverScheme=="https"); + return $session; } // Create password hash