From: Evan Prodromou Date: Mon, 2 Nov 2009 23:13:04 +0000 (-0500) Subject: Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=a2b830392597d88c435baf54ad0df4ecda02dc41;p=quix0rs-gnu-social.git Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x Conflicts: classes/User.php --- a2b830392597d88c435baf54ad0df4ecda02dc41 diff --cc classes/User.php index f060b57a8c,530ece1ba4..96a64ccb29 --- a/classes/User.php +++ b/classes/User.php @@@ -117,13 -117,24 +117,23 @@@ class User extends Memcached_DataObjec function allowed_nickname($nickname) { // XXX: should already be validated for size, content, etc. - static $blacklist = array('rss', 'xrds', 'doc', 'main', - 'settings', 'notice', 'user', - 'search', 'avatar', 'tag', 'tags', - 'api', 'message', 'group', 'groups', - 'local'); - $merged = array_merge($blacklist, common_config('nickname', 'blacklist')); - return !in_array($nickname, $merged); - + $blacklist = common_config('nickname', 'blacklist'); + + //all directory and file names should be blacklisted + $d = dir(INSTALLDIR); + while (false !== ($entry = $d->read())) { + $blacklist[]=$entry; + } + $d->close(); + + //all top level names in the router should be blacklisted + $router = Router::get(); + foreach(array_keys($router->m->getPaths()) as $path){ + if(preg_match('/^\/(.*?)[\/\?]/',$path,$matches)){ + $blacklist[]=$matches[1]; + } + } + return !in_array($nickname, $blacklist); } function getCurrentNotice($dt=null)