mirror of
https://github.com/catalyst/moodle-auth_outage.git
synced 2026-05-17 05:48:43 +02:00
Added warning to manage outages page if host is not configured (inaccessible wwwroot).
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
namespace auth_outage\local\controllers;
|
||||
|
||||
use auth_outage\local\outagelib;
|
||||
use coding_exception;
|
||||
use finfo;
|
||||
use invalid_parameter_exception;
|
||||
@@ -62,24 +63,18 @@ class maintenance_static_page_io {
|
||||
}
|
||||
|
||||
if (self::is_url($file)) {
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, $file);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
$contents = curl_exec($curl);
|
||||
$mime = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
|
||||
curl_close($curl);
|
||||
$result = outagelib::fetch_page($file);
|
||||
} else {
|
||||
$contents = @file_get_contents($file);
|
||||
$mime = (new finfo(FILEINFO_MIME_TYPE))->buffer($contents); // Not perfect, but try guessing it.
|
||||
$result = ['contents' => @file_get_contents($file)];
|
||||
$result['mime'] = (new finfo(FILEINFO_MIME_TYPE))
|
||||
->buffer($result['contents']); // Not perfect, but try guessing it.
|
||||
}
|
||||
if ($contents === false) {
|
||||
|
||||
if ($result['contents'] === false) {
|
||||
debugging('Cannot fetch: '.$file);
|
||||
$contents = '';
|
||||
$mime = 'unknown';
|
||||
$result = ['contents' => '', 'mime' => 'unknown'];
|
||||
}
|
||||
return ['contents' => $contents, 'mime' => $mime];
|
||||
return $result;
|
||||
}
|
||||
|
||||
/** @var bool */
|
||||
|
||||
@@ -52,6 +52,18 @@ class outagelib {
|
||||
*/
|
||||
private static $injectcalled = false;
|
||||
|
||||
public static function fetch_page($file) {
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, $file);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
||||
$contents = curl_exec($curl);
|
||||
$mime = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
|
||||
curl_close($curl);
|
||||
return compact('contents', 'mime');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls inject even if it was already called before.
|
||||
*/
|
||||
@@ -154,9 +166,14 @@ class outagelib {
|
||||
self::update_maintenance_later($outage);
|
||||
}
|
||||
|
||||
private static function check_wwwroot_accessible() {
|
||||
global $CFG;
|
||||
$result = self::fetch_page($CFG->wwwroot);
|
||||
return (!empty($result['contents']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls Moodle API - set_maintenance_later() to set when the next outage starts.
|
||||
*
|
||||
* @param outage|null $outage Outage or null if no scheduled outage.
|
||||
*/
|
||||
private static function update_maintenance_later($outage) {
|
||||
@@ -316,6 +333,10 @@ EOT;
|
||||
$message[] = get_string('configurationdisabled', 'auth_outage');
|
||||
}
|
||||
|
||||
if (!self::check_wwwroot_accessible()) {
|
||||
$message[] = get_string('configurationinaccessiblewwwroot', 'auth_outage', ['wwwroot' => $CFG->wwwroot]);
|
||||
}
|
||||
|
||||
if (count($message) == 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user