| Server IP : 104.21.25.182 / Your IP : 216.73.216.60 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 : |
{"version":3,"file":"spbc-admin.min.js","sources":["spbc-admin.js"],"sourcesContent":["/**\n * Get 2FAApp Qr Code\n *\n * @return {object}\n */\nfunction spbcGet2FAAppQrCode() {\n let data = {};\n let res = {};\n data.security = spbcSettings.ajax_nonce;\n data.action = 'spbc_get_2fa_app_qr_code';\n\n jQuery.ajax({\n type: 'POST',\n async: false,\n url: spbcSettings.ajaxurl,\n data: data,\n success: function(result) {\n res = result;\n },\n });\n return res;\n}\n\n/**\n * Check 2FAApp Code\n */\nfunction spbcCheck2FAAppCode() {\n let data = {};\n data.security = spbcSettings.ajax_nonce;\n data.action = 'spbc_check_2fa_app_code';\n data.code = jQuery('#spbct-2fa-app-qr-code input').val();\n\n jQuery.ajax({\n type: 'POST',\n async: false,\n url: spbcSettings.ajaxurl,\n data: data,\n success: function(result) {\n if (result.success) {\n jQuery('#spbct-2fa-app-qr-code').dialog( 'close' );\n const submitButton = jQuery('form#your-profile input#submit');\n if (submitButton.length > 0) {\n submitButton.click();\n }\n } else {\n alert(result.data);\n }\n },\n });\n}\n\n/**\n * Disable 2FAApp\n *\n * @param {string} element\n */\nfunction spbcDisable2FAApp(element ) {\n let data = {};\n data.security = spbcSettings.ajax_nonce;\n data.action = 'spbc_disable_2fa_app';\n data.user_id = jQuery(element).data('user-id');\n\n jQuery.ajax({\n type: 'POST',\n async: false,\n url: spbcSettings.ajaxurl,\n data: data,\n success: function(result) {\n if (result.success) {\n document.location.reload();\n } else {\n alert(result.data);\n }\n },\n });\n}\n\n/**\n * Check Vulnerability\n *\n * @param {array} list\n * @param {string} type\n */\nfunction spbcCheckVulnerability(list, type = 'install') {\n let data = {};\n data.security = spbcSettings.ajax_nonce;\n data.action = type === 'install' ? 'spbc_check_vulnerability_install' : 'spbc_check_vulnerability_list';\n data.list = list;\n\n jQuery.ajax({\n type: 'POST',\n async: false,\n url: spbcSettings.ajaxurl,\n data: data,\n success: function(result) {\n if (result.success) {\n if (type === 'install') {\n spbcCheckVulnerabilityInstallRender(result.list, result.msg);\n }\n if (type === 'list') {\n spbcCheckVulnerabilityListRender(result.list);\n }\n } else {\n console.log(result);\n }\n },\n });\n}\n\n/**\n * Check Vulnerability List Render\n *\n * @param {object} list\n * @param {string} msg\n */\nfunction spbcCheckVulnerabilityListRender(list) {\n let card;\n let badge;\n\n list.forEach((el) => {\n badge = document.createElement('div');\n badge.classList.add('notice', 'notice-error', 'error-message', 'spbc-vulnerable-notice');\n badge.innerHTML = el.msg;\n card = document.querySelector('.themes .theme[data-slug=' + el.slug + ']');\n if (card) {\n card.appendChild(badge);\n }\n });\n}\n\n/**\n * Check Vulnerability Install Render\n *\n * @param {object} list\n * @param {string} msg\n */\nfunction spbcCheckVulnerabilityInstallRender(list, msg) {\n let card;\n\n let badge = document.createElement('div');\n badge.classList.add('notice');\n badge.innerHTML = '<p>' + msg + '</p>';\n\n list.forEach((el) => {\n card = document.querySelector('.theme-id-container .theme-actions a[data-slug=' + el + ']');\n if (card) {\n card.parentNode.parentNode.parentNode.appendChild(badge);\n }\n });\n}\n\njQuery(document).ready(function() {\n if (window.location.href.indexOf('themes.php') > -1 && spbcSettings.vulnerabilityShowList) {\n let slugsState = [];\n let slugs = [];\n let slugsNodes;\n let version;\n\n setInterval(function() {\n slugsNodes = document.querySelectorAll('.themes .theme[data-slug]');\n\n if (slugsNodes.length > 0) {\n slugs = [];\n slugsNodes.forEach(function(el) {\n version = el.querySelector('img').src ?\n el.querySelector('img').src.match(/ver=([\\d\\.]+)/)[1] :\n null;\n slugs.push({'slug': el.dataset.slug, 'version': version});\n });\n }\n\n if (JSON.stringify(slugs) != JSON.stringify(slugsState)) {\n slugsState = slugs;\n spbcCheckVulnerability(slugs, 'list');\n }\n }, 500);\n }\n\n if (window.location.href.indexOf('theme-install.php') > -1 && spbcSettings.vulnerabilityShowInstall) {\n let slugsState = [];\n let slugs = [];\n let slugsNodes;\n\n setInterval(function() {\n slugsNodes = document.querySelectorAll('.theme-id-container .theme-actions a[data-slug]');\n\n if (slugsNodes.length > 0) {\n slugs = [];\n slugsNodes.forEach(function(el) {\n slugs.push(el.dataset.slug);\n });\n }\n\n if (JSON.stringify(slugs) != JSON.stringify(slugsState)) {\n slugsState = slugs;\n spbcCheckVulnerability(slugs);\n }\n }, 500);\n }\n\n // Auto update banner close handler\n jQuery('.spbc_update_notice').on('click', 'button', function() {\n spbcSetCookie('spbc_update_banner_closed', 1, 86400 * 30);\n });\n\n // Enable G2FA from user profile page\n jQuery(document).on('click', '#spbc-g2fa-enable', function(e) {\n e.preventDefault();\n let spbc2FAAppQrCode = spbcGet2FAAppQrCode();\n\n if ( spbc2FAAppQrCode.success ) {\n let qrCodeDiv = jQuery('#spbct-2fa-app-qr-code-img');\n qrCodeDiv.html(spbc2FAAppQrCode.data.img + '<p>' + spbc2FAAppQrCode.data.code + '</p>');\n jQuery('#spbct-2fa-app-qr-code input').val('');\n jQuery('#spbct-2fa-app-qr-code').dialog({\n modal: true,\n title: '2FA Code (One-time passcode) activation',\n buttons: {\n Cancel: function() {\n jQuery( this ).dialog( 'close' );\n },\n Ok: function() {\n spbcCheck2FAAppCode();\n },\n },\n draggable: false,\n resizable: false,\n });\n } else {\n alert(spbcGet2FAAppQrCode.data);\n }\n });\n\n // Disable G2FA from user profile page\n jQuery(document).on('click', '#spbc-2fa-code-disable', function(e) {\n e.preventDefault();\n if ( confirm( 'Are you sure?' ) ) {\n spbcDisable2FAApp( this );\n }\n });\n\n let refreshUserOnlineCounter = function( result, data, params ) {\n setTimeout(function() {\n if ( result !== null ) {\n jQuery('.spbc-admin_bar--user_counter').html(result.count);\n if ( result.count <= 3 ) {\n jQuery('#wp-admin-bar-spbc_admin_bar__online_admins').show();\n jQuery('.spbc-admin_bar--online_admins').html(result.users.join(', '));\n } else {\n jQuery('#wp-admin-bar-spbc_admin_bar__online_admins').hide();\n }\n }\n spbcSendAJAXRequest( data, params );\n }, 15000 );\n };\n\n if ( +spbcSettings.admin_bar__admins_online_counter === 1 ) {\n refreshUserOnlineCounter(null, {action: 'spbc_get_authorized_admins'}, {callback: refreshUserOnlineCounter});\n }\n\n // Dismiss admin banner\n spbcHandleBannersDismissing();\n\n if (+spbcSettings.needToWhitelist === 1) {\n spbcSendAJAXRequest( {'action': 'spbc_private_list_add'}, {'callback': null} );\n }\n\n if ( +spbcSettings.critical > 0) {\n let ringContainer = document.createElement('div');\n ringContainer.className = 'spbc_ring-container';\n ringContainer.style.top = '0px';\n ringContainer.style.right = '70px';\n let ringRing = document.createElement('div');\n ringRing.className = 'spbc_ringring';\n let circle = document.createElement('div');\n circle.className = 'spbc_circle';\n\n ringContainer.appendChild(ringRing);\n ringContainer.appendChild(circle);\n\n let settings = document.querySelector('#menu-settings');\n if (settings) {\n settings.appendChild(ringContainer);\n }\n }\n\n jQuery(document).on('keyup', '#spbc_key', function(e) {\n e.preventDefault();\n let value = jQuery('#spbc_key').val();\n if (/^[a-zA-Z0-9]+$/.test(value) && value.length > 8) {\n jQuery('#spbc-key-manually-link').hide();\n jQuery('#spbc_setting_get_key_auto').hide();\n jQuery('#spbc_get_key_or_text').hide();\n } else {\n jQuery('#spbc-key-manually-link').show();\n jQuery('#spbc_setting_get_key_auto').show();\n jQuery('#spbc_get_key_or_text').show();\n }\n });\n\n if (spbcSettings['wl_mode_enabled']) {\n // any usage of non WL name\n jQuery('.plugin-title strong').each( function(i, item) {\n if (jQuery(item).html().indexOf('Security by CleanTalk') >= 0) {\n jQuery(item).html(jQuery(item).html().replace('CleanTalk', spbcSettings['wl_company_name']));\n }\n });\n // Edit plugin update chunks and links\n const updateLink = jQuery(\n '.plugin-update-tr[data-slug=\"security-malware-firewall\"] .open-plugin-details-modal',\n );\n const updateText = updateLink.text();\n const version = updateText.match(/version (\\d+\\.\\d+)/i)?.[1];\n updateLink.remove();\n jQuery('.plugin-update-tr[data-slug=\"security-malware-firewall\"] p').each(function() {\n let href = jQuery(\n `.plugin-update-tr[data-slug=\"security-malware-firewall\"]\n a[aria-label=\"Update Security by CleanTalk now\"]`,\n );\n const textToReplace = 'Update now to ' + version;\n href.text(textToReplace);\n jQuery(this).text(jQuery(this).text().replace(' or ', ''));\n jQuery(this).text(jQuery(this).text().replace(textToReplace + '.', ' '));\n jQuery(this).append(href);\n });\n }\n\n // Users pass check\n if (window.location.href.indexOf('users.php') > -1) {\n // check if url contains user_ids\n if (document.querySelector('#spbc_pass_check')) {\n spbcGetPassLeak();\n }\n }\n});\n\n/**\n * Get pass leak\n */\nfunction spbcGetPassLeak() {\n let data = {};\n data.security = spbcSettings.ajax_nonce;\n data.action = 'spbc_check_pass_leak';\n data.user_ids = [];\n\n let users = document.querySelectorAll('table.users #the-list tr[id]');\n users.forEach((el) => data.user_ids.push(el.getAttribute('id').split('-')[1]));\n\n jQuery.ajax({\n type: 'POST',\n async: false,\n url: spbcSettings.ajaxurl,\n data: data,\n success: function(result) {\n document.querySelectorAll('table.users #the-list tr[id]').forEach((el) => {\n const userId = el.getAttribute('id').split('-')[1];\n if (result.data[userId]) {\n let span = document.createElement('span');\n span.textContent = result.data[userId].text;\n\n if (result.data[userId].status === 'safe') {\n span.classList.add('spbcGreen');\n let img = document.createElement('img');\n img.src = spbcSettings.img_path + '/yes.png';\n img.style.marginLeft = '5px';\n span.appendChild(img);\n }\n if (result.data[userId].status === 'leaked') {\n console.log(result.data[userId]);\n span.classList.add('spbcRed');\n let icon = document.createElement('i');\n icon.classList.add('spbc-icon-attention-alt');\n icon.style.backgroundColor = '#d63638';\n icon.style.color = '#fff';\n icon.style.borderRadius = '50%';\n icon.style.fontSize = '10px';\n icon.style.padding = '2px';\n icon.style.marginLeft = '5px';\n span.appendChild(icon);\n }\n\n el.querySelector('.column-spbc_pass_check').appendChild(span);\n }\n });\n },\n });\n}\n\n/**\n * Summary Show CDN Checker Table\n */\nfunction spbcSummaryShowCDNCheckerTable() {/* eslint-disable-line no-unused-vars */\n event.preventDefault();\n let table = document.getElementById('spbc_stats_cdn_checker_table');\n if (typeof (table) !== 'undefined') {\n if (table.style.display === 'block') {\n table.style.display = 'none';\n } else {\n table.style.display = 'block';\n }\n }\n}\n\n/**\n * Dismiss function for banners.\n */\nfunction spbcHandleBannersDismissing() {\n let body = jQuery('body');\n body.on('click', '.spbct-notice-dismiss-link', function(e) {\n jQuery(e.target).siblings('.notice-dismiss').click();\n });\n body.on('click', '.spbc-notice .notice-dismiss', function(e) {\n const bannerId = jQuery(e.target).parent('.notice').attr('id');\n if (bannerId) {\n // call ajax to dismiss banner anyway\n // todo There is no case when further API call for notice_review is unsuccessful,\n // todo but it should be handled in the future\n spbcSendAJAXRequest({'action': 'spbc_dismiss_banner', 'banner_id': bannerId}, {});\n\n // check if there is a postNoticeText to show after dismissing the notice\n if (\n typeof spbcSettings !== 'undefined' &&\n spbcSettings.hasOwnProperty('spbctNoticeDismissSuccess')\n ) {\n // get afterDismissingNotices from localized settings\n let afterDismissingNotices = spbcSettings.spbctNoticeDismissSuccess;\n // default postNoticeText\n let postNoticeText = '';\n // default notice level\n let noticeLevel = '';\n if (typeof afterDismissingNotices === 'string') {\n // try to parse JSON\n try {\n afterDismissingNotices = JSON.parse(afterDismissingNotices);\n } catch (e) {\n afterDismissingNotices = [];\n }\n // get postNoticeText and noticeLevel according to bannerName\n for (const afterDismissingNotice of afterDismissingNotices) {\n if (\n afterDismissingNotice.hasOwnProperty('bannerName') &&\n afterDismissingNotice.hasOwnProperty('postNoticeText')\n ) {\n let bannerName = afterDismissingNotice.bannerName;\n // if banner name is in the bannerId, show the postNoticeText\n if (bannerId.indexOf(bannerName) !== -1) {\n postNoticeText = afterDismissingNotice.postNoticeText;\n }\n // if noticeLevel is set, use it\n if (afterDismissingNotice.hasOwnProperty('noticeLevel')) {\n noticeLevel = afterDismissingNotice.noticeLevel;\n }\n }\n }\n }\n\n // if postNoticeText is set, show it\n if (postNoticeText !== '') {\n const noticeClassList = 'notice ' + noticeLevel + ' is-dismissible';\n let elem = '<div id=\"spbct-notice-dismiss-success\" class=\"' + noticeClassList + '\">' +\n '<p>' +\n postNoticeText +\n '</p></div>';\n jQuery(e.target)\n .parent('.notice')\n .after(elem);\n setTimeout(function() {\n jQuery('#spbct-notice-dismiss-success').fadeOut();\n }, 5000);\n }\n }\n }\n });\n}\n\n// eslint-disable-next-line no-unused-vars\n/**\n * Highlights the critical files notice if the URL contains specific parameters.\n *\n * @param {boolean} [isBannerCall=false] - Indicates if the function is called from a banner.\n *\n */\nfunction spbcHighlightCriticalFilesNotice(isBannerCall = false) { // eslint-disable-line no-unused-vars\n // Check if the URL contains the parameters to highlight the notice\n let needToHighlightNotice = window.location.href.indexOf('spbc_tab=scanner&highlight_critical_files=1') !== -1;\n let redirectConditionIsOK = window.location.href.indexOf('spbc_tab=scanner') === -1;\n\n // Redirect to the scanner tab if called from a banner and the condition is met\n if (isBannerCall && redirectConditionIsOK) {\n window.location.href = 'options-general.php?page=spbc&spbc_tab=scanner&highlight_critical_files=1';\n return;\n }\n\n // If the notice needs to be highlighted\n if (needToHighlightNotice || isBannerCall) {\n let criticalFilesNotice = null;\n let criticalFilesNotices = document.querySelectorAll('#notice_id_found_critical_files');\n\n // Find the critical files notice within the scanner tab\n if (criticalFilesNotices.length > 0) {\n criticalFilesNotices.forEach((notice) => {\n if (criticalFilesNotice == null) {\n if (notice.closest('#spbc_tab-scanner') !== null) {\n criticalFilesNotice = notice;\n }\n }\n });\n }\n // Scroll to the notice and highlight it with a blinking effect\n if (criticalFilesNotice !== null) {\n criticalFilesNotice.scrollIntoView({behavior: 'smooth', block: 'start'});\n if (!criticalFilesNotice.hasOwnProperty('highlighted')) {\n let switcher = false;\n setInterval(() => {\n switcher = !switcher;\n if (switcher) {\n criticalFilesNotice.classList.remove('notice-warning');\n criticalFilesNotice.classList.add('notice-error');\n criticalFilesNotice.highlighted = true;\n } else {\n criticalFilesNotice.classList.remove('notice-error');\n criticalFilesNotice.classList.add('notice-warning');\n }\n }, 1000);\n }\n }\n\n // Expand the critical files table if it exits and is collapsed\n let criticalFileTable = document.querySelector('h3[aria-controls=\"spbc_scan_accordion_tab_critical\"]');\n if (criticalFileTable !== null) {\n if (!criticalFileTable.classList.contains('ui-accordion-header-active')) {\n criticalFileTable.click();\n }\n } else {\n // Check periodically if the table is loaded and expand it\n const tabLoadingCheckInterval = setInterval(() => {\n criticalFileTable = document.querySelector('h3[aria-controls=\"spbc_scan_accordion_tab_critical\"]');\n if (criticalFileTable !== null) {\n if (!criticalFileTable.classList.contains('ui-accordion-header-active')) {\n criticalFileTable.click();\n }\n clearInterval(tabLoadingCheckInterval);\n }\n }, 150);\n }\n }\n}\n"],"names":["spbcGet2FAAppQrCode","let","data","res","security","spbcSettings","ajax_nonce","action","jQuery","ajax","type","async","url","ajaxurl","success","result","spbcCheck2FAAppCode","code","val","submitButton","dialog","length","click","alert","spbcDisable2FAApp","element","user_id","document","location","reload","spbcCheckVulnerability","list","spbcCheckVulnerabilityInstallRender","msg","spbcCheckVulnerabilityListRender","console","log","card","badge","forEach","createElement","classList","add","innerHTML","el","querySelector","slug","appendChild","parentNode","spbcGetPassLeak","user_ids","querySelectorAll","push","getAttribute","split","span","icon","userId","textContent","text","status","img","src","img_path","style","marginLeft","backgroundColor","color","borderRadius","fontSize","padding","spbcSummaryShowCDNCheckerTable","event","preventDefault","table","getElementById","display","spbcHandleBannersDismissing","body","on","e","target","siblings","bannerName","elem","bannerId","parent","attr","spbcSendAJAXRequest","banner_id","hasOwnProperty","afterDismissingNotices","spbctNoticeDismissSuccess","postNoticeText","noticeLevel","JSON","parse","afterDismissingNotice","indexOf","after","setTimeout","fadeOut","spbcHighlightCriticalFilesNotice","isBannerCall","needToHighlightNotice","window","href","redirectConditionIsOK","criticalFilesNotice","criticalFilesNotices","notice","closest","scrollIntoView","behavior","block","switcher","setInterval","remove","highlighted","criticalFileTable","contains","tabLoadingCheckInterval","clearInterval","ready","vulnerabilityShowList","slugsState","slugs","slugsNodes","version","match","dataset","stringify","vulnerabilityShowInstall","spbcSetCookie","spbc2FAAppQrCode","html","modal","title","buttons","Cancel","this","Ok","draggable","resizable","confirm","refreshUserOnlineCounter","params","count","show","users","join","hide","ringContainer","settings","admin_bar__admins_online_counter","callback","needToWhitelist","critical","className","top","right","ringRing","circle","value","test","each","i","item","replace","updateLink","textToReplace","append"],"mappings":"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"}