Uname:Linux server.rehabsharif.com 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64

Base Dir : /home/nobi37te/public_html

User : nobi37te


403WebShell
403Webshell
Server IP : 172.67.134.116  /  Your IP : 216.73.217.68
Web Server : Apache
System : Linux server.rehabsharif.com 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User : nobi37te ( 1003)
PHP Version : 8.2.33
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/nobi37te/public_html/wp-content/plugins/security-malware-firewall/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/nobi37te/public_html/wp-content/plugins/security-malware-firewall/js/spbc-table.min.js.map
{"version":3,"file":"spbc-table.min.js","sources":["spbc-table.js"],"sourcesContent":["let spbcBulkAction = null;\nconst noConfirmActions = spbcGetNoConfirmActions(spbcPublic);\n\n/**\n * Reloads scanner accordion and set all the listeners\n * @param {string|null} interactControlTab ajaxResult If is set, will use this var as interactivity data.\n * @param {string|null} updateText\n */\nfunction spbcReloadAccordion(interactControlTab = null, updateText = '') {\n    spbcSendAJAXRequest(\n        {action: 'spbc_scanner_tab__reload_accordion'},\n        {\n            notJson: true,\n            callback: function(result, data, params, obj) {\n                jQuery(obj).accordion('destroy');\n                jQuery(obj).html(result);\n                jQuery(obj).accordion({\n                    header: 'h3',\n                    heightStyle: 'content',\n                    collapsible: true,\n                    active: false,\n                });\n                spbcTblBulkActionsListen();\n                spbcTblRowActionsListen();\n                spbcTblPaginationListen();\n                spbcTblSortListen();\n                spbcStartShowHide();\n                if (interactControlTab !== null && updateText !== null) {\n                    interactScannerTab(interactControlTab, updateText);\n                }\n            },\n        },\n        jQuery('#spbc_scan_accordion'),\n    );\n}\n\n/**\n * Open refreshed tab after scanner reload.\n * @param {string} controlTab\n * @param {string} updateText\n */\nfunction interactScannerTab(controlTab, updateText) {\n    let refreshControlTabSelector;\n    let headerSelector;\n    let headerUpdateStatus;\n\n    if (\n        typeof(controlTab) !== 'string' ||\n        controlTab === '' ||\n        typeof(updateText) !== 'string' ||\n        updateText === ''\n    ) {\n        return;\n    }\n\n    // init refresh controlled tabs\n    refreshControlTabSelector = jQuery('#spbc_scan_accordion div[refresh_control_tab=\"' + controlTab + '\"]')[0];\n\n    // init header to click\n    headerSelector = 'h3[aria-controls=spbc_scan_accordion_tab_' + controlTab + ']';\n    headerSelector = jQuery(headerSelector)[0];\n\n    if (\n        typeof(refreshControlTabSelector) === 'undefined' ||\n        typeof(headerSelector) === 'undefined'\n    ) {\n        return;\n    }\n\n    // show  updated caption\n    jQuery('<div class=\"spbc_accordion_header_caption__update_status\"></div>')\n        .appendTo(headerSelector);\n    headerUpdateStatus = jQuery('.spbc_accordion_header_caption__update_status');\n    jQuery('<div class=\"spbc_accordion_header_caption__updated\">' + updateText + '</div>')\n        .appendTo(headerUpdateStatus);\n\n    // do click to open tab\n    headerSelector.click();\n\n    // highlight header\n    refreshControlTabSelector.setAttribute(\n        'class',\n        'ui-accordion-header ui-corner-top ui-state-default ui-accordion-icons ui-accordion-header-active',\n    );\n\n    // hide all actions on partial reload\n    jQuery('.row-actions').hide();\n}\n\n/**\n * Table bulk actions\n */\nfunction spbcTblBulkActionsListen() {\n    jQuery('.tbl-bulk_actions-all--apply')\n        .off('click')\n        .on('click', function() {\n            // @ToDo perhaps spbcScanner.active is not defined anywhere.\n            //  check this and implement `active` status in the right place\n            if ( spbcScanner.active ) {\n                alert(spbcTableLocalize.scannerIsActive);\n                return;\n            }\n\n            let self = jQuery(this);\n            let spbcCurrentAccordionName = jQuery(this)[0].parentElement.parentElement.id;\n            console.log('actions-all--apply', spbcCurrentAccordionName);\n\n            let allowedBulkActions = [\n                'approve',\n                'disapprove',\n                'send',\n                'check_analysis_status',\n                'approve_page',\n                'disapprove_page',\n                'cure',\n                'delete_from_analysis_log',\n                'restore',\n            ];\n            let action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n            if ( allowedBulkActions.indexOf( action ) !== -1 ) {\n                if (!noConfirmActions.any.includes(action)) {\n                    if (!confirm(spbcTable.warning_bulk)) {\n                        return;\n                    }\n                }\n                let data = {\n                    action: 'spbc_tbl-action--bulk',\n                    add_action: action,\n                    status: self.parents('.tbl-root').attr('type'),\n                };\n\n                if (action === 'cure') {\n                    spbcScannerCureBulk(self, true);\n                    return;\n                }\n\n                if (action === 'restore') {\n                    spbcScannerRestoreBulk(self, true, spbcCurrentAccordionName);\n                }\n\n                if (action === 'delete_from_analysis_log') {\n                    const selectedItems = self.closest('#spbc_tbl__scanner_analysis_log').find('.cb-select');\n                    let fileIds = [];\n\n                    selectedItems.each(function(index, element) {\n                        const elementId = jQuery(element).val();\n                        fileIds.push(elementId);\n                    });\n                    data.file_ids = fileIds;\n                }\n\n                let params = {\n                    button: this,\n                    spinner: self.children('.tbl-preloader--small'),\n                    callback: function(out) {\n                        spbcReloadAccordion();\n                        if ( action === 'check_analysis_status' && typeof out !== 'undefined') {\n                            let html = '<p> Analysis status updated.' +\n                                ' Total: ' + out.counters.total +\n                                ', updated: ' + out.counters.updated +\n                                ', skipped: ' + out.counters.skipped +\n                                ', failed: ' + out.counters.failed +\n                                ', queued: ' + out.counters.queued +\n                                '</p>';\n                            spbcModal.open().put( html );\n                        }\n                        if ( action === 'send' && typeof out !== 'undefined') {\n                            let html = '<p> Files have been sent: ' +\n                                out.files_sent_counter +\n                                '</p>';\n                            spbcModal.open().put(html);\n                        }\n                    },\n                    errorOutput: function( errorText, comment ) {\n                        if ( comment ) {\n                            errorText = errorText + '<br>Additional information:<br>' + comment;\n                        }\n                        spbcModal.open().putError( errorText );\n                    },\n                    timeout: 60000,\n                };\n\n                spbcSendAJAXRequest(data, params);\n            } else {\n                alert('This action is not supported for all files yet =(');\n            }\n        });\n\n    jQuery('.tbl-bulk_actions--apply')\n        .off('click')\n        .on('click', function(e) {\n            let self = spbcBulkAction || jQuery(this);\n            let action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n            if (!spbcBulkAction && !noConfirmActions.any.includes(action) && !confirm(spbcTable.warning_bulk)) {\n                return;\n            }\n\n            spbcBulkAction = self;\n            let spbcCurrentAccordionName = spbcBulkAction[0].parentElement.parentElement.id;\n            console.log('actions--apply', spbcCurrentAccordionName);\n\n            if (action === 'cure') {\n                spbcScannerCureBulk(jQuery(this), false);\n                spbcBulkAction = null;\n                return;\n            }\n\n            if (action === 'restore') {\n                spbcScannerRestoreBulk(jQuery(this), false, spbcCurrentAccordionName);\n                spbcBulkAction = null;\n                return;\n            }\n\n            if (action === 'delete_from_analysis_log') {\n                spbcScannerAnalysisLogDeleteFromLog(jQuery(this));\n                spbcBulkAction = null;\n                return;\n            }\n\n            if (action === 'allow' || action === 'ban') {\n                let sendAction = action === 'ban' ? 'deny' : action;\n                let items = self.parents('.tbl-root').find('.cb-select:checked');\n                if (items) {\n                    self.children('.tbl-preloader--small').show();\n                    items.each(function() {\n                        let ip = jQuery(this).parents('tr').find('.tbl-row_action--'+action).data('ip');\n                        spbcSecLogsFilterIp(ip, sendAction, true);\n                        jQuery(this).prop('checked', false);\n                    });\n                }\n                self.children('.tbl-preloader--small').hide();\n                let msg = action === 'allow' ? 'Allowed' : 'Banned';\n                let html = '<p> Success. Selected IPs have been ' +\n                    msg +\n                    '. Changes will be applied within 10 minutes.' +\n                    '</p>';\n                spbcModal.open().put( html );\n                setTimeout(spbcReloadAccordion, 1900);\n                spbcBulkAction = null;\n                return;\n            }\n\n            if ( action !== '-1' && self.parents('.tbl-root').find('.cb-select').is(':checked') ) {\n                self.children('.tbl-preloader--small').show();\n                // eslint-disable-next-line max-len\n                if (self.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action)[0]) {\n                    self\n                        .parents('.tbl-root')\n                        .find('.cb-select:checked')\n                        .first()\n                        .parents('tr')\n                        .find('.tbl-row_action--'+action)\n                        .click();\n                    self.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n                } else {\n                    self.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n                    self.click();\n                }\n            } else {\n                self.children('.tbl-preloader--small').hide();\n                spbcBulkAction = null;\n                if ( action === 'check_analysis_status' || action === 'disapprove' ) {\n                    let html = '<p> All available files are updated.' + '</p>';\n                    spbcModal.open().put( html );\n                }\n                if ( action === 'send') {\n                    let html = '<p> All available files are sent.' + '</p>';\n                    spbcModal.open().put( html );\n                }\n                setTimeout(spbcReloadAccordion, 1900);\n            }\n            // reset spbcBulkAction if action is restricted\n            if (noConfirmActions.restricted.includes(action)) {\n                spbcBulkAction = null;\n            }\n        });\n}\n\n/**\n * Cure selected files\n * @param {obj} current\n * @param {boolean} allItems\n */\nfunction spbcScannerCureBulk(current, allItems = false) {\n    let selectedIds = [];\n    const selector = allItems ? '.cb-select' : '.cb-select:checked';\n    let selectedItems = current.closest('#spbc_tbl__scanner_cure_log').find(selector);\n\n    if (selectedItems.length === 0) {\n        selectedItems = current.closest('#spbc_scan_accordion_tab_critical').find(selector);\n    }\n\n    if (selectedItems.length === 0) {\n        alert('Please, select elements.');\n        return;\n    }\n\n    selectedItems.each(function(index, element) {\n        const elementId = jQuery(element).val();\n        selectedIds.push(elementId);\n    });\n\n    const data = {\n        action: 'spbc_cure_selected',\n        security: spbcSettings.ajax_nonce,\n        selectedIds: selectedIds,\n    };\n    jQuery.ajax({\n        type: 'POST',\n        url: spbcSettings.ajaxurl,\n        data: data,\n        beforeSend: function() {\n            current\n                .closest('#spbc_tbl__scanner_cure_log')\n                .find('.tbl-button---white_blue .tbl-preloader--in_button')\n                .show();\n        },\n        success: function(result) {\n            current\n                .closest('#spbc_tbl__scanner_cure_log')\n                .find('.tbl-button---white_blue .tbl-preloader--in_button')\n                .hide();\n            const displayData = result.data;\n            // prepare output\n            let divWrapper = document.createElement('div');\n            let pMessage = document.createElement('p');\n            let pCounters = document.createElement('p');\n            let divFiles = document.createElement('div');\n            let bSeeMore = document.createElement('b');\n            let pSeeMore = document.createElement('p');\n            bSeeMore.innerHTML = 'See more details in the threats log.';\n            pSeeMore.append(bSeeMore);\n            const failedToCure = displayData.hasOwnProperty('failed_to_cure') ? displayData.failed_to_cure : [];\n            if (failedToCure.length > 0) {\n                divFiles.innerHTML = failedToCure.join('</br>');\n            }\n            pMessage.innerHTML = displayData.message;\n            pCounters.innerHTML += 'Cured: ' +\n                (\n                    displayData.hasOwnProperty('cured_on_request') ?\n                        displayData.cured_on_request :\n                        0\n                );\n            pCounters.innerHTML += ', already cured: ' +\n                (\n                    displayData.hasOwnProperty('skipped') ?\n                        displayData.skipped :\n                        0\n                );\n            pCounters.innerHTML += ', failed to cure: ' + failedToCure.length;\n\n            divWrapper.append(pMessage);\n            divWrapper.append(pCounters);\n            divWrapper.append(divFiles);\n            if (failedToCure.length > 0) {\n                divWrapper.append(pSeeMore);\n            }\n            if (result.success) {\n                spbcModal.open().put(divWrapper.outerHTML);\n            } else {\n                spbcModal.open().putError(divWrapper.outerHTML);\n            }\n            document.addEventListener('spbcModalClosed', function( e ) {\n                spbcReloadAccordion();\n            });\n        },\n    });\n}\n\n/**\n * Restore selected files\n * @param {obj} current\n * @param {boolean} allItems\n * @param {string|boolean} currentAccordionName\n */\nfunction spbcScannerRestoreBulk(current, allItems = false, currentAccordionName = false) {\n    let selectedIds = [];\n    const selector = allItems ? '.cb-select' : '.cb-select:checked';\n    const selectedItems =\n        currentAccordionName ?\n            current.closest('#' + currentAccordionName).find(selector) :\n            current.closest('#spbc_tbl__scanner_cure_log').find(selector);\n\n    if (selectedItems.length === 0) {\n        alert('Please, select elements.');\n        return;\n    }\n\n    selectedItems.each(function(index, element) {\n        const elementId = jQuery(element).val();\n        selectedIds.push(elementId);\n    });\n\n    const data = {\n        action: 'spbc_restore_selected',\n        security: spbcSettings.ajax_nonce,\n        selectedIds: selectedIds,\n    };\n\n    const isQuarantineLog = currentAccordionName === 'spbc_tbl__scanner_quarantined';\n\n    if (isQuarantineLog) {\n        data.action = 'spbc_restore_from_quarantine';\n    }\n\n    jQuery.ajax({\n        type: 'POST',\n        url: spbcSettings.ajaxurl,\n        data: data,\n        beforeSend: function() {\n            current\n                .closest(isQuarantineLog ? '#spbc_tbl__scanner_quarantined' : '#spbc_tbl__scanner_cure_log')\n                .find('.tbl-button---white_blue .tbl-preloader--in_button')\n                .show();\n        },\n        success: function(result) {\n            if (isQuarantineLog) { \n                if (result.success === false) {\n                    spbcModal.open().putError(result.data);\n                }\n\n                spbcReloadAccordion(null, result.data.message);\n                return;\n            }\n\n            current\n                .closest('#spbc_tbl__scanner_cure_log')\n                .find('.tbl-button---white_blue .tbl-preloader--in_button')\n                .hide();\n            const displayData = result.data;\n            // prepare output\n            let divWrapper = document.createElement('div');\n            let pMessage = document.createElement('p');\n            let pCounters = document.createElement('p');\n            let divFiles = document.createElement('div');\n            const failedToRestore = displayData.hasOwnProperty('failed_to_restore') ?\n                displayData.failed_to_restore :\n                [];\n            if (failedToRestore.length > 0) {\n                divFiles.innerHTML = failedToRestore.join('</br>');\n            }\n            pMessage.innerHTML = displayData.message;\n            pCounters.innerHTML += 'Restored: ' +\n                    (\n                        displayData.hasOwnProperty('restored_on_request') ?\n                            displayData.restored_on_request :\n                            0\n                    );\n            pCounters.innerHTML += ', unchanged or already restored: ' +\n                    (\n                        displayData.hasOwnProperty('skipped') ?\n                            displayData.skipped :\n                            0\n                    );\n            pCounters.innerHTML += ', failed to restore: ' + failedToRestore.length;\n\n            divWrapper.append(pMessage);\n            divWrapper.append(pCounters);\n            divWrapper.append(divFiles);\n\n            if (result.success) {\n                spbcModal.open().put(divWrapper.outerHTML);\n            } else {\n                spbcModal.open().putError(divWrapper.outerHTML);\n            }\n            document.addEventListener('spbcModalClosed', function( e ) {\n                spbcReloadAccordion();\n            });\n        },\n    });\n}\n\n/**\n * Table row actions\n */\nfunction spbcTblRowActionsListen() {\n    jQuery('.tbl-row_action--ajax')\n        .off('click')\n        .on('click', function() {\n            if ( spbcScanner.active ) {\n                alert(spbcTableLocalize.scannerIsActive);\n                return;\n            }\n            let self = jQuery(this);\n            let data = {\n                action: 'spbc_tbl-action--row',\n                add_action: self.attr('row-action'),\n                id: self.parents('.row-actions').attr('uid'),\n                cols: self.parents('.row-actions').attr('cols_amount'),\n                page_url: self.parent().attr('uid'),\n                page_id: self.parent().attr('page_id'),\n            };\n            let params = {\n                callback: spbcTblRowActionsCallback,\n                errorOutput: function(msg, comment, hideSupportLink) {\n                    spbcModal.open().putError( msg, hideSupportLink );\n                },\n                spinner: self.parent().siblings('.tbl-preloader--tiny'),\n            };\n\n            // @ToDo delete this timeout after ready task #10014\n            if ( self.attr('row-action') === 'delete' || self.attr('row-action') === 'quarantine' ) {\n                params.timeout = 60000;\n            }\n\n            let fileName = self.parent().parent()[0].firstChild.innerHTML;\n            let confirmationHeader = spbcTable['warning_h_'+self.attr('row-action')] || spbcTable.warning_default;\n            let confirmationText = spbcTable['warning_t_'+self.attr('row-action')] || '';\n            // init row actions with no confirm required\n            if ( spbcBulkAction || noConfirmActions.any.includes(data.add_action) ) {\n                // do not request user confirmation if the action is excluded or if it is a bulk action\n                spbcSendAJAXRequest(data, params, self.parents('tr'));\n            } else {\n                // do request confirmation otherwise\n                const yesButtonText = self.attr('row-action') === 'quarantine' ? 'Quarantine' : 'Yes';\n                const noButtonText = self.attr('row-action') === 'quarantine' ? 'Cancel' : 'No';\n                spbcModal.open().confirm(confirmationHeader, confirmationText, fileName, (confirmed) => {\n                    if (confirmed) {\n                        spbcSendAJAXRequest(data, params, self.parents('tr'));\n                    }\n                }, yesButtonText, noButtonText);\n            }\n        });\n}\n\n/**\n * Row actions with no confirm required.\n * @param {object} spbcPublic Global localized SPBC object\n * @return {{}}\n */\nfunction spbcGetNoConfirmActions(spbcPublic) {\n    let noConfirmActionsEmpty = {\n        'any': [],\n        'restricted': [],\n        'defaults': [],\n    };\n    let noConfirmActions = noConfirmActionsEmpty;\n    try {\n        if ( typeof spbcPublic !== 'undefined' && spbcPublic.hasOwnProperty('no_confirm_row_actions')) {\n            noConfirmActions = JSON.parse(spbcPublic.no_confirm_row_actions);\n        }\n        if (\n            typeof noConfirmActions.any.includes !== 'function' ||\n            typeof noConfirmActions.restricted.includes !== 'function' ||\n            typeof noConfirmActions.defaults.includes !== 'function'\n        ) {\n            noConfirmActions = noConfirmActionsEmpty;\n        }\n    } catch (e) {\n        noConfirmActions = noConfirmActionsEmpty;\n    }\n    return noConfirmActions;\n}\n\n/**\n * Callback for table row actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblRowActionsCallback(result, data, params, obj) {\n    if (result.color) {\n        obj.css({background: result.background, color: result.color});\n    }\n    if (result.html) {\n        obj.parent().parent().parent().prepend(result.html);\n        setTimeout(function() {\n            obj.fadeOut(300);\n        }, 1500);\n        if ( ! spbcBulkAction) {\n            setTimeout(spbcReloadAccordion, 1900);\n        }\n    }\n\n    if (\n        data.add_action === 'copy_file_info'\n    ) {\n        if (result.success === true && result.data.file_info) {\n            window.prompt(\n                'Copy the file info below and send it to ' + spbcSettings['wl_support_email'],\n                result.data.file_info,\n            );\n        } else {\n            let errorText = (typeof result.data.error !== 'undefined') ?\n                result.data.error :\n                'Unknown copy_file_info error';\n            spbcModal.open().putError( errorText );\n        }\n    }\n\n    if (result.temp_html) {\n        let tmp=obj.html();\n        obj.html(result.temp_html);\n        if (result.updated_template !== undefined) {\n            let updatedType = result.updated_template_type;\n            let template = result.updated_template;\n            let rowsInTemplate = jQuery(template).find('.wp-list-table tbody tr');\n            let countRowInTemplate = rowsInTemplate.length;\n            let targetTab = jQuery('[aria-controls=\"spbc_scan_accordion_tab_' + updatedType + '\"]');\n\n            if (targetTab.length > 0) {\n                let table = jQuery('#spbc_tbl__scanner_' + updatedType);\n                // Count files in header\n                jQuery('.spbc_bad_type_count.' + updatedType + '_counter').text(countRowInTemplate);\n                // Count rows in table\n                let countExistingRows = table.find('.wp-list-table tbody tr').length;\n                table.remove();\n                jQuery('#spbc_scan_accordion_tab_' + updatedType).append(template);\n                // Marked new rows\n                jQuery(jQuery('#spbc_scan_accordion_tab_' + updatedType)\n                    .find('.wp-list-table tbody tr'))\n                    .each(function(index, element) {\n                        if (++index > countExistingRows) {\n                            jQuery(element).css('outline', '1px solid green');\n                        }\n                    });\n                targetTab.click();\n            } else {\n                if (updatedType === 'analysis_log') {\n                    // eslint-disable-next-line max-len\n                    let tabHeaderTemplate = '<h3 class=\"ui-accordion-header ui-corner-top ui-state-default ui-accordion-icons ui-accordion-header-collapsed ui-corner-all\" role=\"tab\" id=\"ui-id-2\" aria-controls=\"spbc_scan_accordion_tab_analysis_log\" aria-selected=\"false\" aria-expanded=\"false\" tabindex=\"-1\"><span class=\"ui-accordion-header-icon ui-icon ui-icon-triangle-1-e\"></span><a href=\"#\">Analysis Log (<span class=\"spbc_bad_type_count analysis_log_counter\">' + countRowInTemplate + '</span>)</a></h3>';\n                    // eslint-disable-next-line max-len\n                    let tabBodyTemplate = '<div id=\"spbc_scan_accordion_tab_analysis_log\" class=\"ui-accordion-content ui-corner-bottom ui-helper-reset ui-widget-content\" aria-labelledby=\"ui-id-2\" role=\"tabpanel\" aria-hidden=\"true\" style=\"display: none;\"><p class=\"spbc_hint\">Files sent for analysis.</p><div id=\"spbc_tbl__scanner_analysis_log\" type=\"analysis_log\" class=\"tbl-root\">' +\n                        template +\n                        '</div>';\n                    jQuery('#spbc_scan_accordion_tab_critical').after(tabHeaderTemplate + tabBodyTemplate);\n                    targetTab.click();\n                }\n            }\n        }\n        setTimeout(function() {\n            obj\n                .html(tmp)\n                .css({background: 'inherit'})\n                .find('.column-primary .row-actions .tbl-row_action--' + data.add_action)\n                .remove();\n            spbcTblBulkActionsListen();\n            spbcTblRowActionsListen();\n            spbcStartShowHide();\n        }, 5000);\n    }\n    if (spbcBulkAction) {\n        spbcBulkAction.click();\n    }\n}\n\n/**\n * Table pagination actions\n */\nfunction spbcTblPaginationListen() {\n    let data = {action: 'spbc_tbl-pagination'};\n    let params = {callback: spbcTblPaginationCallback, notJson: true};\n    jQuery('.tbl-pagination--button').on('click', function() {\n        jQuery(this).parents('.tbl-root').find('.tbl-pagination--button').attr('disabled', 'disabled');\n    });\n    jQuery('.tbl-pagination--go').on('click', function() {\n        let self = jQuery(this);\n        let obj = self.parents('.tbl-root');\n        data.page = self.siblings('.tbl-pagination--curr_page').val();\n        data.type = obj.attr('type');\n        params.spinner = self.siblings('.tbl-preloader--small');\n        spbcSendAJAXRequest(data, params, obj);\n    });\n    jQuery('.tbl-pagination--prev').on('click', function() {\n        let self = jQuery(this);\n        let obj = self.parents('.tbl-root');\n        data.page = self.parents('.tbl-pagination--wrapper').attr('prev_page');\n        data.type = obj.attr('type');\n        params.spinner = self.siblings('.tbl-preloader--small');\n        spbcSendAJAXRequest(data, params, obj);\n    });\n    jQuery('.tbl-pagination--next').on('click', function() {\n        let self = jQuery(this);\n        let obj = self.parents('.tbl-root');\n        data.page = self.parents('.tbl-pagination--wrapper').attr('next_page');\n        data.type = obj.attr('type');\n        params.spinner = self.siblings('.tbl-preloader--small');\n        spbcSendAJAXRequest(data, params, obj);\n    });\n    jQuery('.tbl-pagination--end').on('click', function() {\n        let self = jQuery(this);\n        let obj = self.parents('.tbl-root');\n        data.page = self.parents('.tbl-pagination--wrapper').attr('last_page');\n        data.type = obj.attr('type');\n        params.spinner = self.siblings('.tbl-preloader--small');\n        spbcSendAJAXRequest(data, params, obj);\n    });\n    jQuery('.tbl-pagination--start').on('click', function() {\n        let self = jQuery(this);\n        let obj = self.parents('.tbl-root');\n        data.page = 1;\n        data.type = obj.attr('type');\n        params.spinner = self.siblings('.tbl-preloader--small');\n        spbcSendAJAXRequest(data, params, obj);\n    });\n}\n\n/**\n * Callback for Table pagination actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblPaginationCallback(result, data, params, obj) {\n    jQuery(obj)\n        .html(result)\n        .find('.tbl-pagination--button').removeAttr('disabled');\n    spbcTblBulkActionsListen();\n    spbcTblRowActionsListen();\n    spbcTblPaginationListen();\n    spbcTblSortListen();\n    spbcStartShowHide();\n}\n\n/**\n * Table sort actions\n */\nfunction spbcTblSortListen() {\n    let params = {callback: spbcTblSortCallback, notJson: true};\n    jQuery('.tbl-column-sortable').on('click', function(e) {\n        if (e.target.classList.contains('tbl-sorting_indicator')) {\n            let self = jQuery(this);\n            let obj = self.parents('.tbl-root');\n            let domain = obj.attr('type') == 'links'? jQuery('#spbc_tbl__scanner__outbound_links b').html(): '';\n            let data = {\n                action: 'spbc_tbl-sort',\n                order_by: self.attr('id'),\n                order: self.attr('sort_direction'),\n                type: obj.attr('type'),\n                domain: domain,\n            };\n            spbcSendAJAXRequest(data, params, obj);\n        }\n    });\n}\n\n/**\n * Callback for Table sort actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblSortCallback(result, data, params, obj) {\n    jQuery(obj).html(result);\n    spbcTblBulkActionsListen();\n    spbcTblRowActionsListen();\n    spbcTblPaginationListen();\n    spbcTblSortListen();\n}\n\njQuery(document).ready(function() {\n    // Table. Row actions handler\n    spbcTblBulkActionsListen();\n    spbcTblRowActionsListen();\n    spbcTblPaginationListen();\n    spbcTblSortListen();\n    spbcEATUpdateIntervalStart();\n});\n\n/**\n * Switching table handler\n * Using by inline php code\n *\n * @param {obj} obj\n * @param {obj} table\n *\n */\nfunction spbcScannerSwitchTable(obj, table) {/* eslint-disable-line no-unused-vars */\n    let _obj = jQuery(obj);\n    let domain = _obj.parents('.row-actions').attr('uid');\n    let data = {action: 'spbc_tbl-switch', type: table, domain: domain};\n    let params = {callback: spbcTblPaginationCallback, notJson: true};\n    spbcSendAJAXRequest(data, params, _obj.parents('.tbl-root'));\n}\n\n/**\n * Open/close table rows handler\n * Using by inline php code\n *\n * @param {string} blockId\n * @param {string} columnKey\n */\nfunction spbcShowHideRows(blockId, columnKey) {/* eslint-disable-line no-unused-vars */\n    let className = '.' + columnKey + '_block_' + blockId;\n    let block = jQuery(className);\n    if (block.hasClass('mob_table_active')) {\n        block.removeClass('mob_table_active');\n    } else {\n        block.addClass('mob_table_active');\n    }\n}\n\n/**\n * Starts an interval to update the analysis log table and stats every 6 seconds.\n */\nfunction spbcEATUpdateIntervalStart() {\n    setInterval(() => {\n        // Check if the analysis log tab is present\n        if (document.querySelector('div[refresh_control_tab=\"analysis_log\"]') !== null) {\n            // Add a spinner to the analysis log tab header\n            spbcEATAddSpinner();\n            // Update the analysis log table\n            spbcUpdateTableEAT();\n            // Update the analysis log stats\n            spbcUpdateStatsEAT();\n        }\n    }, 60000);\n}\n\n/**\n * Adds a spinner to the analysis log tab header if it doesn't already exist.\n */\nfunction spbcEATAddSpinner() {\n    if (document.getElementById('analysis_log_counter_spinner') === null) {\n        const refreshTab = document.querySelector('h3[aria-controls=\"spbc_scan_accordion_tab_analysis_log\"]');\n        if (refreshTab !== null) {\n            const spinner = document.createElement('img');\n            spinner.class = 'spbc_preloader';\n            // todo Probably we need a validation function of spbcSettings object\n            spinner.alt = spbcSettings.spbcSpinner.altText;\n            spinner.src = spbcSettings.spbcSpinner.imgSource;\n            spinner.id = 'analysis_log_counter_spinner';\n            spinner.style = 'display: none; height: 13px; position: relative; top: 2px; margin-left: 5px';\n            refreshTab.append(spinner);\n        }\n    }\n    spbcEATSwitchSpinner();\n}\n\n/**\n * Toggles the display of the spinner in the analysis log tab header.\n */\nfunction spbcEATSwitchSpinner() {\n    const spinner = document.getElementById('analysis_log_counter_spinner');\n    if (spinner !== null) {\n        spinner.style.display = spinner.style.display === 'none' ?\n            spinner.style.display = 'inline' :\n            spinner.style.display = 'none';\n    }\n}\n\n/**\n * Sends an AJAX request to update the analysis log table.\n */\nfunction spbcUpdateTableEAT() {\n    // Define the tab name for the request\n    let tabName = 'scanner';\n    // Data object containing parameters for the AJAX request\n    let data = {\n        action: 'spbc_settings__draw_elements',\n        tab_name: tabName,\n        security: spbcSettings.ajax_nonce,\n    };\n    // Params object with additional settings for the AJAX request\n    let currentParams = {\n        callback: spbcUpdateTableCallbackEAT,\n        notJson: true,\n        additional: null,\n    };\n    // Send the AJAX request with the data and params objects\n    spbcSendAJAXRequest( data, currentParams, null );\n}\n\n/**\n * Callback function to update the analysis log table with new HTML content.\n *\n * @param {string} allTablesHTML - The HTML content of all tables.\n */\nfunction spbcUpdateTableCallbackEAT(allTablesHTML) {\n    // select the same table element to search in the current code and update from received\n    const analysisTableSelector = '#spbc_tbl__scanner_analysis_log';\n    const parser = new DOMParser();\n    const allTablesHTMLParsed = parser.parseFromString(allTablesHTML, 'text/html');\n\n    let newTabElement = null;\n    let newTabElementInnerHTML = '';\n    let currentTabElement = null;\n\n    // get new analysis table element and its HTML\n    newTabElement = allTablesHTMLParsed.querySelector(analysisTableSelector);\n    if (newTabElement !== null && newTabElement.innerHTML !== '') {\n        newTabElementInnerHTML = newTabElement.innerHTML;\n    }\n\n    // get current analysis table element and its HTML\n    currentTabElement = document.querySelector(analysisTableSelector);\n    if (currentTabElement !== null && currentTabElement.innerHTML === '') {\n        currentTabElement = null;\n    }\n\n    // update analysis table element if it's changed and new data presented\n    if (currentTabElement !== null && newTabElementInnerHTML !== '') {\n        currentTabElement.innerHTML = newTabElementInnerHTML;\n    }\n}\n\n/**\n * Sends an AJAX request to update the analysis log stats.\n */\nfunction spbcUpdateStatsEAT() {\n    // Data object containing parameters for the AJAX request\n    let data = {\n        action: 'spbc_analysyis_files_stats__get_html',\n        sub_action: 'give_me_html',\n        security: spbcSettings.ajax_nonce,\n    };\n    // Params object with additional settings for the AJAX request\n    let params = {\n        callback: spbcUpdateStatsCallbackEAT,\n        notJson: true,\n    };\n    // Send the AJAX request with the data and params objects\n    spbcSendAJAXRequest(data, params);\n}\n\n/**\n * Callback function to update the analysis log stats with new HTML content.\n *\n * @param {string} newStatsHtml - The new HTML content for the stats.\n */\nfunction spbcUpdateStatsCallbackEAT(newStatsHtml) {\n    // Get the element that displays the analysis files stats\n    let info = document.getElementById('spbc_analysis_files_stats');\n    // If the element exists, update its inner HTML with the new stats\n    if (info) {\n        info.innerHTML = newStatsHtml;\n    }\n    // Toggle the display of the spinner in the analysis log tab header\n    spbcEATSwitchSpinner();\n}\n"],"names":["let","spbcBulkAction","noConfirmActions","spbcGetNoConfirmActions","spbcPublic","spbcReloadAccordion","interactControlTab","updateText","spbcSendAJAXRequest","action","notJson","callback","result","data","params","obj","jQuery","accordion","html","header","heightStyle","collapsible","active","spbcTblBulkActionsListen","spbcTblRowActionsListen","spbcTblPaginationListen","spbcTblSortListen","spbcStartShowHide","interactScannerTab","controlTab","refreshControlTabSelector","headerUpdateStatus","headerSelector","appendTo","click","setAttribute","hide","off","on","spbcScanner","alert","spbcTableLocalize","scannerIsActive","self","this","spbcCurrentAccordionName","parentElement","id","console","log","siblings","children","first","selectedIndex","value","indexOf","any","includes","confirm","spbcTable","warning_bulk","add_action","status","parents","attr","spbcScannerCureBulk","spbcScannerRestoreBulk","selectedItems","closest","find","fileIds","each","index","element","elementId","val","push","file_ids","button","spinner","out","counters","total","updated","skipped","failed","queued","spbcModal","open","put","files_sent_counter","errorOutput","errorText","comment","putError","timeout","e","spbcScannerAnalysisLogDeleteFromLog","sendAction","items","msg","show","ip","spbcSecLogsFilterIp","prop","setTimeout","is","restricted","current","allItems","selectedIds","selector","length","security","spbcSettings","ajax_nonce","ajax","type","url","ajaxurl","beforeSend","success","displayData","divWrapper","document","createElement","pMessage","pCounters","divFiles","bSeeMore","pSeeMore","failedToCure","innerHTML","append","hasOwnProperty","failed_to_cure","join","message","cured_on_request","outerHTML","addEventListener","currentAccordionName","isQuarantineLog","failedToRestore","failed_to_restore","restored_on_request","cols","page_url","parent","page_id","spbcTblRowActionsCallback","hideSupportLink","yesButtonText","noButtonText","fileName","firstChild","confirmationHeader","warning_default","confirmationText","confirmed","noConfirmActionsEmpty","defaults","JSON","parse","no_confirm_row_actions","color","css","background","prepend","fadeOut","file_info","window","prompt","error","temp_html","tmp","undefined","updated_template","updatedType","updated_template_type","template","countRowInTemplate","targetTab","table","text","countExistingRows","remove","tabHeaderTemplate","tabBodyTemplate","after","spbcTblPaginationCallback","page","removeAttr","spbcTblSortCallback","domain","target","classList","contains","order_by","order","spbcScannerSwitchTable","_obj","spbcShowHideRows","blockId","columnKey","block","hasClass","removeClass","addClass","spbcEATUpdateIntervalStart","setInterval","querySelector","spbcEATAddSpinner","spbcUpdateTableEAT","spbcUpdateStatsEAT","refreshTab","getElementById","class","alt","spbcSpinner","altText","src","imgSource","style","spbcEATSwitchSpinner","display","tab_name","spbcUpdateTableCallbackEAT","additional","allTablesHTML","analysisTableSelector","newTabElementInnerHTML","currentTabElement","newTabElement","DOMParser","parseFromString","sub_action","spbcUpdateStatsCallbackEAT","newStatsHtml","info","ready"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit