# DRM tools

This document describes the tools that come with the DRM distribution. These tools are in fact starter scripts that start java applications with appropriate security and classpath settings.

## drmnode

    drmnode [--nogui] [parameters]

Starts a DRM node. If option `--nogui` is not given it starts the class `drm.server.TestGUINode` otherwise it starts `drm.server.NakedNode`.

The parameters can be configuration parameters as described in the configuration guide except that system properties cannot be set only the config file and command line parameters can be given.

Classes and jar archives from within and under the current directory and all optional libraries installed with the DRM will get application rights, any other classes will have the most restricted sandbox permissions only. This is important when starting experiments: the code (jar file) of the experiment has to be in the current directory.

With the `--nogui` option and without changing the DRM group setting the node will attempt to connect to the default DRM using default node addresses. If the DRM group name is different from "default", this will not be attempted. Changing the group name can be done by a command line parameter (see also the configuration guide)

    drmnode --nogui "group=mylocalgroup"

## drmapp

    drmapp [--gui] jar[!class] [parameters]

Starts a DRM node and starts an application on it. If option `--gui` is given it starts the class `drm.server.TestGUINode` otherwise it starts `drm.server.NakedNode`. The experiment is not started immediately, only after approx. 30 seconds delay. The reason of this is to allow the node to connect to peer nodes which is essential for spreading computation over the peer network.

The parameters can be configuration parameters as described in the configuration guide except that system properties cannot be set only the config file and command line parameters can be given.

Classes and jar archives from within and under the directory of the given jar file and all optional libraries installed with the DRM will get application rights, any other classes will have the most restricted sandbox permissions only.

An optional class name can be given after a "!" in which case it will be the launcher class of the application. You can find technical details about launching experiments in the experiment starting specification and in the DRM tutorial.

Without the `--gui` option and without changing the DRM group setting the node will attempt to connect to the default DRM using default node addresses. This is useful when starting experiments on the default DRM. If the DRM group name is different from "default", this will not be attempted. Changing the group name can be done by a command line parameter (see also the configuration guide)

    drmapp experiment.jar "group=mylocalgroup"

Note that an application can be started from a node started with `drmnode` as well, this tool is just a shorthand, the only extra service is that the directory of the jar will be given application rights instead of the current directory.

## drmd

    drmd [parameters]

Starts a DRM node without graphical user interface and with restricted security settings.

The parameters can be configuration parameters as described in the configuration guide except that system properties cannot be set only the config file and command line parameters can be given.

No libraries will get application rights, not even the optional libraries, only the classes of the drm node itself. The purpose of this tool is to allow contribution. For example `drmd` can be started in the background safely each time a computer boots or a user logs in. Without changing the DRM group the node will attempt to connect to the default DRM when started. This way contribution to the default DRM can be easily implemented.