shell bypass 403
/* global jQuery, Joomla */
window.apbct = window.apbct || {};
(function( $, apbct ) {
'use strict';
let usersChecker = {
totalUsers: 0,
limit: 20,
offset: 0,
improvedCheck: false,
cleared: false
};
apbct = apbct || {};
apbct.usersChecker = usersChecker;
const preloader = "<img id='ct_preloader_spam_results' src='../plugins/system/cleantalkantispam/img/preloader.gif' alt='CleanTalk preloader' />";
let tabIsLoaded = false;
let scanInProgress = false;
usersChecker.init = () => {
if ( tabIsLoaded ) {
return;
}
usersChecker.enablePreloader();
usersChecker.getTabContent().then(
content => {
usersChecker.layoutDraw(content);
usersChecker.setListeners();
tabIsLoaded = true;
},
error => {
usersChecker.layoutDraw(error.response);
}
);
};
usersChecker.setListeners = () => {
$('#check_spam_users').click(() => {
if (scanInProgress || usersChecker.cleared) {
return;
}
usersChecker.improvedCheck = $("#ct_impspamcheck_checkbox").is(":checked");
usersChecker.clearUserCheckerResults()
.then((response) => {
try {
// Clear Frontend Results
const responseObject = JSON.parse(response);
jQuery('#ct_checking_count span').html(responseObject.users_count);
jQuery('#ct_userchecking__checking_date').html(responseObject.current_date);
usersChecker.reactUserCheckingFrontendData();
return usersChecker.runUserChecker(usersChecker.limit, usersChecker.offset);
} catch (error) {
usersChecker.runUserCheckerError(error);
}
})
.then(
response => {
try {
usersChecker.runUserCheckerSuccess(JSON.parse(response));
} catch (error) {
usersChecker.runUserCheckerError(error);
}
},
error => {
usersChecker.runUserCheckerError(error.response);
}
);
});
$('.cleantalk_pagination li').click((e) => {
const target = $(e.target);
if ( target.hasClass('disabled') || target.hasClass('active') ) {
return;
}
target.addClass('disabled');
let page = 1;
if ( target.data('page_number') ) {
page = target.data('page_number');
} else if ( e.target.id === 'cleantalk_pagination_next' ) {
page = $('.cleantalk_pagination li.active').data('page_number') + 1;
} else if ( e.target.id === 'cleantalk_pagination_prev' ) {
page = $('.cleantalk_pagination li.active').data('page_number') - 1;
}
usersChecker.loadScanResults(page).then(
content => {
$('.cleantalk_pagination li').removeClass('active');
$('.cleantalk_pagination li[data-page_number="'+ page +'"]').addClass('active');
usersChecker.loadScanResultsSuccess(content);
usersChecker.setListeners();
target.removeClass('disabled');
},
error => {
usersChecker.loadScanResultsError(error);
target.removeClass('disabled');
}
);
});
$('#delete_all_spam_users').click(() => usersChecker.deleteUsers(true));
$('#delete_sel_spam_users').click(() => usersChecker.deleteUsers());
};
usersChecker.getTabContent = () => {
const data = {action: 'usersChecker', route: 'getTabContent'};
return usersChecker.ajaxRequest(data);
};
usersChecker.loadScanResults = (page) => {
const data = {action: 'usersChecker', route: 'getScanResults', page: page};
return usersChecker.ajaxRequest(data);
};
usersChecker.loadScanResultsSuccess = (content) => {
usersChecker.layoutDrawById('ct_checking_results', content);
};
usersChecker.loadScanResultsError = (error) => {
usersChecker.layoutDrawById('ct_checking_results', error);
};
usersChecker.clearUserCheckerResults = () => {
usersChecker.layoutClearById('spamusers_table');
const data = {action: 'usersChecker', route: 'clearResults'};
usersChecker.cleared = true;
return usersChecker.ajaxRequest(data);
};
usersChecker.runUserChecker = (limit, offset) => {
if ( ! scanInProgress ) {
scanInProgress = true;
usersChecker.layoutAppend(preloader);
usersChecker.blockButtons();
}
let data = {
action: 'usersChecker',
route: 'scan',
limit: limit,
offset: offset,
improved_check: usersChecker.improvedCheck
};
return usersChecker.ajaxRequest(data);
};
usersChecker.runUserCheckerSuccess = (response) => {
if (response.checkingCount !== undefined && response.foundedSpam !== undefined) {
usersChecker.reactUserCheckingFrontendData(response.checkingCount, response.foundedSpam);
}
if ( response.end ) {
usersChecker.disablePreloader();
usersChecker.unblockButtons();
usersChecker.loadScanResults(1).then(
content => {
usersChecker.loadScanResultsSuccess(content);
usersChecker.setListeners();
},
error => {
usersChecker.loadScanResultsError(error);
}
);
scanInProgress = false;
} else {
// Continue checking
usersChecker.runUserChecker(usersChecker.limit, response.offset).then(
response => {
try {
usersChecker.runUserCheckerSuccess(JSON.parse(response));
usersChecker.cleared = false;
} catch (error) {
usersChecker.runUserCheckerError(error);
}
},
error => {
usersChecker.runUserCheckerError(error.response);
}
);
}
};
usersChecker.runUserCheckerError = (error) => {
usersChecker.disablePreloader();
usersChecker.unblockButtons();
usersChecker.layoutDrawById('ct_checking_results', 'AJAX error: ' . error);
scanInProgress = false;
};
usersChecker.deleteUsers = (all) => {
let data = {
action: 'usersChecker',
route: 'delete',
ct_del_user_ids : []
};
if ( all ) {
$("input[type=checkbox]").each(function() {
if ( $(this).attr('name').startsWith('ct_del_user') ) {
let id = $(this).attr('name').substring($(this).attr('name').lastIndexOf("[") + 1, $(this).attr('name').lastIndexOf("]"));
data.ct_del_user_ids.push(id);
}
});
} else {
$("input:checked").each(function() {
if ( $(this).attr('name').startsWith('ct_del_user') ) {
let id = $(this).attr('name').substring($(this).attr('name').lastIndexOf("[") + 1, $(this).attr('name').lastIndexOf("]"));
data.ct_del_user_ids.push(id);
}
});
}
if ( data.ct_del_user_ids.length > 0 ) {
// @ToDo make this text translatable
if ( window.confirm('Are you sure?')===true )
{
usersChecker.layoutAppend(preloader);
usersChecker.ajaxRequest(data).then(
response => {
usersChecker.disablePreloader();
response = jQuery.parseJSON(response);
alert(response.data);
usersChecker.loadScanResults(1).then(
content => {
usersChecker.loadScanResultsSuccess(content);
usersChecker.setListeners();
},
error => {
usersChecker.loadScanResultsError(error);
}
);
}
);
}
} else {
// @ToDo make this text translatable
alert('No users selected.');
}
};
usersChecker.layoutDraw = (content) => {
document.getElementById('attrib-checkusers').innerHTML = content;
};
usersChecker.layoutDrawById = (id, content) => {
document.getElementById(id).innerHTML = content;
};
usersChecker.layoutAppend = (content) => {
document.getElementById('attrib-checkusers').insertAdjacentHTML('beforeend', content);
};
usersChecker.layoutAppendById = (id, content) => {
document.getElementById(id).insertAdjacentHTML('beforeend', content);
};
usersChecker.layoutClear = () => {
document.getElementById('attrib-checkusers').innerHTML = '';
};
usersChecker.layoutClearById = (id) => {
if ( document.getElementById(id) !== null ) {
document.getElementById(id).remove();
}
};
usersChecker.enablePreloader = () => {
usersChecker.layoutAppend(preloader);
};
usersChecker.disablePreloader = () => {
usersChecker.layoutClearById('ct_preloader_spam_results');
};
usersChecker.blockButtons = () => {
$('#check_spam_users').attr('disabled', 'disabled');
};
usersChecker.unblockButtons = () => {
$('#check_spam_users').removeAttr('disabled');
};
usersChecker.ajaxRequest = (data) => {
return new Promise((resolve, reject) => {
Joomla.request({
url: 'index.php?option=com_ajax&plugin=cleantalkantispam&format=raw',
method: 'POST',
data: JSON.stringify(data),
headers: {
'Cache-Control' : 'no-cache',
'Content-Type': 'application/json'
},
onSuccess: function (response){
resolve(response);
},
onError: function (error){
reject(error);
}
});
});
};
usersChecker.reactUserCheckingFrontendData = (checkingCount = '0', foundedSpam = '0') => {
jQuery('#ct_userchecking__checking_count').html(checkingCount);
jQuery('#ct_userchecking__found_spam').html(foundedSpam);
}
})( jQuery, window.apbct );