[Zope-dev] Soft links again

Shane Hathaway shane@digicool.com
Wed, 27 Sep 2000 09:06:18 -0400


Okay, I've posted a proof of concept.  Please keep in mind that this
could be dangerous in terms of security, although I've done a couple of
things to make it safer.  Also, there's currently a buglet in
acquisition that makes it so that you can only perform the actions on
the symlink which "anonymous" is allowed to do.

http://www.zope.org/Members/hathawsh/Symlink/index_html

Shane

Andre Schubert wrote:
> 
> Hi,
> 
> i have read the two messages about Soft Link, and i tried to work with it,
> because it it very important for my Product.
> The problem is that the Soft Link class won't work and i don't know why.
> I use zope 2.2.2 and python 1.5.2.
> root:
>     -myproductfolder
>         -SoftLink to testdtmldoc
>     -testfolder
>         -testdtmldoc
> 
> In myproduct i have the following function, the class SoftLink is the same
> as of Shane Hathaway.
> I wan't to add a SoftLink in myproductfolder which links to testdtmldoc.
> When i call the function manage_addSoftLink nothing happens??
> 
> def manage_addSoftLink(self, REQUEST=None):
>         .....
>         obj=SoftLink('Test/link')
>         self._setObject('TestSoftLink',obj)
> 
> Whats going wrong, or did i missunderstand something?
> Who can help?
> 
> as
> 
> Shane Hathaway schrieb:
> 
> > [cut]
> > Try this.  I failed to account for the fact that sometimes the object is
> > not in context and therefore the linked object will not be found.
> >
> >    def __of__(self, parent):
> >       try:
> >         ob = self.restrictedTraverse(self.path)
> >       except:
> >         # We're not in context or the object was not found.  Default to
> > self.
> >         return self
> >       else:
> >         return getattr(ob, 'aq_base', ob).__of__(parent)
> >
> > Keep in mind, though, that there are all kinds of security
> > implications.  Someone will have to think hard about security before
> > this is viable.
> >
> > OTOH perhaps it's really simple.  Try this as the last line instead:
> >
> >         return getattr(ob, 'aq_inner', ob).__of__(parent)
> >
> > This way, the security context might be retained.  If it doesn't work,
> > try changing the last line to:
> >
> >         return ob.__of__(parent)
> >
> > Shane
> >
> > _______________________________________________
> > 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 )
> 
> _______________________________________________
> 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 )