[Zope] Re: [Zope-dev] Introspection, managing External Methods?

Robin Becker robin@jessikat.demon.co.uk
Sun, 18 Jul 1999 18:50:44 +0100


In article <199907181357.XAA01659@mbuna.arbhome.com.au>, Anthony Baxter
<anthony@interlink.com.au> writes
>
>This has come up on a number of occasions - the problem is that an
>external method can subvert all the protections and access control
>that Zope provides.
>
>Having said that, there's nothing stopping you (or someone else) 
>writing an external method that allows you to edit external methods. :)
>
>Anthony
>
Yes I know that external methods can do anything. But since the manager
can destroy the site what's wrong with allowing editing only for the
manager. I realise that malicious managers could wipe the hard disk if
the manager user could, but then so can the manager sitting at the
console.

The FTP client could in principle help, but is restricted/failing. I
cannot seem to get two ftp servers going. One based on FTPServer and the
other based on ftp_server.ftp_server. The trivial server that works as a
separate process is at the bottom. I can get both servers to start, but
the fs based one doesn't respond like the script below.

One thing I would like to see in the properties for each object would be
the owner. 

I suppose I can just write a manager only dtml widget for copying the
module text onto a page with a change button.
>>>> Robin Becker wrote
>> Are there any plans to upgrade the External Methods product to allow
>> remote management ie creation/deletion/modification of the file texts? I
>> ask because a major advantage of Zope is the ability to manage at a
>> distance and this is not possible for External Methods. I can see easy
>> fudges using a hack of fsimport, but something based on the existing
>> external methods would be better.
>> 
>> More generally how can one upgrade a Zope product remotely; assuming
>> this were possible it would be nice to be able to remotely shut down
>> Zope and get it to restart.
>> -- 
>> Robin Becker
>> 
...

import os
import sys

import ftp_server
import resolver
import logger
import asyncore

FTP_ROOT= '/tmp/newhome'
FTP_PORT= 21
rs = resolver.caching_resolver('')
lg = logger.file_logger (sys.stdout)
ftp = ftp_server.ftp_server (
        ftp_server.anon_authorizer (
                FTP_ROOT
                ),
        port=FTP_PORT,
        resolver=rs,
        logger_object=lg
        )

asyncore.loop()

-- 
Robin Becker