Seguranca utilizando custom_url_rewrite_outbound

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
inchains's picture

Olá!

Gostaria que me esclarecessem e se possível ajudassem com o seguinte.
Através do exemplo dado na documentação do drupal, consegui através das funções custom_url_rewrite_outbound() e custom_url_rewrite_inbound() manipular o código:

function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
if (preg_match('|^admin(/{0,1}.)|', $path, $matches)) {
$path = 'config'. $matches[1];
}
}
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
if (preg_match('|^config(/{0,1}.
)|', $path, $matches)) {
$result = 'admin'. $matches[1];
}
if (preg_match('|^admin(/{0,1}.*)|', $path, $matches)) {
$result = '404'. $matches[1];
}
}

para se ajustar ao pretendido, que seria:
perante um url do tipo

.../?q=admin/build/...

alterar a palavra 'admin' para outra e que ao tentarem aceder directamente por url à zona de 'admin' fosse apresentada a página 404 (conseguido);

o que não consegui foi alterar a palavra 'build' para outra.
A titulo de exemplo, o código completo utilizado era qualquer coisa do género

function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
if (preg_match('|^admin(/{0,1}.)|', $path, $matches)) {
$path = 'config'. $matches[1];
}
if (preg_match('|^build(/{0,1}.
)|', $path, $matches)) {
$path = 'const'. $matches[1];
}
}
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
if (preg_match('|^config(/{0,1}.)|', $path, $matches)) {
$result = 'admin'. $matches[1];
}
if (preg_match('|^admin(/{0,1}.
)|', $path, $matches)) {
$result = '404'. $matches[1];
}
if (preg_match('|^const(/.*)|', $path, $matches)) {
$result = 'build'. $matches[1];
}
}

Alguém pode dar uma ajudinha em "how to"?!
Obrigado!

Comments

Há outras formas

perusio's picture

de fazer isso sem ser preciso todas essas regexes e tocar em código PHP. Se é proteger a área administrativa que se pretende, impedindo o seu acesso basta fazer:

location ^~ /admin {
    error_page 404 /;
    return 404;
}

Isto no Nginx redirecciona qualquer URI /admin para a raiz do site devolvendo um 404. Outros servidores como o Apache também dão para fazer isto, embora de forma bem menos económica. Ainda, se não for preciso devolver um 404 mas um 302 serve, então:
location ^~ /admin {
    return 302 /;
}

basta.

Obrigado perusio, mas...

inchains's picture

não percebi onde colocar esse código fornecido!!! settings.php???
Realmente o que eu pretendo é mesmo fazer com que se altere os nomes dos diferentes "niveis" do url, refiro-me a "niveis" considerando /?q=nivel1/nivel2/etc.

para o 1º nivel consegui alterar, gostaria de saber como alterar o 2ºnivel do url!

Obrigado!

O António deu-te um exemplo

paulo_graca's picture

O António deu-te um exemplo para solucionares o teu problema quando se tem um servidor a correr NginX. Não tem nada a ver com configurações no Drupal. Eu de facto, no Drupal, para questões com URLs, sempre me "escondi" atrás do módulo pathauto. Embora este módulo possa levantar uma série de questões de performance, já que para cada request, é feito um pedido à base de dados/Memória.

Muito sinceramente, não acho que mudares o admin seja uma boa ideia (D6), isto porque a estrutura de administração está assente no endereço "/admin/*". Contudo, encontrei este artigo, pode ser que te ajude:
http://www.drupalcoder.com/blog/drupal-custom-url-rewriting-change-the-a...

Boa sorte!

ya, foi dai que saquei algum

inchains's picture

ya, foi dai que saquei algum codigo!

Olá! Simples, simples é

ricardoamaro's picture

Olá!

Simples, simples é usares este módulo: http://drupal.org/project/path_access

" The Path Access module gives site administrators an additional layer of access control to all pages of a Drupal site."

Podes negar ou restringir accesso a diversos urls por grupo de utilizadores: anónimos, autenticados, admins... etc...

Muito simples e agnóstico, a programação ou webserver.

Abraço!

ok...

inchains's picture

acho que as dicas vão servindo para o efeito!

Obrigado malta!