Fix several PHP messages
- Add logging for exceptions
This commit is contained in:
parent
230f17ef36
commit
f854d7d5f7
3 changed files with 72 additions and 44 deletions
|
@ -66,7 +66,7 @@ class Servers extends BaseController
|
|||
$sql_where = '';
|
||||
$values = [];
|
||||
|
||||
if ($args['language']) {
|
||||
if (!empty($args['language'])) {
|
||||
$sql_where .= '
|
||||
AND LEFT(`language`, 2) = LEFT(:language, 2)';
|
||||
$values['language'] = $args['language'];
|
||||
|
@ -104,7 +104,7 @@ AND NOT `hidden`
|
|||
$vars = [
|
||||
'title' => $this->l10n->gettext('Public Servers'),
|
||||
'total' => $count,
|
||||
'language' => $args['language'],
|
||||
'language' => $args['language'] ?? null,
|
||||
'servers' => $servers,
|
||||
'pager' => $pager->renderFull($count),
|
||||
'stable_version' => $stable_version,
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace Friendica\Directory\Pollers;
|
||||
|
||||
use Friendica\Directory\Utils\Network;
|
||||
use GuzzleHttp\Exception\RequestException;
|
||||
|
||||
/**
|
||||
* @author Hypolite Petovan <hypolite@mrpetovan.com>
|
||||
|
@ -136,13 +136,28 @@ class Profile
|
|||
//Skip the profile scrape?
|
||||
if ($server['noscrape_url']) {
|
||||
$this->logger->debug('Calling ' . $server['noscrape_url'] . '/' . $username);
|
||||
$params = \Friendica\Directory\Utils\Scrape::retrieveNoScrapeData($this->http, $server['noscrape_url'] . '/' . $username);
|
||||
try {
|
||||
$params = \Friendica\Directory\Utils\Scrape::retrieveNoScrapeData($this->http, $server['noscrape_url'] . '/' . $username);
|
||||
} catch (RequestException $e) {
|
||||
$this->logger->info('Request failed with error code ' . $e->getCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->warning('Request failed with exception ' . get_class($e));
|
||||
$this->logger->warning(var_export($e, true));
|
||||
}
|
||||
|
||||
$available = !!$params; //If the result was false, do a scrape after all.
|
||||
}
|
||||
|
||||
if (!$available) {
|
||||
$this->logger->notice('Parsing profile page ' . $profile_uri);
|
||||
$params = \Friendica\Directory\Utils\Scrape::retrieveProfileData($this->http, $profile_uri);
|
||||
$this->logger->info('Parsing profile page ' . $profile_uri);
|
||||
try {
|
||||
$params = \Friendica\Directory\Utils\Scrape::retrieveProfileData($this->http, $profile_uri);
|
||||
} catch (RequestException $e) {
|
||||
$this->logger->info('Request failed with error code ' . $e->getCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->warning('Request failed with exception ' . get_class($e));
|
||||
$this->logger->warning(var_export($e, true));
|
||||
}
|
||||
$params['language'] = $server['language'];
|
||||
|
||||
$available = !empty($params['fn']);
|
||||
|
@ -306,23 +321,27 @@ class Profile
|
|||
$status = false;
|
||||
|
||||
if ($profile_id) {
|
||||
$img_str = $this->http->get($params['photo'])->getBody()->getContents();
|
||||
$img = new \Friendica\Directory\Utils\Photo($img_str);
|
||||
if ($img->getImage()) {
|
||||
$img->scaleImageSquare(80);
|
||||
try {
|
||||
$img_str = $this->http->get($params['photo'])->getBody()->getContents();
|
||||
$img = new \Friendica\Directory\Utils\Photo($img_str);
|
||||
if ($img->getImage()) {
|
||||
$img->scaleImageSquare(80);
|
||||
|
||||
$this->atlas->perform('INSERT INTO `photo` SET
|
||||
`profile_id` = :profile_id,
|
||||
`data` = :data
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`data` = :data',
|
||||
[
|
||||
'profile_id' => $profile_id,
|
||||
'data' => $img->imageString()
|
||||
]
|
||||
);
|
||||
$this->atlas->perform('INSERT INTO `photo` SET
|
||||
`profile_id` = :profile_id,
|
||||
`data` = :data
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`data` = :data',
|
||||
[
|
||||
'profile_id' => $profile_id,
|
||||
'data' => $img->imageString()
|
||||
]
|
||||
);
|
||||
}
|
||||
$status = true;
|
||||
} catch (RequestException $e) {
|
||||
$this->logger->info('Photo retrieval unsuccessful', ['url' => $params['photo'], 'code' => $e->getCode()]);
|
||||
}
|
||||
$status = true;
|
||||
}
|
||||
|
||||
$submit_end = microtime(true);
|
||||
|
|
|
@ -154,7 +154,7 @@ class Server
|
|||
$addons = $probe_result['data']['plugins'];
|
||||
}
|
||||
|
||||
if ($probe_result['data']['admin']['profile']) {
|
||||
if (!empty($probe_result['data']['admin']['profile'])) {
|
||||
$subscribe = $this->getSubscribeUrl($probe_result['data']['url'], $probe_result['data']['admin']['profile']);
|
||||
}
|
||||
|
||||
|
@ -178,14 +178,14 @@ class Server
|
|||
[
|
||||
'server_id' => $server['id'],
|
||||
'base_url' => strtolower($probe_result['data']['url']),
|
||||
'name' => $probe_result['data']['site_name'],
|
||||
'name' => substr($probe_result['data']['site_name'], 0, 255),
|
||||
'language' => $probe_result['data']['language'] ?? null,
|
||||
'version' => $probe_result['data']['version'],
|
||||
'addons' => implode(',', $addons),
|
||||
'reg_policy' => $probe_result['data']['register_policy'],
|
||||
'info' => $probe_result['data']['info'],
|
||||
'admin_name' => $probe_result['data']['admin']['name'],
|
||||
'admin_profile' => $probe_result['data']['admin']['profile'],
|
||||
'admin_name' => $probe_result['data']['admin']['name'] ?? null,
|
||||
'admin_profile' => $probe_result['data']['admin']['profile'] ?? null,
|
||||
'noscrape_url' => $probe_result['data']['no_scrape_url'] ?? null,
|
||||
'subscribe_url' => $subscribe ?? null,
|
||||
'ssl_state' => $probe_result['ssl_state']
|
||||
|
@ -265,29 +265,35 @@ class Server
|
|||
|
||||
$sslcert_issues = false;
|
||||
|
||||
$probe_start = microtime(true);
|
||||
$probe_data = null;
|
||||
try {
|
||||
//Probe the site.
|
||||
$probe_start = microtime(true);
|
||||
$probe_data = $this->http->get($base_url . '/friendica/json', $options)->getBody()->getContents();
|
||||
$probe_end = microtime(true);
|
||||
} catch (RequestException $e) {
|
||||
if (!in_array($e->getHandlerContext()['errno'], [
|
||||
if (in_array($e->getHandlerContext()['errno'] ?? 0, [
|
||||
60, //Could not authenticate certificate with known CA's
|
||||
83 //Issuer check failed
|
||||
])) {
|
||||
throw $e;
|
||||
$sslcert_issues = true;
|
||||
|
||||
//When it's the certificate that doesn't work, we probe again without strict SSL.
|
||||
$options['verify'] = false;
|
||||
|
||||
$probe_start = microtime(true);
|
||||
try {
|
||||
$probe_data = $this->http->get($base_url . '/friendica/json', $options)->getBody()->getContents();
|
||||
} catch(RequestException $e) {
|
||||
// Collects 404, 500 errors
|
||||
$this->logger->info('SSL-non-verified URL probe failed with error code: ' . $e->getCode());
|
||||
}
|
||||
} else {
|
||||
$this->logger->info('SSL-verified URL probe failed with error code: ' . $e->getCode());
|
||||
}
|
||||
|
||||
$sslcert_issues = true;
|
||||
|
||||
//When it's the certificate that doesn't work, we probe again without strict SSL.
|
||||
$options['verify'] = false;
|
||||
|
||||
$probe_start = microtime(true);
|
||||
$probe_data = $this->http->get($base_url . '/friendica/json', $options)->getBody()->getContents();
|
||||
$probe_end = microtime(true);
|
||||
}
|
||||
|
||||
$probe_end = microtime(true);
|
||||
|
||||
$time = round(($probe_end - $probe_start) * 1000);
|
||||
|
||||
try {
|
||||
|
@ -404,11 +410,9 @@ class Server
|
|||
{
|
||||
$uri = Uri::withQueryValues(new Uri($base_url . '/poco'), ['fields' => 'urls', 'count' => 1000]);
|
||||
|
||||
$response = $this->http->request('GET', $uri);
|
||||
|
||||
$this->logger->debug('WebRequest: ' . $uri . ' Status: ' . $response->getStatusCode());
|
||||
|
||||
if ($response->getStatusCode() != 200) {
|
||||
try {
|
||||
$response = $this->http->request('GET', $uri);
|
||||
} catch (RequestException $e) {
|
||||
$this->logger->info('Unsuccessful poco request: ' . $uri);
|
||||
return;
|
||||
}
|
||||
|
@ -445,7 +449,12 @@ class Server
|
|||
{
|
||||
$uri = Uri::withQueryValues(new Uri($base_url . '/xrd'), ['uri' => $profile]);
|
||||
|
||||
$response = $this->http->request('GET', $uri, ['headers' => ['Accept' => 'application/jrd+json']]);
|
||||
try {
|
||||
$response = $this->http->request('GET', $uri, ['headers' => ['Accept' => 'application/jrd+json']]);
|
||||
} catch (RequestException $e) {
|
||||
$this->logger->info('Unsuccessful xrd request: ' . $uri);
|
||||
return null;
|
||||
}
|
||||
|
||||
$xrdJsonData = $response->getBody()->getContents();
|
||||
|
||||
|
|
Loading…
Reference in a new issue