&_.name;
&_.contents:none;

Release notes for Roxen 2.2

User level changes

'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
  • 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-inde