first commit
This commit is contained in:
@@ -0,0 +1,288 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
use Joomla\CMS\Application\ApplicationHelper;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
$cloudFlareTestFile = 'CLOUDFLARE::' . Uri::base() . 'media/com_akeebabackup/ControlPanel.min.js';
|
||||
$cloudFlareTestFile .= '?' . ApplicationHelper::getHash(AKEEBABACKUP_VERSION . AKEEBABACKUP_DATE);
|
||||
|
||||
$token = Factory::getApplication()->getFormToken();
|
||||
?>
|
||||
<?php // Configuration Wizard pop-up ?>
|
||||
<?php if($this->promptForConfigurationwizard && !defined('AKEEBADEBUG')): ?>
|
||||
<?= $this->loadAnyTemplate('Configuration/confwiz_modal') ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Potentially web accessible output directory ?>
|
||||
<!--
|
||||
Oh, hi there! It looks like you got curious and are peeking around your browser's developer tools – or just the
|
||||
source code of the page that loaded on your browser. Cool! May I explain what we are seeing here?
|
||||
|
||||
Just to let you know, the next three DETAILS (outDirSystem, insecureOutputDirectory and missingRandomFromFilename) are
|
||||
HIDDEN and their existence doesn't mean that your site has an insurmountable security issue. To the contrary.
|
||||
Whenever Akeeba Backup detects that the backup output directory is under your site's root it will CHECK its security
|
||||
i.e. if it's really accessible over the web. This check is performed with an AJAX call to your browser so if it
|
||||
takes forever or gets stuck you won't see a frustrating blank page in your browser. If AND ONLY IF a problem is
|
||||
detected said JavaScript will display one of the following DIVs, depending on what is applicable.
|
||||
|
||||
So, to recap. These hidden DIVs? They don't indicate a problem with your site. If one becomes visible then – and
|
||||
ONLY then – should you do something about it, as instructed. But thank you for being curious. Curiosity is how you
|
||||
get involved with and better at web development. Stay curious!
|
||||
-->
|
||||
<?php // Web accessible output directory that coincides with or is inside in a CMS system folder ?>
|
||||
<details class="alert alert-danger" id="outDirSystem" style="display: none">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_INVALID') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_LISTABLE', realpath($this->getModel()->getOutputDirectory())) ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_ISSYSTEM') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_ISSYSTEM_FIX') ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_DELETEORBEHACKED') ?>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<?php // Output directory can be listed over the web ?>
|
||||
<details class="alert alert-<?= $this->hasOutputDirectorySecurityFiles ? 'danger' : 'warning' ?>" id="insecureOutputDirectory" style="display: none">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-<?= $this->hasOutputDirectorySecurityFiles ? 'danger' : 'body' ?>">
|
||||
<?php if ($this->hasOutputDirectorySecurityFiles): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_UNFIXABLE') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_INSECURE') ?>
|
||||
<?php endif ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_LISTABLE', realpath($this->getModel()->getOutputDirectory())) ?>
|
||||
</p>
|
||||
<?php if (!$this->hasOutputDirectorySecurityFiles): ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_CLICKTHEBUTTON') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_FIX_SECURITYFILES') ?>
|
||||
</p>
|
||||
|
||||
<form action="index.php" method="POST" class="akeeba-form--inline">
|
||||
<input type="hidden" name="option" value="com_akeebabackup">
|
||||
<input type="hidden" name="view" value="Controlpanel">
|
||||
<input type="hidden" name="task" value="fixOutputDirectory">
|
||||
<input type="hidden" name="<?= $token ?>" value="1">
|
||||
|
||||
<button type="submit" class="btn btn-success w-100">
|
||||
<span class="fa fa-hammer"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_BTN_FIXSECURITY') ?>
|
||||
</button>
|
||||
</form>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_TRASHHOST') ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_DELETEORBEHACKED') ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</details>
|
||||
|
||||
<?php // Output directory cannot be listed over the web but I can download files ?>
|
||||
<details class="alert alert-warning" id="missingRandomFromFilename" style="display: none">
|
||||
<summary class="h3 fs-3 m-0 p-0">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_INSECURE_ALT') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_FILEREADABLE', realpath($this->getModel()->getOutputDirectory())) ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_CLICKTHEBUTTON') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_FIX_RANDOM') ?>
|
||||
</p>
|
||||
|
||||
<form action="index.php" method="POST" class="akeeba-form--inline">
|
||||
<input type="hidden" name="option" value="com_akeebabackup">
|
||||
<input type="hidden" name="view" value="Controlpanel">
|
||||
<input type="hidden" name="task" value="addRandomToFilename">
|
||||
<input type="hidden" name="<?= $token ?>" value="1">
|
||||
|
||||
<button type="submit" class="btn btn-success w-100">
|
||||
<span class="fa fa-hammer"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_BTN_FIXSECURITY') ?>
|
||||
</button>
|
||||
</form>
|
||||
</details>
|
||||
|
||||
|
||||
<?php // mbstring warning ?>
|
||||
<?php if(!$this->checkMbstring): ?>
|
||||
<details class="alert alert-error">
|
||||
<summary class="h4 fs-4 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANL_ERR_MBSTRING_TITLE') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANL_ERR_MBSTRING_BODY', PHP_VERSION) ?>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Front-end backup secret word reminder ?>
|
||||
<?php if(!empty($this->frontEndSecretWordIssue)): ?>
|
||||
<details class="alert alert-danger alert-dismissible">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_HEADER') ?>
|
||||
</summary>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_INTRO') ?></p>
|
||||
<p><?= $this->frontEndSecretWordIssue ?></p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_WHATTODO_JOOMLA') ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_WHATTODO_COMMON', $this->newSecretWord) ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-success btn-lg"
|
||||
href="index.php?option=com_akeebabackup&view=Controlpanel&task=resetSecretWord&<?= $token ?>=1">
|
||||
<span class="fa fa-sync"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_BTN_FESECRETWORD_RESET') ?>
|
||||
</a>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Wrong media directory permissions ?>
|
||||
<?php if(!$this->areMediaPermissionsFixed): ?>
|
||||
<details id="notfixedperms" class="alert alert-danger alert-dismissible">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L1') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</summary>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L2') ?></p>
|
||||
<ol>
|
||||
<li><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L3A') ?></li>
|
||||
<li><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L3B') ?></li>
|
||||
</ol>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L4') ?></p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // You need to enter your Download ID ?>
|
||||
<?php if($this->needsDownloadID):
|
||||
$updateSiteEditUrl = Route::_('index.php?option=com_installer&task=updatesite.edit&update_site_id=' . $this->updateSiteId); ?>
|
||||
<details class="alert alert-info">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_MSG_MUSTENTERDLID') ?>
|
||||
</summary>
|
||||
<p><?= Text::sprintf('COM_AKEEBABACKUP_LBL_CPANEL_NEEDSDLID','https://www.akeeba.com/download/official/add-on-dlid.html') ?></p>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_MSG_WHERETOENTERDLID', $updateSiteEditUrl) ?>
|
||||
</p>
|
||||
<p class="text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_MSG_JOOMLABUGGYUPDATES') ?>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // You have CORE; you need to upgrade, not just enter a Download ID ?>
|
||||
<?php if($this->coreWarningForDownloadID): ?>
|
||||
<details class="alert alert-warning">
|
||||
<summary class="h3 fs-3 m-0 p-0">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_NEEDSUPGRADE_HEAD') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_LBL_CPANEL_NEEDSUPGRADE_BODY','http://akee.ba/abcoretopro') ?>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Upgrade from Akeeba Backup 7 or 8? ?>
|
||||
<?php if ($this->canUpgradeFromAkeebaBackup8): ?>
|
||||
<div class="alert alert-info alert-dismissible">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_HEAD') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BODY') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary btn-lg"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Upgrade') ?>"
|
||||
>
|
||||
<span class="fa fa-hat-wizard"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BTN') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!empty($this->akeebaBackup8PackageId)): ?>
|
||||
<div class="alert alert-info alert-dismissible">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADED_FROM_AKEEBABACKUP8_HEAD') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BODY') ?>
|
||||
</p>
|
||||
<p class="small">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADED_FROM_AKEEBABACKUP8_NOTE') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary btn-lg"
|
||||
href="<?= Uri::base() ?>index.php?option=com_installer&view=manage&filter[search]=id:<?= $this->akeebaBackup8PackageId ?>"
|
||||
>
|
||||
<span class="fa fa-trash"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADED_FROM_AKEEBABACKUP8_BTN') ?>
|
||||
</a>
|
||||
<a class="btn btn-warning btn-sm"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Upgrade') ?>"
|
||||
>
|
||||
<span class="fa fa-hat-wizard"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BTN') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php // Warn about CloudFlare Rocket Loader ?>
|
||||
<details class="alert alert-warning" style="display: none;" id="cloudFlareWarn">
|
||||
<summary class="h4 fs-4 m-0 p-0">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_MSG_CLOUDFLARE_WARN')?>
|
||||
</summary>
|
||||
<p><?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_MSG_CLOUDFLARE_WARN1', 'https://support.cloudflare.com/hc/en-us/articles/200169456-Why-is-JavaScript-or-jQuery-not-working-on-my-site-') ?></p>
|
||||
</details>
|
||||
<?php
|
||||
/**
|
||||
* DO NOT REMOVE THE ATTRIBUTES.
|
||||
*
|
||||
* This is a specialised test which looks for CloudFlare's completely broken RocketLoader feature and warns the user
|
||||
* about it.
|
||||
*/
|
||||
|
||||
$js = <<< JS
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
var test = localStorage.getItem('$cloudFlareTestFile');
|
||||
if (test)
|
||||
{
|
||||
document.getElementById("cloudFlareWarn").style.display = "block";
|
||||
}
|
||||
});
|
||||
|
||||
JS;
|
||||
|
||||
$this->document->getWebAssetManager()->addInlineScript($js, [], [
|
||||
'type' => 'text/javascript',
|
||||
'data-cfasync' => 'true'
|
||||
])
|
||||
?>
|
||||
Reference in New Issue
Block a user