Lam Ka-tung

Recently added

Vengeance
6.6
mHD

Vengeance

May. 20, 2009

Vengeance

A French chef swears revenge after a violent attack on his daughter’s family in Macau, during which her husband and her two children are ...
The First 7th Night
5.7
mHD

The First 7th Night

May. 21, 2009

The First 7th Night

A helpless Taxi driver, a mysterious delivery boy, a 30 years abandoned motel, a touching past, all come together to form a strange tale. One ...
The Child’s Eye
4.2
mHD

The Child’s Eye

Oct. 13, 2010

The Child’s Eye

A group of friends finds themselves stranded in an old hotel. As they uncover the history beneath the walls, they’re slowly drawn into its ...
13 Minutes in the Lives of…
0
mHD

13 Minutes in the Lives of…

A HKIFF short film by Stanley Kwan. Stanley Kwan takes us on a real-time bus trip from the airport to Kowloon in 13 Minutes in the Lives of… The ...
Let’s Go!
4.3
mHD

Let’s Go!

Nov. 10, 2011

Let’s Go!

Siu Sheung (Juno Mak) is a solitary and frustrated young man. He works as a delivery boy at a small noodle shop and lives with his mother (Pat ...
Quattro Hong Kong 2
5.2
mHD

Quattro Hong Kong 2

Nov. 12, 2011

Quattro Hong Kong 2

Four short tales set in contemporary Hong Kong.
Motorway
5.9
mHD

Motorway

Jun. 21, 2012

Motorway

Two police pursuit drivers, a hothead rookie and his long-suffering, almost-retired mentor, face off against an escape car driver from the ...
Cold War
6.6
mHD

Cold War

Nov. 08, 2012

Cold War

Five police officers in Hong Kong are kidnapped. The police commissioner is on a business trip overseas. Two vice commissioners, Sean Rau and ...
Paper Moon
4.9
mHD

Paper Moon

Jan. 17, 2013

Paper Moon

“Papermoon” tells the story of a poor kite maker, Chen Tian Song, who falls in love with Gao Shi Qin, the daughter of a wealthy ...
Tales From The Dark 2
5.6
mHD

Tales From The Dark 2

Sep. 20, 2013

Tales From The Dark 2

In “Haunted Pillow,” TVB starlet Fala Chen is still obsessed with her lover (Gordon Lam) after their breakup and invariably suffers ...
Firestorm
6.2
mHD

Firestorm

Dec. 12, 2013

Firestorm

Hong Kong. When Cao Nan and his group of thieves rob an armored car in broad daylight, they don’t hesitate to murder innocent people on the ...
Z Storm
5.4
mHD

Z Storm

Jun. 19, 2014

Z Storm

ICAC principal investigator William Luk takes his job seriously, and he needs every last scintilla of support from his team to take on the ...
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 ...
Midnight Garage
4.4
mHD

Midnight Garage

Apr. 03, 2015

Midnight Garage

A shopping mall underground garage has a cursed parking spaces, parking all suffered all kinds of rare cruel accident, it is said that they died ...
第34屆香港電影金像獎
0
mHD

第34屆香港電影金像獎

A shopping mall underground garage has a cursed parking spaces, parking all suffered all kinds of rare cruel accident, it is said that they died ...
Love Forever
0
mHD

Love Forever

Sep. 01, 2015

Love Forever

Originally living a happy and stable life, things have become clouded for rich heiress Ye Shuang (Qin Lan) after the unexpected disappearance of ...
Ulterior Motive
4.2
mHD

Ulterior Motive

Sep. 17, 2015

Ulterior Motive

Originally living a happy and stable life, things have become clouded for rich heiress Ye Shuang (Qin Lan) after the unexpected disappearance of ...
Trivisa
6.9
mHD

Trivisa

Apr. 07, 2016

Trivisa

Hong Kong’s three notorious thieves who have never met one another before appear in the same restaurant. This leads to a rumour that they ...
Buddy Cops
0
mHD

Buddy Cops

Apr. 21, 2016

Buddy Cops

After the hot-tempered police detective Fei messes up yet another operation, he is transferred to a fictional department that houses all the ...
Nessun Dorma
4.7
mHD

Nessun Dorma

Oct. 21, 2016

Nessun Dorma

The beautiful yet naive Jasmine has second thoughts about her arranged marriage with the most eligible bachelor in town because she is secretly ...
Cherry Returns
4.8
mHD

Cherry Returns

Dec. 30, 2016

Cherry Returns

The story revolves around Ah Ying, a young girl who was kidnapped and declared missing for over a decade. She suddenly returns to her family ...
The Sleep Curse
5.6
mHD

The Sleep Curse

Apr. 17, 2017

The Sleep Curse

In 1990, Neurologist Lam Sik-ka and his former flame suffer from the generational sleep curse that rooted in their both families war engagement ...
Paradox
6.5
mHD

Paradox

Aug. 25, 2017

Paradox

When a Hong Kong police negotiator is informed about the sudden disappearance of his 16-year-old daughter in Thailand, he travels there to search ...
Always Be with You
5.3
mHD

Always Be with You

Oct. 26, 2017

Always Be with You

Taxi driver David, who’s doomed after a terminal cancer diagnosis, accidentally kills hotel owner Patrick in a car crash. Patrick’s ...
The Brink
5.6
mHD

The Brink

Nov. 23, 2017

The Brink

Reckless police inspector Sai Gau (Zhang Jin) is on a mission to crack down on criminal Shing’s (Shawn Yue) gold smuggling scheme, yet ...
Nobody Nose
3.9
mHD

Nobody Nose

Dec. 09, 2018

Nobody Nose

Former Macao police captain Liang Jinghui has left the force due to concerns over his mental health. He now works security at a hotel, but spends ...
P Storm
5.8
mHD

P Storm

Apr. 04, 2019

P Storm

Liu Yue Ping reports to the ICAC about a rich 2G Cao Yuen Yuen who bribed officers of the Hong Kong Correctional Services (HKCS) from inside the ...
Hand Rolled Cigarette
6.6
mHD

Hand Rolled Cigarette

Jun. 17, 2021

Hand Rolled Cigarette

A retired British Chinese soldier, a young South Asian man, an encounter at Chungking Mansions. Coincidentally, they both offended the same gang ...
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();