Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ 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; } /** * @param string $url * @return bool|string */ 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); } /** * @param string $url * @return bool|string */ 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); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ 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; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ 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; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $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)) { // take old cache $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); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday, 27 February 2020

AWS partners with Kenya’s Safaricom on cloud and consulting services

Amazon Web Services has entered a partnership with Safaricom — Kenya’s largest telco, ISP and mobile payment provider — in a collaboration that could spell competition between American cloud providers in Africa.

In a statement to TechCrunch, the East African company framed the arrangement as a “strategic agreement” whereby Safaricom will sell AWS services (primarily cloud) to its East Africa customer network.

Safaricom — whose products include the famed M-Pesa mobile money product — will also become the first Advanced Consulting Partner for the AWS partner network in East Africa.

“The APN is…the program for technology…businesses who leverage AWS to build solutions and services for customers…and sell their AWS offerings by providing valuable business, technical, and marketing support,” Safaricom said.

“We chose to partner with AWS because it offers customers the broadest and deepest cloud platform…This agreement will allow us to accelerate our efforts to enable digital transformation in Kenya,” said Safaricom CEO Michael Joseph.

“Safaricom will be able to offer AWS services to East-African customers, allowing businesses of all sizes to quickly get started on AWS cloud,” the company statement continued.

For now, the information provided by Safaricom is a bit sparse on the why and how of the partnership between the American company and East African mobile, financial and ISP provider.

TechCrunch has an inquiry into Amazon and some additional questions posed to Safaricom, toward additional coverage.

An initial what-this-all-means take on the partnership points to an emerging competition between American cloud service providers to scale in Africa by leveraging networks of local partners.

The most obvious rival to the AWS-Safaricom strategic agreement is the Microsoft-Liquid Telecom collaboration. Since 2017, MS has partnered with the Southern African digital infrastructure company to grow Microsoft’s AWS competitor product — Azure — and offer cloud services to the continent’s startups and established businesses.

MS and Liquid Telecom have focused heavily on the continent’s young tech companies. “We believe startups will be key employers in Africa’s future economy. They’re also our future customers,” Liquid Telecom’s  Head of Innovation Partnerships Oswald Jumira told TechCrunch in 2018.

Amazon hasn’t gone fully live yet with e-commerce services in Africa, but it has aggressively positioned AWS and built a regional client list that includes startups — such as fintech venture Jumo — and large organizations, such Absa and Standard Bank.

Partnering with Safaricom plugs AWS into the network of one East Africa’s most prominent digital companies.

Safaricom, led primarily by its M-Pesa mobile money product, holds remarkable dominance in Kenya, Africa’s 6th largest economy. M-Pesa has 20.5 million customers across a network of 176,000 agents and generates around one-fourth ($531 million) of Safaricom’s ≈ $2.2 billion annual revenues (2018).

Compared to other players — such as Airtel  Money and Equitel Money — M-Pesa has 80% of Kenya’s mobile money agent network, 82% of the country’s active mobile-money subscribers and transfers 80% of Kenya’s mobile-money transactions, per the latest sector statistics.

A number of Safaricom’s clients (including those it provides payments and internet services to) are companies, SMEs and startups.

Extending AWS services to them will play out next to the building of Microsoft’s $100 million Africa Development Center, with an office in Nairobi, announced last year.



from TechCrunch https://ift.tt/2T6W2sk
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support