Mercurial > notdcc
comparison cgi-bin/README @ 0:c7f6b056b673
First import of vendor version
author | Peter Gervai <grin@grin.hu> |
---|---|
date | Tue, 10 Mar 2009 13:49:58 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c7f6b056b673 |
---|---|
1 Sample CGI scripts for managing per-user dccm, dccifd, and dccproc whitelists | |
2 and logs. | |
3 Each user with a white list directory can | |
4 - browse logged messages | |
5 - point-and-click to add checksums from logged messages to an | |
6 individual white list | |
7 - choose to receive a daily notice about messages since the user's | |
8 log was last checked, but no more than one notice per week | |
9 when the log is not checked. | |
10 | |
11 ............................................................................... | |
12 | |
13 newwebuser see misc/README | |
14 It is installed in the DCC libexec directory | |
15 instead of the cgi-bin directory so that the HTTP | |
16 server need not be tempted by distant users to | |
17 execute it. | |
18 | |
19 webuser-notify send a mail message notifying a user of new DCC log | |
20 files. This file must be edited, copied to the DCC | |
21 libexec directory, and made executable so that the | |
22 DCC cron script can use it. | |
23 | |
24 common utility functions | |
25 | |
26 header common HTML used near top of the web pages | |
27 footer common HTML used near bottom of the web pages | |
28 The scripts look first for a copy of the file | |
29 in the per-user directory and then in the cgi-bin | |
30 directory. | |
31 | |
32 list-log list a user's log files | |
33 | |
34 list-msg list a single message among the log files | |
35 | |
36 edit-whiteclnt edit a user's white list file | |
37 | |
38 chgpasswd change a user's password. | |
39 BEWARE that this script users `htpasswd -b` which | |
40 momentarily exposes passwords to other users on the | |
41 system using the `ps` command. On systems with user | |
42 shell accounts, this script should be turned off or | |
43 replaced with something like the HTTPD::UserAdmin | |
44 Perl module. To get it to work at all, you may need | |
45 to adjust $PATH to reach htpasswd. | |
46 | |
47 http2https CGI script to redirect HTTP accesses to HTTPS. | |
48 | |
49 ............................................................................... | |
50 | |
51 | |
52 These scripts are intended to be portable and usable instead of fast or fancy. | |
53 Large organizations should consider perl_mod, templates, and so forth. | |
54 | |
55 Instead of modifying them in place, copying them to a directory other | |
56 than /var/dcc/cgi-bin will avoid difficulties when installing new | |
57 versions of the DCC. | |
58 | |
59 They are intended to be used with dccm and dccifd, but can be used with dccproc | |
60 if dccproc is told to follow the per-user logging and whitelist | |
61 conventions used by dccm or dccifd with | |
62 dccproc -E -l /var/dcc/userdirs/local/$USER/log \ | |
63 -w /var/dcc/userdirs/local/$USER/whiteclnt | |
64 It might be good to use the "include" facility to add a global | |
65 whiteclnt file to those per-user files. The /var/dcc/libexec/newwebuser | |
66 script starts per-user whiteclnt files from a prototype file and creates | |
67 a log directory. | |
68 It is not necessary to include the global whiteclnt file in each per-user | |
69 file with dccm or dccifd. The global whiteclnt file is consulted if a | |
70 per-user's file fails to yield a black or white answer. | |
71 | |
72 These scripts base their decisions about which additional or | |
73 "subsititute" headers to show on the -S parameters in DCCM_ARGS in | |
74 /var/dcc/dcc_conf. If you are not use dccm or dccifd but are using dccproc, | |
75 you must still set DCCM_ARGS for any local substitute SMTP headers. | |
76 Less likely to be useful SMTP headers such as non-null Message-IDs are | |
77 not supported to avoid confusing end-users. | |
78 | |
79 The log directory and whitelist for a local user in .../userdirs/local/name | |
80 are mapped to the htpasswd username "name", while those for remote | |
81 users in such as .../userdirs/esmtp/xxx@example.com are mapped to | |
82 esmtp/name@example.com | |
83 | |
84 These scripts should be installed and protected with an equivalent to the | |
85 following in httpd.conf with Apache: | |
86 ScriptAlias /DCC-cgi-bin/ /var/dcc/cgi-bin/ | |
87 <Directory /var/dcc/cgi-bin/> | |
88 Order deny,allow | |
89 allow from all | |
90 AuthType Basic | |
91 AuthName "DCC user" | |
92 SetEnv AuthName "DCC user" | |
93 AuthUserFile /var/dcc/userdirs/webusers | |
94 require valid-user | |
95 # | |
96 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP | |
97 SSLRequireSSL | |
98 # install the http2http2 script in your main /cgi-bin/ directory and | |
99 # add something like the following line to redirect HTTP to HTTPS | |
100 # ErrorDocument 403 /cgi-bin/http2https | |
101 </Directory> | |
102 | |
103 Httpd must be able to read and write the per-user files and directories, | |
104 usually by sharing a GID with the DCC user and having the directories | |
105 writable-by-group. By default, the newwebuser script uses the group www. | |
106 | |
107 | |
108 This scripts can be used with the main client DCC log directory and whitelist by | |
109 | |
110 1. let httpd read the main DCC log files. | |
111 Make the /var/dcc/log directory readable and searchable by 'group' | |
112 but neither searchable nor readable by 'other'. | |
113 Give the log directory the group used by httpd. | |
114 On SVR4 and Solaris systems, also make the directory set-GID | |
115 | |
116 2. use `/var/dcc/libexec/newwebuser %postmaster` | |
117 to recreate a per-user directory for a local username that is | |
118 invalid and will not be hit by spammer dictionary attacks | |
119 | |
120 3. replace the resulting userdirs/local/%postmaster/log directory with a | |
121 symbolic link to the main log directory: | |
122 rmdir /var/dcc/userdirs/local/%postmaster/log | |
123 ln -s ../../../log /var/dcc/userdirs/local/%postmaster/log | |
124 | |
125 4. replace the resulting userdirs/%postmaster/whiteclnt file with a | |
126 symbolic link to the DCC client white list: | |
127 rm /var/dcc/userdirs/local/%postmaster/whiteclnt | |
128 ln -f -s ../../../whiteclnt /var/dcc/userdirs/local/%postmaster | |
129 | |
130 ensure that the /var/dcc/whiteclnt file can be read and written | |
131 by the httpd group. If you don't trust your httpd daemon, | |
132 it might be best to forget this idea. | |
133 | |
134 5. follow the hints above for installing the sample CGI scripts. | |
135 | |
136 | |
137 Rhyolite Software DCC 1.3.103-1.12 $Revision$ |