X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Furlshortener.php;h=c6cf94fffd3e475e37c883dcd64ea5a9fb96b415;hb=1aff3b59c0f46dafe3396c1123a252645805e233;hp=0e7f3a1ef64d92300c35d8e0e6dfe8431bd22980;hpb=e23d21c1588a9ffa0697aef08e9ebdada4fe167e;p=platal.git diff --git a/modules/urlshortener.php b/modules/urlshortener.php index 0e7f3a1..c6cf94f 100644 --- a/modules/urlshortener.php +++ b/modules/urlshortener.php @@ -1,6 +1,6 @@ $this->make_hook('url', AUTH_COOKIE), - 'admin/url' => $this->make_hook('admin_url', AUTH_MDP, 'admin') + 'url' => $this->make_hook('url', AUTH_PUBLIC), + 'admin/url' => $this->make_hook('admin_url', AUTH_PASSWD, 'admin') ); } function handler_url($page, $alias) { - $url = XDB::fetchOneCell('SELECT url - FROM url_shortener - WHERE alias = {?}', - $alias); - - if (is_null($url)) { - return PL_NOT_FOUND; - } - http_redirect($url); + http_redirect(Platal::globals()->core->base_url_shortener . $alias); } function handler_admin_url($page) @@ -54,17 +46,21 @@ class UrlShortenerModule extends PLModule $alias = Post::t('alias'); $url_regex = '{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i'; - if (!preg_match($url_regex, $url)) { + if (strlen($url) > 255 || !preg_match($url_regex, $url)) { $page->trigError("L'url donnée n'est pas valide."); return; } $page->assign('url', $url); if ($alias != '') { - if (!preg_match('/^[a-zA-Z0-9\-]{6}$/i', $alias)) { + if (!preg_match('/^[a-zA-Z0-9\-\/]+$/i', $alias)) { $page->trigError("L'alias proposé n'est pas valide."); return; } + if (preg_match('/^a\//i', $alias)) { + $page->trigError("L'alias commence par le préfixe 'a/' qui est réservé et donc non autorisé."); + return; + } $page->assign('alias', $alias); $used = XDB::fetchOneCell('SELECT COUNT(*) @@ -77,7 +73,7 @@ class UrlShortenerModule extends PLModule } } else { do { - $alias = rand_token(6); + $alias = 'a/' . rand_token(6); $used = XDB::fetchOneCell('SELECT COUNT(*) FROM url_shortener WHERE alias = {?}', @@ -89,9 +85,9 @@ class UrlShortenerModule extends PLModule XDB::execute('INSERT INTO url_shortener (url, alias) VALUES ({?}, {?})', $url, $alias); - $page->trigSuccess("L'url « " . $url . ' » est maintenant accessible depuis « ' . Platal::globals()->baseurl . '/url/' . $alias . ' ».'); + $page->trigSuccess("L'url « " . $url . ' » est maintenant accessible depuis « http://u.w4x.org/' . $alias . ' ».'); } } -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: ?>