SVN customize 403 mensagem de erro

1

Como posso personalizar a mensagem "403 Proibido"? Para apenas esta mensagem eu quero adicionar informações adicionais, como este "403 Proibido (você não tem direitos para [URL para repositório])". Como fazer isso? Eu quero salvar a compatibilidade com qualquer ferramenta svn, como o cliente svn nativo, tartaruga, ambiente de programadores java etc.

- editar -

Meu ambiente:
SO: Linux Debian
SVN: 1.8.8
protocolo de acesso: HTTP (s) por Apache e DAV svn
Configuração de auth protolol: authzsvnaccess

Tudo funciona como eu quero, exceto mensagem proibida. Este usuário mal orientado. Eles acham que o problema está com o serviço, mas o problema é com os direitos de acesso.

    
por Znik 08.07.2014 / 09:41

1 resposta

1

Você pode personalizar textos / documentos de erros com o Apache ( link ), mas isso não te ajude aqui.

As mensagens de erro são incorporadas na fonte do cliente ( subversion/libsvn_ra_serf/util.c ):

svn_ra_serf__error_on_status(serf_status_line sline,
                             const char *path,
                             const char *location)
{
  switch(sline.code)
    {
      case 301:
      case 302:
      case 307:
        return svn_error_createf(SVN_ERR_RA_DAV_RELOCATED, NULL,
                                 (sline.code == 301)
                                 ? _("Repository moved permanently to '%s';"
                                     " please relocate")
                                 : _("Repository moved temporarily to '%s';"
                                     " please relocate"), location);
      case 403:
        return svn_error_createf(SVN_ERR_RA_DAV_FORBIDDEN, NULL,
                                 _("Access to '%s' forbidden"), path);

Sem olhar, suspeito que os outros clientes (SmartSVN, Tortoise) usam as mesmas ou muito semelhantes bibliotecas de HTTP, então você terá o mesmo problema: não há facilidade para rotear mensagens de erro personalizadas do servidor para o cliente quando o cliente é negado por falha de senha ou autenticação.

No entanto, se isso é algo que você realmente precisa, talvez seja possível especificar o caminho necessário no pre-commit hook, já que quando existe um script de gancho com um status diferente de zero, o conteúdo de stdout são realimentados para o usuário e você pode fazer com que ele diga o que quiser.

O problema é que a solicitação teria que ser autenticada primeiro, portanto, uma solução como essa provavelmente seria interrompida em seu modelo de permissão, a menos que fosse para um caso único muito específico. (Você sempre pode personalizar o cliente, mas eu suspeito que é mais longe do que você estaria disposto a ir para isso)

    
por 09.07.2014 / 11:51