'content boxes' added in the config interface (the first page)
If you want to write your own boxes, see the files in
config_interface/boxes.
Added memory to the toplevel tabs in the configuration interface
When you click on a toplevel tab, you return to the page you last visited below that tab, just like in Roxen 1.3, click again to go to toplevel
The configuration interface now works with more browsers.
Some HTML changes were made so that the configuration interface works
better with the Mozilla and Opera browsers.
The ports tab has been merged into the site tabs.
The old (overview) ports tab is available under the globals tab.
Two new themes added; Square orange, and the new default theme
(old default now known as '2.0 and 2.1 theme').
Roxen WebServer now comes bundled with MySQL, and the
database is used for various things inside Roxen Webserver. Also, there is a
new database administration interface available
inside the configuration interface.
The user-database and authentication module API has been redesigned.
You can now have multiple user database and multiple authentication
modules, and the modules only has to implement one of the two services.
Two example authentication modules are included, one that uses
cookies and one that use the normal 'Basic' authentication system.
Two user database modules are currently available (unless you
count the htaccess module), the system user database and the ldap user
database. The system database uses getpwent on to access the normal system
users.
The module level security patterns and the htaccess files now include
many new options, and are compiled for quicker execution.
The htaccess module now also acts as a user-database, so you can use
<if user=username> in your RXML pages (and, if you feel
like it, your module level security patterns) with users and groups
authenticated from the htaccess module, even if the page does not
otherwise use the htaccess permission system.
- Gopher and fhttp removed
- The gopher and fhttp protocols has been removed. The former
because it has not worked for three years, and nobody noticed, and the
latter because it did only offer benchmark performance, it was not all
that useful for real life applications. However:
- The HTTP protocol module has some C-optimizations
- Parts of the normal HTTP protocol module has been rewritten in C,
and some other optimizations has been done. Overall, the HTTP parsing
is now about twice as fast as it was in Roxen 2.1.
- The HTTP protocol auto-encodes unicode
- Unicode characters in text data is now recoded to useable output charset.
This includes recoding of unsupported characters to entities (as an
example, when a $(B6b(B character is encountered and the output charset
is iso-8859-1, or å and the output charset is iso-8859-9)
- The URLs for the images in the image cache are now encrypted
before they are sent to the client.
- The user ID is now saved for the images, no authenticated user
can get an image rendered for another authenticated user.
- span-width and span-height. Like max-width and max-height, but if the image is smaller, it's padded to the specified size.
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point
- crop=guides-cross guides-index=x,y: Crop
around the point