1
0
Fork 0
forked from blallo/rss-bridge

whitelist: Do case-insensitive whitelist matching

Matching whitelisted bridges using a case-insensitive match makes
sense for following reasons:

- Wrong upper/lower case spelling in the whitelist is not easily
discovered. Example: Misspelling 'Youtube' as 'YouTube' will not
show the 'Youtube' bridge (while it is expected to show)

- Two bridges with the same name but different letter casing are
discouraged to prevent confusion and keep the project compatible
with Windows machines
This commit is contained in:
logmanoriginal 2017-08-05 23:30:24 +02:00
parent fc0ae42450
commit 84d2c02a09
2 changed files with 7 additions and 4 deletions

View file

@ -119,6 +119,9 @@ try {
} else { } else {
$whitelist_selection = Bridge::listBridges(); $whitelist_selection = Bridge::listBridges();
} }
// Prepare for case-insensitive match
$whitelist_selection = array_map('strtolower', $whitelist_selection);
} }
$action = filter_input(INPUT_GET, 'action'); $action = filter_input(INPUT_GET, 'action');
@ -140,7 +143,7 @@ try {
} }
// whitelist control // whitelist control
if(!Bridge::isWhitelisted($whitelist_selection, $bridge)) { if(!Bridge::isWhitelisted($whitelist_selection, strtolower($bridge))) {
throw new \HttpException('This bridge is not whitelisted', 401); throw new \HttpException('This bridge is not whitelisted', 401);
die; die;
} }
@ -246,7 +249,7 @@ EOD;
$inactiveBridges = ''; $inactiveBridges = '';
$bridgeList = Bridge::listBridges(); $bridgeList = Bridge::listBridges();
foreach($bridgeList as $bridgeName) { foreach($bridgeList as $bridgeName) {
if(Bridge::isWhitelisted($whitelist_selection, $bridgeName)) { if(Bridge::isWhitelisted($whitelist_selection, strtolower($bridgeName))) {
echo displayBridgeCard($bridgeName, $formats); echo displayBridgeCard($bridgeName, $formats);
$activeFoundBridgeCount++; $activeFoundBridgeCount++;
} elseif($showInactive) { } elseif($showInactive) {

View file

@ -94,8 +94,8 @@ EOD;
static public function isWhitelisted($whitelist, $name){ static public function isWhitelisted($whitelist, $name){
if(in_array($name, $whitelist) if(in_array($name, $whitelist)
|| in_array($name . '.php', $whitelist) || in_array($name . '.php', $whitelist)
|| in_array($name . 'Bridge', $whitelist) // DEPRECATED || in_array($name . 'bridge', $whitelist) // DEPRECATED
|| in_array($name . 'Bridge.php', $whitelist) // DEPRECATED || in_array($name . 'bridge.php', $whitelist) // DEPRECATED
|| (count($whitelist) === 1 && trim($whitelist[0]) === '*')) { || (count($whitelist) === 1 && trim($whitelist[0]) === '*')) {
return true; return true;
} else { } else {