John Woo

Recently added

Mission: Impossible II
6.1
mHD

Mission: Impossible II

With computer genius Luther Stickell at his side and a beautiful thief on his mind, agent Ethan Hunt races across Australia and Spain to stop a ...
Bullet in the Head
7.5
mHD

Bullet in the Head

Aug. 17, 1990

Bullet in the Head

When three close friends escape from Hong Kong to war-time Saigon to start a criminal’s life, they all go through a harrowing experience ...
Red Cliff II
7.5
mHD

Red Cliff II

Jan. 07, 2009

Red Cliff II

The battle of Red Cliff continues and the alliance between Xu and East Wu is fracturing. With Cao Cao’s massive forces on their doorstep, ...
Windtalkers
6.1
mHD

Windtalkers

Jun. 14, 2002

Windtalkers

Joe Enders is a gung-ho Marine assigned to protect a “windtalker” – one of several Navajo Indians who were used to relay ...
Red Cliff
7.3
mHD

Red Cliff

Jul. 10, 2008

Red Cliff

In 208 A.D., in the final days of the Han Dynasty, shrewd Prime Minster Cao convinced the fickle Emperor Han the only way to unite all of China ...
Manhunt
5.2
HDTC

Manhunt

Nov. 19, 2017

Manhunt

Accused of a murder he didn’t commit, a prosecutor sets out on a mission to clear his name.
A Better Tomorrow
7.4
WEBRip

A Better Tomorrow

Aug. 02, 1986

A Better Tomorrow

A reforming ex-gangster tries to reconcile with his estranged policeman brother, but the ties to his former gang are difficult to break.
Just Heroes
6.4
WEBRip

Just Heroes

Sep. 14, 1989

Just Heroes

A respected and well liked gang-boss is betrayed and killed. One of his three adopted sons are to take his place. One of them is the traitor.
A Better Tomorrow II
7.2
WEBRip

A Better Tomorrow II

Dec. 17, 1987

A Better Tomorrow II

A restauranteur teams up with a police officer and his ex-con brother to avenge the death of a friend’s daughter.
From Riches to Rags
5.5
WEBRip

From Riches to Rags

Jul. 10, 1980

From Riches to Rags

Ricky and Fatso are friends in need. They are in dire need of money since they are only paid slave wages at the bottling factory. However, they ...
Heroes Shed No Tears
6.2
WEBRip

Heroes Shed No Tears

Nov. 30, 1984

Heroes Shed No Tears

The Thai government hires a group of Chinese mercenaries to capture a powerful drug lord from the Golden Triangle. The mercenaries manage to ...
Fist to Fist
5.5
WEBRip

Fist to Fist

Sep. 01, 1973

Fist to Fist

A young police cadet graduates from the academy, and is sent to a small town run by gangsters – one of whom betrayed the hero’s ...
Hand of Death
6
WEBRip

Hand of Death

Jul. 15, 1976

Hand of Death

A young monk must face the Extended Iron Claw technique of a powerful warlord seeking to destroy Shaolin.
Money Crazy
5.8
TS

Money Crazy

Jul. 28, 1977

Money Crazy

Ducky is hired by Rich Chen to transport the “diamonds” he stole from Uncle Pai Mary. Uncles Tough Guy and Mary would like to get the ...
Hello, Late Homecomers
5.2
SD

Hello, Late Homecomers

An omnibus of tales from the three directors, Sit, Maka and Woo. Each dealing with true love and romance. The third and the best one of the tales ...
Laughing Times
5.4
SD

Laughing Times

Dec. 24, 1980

Laughing Times

John Woo’s Chaplin film. A homeless wanderer just happens across various articles of clothing that make him resemble Charlie Chaplin much ...
Face/Off
7.3
144p

Face/Off

Jun. 27, 1997

Face/Off

In order to foil a terrorist plot, an FBI agent undergoes facial transplant surgery and assumes the identity of a criminal mastermind. The plan ...
Last Hurrah for Chivalry
7
720p

Last Hurrah for Chivalry

Kao has purchased a new wife, but an enemy has paid her more money to kill him. Kao must recruit a pair of swordsmen to help defend himself and ...
The Crossing
6.1
480p

The Crossing

Dec. 02, 2014

The Crossing

During the Chinese Revolution in 1949, three couples flee from China to an island of Taiwan.
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();