| Server IP : 103.88.176.108 / Your IP : 216.73.216.211 Web Server : Apache/2.4.41 (Ubuntu) System : Linux webserver 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/wp-content/plugins/redirection/actions/ |
Upload File : |
<?php
require_once dirname( __FILE__ ) . '/url.php';
/**
* A 'pass through' action. Matches a rewrite rather than a redirect, and uses PHP to fetch data from a remote URL.
*/
class Pass_Action extends Url_Action {
/**
* Process an external passthrough - a URL that lives external to this server.
*
* @param string $url Target URL.
* @return void
*/
public function process_external( $url ) {
// This is entirely at the user's risk. The $url is set by the user
// phpcs:ignore
echo wp_remote_fopen( $url );
}
/**
* Process an internal passthrough - a URL that lives on the same server. Here we change the request URI and continue without making a remote request.
*
* @param string $target Target URL.
* @return void
*/
public function process_internal( $target ) {
// Another URL on the server
$pos = strpos( $target, '?' );
$_SERVER['REQUEST_URI'] = $target;
$_SERVER['PATH_INFO'] = $target;
if ( $pos ) {
$_SERVER['QUERY_STRING'] = substr( $target, $pos + 1 );
$_SERVER['PATH_INFO'] = $target;
// Take the query params in the target and make them the params for this request
parse_str( $_SERVER['QUERY_STRING'], $_GET );
}
}
/**
* Is a URL external?
*
* @param string $target URL to test.
* @return boolean
*/
public function is_external( $target ) {
return substr( $target, 0, 7 ) === 'http://' || substr( $target, 0, 8 ) === 'https://';
}
/**
* Pass the data from the target
*
* @return void
*/
public function run() {
// External target
$target = $this->get_target();
if ( $target === null ) {
return;
}
if ( $this->is_external( $target ) ) {
// Pass on to an external request, echo the results, and then stop
$this->process_external( $target );
exit();
}
// Change the request and carry on
$this->process_internal( $target );
}
public function name() {
return __( 'Pass-through', 'redirection' );
}
}