bug in VirtualHostMonster in 2.5.0
Hi guys, I bring to your attention the bug "235":http://collector.zope.org/Zope/235 in the Zope collector, which I just posted. Apparently VHM is inserting exactly one spurious '/' in urls when the _vh_folder syntax is used. The problem seems to be in the VirtualHostMonster.__call__ method at lib/python/Products/SiteAccess/VirtualHostMonster.py, which has changed a lot relative to the 2.4.x version, however I couldn't make head or tails of that algorithm, so I wouldn't know how to fix it. This problem is seriously hampering our deployment of Zope 2.5.0 on clients, since most of the time we publish the root of the site from a Zope Folder and need the _vh_folder syntax to access the real Zope root for manteinance. Cheers, Leo PS: since we're talking about the collector, I'll also plug the other but I posted there "http://collector.zope.org/Zope/167", which talks about a problem with SuperFind() and includes a simple fix. It's still pending... -- Ideas don't stay in some minds very long because they don't like solitary confinement.
Ok, I think I found a fix for it, but it's not a change in VHM. As I mentioned in a follow-up to Zope bug 235, there is an inconsistency in lib/python/ZPublisher/HTTPRequest.py in HTTPRequest.setVirtualRoot() The attached patch (also in the bug report) explains what this inconsistency is and seems to fix the VHM problem, but I don't know what other side-effects it has. The 'utilities/testrunner.py -a' seems to run ok. On Wed, 2002-02-20 at 16:29, Leonardo Rochael Almeida wrote:
Hi guys,
I bring to your attention the bug "235":http://collector.zope.org/Zope/235 in the Zope collector, which I just posted.
Apparently VHM is inserting exactly one spurious '/' in urls when the _vh_folder syntax is used. The problem seems to be in the VirtualHostMonster.__call__ method at lib/python/Products/SiteAccess/VirtualHostMonster.py, which has changed a lot relative to the 2.4.x version, however I couldn't make head or tails of that algorithm, so I wouldn't know how to fix it.
This problem is seriously hampering our deployment of Zope 2.5.0 on clients, since most of the time we publish the root of the site from a Zope Folder and need the _vh_folder syntax to access the real Zope root for manteinance.
Cheers, Leo
PS: since we're talking about the collector, I'll also plug the other but I posted there "http://collector.zope.org/Zope/167", which talks about a problem with SuperFind() and includes a simple fix. It's still pending...
-- Ideas don't stay in some minds very long because they don't like solitary confinement.
What info can you get from <dtml-var REQUEST> , say in a dtml doc called "env_test" ?? eg: ServerName newsite ProxyPass / http://192.168.X.Y:8080/VirtualHostBase/http/newsite:80/newsite/VirtualHostR... ProxyPassReverse / http://192.168.X.Y:8080/VirtualHostBase/http/newsite:80/newsite/VirtualHostR... ProxyPass /misc_ http://192.168.X.Y:8080/misc_ ProxyPass /p_ http://192.168.X.Y:8080/p_ yields: PATH_INFO '/VirtualHostBase/http/newsite:80/newsite/VirtualHostRoot/env_test' and PATH_TRANSLATED '/VirtualHostBase/http/newsite:80/newsite/VirtualHostRoot/env_test' ProxyPass /newsite http://192.168.X.Y:8080/VirtualHostBase/http/newsite:80/newsite/VirtualHostR... ProxyPassReverse /newsite http://192.168.X.Y:8080/VirtualHostBase/http/newsite:80/newsite/VirtualHostR... ProxyPass /misc_ http://192.168.X.Y:8080/misc_ ProxyPass /p_ http://192.168.X.Y:8080/p_ yields PATH_INFO '/VirtualHostBase/http/newsite:80/newsite/VirtualHostRoot/_vh_newsite//env_test' and PATH_TRANSLATED '/VirtualHostBase/http/newsite:80/newsite/VirtualHostRoot/_vh_newsite/env_test' The above is how it works on Zope 2.4.3 I remember the second example being a pain to get working on 2.4.3, I think ZMI needed the extra trailing "/" on the proxypass statement in order to work right. Adam At 08:02 PM 2/20/2002 -0300, Leonardo Rochael Almeida wrote:
Ok, I think I found a fix for it, but it's not a change in VHM.
As I mentioned in a follow-up to Zope bug 235, there is an inconsistency in lib/python/ZPublisher/HTTPRequest.py in HTTPRequest.setVirtualRoot()
The attached patch (also in the bug report) explains what this inconsistency is and seems to fix the VHM problem, but I don't know what other side-effects it has. The 'utilities/testrunner.py -a' seems to run ok.
On Wed, 2002-02-20 at 16:29, Leonardo Rochael Almeida wrote:
Hi guys,
I bring to your attention the bug "235":http://collector.zope.org/Zope/235 in the Zope collector, which I just posted.
Apparently VHM is inserting exactly one spurious '/' in urls when the _vh_folder syntax is used. The problem seems to be in the VirtualHostMonster.__call__ method at lib/python/Products/SiteAccess/VirtualHostMonster.py, which has changed a lot relative to the 2.4.x version, however I couldn't make head or tails of that algorithm, so I wouldn't know how to fix it.
This problem is seriously hampering our deployment of Zope 2.5.0 on clients, since most of the time we publish the root of the site from a Zope Folder and need the _vh_folder syntax to access the real Zope root for manteinance.
Cheers, Leo
PS: since we're talking about the collector, I'll also plug the other but I posted there "http://collector.zope.org/Zope/167", which talks about a problem with SuperFind() and includes a simple fix. It's still pending...
-- Ideas don't stay in some minds very long because they don't like solitary confinement.
I can confirm that throwing this at a Zope 2.5.0 root VirtualHostMonster: http://localhost:8080/VirtualHostBase/http/example.org:80/VirtualHostRoot/_v... provides a page with this link: http://example.org//zopeRoot/p_/ZopeButton and on 2.4.4 you get: http://example.org/zopeRoot/p_/ZopeButton This would suggest that VHM is indeed broken in 2.5.0, or at least the combined result of VHM and HTTPRequest.py URL munging is broken. Adam
Collector it then :-) cheers, Chris ----- Original Message ----- From: "Adam Manock" <abmanock@earthlink.net> To: <zope-dev@zope.org> Sent: Thursday, February 21, 2002 2:01 PM Subject: Re: [Zope-dev] Re: bug in VirtualHostMonster in 2.5.0
I can confirm that throwing this at a Zope 2.5.0 root VirtualHostMonster:
http://localhost:8080/VirtualHostBase/http/example.org:80/VirtualHostRoot/_v h_zopeRoot/
provides a page with this link:
http://example.org//zopeRoot/p_/ZopeButton
and on 2.4.4 you get:
http://example.org/zopeRoot/p_/ZopeButton
This would suggest that VHM is indeed broken in 2.5.0, or at least the combined result of VHM and HTTPRequest.py URL munging is broken.
Adam
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
On Thu, 2002-02-21 at 13:38, Chris Withers wrote:
Collector it then :-)
As I mentioned in my first e-mail, it's 'collected' already :-), with proposed fix and everything: http://collector.zope.org/Zope/235 -- Ideas don't stay in some minds very long because they don't like solitary confinement.
On Thu, 2002-02-21 at 11:01, Adam Manock wrote:
I can confirm that throwing this at a Zope 2.5.0 root VirtualHostMonster:
http://localhost:8080/VirtualHostBase/http/example.org:80/VirtualHostRoot/_v...
provides a page with this link:
http://example.org//zopeRoot/p_/ZopeButton
and on 2.4.4 you get:
http://example.org/zopeRoot/p_/ZopeButton
This would suggest that VHM is indeed broken in 2.5.0, or at least the combined result of VHM and HTTPRequest.py URL munging is broken.
The patch I provided doesn't touch VHM, so I'm thinking more on the lines of your second conclusion. Now the funny thing is, the patch also applies to Zope 2.4.x (2.4.3, that I checked). Seems HTTPRequest.setVirtualRoot() was broken all along, it's just thatZope 2.4.x VHM doesn't call it when parsing a VirtualHostRoot directive, limiting itself to manipulate the path stack in the REQUEST (see VirtualHostMonster.__call__() method). Cheers, Leo -- Ideas don't stay in some minds very long because they don't like solitary confinement.
am I reading this right -- 2.5 is brooken? ----- Original Message ----- From: "Leonardo Rochael Almeida" <leo@hiper.com.br> To: "Zope Developers list" <zope-dev@zope.org> Sent: Thursday, February 21, 2002 10:57 AM Subject: Re: [Zope-dev] Re: bug in VirtualHostMonster in 2.5.0
On Thu, 2002-02-21 at 11:01, Adam Manock wrote:
I can confirm that throwing this at a Zope 2.5.0 root VirtualHostMonster:
http://localhost:8080/VirtualHostBase/http/example.org:80/VirtualHostRoot/_v h_zopeRoot/
provides a page with this link:
http://example.org//zopeRoot/p_/ZopeButton
and on 2.4.4 you get:
http://example.org/zopeRoot/p_/ZopeButton
This would suggest that VHM is indeed broken in 2.5.0, or at least the combined result of VHM and HTTPRequest.py URL munging is broken.
The patch I provided doesn't touch VHM, so I'm thinking more on the lines of your second conclusion.
Now the funny thing is, the patch also applies to Zope 2.4.x (2.4.3, that I checked). Seems HTTPRequest.setVirtualRoot() was broken all along, it's just thatZope 2.4.x VHM doesn't call it when parsing a VirtualHostRoot directive, limiting itself to manipulate the path stack in the REQUEST (see VirtualHostMonster.__call__() method).
Cheers, Leo
-- Ideas don't stay in some minds very long because they don't like solitary confinement.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
I tried out version 1.6 of: http://cvs.zope.org/Zope/lib/python/Products/SiteAccess/VirtualHostMonster.p... dated 2002/02/15 21:20:33 It works!! I got the correct: http://example.org/zopeRoot/p_/ZopeButton link on the page when I pointed my browser at: http://localhost:8080/VirtualHostBase/http/example.org:80/VirtualHostRoot/_v... I found no new versions of : http://cvs.zope.org/Zope/lib/python/ZPublisher/HTTPRequest.py in CVS added since 2.5.0 release. So it's fixed, but..... Which fix??? Leo's, or the one in CVS?? The VirtualHostMonster.py mods are obviously less likely to break other stuff, even if it may be "better" to fix the bug in HTTPRequest.py "By fixing the non-string handling to be consistent with the string handling, the VHM bug disapears" Thanks Leo Fri Feb 15 21:19:42 2002 UTC (6 days, 3 hours ago) by evan "Fix bugs with _vh_ and empty paths" Thanks Evan Gotta love the OSS community.... What? You mean not only is the bug fixed, but now I have to choose which of the different ways of fixing it I want? Adam
The handling of string and non-string arguments in HTTPRequest.setVirtualRoot() is indeed inconsistent, but it's obviously possible to fix the double-root-slash problem by changing the way VirtualHostMonster calls that method. Actually, the difference in VirtualHostMonster.__call__ between both versions is exactly that the new version does there what my patch does inside HTTPRequest.setVirtualRoot, which is to filter all empty elements out of the manipulated path before actually setting the virtual root. Both fixes can be applied at the same time. I'll even go out on a limb and say that I think my fix is a little more correct in which it makes the behaviour of setVirtualRoot consistent but the VHM fix is arguably safer, since it potentially causes less "interference" :-). Of course, my patch could make setVirtualRoot consistently wrong :-) but this is something only ZC folks could tell. Cheers, Leo On Thu, 2002-02-21 at 21:38, Adam Manock wrote:
I tried out version 1.6 of: http://cvs.zope.org/Zope/lib/python/Products/SiteAccess/VirtualHostMonster.p... dated 2002/02/15 21:20:33
It works!!
I got the correct: http://example.org/zopeRoot/p_/ZopeButton link on the page when I pointed my browser at: http://localhost:8080/VirtualHostBase/http/example.org:80/VirtualHostRoot/_v...
I found no new versions of : http://cvs.zope.org/Zope/lib/python/ZPublisher/HTTPRequest.py in CVS added since 2.5.0 release.
So it's fixed, but..... Which fix??? Leo's, or the one in CVS?? The VirtualHostMonster.py mods are obviously less likely to break other stuff, even if it may be "better" to fix the bug in HTTPRequest.py
"By fixing the non-string handling to be consistent with the string handling, the VHM bug disapears" Thanks Leo
Fri Feb 15 21:19:42 2002 UTC (6 days, 3 hours ago) by evan "Fix bugs with _vh_ and empty paths" Thanks Evan
Gotta love the OSS community....
What? You mean not only is the bug fixed, but now I have to choose which of the different ways of fixing it I want?
-- Ideas don't stay in some minds very long because they don't like solitary confinement.
participants (4)
-
Adam Manock -
Chris Withers -
Leonardo Rochael Almeida -
Michael L. Dean