Redirecionar subpasta particular sob a localização mod_dav_svn

3

Estou configurando um servidor svn usando o mod_dav_svn. Eu gostaria de satisfazer todos os itens a seguir:

  • A coleção de repositórios reside em repos.example.com/ NÃO repos.example.com/svn
  • O conteúdo não-svn está disponível no mesmo servidor em repos.example.com/repo-style. Isso é para habilitar informações de estilo. Estou bem com o fato de que não poderei ter um repo com esse nome.

Aqui está a configuração atual:

<VirtualHost *:80>
  ServerName repos.example.com

  <Location />
    DAV svn

    AuthType Basic
    AuthName "Log In"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPURL ldap://***
    AuthLDAPBindDN ***
    AuthLDAPBindPassword ***
    require valid-user

    SVNListParentPath on
    SVNParentPath /mnt/repos/svn
    SVNIndexXSLT /repo-style/svnindex.xsl
    AuthzSVNAccessFile /mnt/repos/svn-auth/access
  </Location>
</VirtualHost>

O problema acima é que quando uma requisição chega para repos.example.com/repo-admin mod_dav_svn responde dizendo que o repositório não existe. Eu preciso inventar um esquema de reescrita que isola um pedido para esse subdiretório específico e serve html ou php regular ou qualquer outra coisa.

Eu tentei usar reescritas ou aliases para conseguir isso, mas não obtive êxito. Qualquer entrada seria apreciada.

    
por Houston Fortney 30.07.2015 / 03:59

2 respostas

0

Bem, se eu fizer a sua pergunta corretamente, você tem duas opções:

A primeira opção é dar acesso a arquivos de leitura para todos, mas para operações de gravação exigem usuário autorizado. Exemplo de configuração:

<Location /svn>
  DAV svn
  SVNParentPath /var/svn

  # Authentication type, name, etc.

  # Authorization: Authenticated users only for non-read-only
  #                (write) operations; allow anonymous reads
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

Saiba mais aqui: Blanket access control

A segunda opção é usar o AuthzSVNAccessFile. Essa opção permite que você tenha uma configuração de acesso mais flexível por diretório e por projeto. Configuração de amostra:

[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak

# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =

# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw

# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw

# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw

Saiba mais aqui: Como o AuthzSVNAccessFile funciona?

    
por 25.08.2015 / 22:27
0

De acordo com esta pergunta em locais que mesclam o pedido sobre Seções do Apache 2 na configuração, apenas um bloco declarando <Location /repo-style> pode sobrescrever o <Location /> declarado entregando DAV svn .

Como uma diretiva Directory não terá prioridade, a única opção é entregar conteúdo estático com uma seção Location , por exemplo, graças a um script CGI escrito rapidamente em seu idioma de script favorito.

    
por 28.08.2015 / 22:46