array('code'=>'100','desc'=>'Invalid Method','fatal'=>false), 'headers'=>array('code'=>'101','desc'=>'Incomplete headers','fatal'=>true), 'post'=>array('code'=>'102','desc'=>'Invalid POST content','fatal'=>false), 'auth'=>array('code'=>'103','desc'=>'Bad authentification data','fatal'=>true), 'xml'=>array('code'=>'105','desc'=>'Invalid XML structure','fatal'=>true), 'api_version'=>array('code'=>'106', 'desc'=>'Invalid Api version please upgrade manually','fatal'=>true), ); private $privateKey; private $username; private function getAuth() { include(dirname(__FILE__).'/config.php'); $this->privateKey=$openinviter_settings['private_key']; $this->username=$openinviter_settings['username']; global $HTTP_RAW_POST_DATA; if ($_SERVER['REQUEST_METHOD']!='POST') $this->error('method'); if (!isset($_SERVER['HTTP_X_USER'])) $this->error('headers'); elseif (!isset($_SERVER['HTTP_X_SIGNATURE'])) $this->error('headers'); if (empty($HTTP_RAW_POST_DATA)) $this->error('post'); $this->user=htmlentities($_SERVER['HTTP_X_USER'],ENT_QUOTES); $xml=trim(gzuncompress($HTTP_RAW_POST_DATA)); $signature=$_SERVER['HTTP_X_SIGNATURE']; if ($this->username!=$this->user) $this->error('auth'); $signature_check=$this->makeSignature($this->privateKey,$xml); if ($signature_check!=$signature) $this->error('auth'); if ($xml=='CHECK STATUS') $this->requestTypes='check'; elseif ($xml=='UPDATE') $this->requestTypes='update'; else $this->error['xml']; return true; } public function response() { if ($this->getAuth()) { if ($this->requestTypes=='update') { include('autoupdate.php'); return gzcompress("NOTIFICATIONS OK",9); } elseif($this->requestTypes=='check') return gzcompress("WAITING FOR UPDATES",9); } else return false; } private function error($errorID,$header="HTTP/1.0 400 Bad Request") { $error=$this->ersArray[$errorID]; header($header);echo (gzcompress("{$error['desc']}",9));exit; } private function makeSignature($var1,$var2) { return md5(md5($var1).md5($var2)); } } $notifications=new notifications_response(); echo $notifications->response(); ?>