laipower/wp-content/plugins/wpscan/assets/js/scripts.js

142 lines
3.4 KiB
JavaScript

// Actions for metabox Summary
jQuery( document ).ready(
function( $ ) {
let button_check = $( '#wpscan-metabox-summary .check-now button' );
let security_check = $( '.security-check-actions .button' );
let spinner = $( '#wpscan-metabox-summary .spinner' );
let security_check_runnig = false;
let security_check_button = [];
// Checks if a cron job is already running when the page loads
if ( wpscan.doing_cron === 'YES' ) {
button_check.attr( 'disabled', true );
spinner.css( 'visibility', 'visible' );
check_cron();
}
if ( wpscan.doing_security_cron.length !== 0 ) {
check_security_cron();
}
// Starts the cron job
function do_check() {
button_check.attr( 'disabled', true );
spinner.css( 'visibility', 'visible' );
$.ajax(
{
url: wpscan.ajaxurl,
method: 'POST',
data: {
action: wpscan.action_check,
_ajax_nonce: wpscan.ajax_nonce
},
success: function( ) {
check_cron();
},
error: function () {
location.reload();
}
}
);
}
// Check every X seconds if cron has finished
function check_cron() {
setTimeout(
function() {
$.ajax(
{
url: ajaxurl,
method: 'POST',
data: {
action: wpscan.action_cron,
_ajax_nonce: wpscan.ajax_nonce
},
success: function( data ) {
if ( data === 'NO' ) {
location.reload();
} else {
check_cron();
}
},
error: function ( ) {
location.reload();
}
}
);
},
1000 * 2
);
}
function check_security_cron() {
security_check_runnig = true;
security_check_button = [];
setTimeout(
function() {
$.ajax(
{
url: ajaxurl,
method: 'POST',
data: {
action: wpscan.action_security_check,
_ajax_nonce: wpscan.ajax_nonce
},
success: function( data ) {
if ( data.length !== 0 ) {
var ajax_response = $.parseJSON( data );
$.each(
ajax_response.inline,
function ( key, data ) {
security_check_button.push( key );
}
);
$( '.security-check-actions button[data-action="run"]' ).each(
function() {
if ( $.inArray( $( this ).data( 'check-id' ), security_check_button ) === -1 && $( this ).attr( 'disabled' ) ) {
$( this ).closest( 'tr' ).find( '.check-column' ).html( ajax_response.plugins[$( this ).data( 'check-id' )]['status'] );
$( this ).closest( 'tr' ).find( '.vulnerabilities' ).html( ajax_response.plugins[$( this ).data( 'check-id' )]['vulnerabilities'] );
$( this ).closest( 'tr' ).find( '.security-check-actions' ).html( ajax_response.plugins[$( this ).data( 'check-id' )]['security-check-actions'] );
}
}
);
if ( security_check_button.length !== 0 ) {
check_security_cron();
} else {
location.reload();
}
}
},
error: function ( ) {
location.reload();
}
}
);
},
2000
);
}
// Button
button_check.on( 'click', do_check );
if ( ! security_check_runnig ) {
security_check.one( 'click', check_security_cron );
}
// close postboxes that should be closed
$( '.if-js-closed' ).removeClass( 'if-js-closed' ).addClass( 'closed' );
// postboxes setup
postboxes.add_postbox_toggles( 'wpscan' );
}
);