Interactive path selection can use refactoring

The code in the director which is used to select interactively the files
to restore needs some cleanup. Currently the cwd (current working
directory) is stored in a fixed length buffer of sometimes 1100 and
sometimes 2000 bytes. It would be better to use a POOLMEM buffer
which can extend to the actual length needed.

Currently you can also not directly mark or unmark a full path as the mark
and unmark only matches the name using fnmatch against the current working
directory. This also skips any path information and as the internal storage
of the tree is per directory node this will never work. A simple fix would
be to check if the selection pattern is a full path (e.g. has a / in it)
and then split the selection in a path and file part. Then we can do a
change directory into the wanted path and then do the same pattern matching
and restore the working directory after the selection.

Fixes #195: Interactive path selection can use refactoring
Fix tree_getpath to work with paths longer then 256 bytes.

We use a temporary POOLMEM buffer for the storage of the full
PATH but as we were passing that as a pointer not a pointer to
a pointer when the buffer reaches 256 bytes the check_pool_memory_size
will allocate a new buffer but as we cannot pass the right new buffer
back to the calling function we were still using the already freed
buffer which we pass back to the calling function which then tries
to free that pointer again which leads to the memory allocator blowing
up with a double free error.
Added Option to also use SILENTKEEPCONFIG

Now the installer and uninstaller can also use the option
SILENTKEEPCONFIG to keep existing configurations.

During install, existing configurations are kept and the new one is
installed as file.NEW.

During uninstall, the existing config files will not be deleted.
Fix windows rc files.

- Add the right copyright info.
- Generate the rc files with the right version info at build time.
Plugin framework enhancements.

Up until now the plugins for the fd/sd/dir are loaded semi at
random by the way they are stored in the plugin directory as
they are loaded in the order readdir returns the directory entries.

This is NOT how you want it in certain situations so from now on
you can specify in the fd/sd/dir a new keyword in the generic
daemon config resource named "plugin names" which is a list
which is seperated by a ':' and enumerates the plugins that
should be loaded in what order by a daemon. In this resource
you can define the following 'plugin names = "python:bpipe"'
which means in the fd load the following plugins:

- <plugin_dir>/python-fd.so
- <plugin_dir>/bpipe-fd.so

If you don't specify the plugin names then the old behaviour
will be used to load all plugins which match the pattern
*-<daemon>.so

Now we can order the way plugins are loaded there is also a
new flag to the generate_plugin_event() function which is named
reverse which is a boolean and if its set the plugins will be
called in reverse order that they are stored in the plugin list.

Fixes #192: Plugin framework enhancements.
Remove spurious daemon message on plugin load.

The plugin loading like to be somewhat chatty by issueing
daemon messages for every plugin loaded. Its more then enough
to issue this as a debugging message what was already done.
Added the new product property "auto_config"

With the new product property you can use the new silent parameter to keep configurationsfiles during a deinstallation and a reinstall.
If it is set on false, opsi doesnt delete the configuration files and doesnt overwrite the old configuration files. The new configuration files will be saved as File.new

Signed-off-by: Marco van Wieringen <marco.van.wieringen@bareos.com>
Fix segmentation fault.
Streamline error handling.

When we fail in backup, restore or verify we close the FD connection
if we opened that and return from the function. The cleanup function
for backup, restore and verify will cleanup the SD connection if that
is opened. This also means we don't get the spurious message when
during a backup something goes wrong in the protocol handling and
we get the famous "No Job status returned from FD".
Import univention-bareos package

Signed-off-by: Marco van Wieringen <marco.van.wieringen@bareos.com>
Some more tweaks for streamline error handling.
Some more tweaks for streamline error handling.
Restore cleanup after backup.

It seems we really need the wait_for_job_termination() call on
closing a failing backup job as otherwise some other subtile
problems occur. So we now handle the protocol mismatch somewhat
differently e.g. we only close the FD connection which will result
in the backup failing just as if a connection could not be made.
Implement auto inflation/deflation in the storage daemon.

This code implements automatic deflation (compression)
of data read or written to a device and automatic inflation
(uncompression) of data written or read from a device.

This allows you to do the following:

- Compress data on the FD send it to SD and write it to the device uncompressed.
- Send data uncompressed from the FD to the SD and write it to the device compressed.
- Read compressed data from a device and send it as uncompressed data to the FD.
- Read uncompressed data from a device and send it as compressed data to the FD.

This is implemented as a SD plugin.

Fixes #187: Implement auto inflation/deflation in storage daemon.
Switch to new version number.
Fix specfiles for new plugin directory layout.