Add a simple test to detect if server is public

If the server is not accessible by an external server, pubsubhubbub should be
disable.

See https://github.com/FreshRSS/FreshRSS/issues/865
pull/917/head
Marien Fressinaud 9 years ago
parent eaccc1eba4
commit 339e32424f
  1. 1
      app/install.php
  2. 27
      lib/lib_rss.php

@ -229,6 +229,7 @@ function saveStep3() {
'prefix' => $_SESSION['bd_prefix'],
'pdo_options' => array(),
),
'enable_pubsubhubbub' => server_is_public($base_url),
);
@unlink(join_path(DATA_PATH, 'config.php')); //To avoid access-rights problems

@ -83,6 +83,33 @@ function checkUrl($url) {
}
}
/**
* Test if a given server address is publicly accessible.
*
* Note: for the moment it tests only if address is corresponding to a
* localhost address.
*
* @param $address the address to test, can be an IP or a URL.
* @return true if server is accessible, false else.
* @todo improve test with a more valid technique (e.g. test with an external server?)
*/
function server_is_public($address) {
$host = parse_url($address, PHP_URL_HOST);
$is_public = !in_array($host, array(
'127.0.0.1',
'localhost',
'localhost.localdomain',
'[::1]',
'localhost6',
'localhost6.localdomain6',
));
return $is_public;
}
function format_number($n, $precision = 0) {
// number_format does not seem to be Unicode-compatible
return str_replace(' ', '', //Espace fine insécable

Loading…
Cancel
Save