Commit eab98097 authored by Amos Latteier's avatar Amos Latteier

New changes and readme for second alpha of ZServer.

parent 9c84c3a7
...@@ -6,13 +6,42 @@ ZServer Changes ...@@ -6,13 +6,42 @@ ZServer Changes
Releases Releases
Zserver 1.0a1 ZServer 1.0a2
New Features New Features
Inital release. Includes new threaded architecture--currently Preliminary support for PCGI has been added. It is still not
complete and bug free. The main problem is that all newlines
seem to get converted to carriage return newline pairs...
Simple controls to limit FTP connections have been added to
help prevent denial of service attacks.
FTP now supports login with a username and directory, i.e.
'joe@Projects/JoesProject' which authenticates the login in
the specified directory. You can still use a normal username
and defer authentication until you cd to a directory where you
are defined.
Bug Fixed
Data was being dropped from POST requests because of a bug in
the sized input collection of asynchat.
HTTP Response headers were not being correctly set.
URL prefixes for the the Zope HTTP handler could not be set to
''. Now the empty prefix is the default, to simplify URLs.
ZServer 1.0a1
New Features
Initial release. Includes new threaded architecture--currently
limited to a thread pool of 1. Includes preliminary FTP limited to a thread pool of 1. Includes preliminary FTP
support. Includes HTTP support. support. Includes HTTP support.
Bugs Fixed Bugs Fixed
None
ZServer Release 1.0a1 ZServer Release 1.0a2
--------------------- ---------------------
Welcome to the first Zope ZServer alpha release. This release provides Welcome to the second Zope ZServer alpha release. This release
a first look at Zope/Medusa integration, and introduces FTP support in provides a first look at Zope/Medusa integration, and introduces FTP
Zope. support in Zope.
What is ZServer? What is ZServer?
ZServer is an integration of the Zope application server and the ZServer is an integration of the Zope application server and the
Medusa information server. See the ZServer architecture document for Medusa information server. See the ZServer architecture document for
more information.:: more information::
http://www.zope.org/Documentation/Reference/ZServer http://www.zope.org/Documentation/Reference/ZServer
ZServer gives you HTTP and FTP access. In later releases it will ZServer gives you HTTP, FTP, and PCGI access. In later releases it
probably offer more protocols such as PCGI, WebDAV, etc. will probably offer more protocols such as FastCGI, WebDAV, etc.
What is Medusa? What is Medusa?
...@@ -29,18 +29,46 @@ What is Medusa? ...@@ -29,18 +29,46 @@ What is Medusa?
ZServer FTP support ZServer FTP support
FTP access to Zope allows you to FTP to the Zope object hierarchy in What you can do with FTP
order to perform managerial tasks. You can:
FTP access to Zope allows you to FTP to the Zope object hierarchy
in order to perform managerial tasks. You can:
* Navigate the object hierarchy with 'cd' * Navigate the object hierarchy with 'cd'
* Replace the content of Documents, Images, and Files * Replace the content of Documents, Images, and Files
* Create Documents, Images, Files, Folders * Create Documents, Images, Files, Folders
* Delete any sort of object * Delete any sort of object
So basically you can do more than is possible with PUT. Also, unlike So basically you can do more than is possible with PUT. Also,
PUT, FTP gives you access to Document content. So when you download unlike PUT, FTP gives you access to Document content. So when you
a Document you are getting its content, not what it looks like when download a Document you are getting its content, not what it looks
it rendered. like when it rendered.
Using FTP
To FTP into Zope, ZServer must be configured to serve FTP. By
default ZServer serves FTP on port 8021. So to connect to Zope you
would issue a command like so::
ftp localhost 8021
When logging in to FTP, you have some choices. You can connect
anonymously by using a username of 'anonymous' and any password.
Or you can login as a Zope user. Since Zope users are defined at
different locations in the object hierarchy, authentication can be
problematic. There are two solutions:
* login and then cd to the directory where you are defined.
* login with a special name that indicates where you are
defined.
The format of the special name is <username>@<path>. For example::
joe@Marketing/Projects
FTP permissions FTP permissions
...@@ -50,6 +78,13 @@ ZServer FTP support ...@@ -50,6 +78,13 @@ ZServer FTP support
download objects. Uploading and deleting and creating objects are download objects. Uploading and deleting and creating objects are
controlled by existing permissions. controlled by existing permissions.
FTP limits
You can set limits for the number of simultaneous FTP connections.
You can separately configure the number of anonymous and
authenticated connections. Right now this setting is set in
'ZServerFTP.py'. In the future, it may be more easy to configure.
Properties and FTP: The next step Properties and FTP: The next step
The next phase of FTP support will allow you to edit properties of The next phase of FTP support will allow you to edit properties of
...@@ -61,6 +96,42 @@ ZServer FTP support ...@@ -61,6 +96,42 @@ ZServer FTP support
We do not currently have a target date for FTP property support. We do not currently have a target date for FTP property support.
It will probably need to wait until Zope has property sheets. It will probably need to wait until Zope has property sheets.
How does FTP work?
The ZServer's FTP channel object translates FTP requests into
ZPublisher requests. The FTP channel then analyses the response
and formulates an appropriate FTP response. The FTP channel
stores some state such as the current working directory and the
username and password.
On the Zope side of things, the 'lib/python/OFS/FTPInterface.py'
module defines the Zope FTP interface, for listing sub-items,
stating, and getting content. The interface is implemented in
'SimpleItem', and in other Zope classes. Programmers will not
need to implement the entire interface if they inherit from
'SimpleItem'. All the other FTP functions are handled by
existing methods like 'manage_delObjects', and 'PUT', etc.
ZServer PCGI support
ZServer will service PCGI requests with both inet and unix domain
sockets. This means you can use ZServer instead of
'pcgi_publisher.py' as your long running PCGI server process. In the
future, PCGI may be able to activate ZServer.
Using PCGI instead of HTTP allows you to forward requests from
another web server to ZServer. The CGI environment and HTTP headers
are controlled by the web server, so you don't need to worry about
managing the ZServer environment. However, this configuration will
impose a larger overhead than simply using the web server as an HTTP
proxy for ZServer.
PCGI support in ZServer is still incomplete.
To use PCGI, configure your PCGI info files to communicate with
ZServer by setting the PCGI_PORT, PCGI_SOCKET_FILE, and PCGI_NAME.
The other PCGI settings are currently ignored by ZServer.
Differences between ZopeHTTPServer and ZServer Differences between ZopeHTTPServer and ZServer
Both ZopeHTTPServer and ZServer are Python HTTP servers. Both ZopeHTTPServer and ZServer are Python HTTP servers.
...@@ -78,47 +149,29 @@ Differences between ZopeHTTPServer and ZServer ...@@ -78,47 +149,29 @@ Differences between ZopeHTTPServer and ZServer
limited to one thread, since the object database cannot yet support limited to one thread, since the object database cannot yet support
concurrent access. This should change within the next few months. concurrent access. This should change within the next few months.
How does FTP work?
The ZServer's FTP channel object translates FTP requests into
ZPublisher requests. The FTP channel then analyses the response and
formulates an appropriate FTP response. The FTP channel stores some
state such as the current working directory and the username and
password.
On the Zope side of things, the 'FTPSupport.py' module provides a
few mix-in classes for Document, Folder, and File (which Image
inherits from). These mix in classes provide directory listing and
stat-like methods. All the other FTP functions are handled by
existing methods like 'manage_delObjects', and 'PUT', etc.
Who should use ZServer? Who should use ZServer?
This release is *alpha* quality. It should be used by Zope hackers. This release is *alpha* quality. It should be used by Zope hackers.
If you are not inquisitive and self-reliant, this release will If you are not inquisitive and self-reliant, this release may
frustrate you. frustrate you.
Installation Installation
To install ZServer you need to do two things: edit the start script To run ZServer you need to edit the start script to set your
and update some Zope files to introduce FTP support. configuration. In the future will will probably provide a customized
start script as part of the Zope installtion process.
To edit the start up script, open 'start.py' in your favorite editor To edit the start up script, open 'ZServer/start.py' in your
and change the configuration variables. If you understand Medusa, favorite editor and change the configuration variables. If you
you can also change the rest of the script. understand Medusa, you can also change the rest of the script.
To enable FTP support in Zope you need to update some files in Finally make sure the shebang line is right on the 'start.py'
'lib/python/OFS'. You should probably first back up your 'OFS' script. You can use your own copy of Python, or the copy that came
directory, or at least make copies of the files that will be with Zope (if you are using a binary distribution). If you are using
replaced ('Document.py', 'Image.py', 'Folder.py'). Then copy the win32, you might want to create a bat file to run the 'start.py'
contents of ZServer's 'OFS' directory to your Zope 'lib/python/OFS' program with Zope's Python.
directory.
Finally make sure the shebang line is right on the start script. You Now you're ready to go.
can use your own copy of Python, or the copy that came with Zope (if
you are using a binary distribution).
Now your ready to go.
Usage Usage
...@@ -128,17 +181,20 @@ Usage ...@@ -128,17 +181,20 @@ Usage
To stop the server type 'control-c'. To stop the server type 'control-c'.
You should see some logging information come up on the screen. You should see some Medusa information come up on the screen.
A log file will be written, named 'ZServer.log' by default.
Once you start ZServer is will publish Zope (or any Python module) Once you start ZServer is will publish Zope (or any Python module)
on HTTP and/or FTP. To access Zope via HTTP point your browser at on HTTP and/or FTP. To access Zope via HTTP point your browser at
the server like so:: the server like so::
http://www.example.com:9673/Main http://www.example.com:9673/
This assumes that you have chosen to put HTTP on port 9673 and that This assumes that you have chosen to put HTTP on port 9673 and that
you are publishing a module named 'Main'. Note: to publish Zope you are publishing a module named whose URL prefix is set to ''.
normally you publish the 'lib/python/Main.py' module. Note: to publish Zope normally you publish the 'lib/python/Main.py'
module.
To access Zope via FTP you need to FTP to it at the port you set FTP To access Zope via FTP you need to FTP to it at the port you set FTP
to run on. For example:: to run on. For example::
...@@ -155,14 +211,15 @@ Usage ...@@ -155,14 +211,15 @@ Usage
supports basic FTP commands. Note: When you log in your working supports basic FTP commands. Note: When you log in your working
directory is set to '/'. If you do not have FTP permissions in this directory is set to '/'. If you do not have FTP permissions in this
directory, you will need to 'cd' to a directory where you have directory, you will need to 'cd' to a directory where you have
permissions before you can do anything. permissions before you can do anything. See above for more
information about logging into FTP.
Support Support
Questions and comments should go to 'support@digicool.com'. Questions and comments should go to 'support@digicool.com'.
You can report bugs and check on the status of bugs using the Zope You can report bugs and check on the status of bugs using the Zope
bug collector.:: bug collector::
http://www.zope.org/Collector/ http://www.zope.org/Collector/
...@@ -174,8 +231,8 @@ License ...@@ -174,8 +231,8 @@ License
Outstanding issues Outstanding issues
PCGI support is not done yet. The FTP interface for Zope objects may PCGI support is buggy. The FTP interface for Zope objects may be
be changed, i.e. 'manage_FTPlist' and 'manage_FTPstat' maybe changed changed, i.e. 'manage_FTPlist' and 'manage_FTPstat' maybe changed
and/or renamed. When FTP support for properties is added, this may and/or renamed. When FTP support for properties is added, this may
change a lot. WebDAV support will also probably cause a little change a lot. WebDAV support will also probably cause a little
reorganization. reorganization.
...@@ -184,8 +241,9 @@ Outstanding issues ...@@ -184,8 +241,9 @@ Outstanding issues
originals. It would be good idea to try and keep deviations to a originals. It would be good idea to try and keep deviations to a
minimum. For this reason we have been feeding bug reports and change minimum. For this reason we have been feeding bug reports and change
requests back to Sam Rushing for inclusion in the official Medusa requests back to Sam Rushing for inclusion in the official Medusa
souces. It is possible, however, that Medusa and ZServer will sources. It is possible, however, that Medusa and ZServer will
diverge in some small respects despite our best efforts to keep them diverge in some small respects despite our best efforts to keep them
unified. One area in particular where ZServer currently departs from unified. One area in particular where ZServer currently departs from
Medusa is in the use of future producers. Change is likely in Medusa is in the use of future producers. Change is likely in
ZServer's use of future producers. ZServer's use of future producers.
...@@ -6,13 +6,42 @@ ZServer Changes ...@@ -6,13 +6,42 @@ ZServer Changes
Releases Releases
Zserver 1.0a1 ZServer 1.0a2
New Features New Features
Inital release. Includes new threaded architecture--currently Preliminary support for PCGI has been added. It is still not
complete and bug free. The main problem is that all newlines
seem to get converted to carriage return newline pairs...
Simple controls to limit FTP connections have been added to
help prevent denial of service attacks.
FTP now supports login with a username and directory, i.e.
'joe@Projects/JoesProject' which authenticates the login in
the specified directory. You can still use a normal username
and defer authentication until you cd to a directory where you
are defined.
Bug Fixed
Data was being dropped from POST requests because of a bug in
the sized input collection of asynchat.
HTTP Response headers were not being correctly set.
URL prefixes for the the Zope HTTP handler could not be set to
''. Now the empty prefix is the default, to simplify URLs.
ZServer 1.0a1
New Features
Initial release. Includes new threaded architecture--currently
limited to a thread pool of 1. Includes preliminary FTP limited to a thread pool of 1. Includes preliminary FTP
support. Includes HTTP support. support. Includes HTTP support.
Bugs Fixed Bugs Fixed
None
ZServer Release 1.0a1 ZServer Release 1.0a2
--------------------- ---------------------
Welcome to the first Zope ZServer alpha release. This release provides Welcome to the second Zope ZServer alpha release. This release
a first look at Zope/Medusa integration, and introduces FTP support in provides a first look at Zope/Medusa integration, and introduces FTP
Zope. support in Zope.
What is ZServer? What is ZServer?
ZServer is an integration of the Zope application server and the ZServer is an integration of the Zope application server and the
Medusa information server. See the ZServer architecture document for Medusa information server. See the ZServer architecture document for
more information.:: more information::
http://www.zope.org/Documentation/Reference/ZServer http://www.zope.org/Documentation/Reference/ZServer
ZServer gives you HTTP and FTP access. In later releases it will ZServer gives you HTTP, FTP, and PCGI access. In later releases it
probably offer more protocols such as PCGI, WebDAV, etc. will probably offer more protocols such as FastCGI, WebDAV, etc.
What is Medusa? What is Medusa?
...@@ -29,18 +29,46 @@ What is Medusa? ...@@ -29,18 +29,46 @@ What is Medusa?
ZServer FTP support ZServer FTP support
FTP access to Zope allows you to FTP to the Zope object hierarchy in What you can do with FTP
order to perform managerial tasks. You can:
FTP access to Zope allows you to FTP to the Zope object hierarchy
in order to perform managerial tasks. You can:
* Navigate the object hierarchy with 'cd' * Navigate the object hierarchy with 'cd'
* Replace the content of Documents, Images, and Files * Replace the content of Documents, Images, and Files
* Create Documents, Images, Files, Folders * Create Documents, Images, Files, Folders
* Delete any sort of object * Delete any sort of object
So basically you can do more than is possible with PUT. Also, unlike So basically you can do more than is possible with PUT. Also,
PUT, FTP gives you access to Document content. So when you download unlike PUT, FTP gives you access to Document content. So when you
a Document you are getting its content, not what it looks like when download a Document you are getting its content, not what it looks
it rendered. like when it rendered.
Using FTP
To FTP into Zope, ZServer must be configured to serve FTP. By
default ZServer serves FTP on port 8021. So to connect to Zope you
would issue a command like so::
ftp localhost 8021
When logging in to FTP, you have some choices. You can connect
anonymously by using a username of 'anonymous' and any password.
Or you can login as a Zope user. Since Zope users are defined at
different locations in the object hierarchy, authentication can be
problematic. There are two solutions:
* login and then cd to the directory where you are defined.
* login with a special name that indicates where you are
defined.
The format of the special name is <username>@<path>. For example::
joe@Marketing/Projects
FTP permissions FTP permissions
...@@ -50,6 +78,13 @@ ZServer FTP support ...@@ -50,6 +78,13 @@ ZServer FTP support
download objects. Uploading and deleting and creating objects are download objects. Uploading and deleting and creating objects are
controlled by existing permissions. controlled by existing permissions.
FTP limits
You can set limits for the number of simultaneous FTP connections.
You can separately configure the number of anonymous and
authenticated connections. Right now this setting is set in
'ZServerFTP.py'. In the future, it may be more easy to configure.
Properties and FTP: The next step Properties and FTP: The next step
The next phase of FTP support will allow you to edit properties of The next phase of FTP support will allow you to edit properties of
...@@ -61,6 +96,42 @@ ZServer FTP support ...@@ -61,6 +96,42 @@ ZServer FTP support
We do not currently have a target date for FTP property support. We do not currently have a target date for FTP property support.
It will probably need to wait until Zope has property sheets. It will probably need to wait until Zope has property sheets.
How does FTP work?
The ZServer's FTP channel object translates FTP requests into
ZPublisher requests. The FTP channel then analyses the response
and formulates an appropriate FTP response. The FTP channel
stores some state such as the current working directory and the
username and password.
On the Zope side of things, the 'lib/python/OFS/FTPInterface.py'
module defines the Zope FTP interface, for listing sub-items,
stating, and getting content. The interface is implemented in
'SimpleItem', and in other Zope classes. Programmers will not
need to implement the entire interface if they inherit from
'SimpleItem'. All the other FTP functions are handled by
existing methods like 'manage_delObjects', and 'PUT', etc.
ZServer PCGI support
ZServer will service PCGI requests with both inet and unix domain
sockets. This means you can use ZServer instead of
'pcgi_publisher.py' as your long running PCGI server process. In the
future, PCGI may be able to activate ZServer.
Using PCGI instead of HTTP allows you to forward requests from
another web server to ZServer. The CGI environment and HTTP headers
are controlled by the web server, so you don't need to worry about
managing the ZServer environment. However, this configuration will
impose a larger overhead than simply using the web server as an HTTP
proxy for ZServer.
PCGI support in ZServer is still incomplete.
To use PCGI, configure your PCGI info files to communicate with
ZServer by setting the PCGI_PORT, PCGI_SOCKET_FILE, and PCGI_NAME.
The other PCGI settings are currently ignored by ZServer.
Differences between ZopeHTTPServer and ZServer Differences between ZopeHTTPServer and ZServer
Both ZopeHTTPServer and ZServer are Python HTTP servers. Both ZopeHTTPServer and ZServer are Python HTTP servers.
...@@ -78,47 +149,29 @@ Differences between ZopeHTTPServer and ZServer ...@@ -78,47 +149,29 @@ Differences between ZopeHTTPServer and ZServer
limited to one thread, since the object database cannot yet support limited to one thread, since the object database cannot yet support
concurrent access. This should change within the next few months. concurrent access. This should change within the next few months.
How does FTP work?
The ZServer's FTP channel object translates FTP requests into
ZPublisher requests. The FTP channel then analyses the response and
formulates an appropriate FTP response. The FTP channel stores some
state such as the current working directory and the username and
password.
On the Zope side of things, the 'FTPSupport.py' module provides a
few mix-in classes for Document, Folder, and File (which Image
inherits from). These mix in classes provide directory listing and
stat-like methods. All the other FTP functions are handled by
existing methods like 'manage_delObjects', and 'PUT', etc.
Who should use ZServer? Who should use ZServer?
This release is *alpha* quality. It should be used by Zope hackers. This release is *alpha* quality. It should be used by Zope hackers.
If you are not inquisitive and self-reliant, this release will If you are not inquisitive and self-reliant, this release may
frustrate you. frustrate you.
Installation Installation
To install ZServer you need to do two things: edit the start script To run ZServer you need to edit the start script to set your
and update some Zope files to introduce FTP support. configuration. In the future will will probably provide a customized
start script as part of the Zope installtion process.
To edit the start up script, open 'start.py' in your favorite editor To edit the start up script, open 'ZServer/start.py' in your
and change the configuration variables. If you understand Medusa, favorite editor and change the configuration variables. If you
you can also change the rest of the script. understand Medusa, you can also change the rest of the script.
To enable FTP support in Zope you need to update some files in Finally make sure the shebang line is right on the 'start.py'
'lib/python/OFS'. You should probably first back up your 'OFS' script. You can use your own copy of Python, or the copy that came
directory, or at least make copies of the files that will be with Zope (if you are using a binary distribution). If you are using
replaced ('Document.py', 'Image.py', 'Folder.py'). Then copy the win32, you might want to create a bat file to run the 'start.py'
contents of ZServer's 'OFS' directory to your Zope 'lib/python/OFS' program with Zope's Python.
directory.
Finally make sure the shebang line is right on the start script. You Now you're ready to go.
can use your own copy of Python, or the copy that came with Zope (if
you are using a binary distribution).
Now your ready to go.
Usage Usage
...@@ -128,17 +181,20 @@ Usage ...@@ -128,17 +181,20 @@ Usage
To stop the server type 'control-c'. To stop the server type 'control-c'.
You should see some logging information come up on the screen. You should see some Medusa information come up on the screen.
A log file will be written, named 'ZServer.log' by default.
Once you start ZServer is will publish Zope (or any Python module) Once you start ZServer is will publish Zope (or any Python module)
on HTTP and/or FTP. To access Zope via HTTP point your browser at on HTTP and/or FTP. To access Zope via HTTP point your browser at
the server like so:: the server like so::
http://www.example.com:9673/Main http://www.example.com:9673/
This assumes that you have chosen to put HTTP on port 9673 and that This assumes that you have chosen to put HTTP on port 9673 and that
you are publishing a module named 'Main'. Note: to publish Zope you are publishing a module named whose URL prefix is set to ''.
normally you publish the 'lib/python/Main.py' module. Note: to publish Zope normally you publish the 'lib/python/Main.py'
module.
To access Zope via FTP you need to FTP to it at the port you set FTP To access Zope via FTP you need to FTP to it at the port you set FTP
to run on. For example:: to run on. For example::
...@@ -155,14 +211,15 @@ Usage ...@@ -155,14 +211,15 @@ Usage
supports basic FTP commands. Note: When you log in your working supports basic FTP commands. Note: When you log in your working
directory is set to '/'. If you do not have FTP permissions in this directory is set to '/'. If you do not have FTP permissions in this
directory, you will need to 'cd' to a directory where you have directory, you will need to 'cd' to a directory where you have
permissions before you can do anything. permissions before you can do anything. See above for more
information about logging into FTP.
Support Support
Questions and comments should go to 'support@digicool.com'. Questions and comments should go to 'support@digicool.com'.
You can report bugs and check on the status of bugs using the Zope You can report bugs and check on the status of bugs using the Zope
bug collector.:: bug collector::
http://www.zope.org/Collector/ http://www.zope.org/Collector/
...@@ -174,8 +231,8 @@ License ...@@ -174,8 +231,8 @@ License
Outstanding issues Outstanding issues
PCGI support is not done yet. The FTP interface for Zope objects may PCGI support is buggy. The FTP interface for Zope objects may be
be changed, i.e. 'manage_FTPlist' and 'manage_FTPstat' maybe changed changed, i.e. 'manage_FTPlist' and 'manage_FTPstat' maybe changed
and/or renamed. When FTP support for properties is added, this may and/or renamed. When FTP support for properties is added, this may
change a lot. WebDAV support will also probably cause a little change a lot. WebDAV support will also probably cause a little
reorganization. reorganization.
...@@ -184,8 +241,9 @@ Outstanding issues ...@@ -184,8 +241,9 @@ Outstanding issues
originals. It would be good idea to try and keep deviations to a originals. It would be good idea to try and keep deviations to a
minimum. For this reason we have been feeding bug reports and change minimum. For this reason we have been feeding bug reports and change
requests back to Sam Rushing for inclusion in the official Medusa requests back to Sam Rushing for inclusion in the official Medusa
souces. It is possible, however, that Medusa and ZServer will sources. It is possible, however, that Medusa and ZServer will
diverge in some small respects despite our best efforts to keep them diverge in some small respects despite our best efforts to keep them
unified. One area in particular where ZServer currently departs from unified. One area in particular where ZServer currently departs from
Medusa is in the use of future producers. Change is likely in Medusa is in the use of future producers. Change is likely in
ZServer's use of future producers. ZServer's use of future producers.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment