| 36 | == Using Authentication == |
| 37 | |
| 38 | Tracd provides support for both Basic and Digest authentication. The default is to use Digest; to use Basic authentication, replace `--auth` with `--basic-auth` in the examples below, and omit the realm. |
| 39 | |
| 40 | ''Support for Basic authentication was added in version 0.9.'' |
| 41 | |
| 42 | If the file `/path/to/users.htdigest` contains user accounts for project1 with the realm "mycompany.com", you'd use the following command-line to start tracd: |
| 43 | {{{ |
| 44 | $ tracd -p 8080 --auth project1,/path/to/users.htdigest,mycompany.com /path/to/project1 |
| 45 | }}} |
| 46 | |
| 47 | '''Note''': the project "name" passed to the `--auth` option is the base name of the project environment directory. |
| 48 | |
| 49 | Of course, the digest file can be be shared so that it is used for more than one project: |
| 50 | {{{ |
| 51 | $ tracd -p 8080 \ |
| 52 | --auth project1,/path/to/users.htdigest,mycompany.com \ |
| 53 | --auth project2,/path/to/users.htdigest,mycompany.com \ |
| 54 | /path/to/project1 /path/to/project2 |
| 55 | }}} |
| 56 | |
| 57 | Another way to share the digest file is to specify "*" |
| 58 | for the project name: |
| 59 | {{{ |
| 60 | $ tracd -p 8080 \ |
| 61 | --auth *,/path/to/users.htdigest,mycompany.com \ |
| 62 | /path/to/project1 /path/to/project2 |
| 63 | }}} |
| 64 | |
| 65 | == How to set up an htdigest password file == |
| 66 | |
| 67 | If you have Apache available, you can use the htdigest command to generate the password file. Type 'htdigest' to get some usage instructions, or read [http://httpd.apache.org/docs/2.0/programs/htdigest.html this page] from the Apache manual to get precise instructions. You'll be prompted for a password to enter for each user that you create. For the name of the password file, you can use whatever you like, but if you use something like `users.htdigest` it will remind you what the file contains. As a suggestion, put it in your <projectname>/conf folder along with the [TracIni trac.ini] file. |
| 68 | |
| 69 | Note that you can start tracd without the --auth argument, but if you click on the ''Login'' link you will get an error. |
| 70 | |
| 71 | == Generating Passwords Without Apache == |
| 72 | |
| 73 | If you don't have Apache available, you can use this simple Python script to generate your passwords: |
| 74 | |
| 75 | {{{ |
| 76 | from optparse import OptionParser |
| 77 | import md5 |
| 78 | |
| 79 | # build the options |
| 80 | usage = "usage: %prog [options]" |
| 81 | parser = OptionParser(usage=usage) |
| 82 | parser.add_option("-u", "--username",action="store", dest="username", type = "string", |
| 83 | help="the username for whom to generate a password") |
| 84 | parser.add_option("-p", "--password",action="store", dest="password", type = "string", |
| 85 | help="the password to use") |
| 86 | (options, args) = parser.parse_args() |
| 87 | |
| 88 | # check options |
| 89 | if (options.username is None) or (options.password is None): |
| 90 | parser.error("You must supply both the username and password") |
| 91 | |
| 92 | # Generate the string to enter into the htdigest file |
| 93 | realm = 'trac' |
| 94 | kd = lambda x: md5.md5(':'.join(x)).hexdigest() |
| 95 | print ':'.join((options.username, realm, kd([options.username, realm, options.password]))) |
| 96 | }}} |
| 97 | |
| 98 | Note: If you use the above script you must use the --auth option to tracd, not --basic-auth, and you must set the realm in the --auth value to 'trac' (without the quotes). Example usage (assuming you saved the script as trac-digest.py): |
| 99 | |
| 100 | {{{ |
| 101 | python trac-digest.py -u username -p password >> c:\digest.txt |
| 102 | python tracd --port 8000 --auth proj_name,c:\digest.txt,trac c:\path\to\proj_name |
| 103 | }}} |
| 104 | |
| 105 | == Tips == |
| 106 | |
| 107 | === Serving static content === |
| 108 | |
| 109 | If `tracd` is the only webserver used for the project, |
| 110 | it can also be used to distribute static content |
| 111 | (tarballs, Doxygen documentation, etc.) |
| 112 | |
| 113 | This static content should be put in the `$TRAC_ENV/htdocs` folder, |
| 114 | and is accessed by URLs like `<project_URL>/chrome/site/...`. |
| 115 | |
| 116 | Example: given a `$TRAC_ENV/htdocs/software-0.1.tar.gz` file, |
| 117 | the corresponding relative URL would be `/<project_name>/chrome/site/software-0.1.tar.gz`, |
| 118 | which in turn can be written using the relative link syntax |
| 119 | in the Wiki: `[/<project_name>/chrome/site/software-0.1.tar.gz]` |
| 120 | |
| 121 | The development version of Trac supports a new `htdocs:` TracLinks |
| 122 | syntax for the above. With this, the example link above can be written simply |
| 123 | `htdocs:software-0.1.tar.gz`. |