_check_if_user_exists($params['username']))
mmb_response('Username ' . $params['username'] . ' does not have administrator capabilities. Enter the correct username in the site options.', false);
if ($action == 'add_site') {
mmb_add_site($params);
mmb_response('You should never see this.', false);
}
$auth = $mmb_core->_authenticate_message($action . $id, $signature, $id);
if ($auth === true) {
$mmb_actions = array(
'remove_site' => 'mmb_remove_site',
'get_stats' => 'mmb_stats_get',
'backup' => 'mmb_backup_now',
'restore' => 'mmb_restore_now',
'optimize_tables' => 'mmb_optimize_tables',
'check_wp_version' => 'mmb_wp_checkversion',
'create_post' => 'mmb_post_create',
'upgrade_plugins' => 'mmb_upgrade_plugins',
'wp_upgrade' => 'mmb_upgrade_wp',
'upgrade_themes' => 'mmb_themes_upgrade',
'upload_plugin_by_url' => 'mmb_plugin_upload_by_url',
'upload_theme_by_url' => 'mmb_theme_upload_by_url',
'update_worker' => 'mmb_update_worker_plugin'
);
if (array_key_exists($action, $mmb_actions) && function_exists($mmb_actions[$action]))
call_user_func($mmb_actions[$action], $params);
else
mmb_response('Action "' . $action . '" does not exist.', false);
} else {
mmb_response($auth['error'], false);
}
}
ob_end_clean();
}
/* Main response function */
function mmb_response($response = false, $success = true)
{
$return = array();
if (empty($response))
$return['error'] = 'Empty response';
else if ($success)
$return['success'] = $response;
else
$return['error'] = $response;
header('Content-Type: text/plain');
exit(PHP_EOL . base64_encode(serialize($return)));
}
function mmb_add_site($params)
{
global $mmb_core;
$num = extract($params);
if ($num) {
if (!get_option('_action_message_id') && !get_option('_worker_public_key')) {
$public_key = base64_decode($public_key);
if (function_exists('openssl_verify')) {
$verify = openssl_verify($action . $id, base64_decode($signature), $public_key);
if ($verify == 1) {
$mmb_core->_set_master_public_key($public_key);
$mmb_core->_set_worker_message_id($id);
mmb_response($mmb_core->get_stats_instance()->get_initial_stats(), true);
} else if ($verify == 0) {
mmb_response('Invalid message signature. Please contact us if you see this message often.', false);
} else {
mmb_response('Command not successful. Please try again.', false);
}
} else {
if (!get_option('_worker_nossl_key')) {
srand();
$random_key = md5(base64_encode($public_key) . rand(0, getrandmax()));
$mmb_core->_set_random_signature($random_key);
$mmb_core->_set_worker_message_id($id);
$mmb_core->_set_master_public_key($public_key);
mmb_response($mmb_core->get_stats_instance()->get_initial_stats(), true);
} else
mmb_response('Please deactivate & activate ManageWP Worker plugin on your site, then re-add the site to your dashboard.', false);
}
} else {
mmb_response('Please deactivate & activate ManageWP Worker plugin on your site and re-add the site to your dashboard.', false);
}
} else {
mmb_response('Invalid parameters received. Please try again.', false);
}
}
function mmb_remove_site($params)
{
extract($params);
global $mmb_core;
$mmb_core->uninstall();
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
$plugin_slug = basename(dirname(__FILE__)) . '/' . basename(__FILE__);
if ($deactivate) {
deactivate_plugins($plugin_slug, true);
}
if (!is_plugin_active($plugin_slug))
mmb_response(array(
'deactivated' => 'Site removed successfully.
ManageWP Worker plugin successfully deactivated.'
), true);
else
mmb_response(array(
'removed_data' => 'Site removed successfully.
ManageWP Worker plugin was not deactivated.'
), true);
}
function mmb_stats_get($params)
{
global $mmb_core;
mmb_response($mmb_core->get_stats_instance()->get($params), true);
}
//Plugins
function mmb_upgrade_plugins($params)
{
global $mmb_core;
mmb_response($mmb_core->get_plugin_instance()->upgrade_all($params), true);
}
function mmb_plugin_upload_by_url($params)
{
global $mmb_core;
$return = $mmb_core->get_plugin_instance()->upload_by_url($params);
mmb_response($return['message'], $return['bool']);
}
//Themes
function mmb_theme_upload_by_url($params)
{
global $mmb_core;
$return = $mmb_core->get_theme_instance()->upload_theme_by_url($params);
mmb_response($return['message'], $return['bool']);
}
function mmb_themes_upgrade($params)
{
global $mmb_core;
mmb_response($mmb_core->get_theme_instance()->upgrade_all($params), true);
}
//wp
function mmb_upgrade_wp($params)
{
global $mmb_core;
mmb_response($mmb_core->get_wp_instance()->upgrade());
}
//post
function mmb_post_create($params)
{
global $mmb_core;
$return = $mmb_core->get_post_instance()->create($params);
if (is_int($return))
mmb_response($return, true);
else
mmb_response($return, false);
}
//backup
function mmb_backup_now($params)
{
global $mmb_core;
$return = $mmb_core->get_backup_instance()->backup($params);
if (is_array($return) && array_key_exists('error', $return))
mmb_response($return['error'], false);
else {
$mmb_core->_log($return);
mmb_response($return, true);
}
}
function mmb_optimize_tables($params)
{
global $mmb_core;
$return = $mmb_core->get_backup_instance()->optimize_tables();
if ($return)
mmb_response($return, true);
else
mmb_response(false, false);
}
function mmb_restore_now($params)
{
global $mmb_core;
$return = $mmb_core->get_backup_instance()->restore($params);
if (is_array($return) && array_key_exists('error', $return))
mmb_response($return['error'], false);
else
mmb_response($return, true);
}
function mmb_update_worker_plugin($params)
{
global $mmb_core;
mmb_response($mmb_core->update_worker_plugin($params), true);
}
?>