John Shum Kin-Fun

Recently added

Painted Faces
7.2
1080p

Painted Faces

Sep. 16, 1988

Painted Faces

This is a story about the Peking Opera School that Jackie Chan, Samo Hung and Yuen Biao attended as young men. The story is about their teacher ...
Curry and Pepper
6.5
WEBRip

Curry and Pepper

May. 23, 1990

Curry and Pepper

Two best friends and cop partners become the subject of a beautiful news reporter’s documentary. The two soon find themselves competing for ...
Three
6.1
WEBRip

Three

Jul. 09, 2002

Three

An anthology consisting of three horror shorts from different Asian directors: Memories by Kim Jee-woon, The Wheel by Nonzee Nimibutr, and Going ...
I Love Maria
6
WEBRip

I Love Maria

Mar. 10, 1988

I Love Maria

RoboCop as a woman… The Hero Gang is a nasty group of thugs terrorizing Hong Kong with their killer robots, Pioneers 1 and 2. While Pioneer ...
Pedicab Driver
7.4
WEBRip

Pedicab Driver

Feb. 24, 1989

Pedicab Driver

Lo Tung and his friend Malted Candy, pedicab drivers working the streets of Macao, have both fallen in love. The problem is that both their ...
Pom Pom
6.1
TS

Pom Pom

Feb. 22, 1984

Pom Pom

Chau and Beethoven, two Hong Kong police detectives, go through misadventures to protect a young girl from a ruthless crime lord, as she ...
The Return of Pom Pom
6.1
TS

The Return of Pom Pom

Jun. 22, 1984

The Return of Pom Pom

Hong Kong detectives Chau and Beethoven return in this sequel to “Pom Pom.” This time out, they join forces with their boss, ...
Wheels on Meals
7
TS

Wheels on Meals

Aug. 17, 1984

Wheels on Meals

Cousins Thomas and David, owners of a mobile restaurant, team up with their friend Moby, a bumbling private detective, to save the beautiful ...
Mr. Boo Meets Pom Pom
5.8
TS

Mr. Boo Meets Pom Pom

Sep. 03, 1985

Mr. Boo Meets Pom Pom

Hong Kong detectives Chau and Beethoven join forces with Mr. Boo in a daring mission involving a jewelry heist and a museum caper.
Yes, Madam!
6.7
TS

Yes, Madam!

Nov. 20, 1985

Yes, Madam!

Two unlucky thieves break into a just murdered man’s hotel room and steal his passport with a hidden microfilm wanted by a triad boss. Two ...
From Here to Prosperity
5.9
TS

From Here to Prosperity

In Thailand in the 1950s, Detective Au Wei is shot to death by Cha Tin-Hung in a raid because of Cha’s involvement with black market ...
Pom Pom Strikes Back
5.8
TS

Pom Pom Strikes Back

Aug. 14, 1986

Pom Pom Strikes Back

The Hong Kong detectives, Chau and Beethoven, are back once more. This time, their mission is to protect a young girl from a gang boss’ ...
The Goofy Gang
5.3
TS

The Goofy Gang

Feb. 19, 1987

The Goofy Gang

Wai is a waiter in a country club. One day at work he is humiliated by the wife of a millionaire Harry Tse; and in order to get even, he and his ...
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 ...
Little Cop
6.1
240p

Little Cop

Mar. 25, 1989

Little Cop

Ever since he was a child, Lee Chi-kin has been determined to become a police officer, despite the fact that he comes from a family of criminals. ...
Lucky Encounter
5.1
240p

Lucky Encounter

Jun. 10, 1992

Lucky Encounter

Two inventors encounter a friendly little ghost, and stumble onto a plot to capture the ghost’s uncle who was responsible for his untimely ...
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 ...
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();