Teresa Mo

Recently added

Men Suddenly in Black 2
5.4
mHD

Men Suddenly in Black 2

Zhang Liang is a young man who does not engage into any proper work. His secret hobby is to play with all kinds of high-tech candid technology, ...
An Inspector Calls
4.9
mHD

An Inspector Calls

Feb. 19, 2015

An Inspector Calls

An unexpected inspector drops by a lavish party of a notable family in order to investigate the suicide of a pregnant girl. This breaks the joy ...
Love Is… Pyjamas
4.8
HDTC

Love Is… Pyjamas

Oct. 11, 2012

Love Is… Pyjamas

Spring (Teresa Mo) and her daughter, Autumn (Karena Ng), work respectively as a Designer and Steward Manager in a Multinational Enterprise of ...
Hotel Deluxe
5.1
HDTC

Hotel Deluxe

Jan. 31, 2013

Hotel Deluxe

Hotel Deluxe is basically “All’s Well Ends Well 2013”, with almost the same cast and crew, and some new faces added in. It ...
Legend of the Dragon
6.4
WEBRip

Legend of the Dragon

Mar. 07, 1991

Legend of the Dragon

Chow plays a naive young kung fu student who leaves his rural home on a small island to find his fortune in Hong Kong under the dubious guidance ...
Mainland Dundee
5.2
WEBRip

Mainland Dundee

Dec. 06, 1991

Mainland Dundee

Fung is sent to Hong Kong to handle an antique smuggling case.
Master Wong vs. Master Wong
6
WEBRip

Master Wong vs. Master Wong

Wong Fei-Hong tires of his life pretending to be a kung fu master, and decides to visit Canton in anonymity, letting his student pretend to be ...
Laughter Of Water Margins
5.4
WEBRip

Laughter Of Water Margins

Tiger fighter Wu Sung was originally a coward. But when he was drunk, he was extremely courageous. One time at Jingyang Gang, Wu Sung got drunk ...
Now You See Love… Now You Don’t
6.3
TS

Now You See Love… Now You Don’t

This is a screwball-comedy in Hong Kong style. Chow Yun Fat plays the spoiled village hetman of a tiny village in Hong Kong. The plot revolves ...
Mr. 3 Minutes
5.2
TS

Mr. 3 Minutes

Nov. 16, 2006

Mr. 3 Minutes

American journalist Nick Orton is caught up in the world of Chinese gods and monsters while on a search for the long lost manuscript to ...
Perfect Wedding
5.2
TS

Perfect Wedding

Oct. 21, 2010

Perfect Wedding

A generic romantic comedy for Hong Kong audiences that’s successful for what it is. Director Barbara Wong shelves any pretension or undue ...
The Magnificent Scoundrels
6.5
SD

The Magnificent Scoundrels

Romeo is a mediocre con artist who crosses paths with Betsy Kwan, a fellow con artist. Together they impersonate various people and create ...
All’s Well End’s Well, Too
6.2
240p

All’s Well End’s Well, Too

Chow Tung is a licentious man who was arranged to get married along with his ugly sister Gut to partners not of their choice. Chow, being a ...
All’s Well, Ends Well
7.2
CAM

All’s Well, Ends Well

Three brothers living with their father fib and play pranks to win parental approval for themselves and their romances.
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();