diff --git a/group.php b/group.php index 4884b1c..005941e 100644 --- a/group.php +++ b/group.php @@ -29,15 +29,18 @@ error($e->getMessage()); } -$host = htmlspecialchars($_SERVER['HTTP_HOST'], ENT_QUOTES, "UTF-8"); +$cleanBaseUrl = clean($NEWS_WEB_BASE_URL); +$baseUrlParts = parse_url($NEWS_WEB_BASE_URL); +$cleanBaseHost = clean($baseUrlParts['host'] . (isset($baseUrlParts['port']) ? ':' . $baseUrlParts['port'] : '')); +$cleanGroupUrl = urlencode($group); switch ($format) { case 'rss': header("Content-type: text/xml"); echo '' . "\n";?> - <?php echo $host; ?>: <?php echo $group?> - http:///group.php?group= + <?php echo $cleanBaseHost; ?>: <?php echo $group?> + /group.php?group= - <?php echo $host; ?>: <?php echo $group?> - http:///group.php?group= + <?php echo $cleanBaseHost; ?>: <?php echo $group?> + /group.php?group= Newsgroup at en-US @@ -146,11 +149,13 @@ foreach ($overview['articles'] as $articleNumber => $details) { /* $date = date("H:i:s M/d/y", strtotime($odate)); */ $date822 = date("r", strtotime($details['date'])); + $cleanArticlePath = "/$cleanGroupUrl/" . urlencode((string) $articleNumber); + $cleanArticleLink = "$cleanBaseUrl$cleanArticlePath"; switch ($format) { case 'rss': echo " \n"; - echo " http://$host/$group/$articleNumber\n"; + echo " $cleanArticleLink\n"; echo " ", format_subject($details['subject'], $charset), "\n"; echo " ", htmlspecialchars(format_author($details['author'], $charset), ENT_QUOTES, "UTF-8"), @@ -161,7 +166,7 @@ case 'rdf': echo " \n"; echo " ", format_subject($details['subject'], $charset), "\n"; - echo " http://$host/$group/$articleNumber\n"; + echo " $cleanArticleLink\n"; echo " ", htmlspecialchars(format_author($details['author'], $charset), ENT_QUOTES, "UTF-8"), "\n"; diff --git a/lib/config.php b/lib/config.php index 71a3835..dc80df9 100644 --- a/lib/config.php +++ b/lib/config.php @@ -4,3 +4,10 @@ if (getenv('NNTP_HOST')) { $NNTP_HOST = getenv('NNTP_HOST'); } + +$NEWS_WEB_BASE_URL = 'https://news.php.net'; +if (getenv('NEWS_WEB_BASE_URL')) { + $NEWS_WEB_BASE_URL = rtrim(getenv('NEWS_WEB_BASE_URL'), '/'); +} elseif (PHP_SAPI == 'cli-server') { + $NEWS_WEB_BASE_URL = 'http://' . $_SERVER['HTTP_HOST']; +}