HOWTO

- Run taskforest all day with cron
- Allow a user to view the web site
- Start the web server
- Stop the web server
- Create a self-signed certificate with openssl
- Force a job to run NOW

Run taskforest all day with cron

This is the kind of line I have in my crontab:

    02 00 * * * /a/b/taskforest --config_file=/b/c/taskforest.cfg

Allow a user to view the web site

Please make sure you read the section entitled "Web Server Security" for important security considerations.

Having said that, : The userids and passwords are specified in the configuration file using the same format as Apache's .htpasswd files. You can see commented-out examples of this in the configuration file taskforestd.cfg. For your convenience, the TaskForest distribution includes a program called `gen_passwd` that generates text that you can copy and paste into the config file:

    gen_passwd foo bar

The above command will print out somthing that looks like the following;

    foo:4poVZGiAlO1BY

This text can then be copied and pasted into the configuration file.

Make sure you stop the server and restart it after making any changes to the configuration file.

Start the web server

To start the web server, run the taskforestd program with the `--config_file` and `--start` options. For example:

    taskforestd --config_file=taskforestd.cfg --stop

    OR

    taskforestdssl --config_file=taskforestd.cfg --stop

Stop the web server

To stop the web server, run the `taskforestd` program with the `--config_file` and `--stop` options. For example:

    taskforestd --config_file=taskforestd.cfg --stop

    OR

    taskforestdssl --config_file=taskforestd.cfg --stop

Create a self-signed certificate with openssl

This is what works for me (instructions found at http://www.modssl.org/docs/2.8/ssl_faq.html#ToC25 ).

    1) Create a server key

    openssl genrsa -des3 -out server.key.en 1024

    2) Make a decrypted version of it

    openssl rsa -in server.key.en -out server-key.pem

    3) Create a CSR (Certificate Signing Request)

    openssl req -new -key server-key.pem -out server.csr

    4) Create a CA Private Key

    openssl genrsa -des3 -out ca.key.en 1024

    5) Create a decrypted version of it

    openssl rsa -in ca.key.en -out ca.key

    6) Create a 10-yr self-signed CA cert with the CA key

    openssl req -new -x509 -days 3650 -key ca.key -out my-ca.pem

    7) Sign the CSR

    sign.sh server.csr

       The sign.sh program can be found in the
       pkg.contrib/ subdirectory of the mod_ssl
       distribution.  It is not clear whether or not I
       can include that script in this distribution,
       so for now at least, you'll have to use your
       own copy.  Make sure you specify the locations
       of the files in the taskforestd configuration
       file.

Force a Job to run NOW

Let's say you have a job J4 that depends on 3 other jobs - J1, J2 and J3. Normally, that setup is fine, but today you really want the job to run now. You don't care whether J1, J2 and J3 run successfully or not, as far as J4 is concerned. What you need to do is release all the dependencies off J4. You also don't want to make a permanent change to the family file.

This means that regardless of what job dependencies or time dependencies J4 has, when you release all its dependencies, it will run the very next time TaskForest checks to see if there are any jobs that need to be run (determined by `wait_time`). It's as if those dependencies never existed.

A release 'request' is only valid once - once J4 runs, the system has no 'memory' of the fact that J4's dependencies were released. It will not change the behavior of the rest of the family. If J5 depends on J4, then J5 will be ready to run, even if J1, J2 and J3 haven't run yet. To release all dependencies from a job, run the following command:

    release --log_dir=l_d --job=Ff::Jj --family_dir=f_d

where `l_d` is the log directory and `Ff` is the family name and `Jj` is the job name and `f_d` is the family_directory. Dependencies on a job will only be released if the job is in the 'Waiting' state.

You can also use the "Release" button on the 'Status' or 'View Logs' page on the web site to release all dependencies off a job.

Remember: no changes are made to the Family file. So next time this family runs, J4 will still depend on J1, J2 and J3, just like it always did.