aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Web
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Web')
-rw-r--r--Zotlabs/Web/HTTPSig.php21
-rw-r--r--Zotlabs/Web/Router.php6
-rw-r--r--Zotlabs/Web/WebServer.php75
3 files changed, 65 insertions, 37 deletions
diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php
index 63033ce5e..a27edb73d 100644
--- a/Zotlabs/Web/HTTPSig.php
+++ b/Zotlabs/Web/HTTPSig.php
@@ -137,7 +137,22 @@ class HTTPSig {
}
}
- logger('Content_Valid: ' . $result['content_valid']);
+
+ if(in_array('x-zot-digest',$signed_headers)) {
+ $result['content_signed'] = true;
+ $digest = explode('=', $headers['x-zot-digest']);
+ if($digest[0] === 'SHA-256')
+ $hashalg = 'sha256';
+ if($digest[0] === 'SHA-512')
+ $hashalg = 'sha512';
+
+ // The explode operation will have stripped the '=' padding, so compare against unpadded base64
+ if(rtrim(base64_encode(hash($hashalg,$_POST['data'],true)),'=') === $digest[1]) {
+ $result['content_valid'] = true;
+ }
+ }
+
+ logger('Content_Valid: ' . (($result['content_valid']) ? 'true' : 'false'));
return $result;
@@ -194,8 +209,8 @@ class HTTPSig {
. '",headers="' . $x['headers'] . '",signature="' . $x['signature'] . '"';
if($crypt_key) {
- $x = crypto_encapsulate($headerval,$crypt_key,$crypt_alg);
- $headerval = 'iv="' . $x['iv'] . '",key="' . $x['key'] . '",alg="' . $x['alg'] . '",data="' . $x['data'];
+ $x = crypto_encapsulate($headerval,$crypt_key,$crypt_algo);
+ $headerval = 'iv="' . $x['iv'] . '",key="' . $x['key'] . '",alg="' . $x['alg'] . '",data="' . $x['data'] . '"';
}
if($auth) {
diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php
index a6b780cdc..fb551e36f 100644
--- a/Zotlabs/Web/Router.php
+++ b/Zotlabs/Web/Router.php
@@ -38,10 +38,9 @@ class Router {
/**
* @brief Router constructor.
*
- * @param[in,out] App &$a
* @throws Exception module not found
*/
- function __construct(&$a) {
+ function __construct() {
$module = \App::$module;
$modname = "Zotlabs\\Module\\" . ucfirst($module);
@@ -179,9 +178,8 @@ class Router {
/**
* @brief
*
- * @param[in,out] App &$a
*/
- function Dispatch(&$a) {
+ function Dispatch() {
/**
* Call module functions
diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php
index 9e6af8c4c..5183fb2b0 100644
--- a/Zotlabs/Web/WebServer.php
+++ b/Zotlabs/Web/WebServer.php
@@ -58,11 +58,10 @@ class WebServer {
if((x($_GET,'zid')) && (! \App::$install)) {
\App::$query_string = strip_zids(\App::$query_string);
if(! local_channel()) {
- if ($_SESSION['my_address']!=$_GET['zid'])
- {
- $_SESSION['my_address'] = $_GET['zid'];
- $_SESSION['authenticated'] = 0;
- }
+ if ($_SESSION['my_address']!=$_GET['zid']) {
+ $_SESSION['my_address'] = $_GET['zid'];
+ $_SESSION['authenticated'] = 0;
+ }
zid_init();
}
}
@@ -107,9 +106,43 @@ class WebServer {
check_config();
}
- //nav_set_selected('nothing');
+ $this->create_channel_links();
- $Router = new Router($a);
+ $Router = new Router();
+
+ $this->initialise_content();
+
+ $Router->Dispatch();
+
+ $this->set_homebase();
+
+ // now that we've been through the module content, see if the page reported
+ // a permission problem and if so, a 403 response would seem to be in order.
+
+ if(is_array($_SESSION['sysmsg']) && stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
+ }
+
+ call_hooks('page_end', \App::$page['content']);
+
+ construct_page();
+
+ killme();
+ }
+
+
+ private function initialise_content() {
+
+ /* initialise content region */
+
+ if(! x(\App::$page, 'content'))
+ \App::$page['content'] = '';
+
+ call_hooks('page_content_top', \App::$page['content']);
+
+ }
+
+ private function create_channel_links() {
/* Initialise the Link: response header if this is a channel page.
* This cannot be done inside the channel module because some protocol
@@ -135,26 +168,17 @@ class WebServer {
\App::$channel_links = $x['channel_links'];
header('Link: ' . \App::get_channel_links());
}
+ }
-
-
- /* initialise content region */
-
- if(! x(\App::$page, 'content'))
- \App::$page['content'] = '';
-
- call_hooks('page_content_top', \App::$page['content']);
-
-
- $Router->Dispatch($a);
-
+ private function set_homebase() {
// If you're just visiting, let javascript take you home
if(x($_SESSION, 'visitor_home')) {
$homebase = $_SESSION['visitor_home'];
- } elseif(local_channel()) {
+ }
+ elseif(local_channel()) {
$homebase = z_root() . '/channel/' . \App::$channel['channel_address'];
}
@@ -162,17 +186,8 @@ class WebServer {
\App::$page['content'] .= '<script>var homebase = "' . $homebase . '";</script>';
}
- // now that we've been through the module content, see if the page reported
- // a permission problem and if so, a 403 response would seem to be in order.
-
- if(is_array($_SESSION['sysmsg']) && stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
- header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
- }
+ }
- call_hooks('page_end', \App::$page['content']);
- construct_page();
- killme();
- }
}