Beispiel #1
0
 function start()
 {
     $config = $this->f3->get('config');
     $limiter = new RateLimiter('webfinger');
     if (!$limiter->throttle()) {
         header('Retry-After: ' . $limiter->getInterval());
         // We never display a log for rate limit errors
         $this->f3->status(429);
         $this->fatalError($this->t('Client has been blocked from making further requests'));
     }
     $this->logger->log(LogLevel::INFO, 'SimpleID\\Protocols\\WebFinger->start');
     if (!$this->f3->exists('GET.resource') || $this->f3->get('GET.resource') == '') {
         $this->logger->log(LogLevel::NOTICE, 'resource parameter missing or empty');
         $this->f3->status(400);
         $this->fatalError($this->t('resource parameter missing or empty'));
         return;
     }
     $resource = $this->f3->get('GET.resource');
     $this->logger->log(LogLevel::INFO, 'Requested resource URI: ' . $resource);
     $jrd = $this->getJRD($resource);
     if ($jrd == NULL) {
         $limiter->penalize();
         // Stop $remote_addr from querying again
         $this->f3->status(404);
         $this->fatalError($this->t('Resource not found'));
         return;
     }
     $jrd = $this->fixJRDAliases($jrd, $resource);
     if (isset($_GET['rel'])) {
         $jrd = $this->filterJRDRels($jrd, $_GET['rel']);
     }
     header('Content-Type: application/jrd+json');
     header('Content-Disposition: inline; filename=webfinger.json');
     header('Access-Control-Allow-Origin: ' . $config['webfinger_access_control_allow_origin']);
     if ($this->f3->get('VERB') == 'HEAD') {
         return;
     }
     print json_encode($jrd);
 }