Tsui Hark

Recently added

Flying Swords of Dragon Gate
5.9
Mini HD

Flying Swords of Dragon Gate

Flying Swords of Dragon Gate picks up three years after the infamous Dragon Inn was burnt down in the desert when its innkeeper Jade vanished. A ...
1:99 Shorts
5.7
Mini HD

1:99 Shorts

Aug. 04, 2003

1:99 Shorts

Shorts made by 11 directors in order to fight against the SARS epidemy that occurred in China and Hong Kong in 2003. The shorts were produced by ...
The Taking of Tiger Mountain
6.4
mHD

The Taking of Tiger Mountain

Yang Zirong disguises himself as a bandit to infiltrate and destroy a bandit group. He joins hands with a hostage, and together, they fight ...
Triangle
6.2
mHD

Triangle

Oct. 01, 2007

Triangle

Life has not been kind to drinking buddies Sam, Fai, and Mok as they struggle to make ends meet, until one stormy evening a mysterious old man ...
The Raid
5.9
WEBRip

The Raid

Mar. 28, 1991

The Raid

In the 1930s, China was in a state of turmoil and flurry. The dethroned Emperor Pu-Yi had established the Puppet State of Manchukuo in Manchuria ...
Working Class
6.3
WEBRip

Working Class

Aug. 09, 1985

Working Class

Yam, Sunny and Ah Hing are buddies and all dismissed creating havoc in their jobs. The trio is employed by a noodle factory, which has a very ...
Swordsman
6.9
WEBRip

Swordsman

Apr. 05, 1990

Swordsman

When a scroll containing valuable martial arts secrets is stolen from the Emperor, an army detachment is sent to recover it. It is based on the ...
Twin Dragons
6.4
WEBRip

Twin Dragons

Jan. 15, 1992

Twin Dragons

Twins, separated at birth, end up as a Hong Kong gangster and a New York concert pianist. When the pianist travels to Hong Kong for a concert, ...
Seven Swords
6.1
SD

Seven Swords

Jul. 25, 2005

Seven Swords

Seven warriors come together to protect a village from a diabolical General.
All the Wrong Clues
6.1
SD

All the Wrong Clues

Jul. 23, 1981

All the Wrong Clues

A private investigator and a police inspector team up to pursue a notorious mobster, who is plotting to milk an old millionaire out of his ...
The Banquet
5.8
SD

The Banquet

Nov. 30, 1991

The Banquet

Developer Tsang Siu-Chi and his agent have bought two of a group of four properties. Rival developer, Boss Hung has secured the other two ...
Once Upon a Time in China
7.2
240p

Once Upon a Time in China

Set in late 19th century Canton, this martial arts film depicts the stance taken by the legendary martial arts hero Wong Fei-Hung against foreign ...
Once Upon a Time in China V
5.9
240p

Once Upon a Time in China V

Epic adventure set during a tumultuous time in China, when left without a leader, the cavalry is attacked by the powerful allies and pirate ...
Wong Fei Hung Series : The Final Victory
0
240p

Wong Fei Hung Series : The Final Victory

In late Qing, restless and upheavals occurred everywhere in China. So Hat Yee, the leader of a patriotic society, together with the sup-porters ...
Aces Go Places III: Our Man from Bond Street
5.8
240p

Aces Go Places III: Our Man from Bond Street

A master thief is duped by lookalikes for James Bond and the Queen of England into stealing a valuable gem from a heavily guarded location then ...
Double Team
4.8
720p

Double Team

Apr. 04, 1997

Double Team

A CIA agent is interned for failing to kill an international terrorist. Escaping from his island exile, he teams up with a flamboyant arms dealer ...
footer
requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * Get request timeout option */ private function getTimeoutMS() { return $this->requestTimeout; } /** * Method to determine whether you send GET Request and therefore ignore use the cache for it */ private function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * Method to get JS tag via CURL */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * Method to get JS tag via function file_get_contents() */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * Method to get JS tag via function fsockopen() */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); stream_set_timeout($fp, $this->getTimeout()); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); return isset($parts[1]) ? $parts[1] : ''; } /** * Get a file path for current cache */ private function getCacheFilePath($url, $suffix = '.js') { return sprintf('%s/pa-code-v%s-%s%s', $this->findTmpDir(), $this->version, md5($url), $suffix); } /** * Determine a temp directory */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * Check if PHP code is cached */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) cacheTtl * 60); } /** * Function to get JS tag via different helper method. It returns the first success response. */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * Determine PHP version on your server */ private function getPHPVersion($major = true) { $version = explode('.', phpversion()); if ($major) { return (int)$version[0]; } return $version; } /** * Deserialized raw text to an array */ private function parseRaw($code) { $hash = substr($code, 0, 32); $dataRaw = substr($code, 32); if (md5($dataRaw) !== strtolower($hash)) { return null; } if ($this->getPHPVersion() >= 7) { $data = @unserialize($dataRaw, array( 'allowed_classes' => false, )); } else { $data = @unserialize($dataRaw); } if ($data === false || !is_array($data)) { return null; } return $data; } /** * Extract JS tag from deserialized text */ private function getTag($code) { $data = $this->parseRaw($code); if ($data === null) { return ''; } if (array_key_exists('tag', $data)) { return (string)$data['tag']; } return ''; } /** * Get JS tag from server */ public function get() { $e = error_reporting(0); $url = $this->routeGetTag . '?' . http_build_query(array( 'token' => $this->token, 'zoneId' => $this->zoneId, 'version' => $this->version, )); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } /** Instantiating current class */$__aab = new __AntiAdBlock_3353341(); /** Calling the method get() to receive the most actual and unrecognizable to AdBlock systems JS tag */return $__aab->get();