%PDF- %PDF-
Direktori : /var/www/businessmultisite/wp-content/plugins/wpsynchro/includes/REST/ |
Current File : /var/www/businessmultisite/wp-content/plugins/wpsynchro/includes/REST/RESTServices.php |
<?php namespace WPSynchro\REST; use WPSynchro\Transport\TransferToken; /** * Class for handling REST for WP Synchro * * @since 1.0.0 */ class RESTServices { /** * Setup the REST routes needed for WP Synchro * * @since 1.0.0 */ public function setup() { // Add "initiate" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/initiate/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\Initiate(); return $restservice->service($request); }, 'permission_callback' => '__return_true', ] ); } ); // Add "masterdata" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/masterdata/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\MasterData(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "backupdatabase" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/backupdatabase/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\DatabaseBackup(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "clientsyncdatabase" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/clientsyncdatabase/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\ClientSyncDatabase(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "populatefilelist" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/populatefilelist/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\PopulateFileList(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "populatefileliststatus" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/populatefileliststatus/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\PopulateFileListStatus(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "filetransfer" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/filetransfer/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\FileTransfer(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "getfiles" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/getfiles/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\GetFiles(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "filefinalize" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/filefinalize/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\FileFinalize(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "filesystem" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/filesystem/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\Filesystem(); return $restservice->service($request); }, 'permission_callback' => function ($request) { if ($this->permissionCheck($request)) { return true; } else { return current_user_can('manage_options'); } }, ] ); } ); // Add "executeaction" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/executeaction/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\ExecuteAction(); return $restservice->service($request); }, 'permission_callback' => [$this, 'permissionCheck'], ] ); } ); // Add "synchronize" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/synchronize/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\Synchronize(); return $restservice->service($request); }, 'permission_callback' => function ($request) { if ($this->permissionCheck($request)) { return true; } else { return current_user_can('manage_options'); } }, ] ); } ); // Add "status" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/status/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\Status(); return $restservice->service($request); }, 'permission_callback' => function ($request) { if ($this->permissionCheck($request)) { return true; } else { return current_user_can('manage_options'); } }, ] ); register_rest_route( 'wpsynchro/v1', '/status/file-changes/(?P<instid>[a-zA-Z0-9-]+)/(?P<jobid>[a-zA-Z0-9-]+)', [ 'methods' => ['GET','POST'], 'args' => [ 'instid' => [ 'required' => true, ], 'jobid' => [ 'required' => true, ] ], 'callback' => function ($request) { $restservice = new \WPSynchro\REST\StatusFileChanges(); return $restservice->service($request); }, 'permission_callback' => function ($request) { if ($this->permissionCheck($request)) { return true; } else { return current_user_can('manage_options'); } }, ] ); } ); // Add "downloadlog" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/downloadlog/', [ 'methods' => 'GET', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\DownloadLog(); return $restservice->service($request); }, 'permission_callback' => function () { return current_user_can('manage_options'); }, ] ); } ); // Add "healthcheck" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/healthcheck/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\HealthCheck(); return $restservice->service($request); }, 'permission_callback' => function () { return current_user_can('manage_options'); }, ] ); } ); // Add "checkinstallation" REST endpoint add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/installation/verify/', [ 'methods' => 'POST', 'callback' => function ($request) { $restservice = new \WPSynchro\REST\VerifyInstallation(); return $restservice->service($request); }, 'permission_callback' => function () { return current_user_can('manage_options'); }, ] ); } ); // Add test REST endpoint, both GET and POST. Simple check for users and for healthcheck add_action( 'rest_api_init', function () { register_rest_route( 'wpsynchro/v1', '/test/', [ 'methods' => ['GET','POST'], 'callback' => function ($request) { return new \WP_REST_Response([], 200); }, 'permission_callback' => function () { return true; }, ] ); } ); } /** * Validates access to WP Synchro REST services */ public function permissionCheck($request) { $token = $request->get_param('token'); if ($token == null || strlen($token) < 20) { return false; } $token = trim($token); // Check if it is a transfer token return TransferToken::validateTransferToken($token); } }