Пример #1
0
 /**
  * Process a Request.
  *
  *
  * There are a few different type's of method calls currently.
  * 1. Auth related methods, which all start with "auth.".  These
  * methods do not yet typically have a session key or in process of creating/validating/removing one.
  * Other inner/inter systems security methods can be here as well.   Note, you should NOT add a method
  * to authenticate a user, that should be done else where.  Use the inner-method of approveToken and lock
  * it down within a system.
  *
  * 2. Application method calls.  This is really the catchalll and executes the request handling mechanism.
  *
  * 3. Systems Management calls.   (coming soon).
  *
  */
 function execute($request)
 {
     ini_set('session.use_cookies', '0');
     ini_set('session.save_handler', 'user');
     session_set_save_handler(array('Session', 'open'), array('Session', 'close'), array('Session', 'read'), array('Session', 'write'), array('Session', 'destroy'), array('Session', 'gc'));
     session_cache_limiter('none');
     set_error_handler(array('OpenFBServer', 'errorHandler'), E_ERROR);
     // There is a change dependending on magic quotes settings
     // that PHP will add in extra slashes, not good for us.
     // This is removed as of PHP 6 as well.
     if (get_magic_quotes_gpc()) {
         foreach ($request as $rname => $rval) {
             $request[$rname] = stripslashes($rval);
         }
     }
     $context = Api_RequestContext::createRequestContext($request);
     if ($context->getNetworkKey() == null) {
         $keyService = Api_Bo_KeyService::create();
         $ids = $keyService->getIds($context->getApiKey());
         $domain_keys = $keyService->getKeyset($ids['domain_id'], $ids['domain_id']);
         if ($domain_keys != null) {
             $context->setNetworkKey($domain_keys['api_key']);
         }
     }
     //error_log( "method $method requested" );
     try {
         $response = $this->executeRequest($context, $request);
         $this->send_response($context->getMethod(), $response, $context->getFormat(), $context->getCallback());
     } catch (Exception $exception) {
         error_log("When executing {$context->getMethod()} request in OpenFBServer: " . $exception->getMessage());
         error_log($exception->getTraceAsString());
         $this->send_exception($exception, $request, $context->getFormat(), $context->getCallback());
     }
     // TODO - This would hurt infinite session concepts, should we just bag this concept?
     // Should session cache be extended after each call?
     // Should it be validated against expires time in session?
     //    	 session_cache_expire ( 24 * 60 );
 }
Пример #2
0
 /**
  * Process API request to get an applications properties.
  *
  */
 public function execute()
 {
     $response = array();
     $ds = Api_Bo_DomainService::create();
     $ks = Api_Bo_KeyService::create();
     $domain = null;
     if (!isset($this->m_nid)) {
         $this->m_nid = $ds->getNativeIdByApiKey($this->m_apiKey);
     }
     $domain = $ds->getDomain($this->m_nid);
     $domain_keys = $ks->getKeyset($this->m_nid, $this->m_nid);
     $domain = array_merge($domain, $domain_keys);
     error_log("Retrieved domain for " . $this->m_nid . ":" . var_export($domain, true));
     if (!empty($domain)) {
         foreach ($this->m_properties as $prop) {
             if (!isset(self::$map[$prop])) {
                 throw new OpenFBAPIException(FB_ERROR_MSG_PARAMETER_MISSING, FB_ERROR_CODE_PARAMETER_MISSING);
             }
             $key = self::$map[$prop];
             if (!isset($domain[$key])) {
                 $response[$prop] = '';
             } else {
                 $response[$prop] = $domain[$key];
             }
         }
     }
     return array('result' => json_encode($response));
 }
Пример #3
0
 /**
  * Process API request to get an applications properties.
  *
  */
 public function execute()
 {
     $appService = Api_ServiceFactory::create('AppService');
     $response = array();
     if ($this->m_canvasName != null) {
         $ids = $appService->getNativeIdsByProperty('canvas_url', $this->m_canvasName);
         if ($ids == NULL || count($ids) == 0) {
             throw new OpenFBAPIException("No such application known, canvas name is '{$this->m_canvasName}'", FB_ERROR_CODE_NO_APP);
         }
         $this->m_aid = $ids[0];
     } else {
         if ($this->m_apiKey != null) {
             $id = $appService->getNativeIdByApiKey($this->m_apiKey);
             if ($id == NULL) {
                 throw new OpenFBAPIException("No such application known, API key is '{$this->m_apiKey}' on '{$this->m_nid}' network.", FB_ERROR_CODE_NO_APP);
             }
             $this->m_aid = $id;
         }
     }
     /*
      * You can only cross check application information if
      * the calling application is a default application
      */
     // TODO: SECURITY: This disables cross-app calling security if uncommented!
     if (false && $this->m_aid != $this->getAppId()) {
         $isDefault = $this->checkDefaultApp($this->m_aid);
         if (!$isDefault) {
             throw new OpenFBAPIException('Application with id ' . $this->getAppId() . ' is not a default app: ' . FB_ERROR_MSG_GRAPH_EXCEPTION, FB_ERROR_CODE_GRAPH_EXCEPTION);
         }
     }
     $app = $appService->getApp($this->m_aid);
     $domainService = Api_Bo_DomainService::create();
     $did = $domainService->getNativeIdByApiKey($this->m_nid);
     $keyService = Api_Bo_KeyService::create();
     $keyset = $keyService->getKeyset($this->m_aid, $did);
     $app['api_key'] = isset($keyset['api_key']) ? $keyset['api_key'] : '';
     $app['secret_key'] = isset($keyset['secret']) ? $keyset['secret'] : '';
     $response = array();
     if ($app != NULL) {
         foreach ($this->m_properties as $prop) {
             if (!isset(self::$map[$prop])) {
                 throw new OpenFBAPIException(FB_ERROR_MSG_PARAMETER_MISSING, FB_ERROR_CODE_PARAMETER_MISSING);
             }
             $key = self::$map[$prop];
             if (!isset($app[$key])) {
                 $response[$prop] = '';
             } else {
                 $response[$prop] = $app[$key];
             }
         }
     }
     return array('result' => json_encode($response));
 }