
NEW -- What's new in this major release

This document details the changes between the last and the current version.

Although on the outside, v3.00 looks almost exactly like v2.23, this release is quite different under the hood. The code was split into generic and DiCoP specific parts and all the generic parts were moved to the package Dicop-Base. This allows us to reuse the generic parts for other projects.
Here are some of the under-the-hood changes that make life for us (the developers) easier, but shouldn't affect you directly:
The requests (the messages exchanged between client or browser and the server) are no longer hardcoded into the source.
Instead a text file def/request.def defines now the allowed requests with their parameters and options.
There should be no need to edit this file,
though.
Likewise,
the internal server objects (like jobs,
testcases and so on) are now defined in def/objects.def.
There should be no need to edit this file,
either.
Edit and add forms are now generated via a general edit_object.tpl respectively add_object.tpl template,
which automatically includes the relevant edit fields from small include files called editfield_FOO.inc.
This makes maintaining and/or changing them much easier and prevents mistakes from Copy&Paste.
Here is a list of some of the changes that might affect you:

We started to move over the testsuite to Test::Simple - this means this module is now required to run the testsuite. However, since Dicop::Server now needs at least Perl v5.8.3 to run, you will likely already have the required Test::Simple module.
If you plan to use the new SSL feature of the server, or client, then these modules must be installed.
The client needs quite a few parts of Dicop::Base. However, we seperated the things so that you can simple drop a few of the Dicop::Base .pm files into the client dir, and have it work without making it nec. to install Mail::Sendmail, Net::Server etc at the node.
Here is a short list of files the client needs:
lib/basics
lib/Dicop.pm
lib/Dicop/Base.pm
lib/Dicop/Cache.pm
lib/Dicop/Client.pm
lib/Dicop/Config.pm
lib/Dicop/Event.pm
lib/Dicop/Hash.pm
lib/Dicop/Item.pm
lib/Dicop/Request.pm
lib/Dicop/Client/LWP.pm
lib/Dicop/Client/wget.pm
lib/Dicop/Request/Pattern.pm
lib/Linux/Cpuinfo.pm
The other solution is to install Dicop::Base and all it's prerequisites at every node.
To make it easier to deploy clients we publish a Dicop-Client-3.00.tar.gz package at our website, which contains everything the client needs, except libwww and Linux::Cpuinfo, which can be found on http://search.cpan.org.

The web-frontend (e.g the GUI you see when you connect to the server with a browser) has got many small fixes and enhancements. This includes:

Here is a listing of important bugs that have been fixed, testcases were added to prevent these from happening again:
minlen of a Jobtype is now possible..tgt file for the testcase.Formerly this wasn't actually necessary, but now cases can have empty URL fields.
This solves the problem that fresh clients that need to download a lot of workers (f.i. just to work on the testcases) caused a lot of connects to the server to ask for the download locations of the files. And with lots of connects in a short time frame the client could hit the rate-limit even before it did any real work, since requests for filenames count towards that limit.
This also reduces the number of connects to the server, and hence it's load.
'a'..'z', '0'..'9' and it will work as expected. Formerly only one sequence was allowed, contradicting what the help said.https://dicop-server:8888/ will automatically encrypt the connection with SSL if both the necessary modules are installed at the client, and the server/proxy supports SSl (config has proto = "SSL" at the server/proxy side, see below).proto = "ssl" setting in the config file. Together with updated clients this allows all communication between server and client to be encrypted.
However, at the moment the server can only be either ssl or tcp, as indicated by the proto = "foo" setting in the config, e.g. you cannot mix SSL and non-SSL clients (this is a limitation of Net::Server, and currently there is no way to overcome this without rewriting a lot of third-party code from scratch).
This means that if you switch a server to SSL, all clients must also connecting to that server must also support SSL.
To overcome this limitation, use your server with proto = "tcp" and then add a proxy to it. Run then a Dicop::Proxy at the same machine (or another machine if desired), and switch that proxy to SSL and point it to your main server as it's upstream server.
All clients that support SSL must then connect via that proxy, while all others must use the server directly. Here is a picture showing the setup:
+---------------+ TCP +---------------+
| Server (tcp) |<-------| Proxy (ssl) |
+---------------+ +---------------+
^ ^
| TCP | SSL
| |
+---------------+ +---------------+
| Client (tcp) | | Client (ssl) |
+---------------+ +---------------+
Note that the connection to the file server is independend of the connection to the server/proxy.
Please see perldoc doc/Dicop.pod for more details.

./setup. Run it to generate the necessary config files, mail and event templates, user and group settings, as well as to change the permissions.Apart from viewing the case details including a list of jobs belonging to that case, you can also get a complete list of all existing cases via the menu in the footer.
case_url_format. Cases (see previous item) have an URL field, and if that URL field is empty, it will be automatically generated from that config key and the current case whenever you view a case via the HTML interface. This means you do not have to type all URLs manually in, and changing them all later on is as easy as editign the config and restarting the server process.
This feature allows you to link your cases to a case database from DiCoP.
send_event_url_format. If defined, the DiCoP server will send events like new job, job finished or result found to that URL by using the templates from tpl/event/.sub_arch. If this field is set, the client will append it to the architecture name and send it to the server. For instance, two clients runnning under Linux could have sub_arch set to i386 and ia64 and the server would then receive linux-i386 and >linux-ia64>, respectively.
The difference would be that the server first tries to serve files from the sub directory named after the sub-architecture, and then one up, and so on. Here is an example for the architecture string 'linux-i386-amd', the server would look into this directories to serve a worker file to the client:
worker/linux/i386/amd
worker/linux/i386
worker/linux/
This allows OS or CPU specific overrides to be specified on a per-client basis.
linux, or the full architecture string like linux-i386.
In the first case all clients running under linux would get the extra file, in the second case only these reporting exactly linux-i386 would get it.
setup will also help for setting up a server for the first time. * download this file
* pass it to the worker and
* afterwards delete it
The client now also supports this fully. This feature is important for special charsets like Dictionary or Extract sets, because these have parameters (like file offsets) that change for every chunk.
The job description files are still supported and used when their are parameters that are necessary for a job, but do not change for the chunks.

SSL support does not actually work. We are still investigating why.
Events (job finished, job started etc) will be done while the current request is worked on. If the remote server is down or slow, this may cause the request to be stalled or aborted. Events should be posted outside the main request handling loop, just as emails are being sent.
We plan to implement this soon.
It is no longer possible to select files with "_" in the name after you have hit "Reload" on the file selector page.
These cause an unknown error instead of a more readable "permission denied" when selecting files and directories.

The config setting is_proxy is obselete and no longer supported. Please remove the appropriate line from your config file. The daemon will warn and refuse to start if it is still present.
The HTML interface now uses CSS quite extensively. Old browsers without CSS support (like Netscape 4.x) or with incomplete CSS support (like Konqueror before 3.2, Internet Explorer 5.x etc) will have problems rendering the interface properly. It should be still usable, but it will not be pretty.
Especially in the light of security and looming exploits, we strongly encourage you to upgrade your browser to the newest version.

(c) Bundesamt fuer Sicherheit in der Informationstechnik 1998-2006
DiCoP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
See the file LICENSE or http://www.bsi.bund.de/ for more information.