On Sat, Feb 19, 2022 at 11:07 AM Mark Phippard <markp...@gmail.com> wrote:
>
> On Sat, Feb 19, 2022 at 9:48 AM William Muriithi
> <william.murii...@gmail.com> wrote:
> >
> > Morning Mark
> >
> > Thanks a lot for the quick suggestion.   I don't have a proxy in front
> > of  the SVN though.  The svn client (Which is also subversion 1.14)
> > connects to apache server that is running mod_dav_svn to serve a svn
> > repo.  I am not sure if this apache server can then be called a proxy,
> > as all http based svn would then have a proxy.  The same apache is the
> > one that handles ssl termination.
> >
> > I do have two DNS A records.  Not sure if this can cause this
> > breakage.  The hostname is called  repo.example.com.  So there is a
> > DNS A record of repo.example.com pointing to 192.168.20.6.  However to
> > allow easy server migration, the svn clients use another  A record
> > that points carbon.example.com to the current SVN server, in this case
> > carbon.example.com point to 192.168.20.6.  I can't honestly see this
> > being a problem but sharing in case it's a problem and I am in the
> > dark.
> >
> > I just thought sharing my actual configurations could also help.
> > Below is how apache config looks like:
> >
> >
> > <VirtualHost *:443>
> >     ServerName carbon.example.com
> >     Header always set Strict-Transport-Security "max-age=31536000;
> > includeSubDomains"
> >     <FilesMatch "\.pdf$">
> >        Header set Content-Disposition inline
> >     </FilesMatch>
> >
> > MaxKeepAliveRequests 1000
> >
> > <IfModule dav_svn_module>
> >     SVNCacheRevProps on
> >     SVNInMemoryCacheSize 3145728
> >     SVNCacheTextDeltas On
> >     SVNAllowBulkUpdates Prefer
> >     SVNCacheFullTexts On
> >     SVNUseUTF8 On
> > </IfModule>
> >
> > <Location /svn>
> >     DAV svn
> >         SVNParentPath /var/repos/svn
> >         SVNListParentPath On
> >         SVNReposName "SVN Repositories"
> >         LimitXMLRequestBody 0
> >         LimitRequestBody 0
> >         AuthType GSSAPI
> >         AuthName "SVN Account"
> >         GssapiConnectionBound On
> >         GssapiBasicAuth On
> >         GssapiNegotiateOnce On
> >         GssapiLocalName on
> >         BrowserMatch Windows gssapi-no-negotiate
> >         AuthzSendForbiddenOnFailure On
> >         GssapiCredStore keytab:/etc/httpd/conf.d/httpd.keytab
> >         GssapiSignalPersistentAuth On
> >         GssapiSSLonly On
> >         AuthzSVNReposRelativeAccessFile  authz
> >         AuthzSVNGroupsFile /var/repos/svn/glacier/conf/groups
> >         Require expr %{REMOTE_USER} =~ /@example.com$/
> > </Location>
> > <Location /svn/svn-status>
> >     SetHandler svn-status
> > </Location>
> >
> >
> >     RewriteEngine on
> >     RewriteCond %{HTTP_HOST} !^carbon\.example\.com [NC]
> >     RewriteCond %{HTTP_HOST} !^$
> >     RewriteRule ^/?(.*) https://carbon.example.com/$1 [L,R,NE]
> >
> >     RewriteCond "%{QUERY_STRING}" "^$"
> >     RewriteRule "^/$"
> > https://example.sharepoint.com/IT/SitePages/Repositories.aspx
> > [L,R=301]
> >
> > </VirtualHost>
>
> Without understanding all of the details of what you are doing with
> VirtualHost I would say the solution lies in that final section where
> you are doing Rewrites. You need to add a rule to rewrite the
> Destination header. It will come in populated with the URL the end
> user is using so you need to rewrite it to the internal value.
>
> I know when we are just rewriting the protocol the Directive looks like this:
>
> RequestHeader edit Destination ^https http early
>
> You will need to do a bit more since you are rewriting the full host
> section. I am guessing you can figure it out from here though.

The documentation for the HTTP COPY method will give you an idea what
is going on:

https://datatracker.ietf.org/doc/html/rfc4918#section-9.8.6

SVN sends this method to the server, the Destination header contains
the URI where the source item is being copied/moved to. Since you
rewrite the server name before forwarding a request to the SVN server
you also need to rewrite the value in this header.

Mark

Reply via email to