Example #1
0
 private function parse_rpc_request($request)
 {
     $sign = $request['sign'];
     unset($request['sign']);
     $app_id = $request['app_id'];
     if ($app_id) {
         $app_id = substr($app_id, strpos($app_id, '.') + 1, strlen($app_id));
     }
     if ($request["direct"] == 'true') {
         $sign_check = base_certificate::gen_sign($request);
     } else {
         if (!base_shopnode::token($app_id)) {
             $sign_check = base_certificate::gen_sign($request);
         } else {
             $sign_check = base_shopnode::gen_sign($request, $app_id);
         }
     }
     if ($sign != $sign_check) {
         //trigger_error('sign error',E_USER_ERROR);
         $this->send_user_error('4003', 'sign error');
         return false;
     }
     $system_params = array('app_id', 'method', 'date', 'format', 'certi_id', 'v', 'sign', 'node_id');
     foreach ($system_params as $name) {
         $call[$name] = $request[$name];
         unset($request[$name]);
     }
     //api version control 20120627 mabaineng
     $system_params_addon = array('from_node_id', 'from_api_v', 'to_node_id', 'to_api_v');
     foreach ($system_params_addon as $name) {
         if ($request[$name]) {
             self::$api_info[$name] = $request[$name];
             unset($request[$name]);
         }
     }
     //if method request = 'aaa.bbb.ccc.ddd'
     //then: object_service = api.aaa.bbb.ccc, method=ddd
     if (isset($call['method'][2])) {
         if ($p = strrpos($call['method'], '.')) {
             $service = substr($call['method'], 0, $p);
             self::$api_info['api_name'] = $service;
             $service = 'api.' . $service;
             $method = substr($call['method'], $p + 1);
         }
     } else {
         //trigger_error('error method',E_ERROR);
         $this->send_user_error('4001', 'error method');
         return false;
     }
     if ($call['node_id']) {
         self::$node_id = $call['node_id'];
     }
     return array($service, $method, $request);
 }
Example #2
0
 private function parse_rpc_request($request)
 {
     $sign = $request['sign'];
     unset($request['sign']);
     $sign_check = base_certificate::gen_sign($request);
     if ($sign != $sign_check) {
         //trigger_error('sign error',E_USER_ERROR);
         $this->send_user_error('4003', 'sign error');
         return false;
     }
     $system_params = array('app_id', 'method', 'date', 'format', 'certi_id', 'v', 'sign', 'node_id');
     foreach ($system_params as $name) {
         $call[$name] = $request[$name];
         unset($request[$name]);
     }
     //if method request = 'aaa.bbb.ccc.ddd'
     //then: object_service = api.aaa.bbb.ccc, method=ddd
     if (isset($call['method'][2])) {
         if ($p = strrpos($call['method'], '.')) {
             $service = 'api.' . substr($call['method'], 0, $p);
             $method = substr($call['method'], $p + 1);
         }
     } else {
         //trigger_error('error method',E_ERROR);
         $this->send_user_error('4001', 'error method');
         return false;
     }
     if ($call['node_id']) {
         self::$node_id = $call['node_id'];
     }
     return array($service, $method, $request);
 }