| 80 | | sed -i -e 's/^ENABLED=0/ENABLED=1/g' $cfg |
|---|
| | 53 | |
|---|
| | 54 | key="ENABLED" |
|---|
| | 55 | sep="=" |
|---|
| | 56 | val="1" |
|---|
| | 57 | set_key $key $sep $val $cfg |
|---|
| | 58 | |
|---|
| | 59 | } |
|---|
| | 60 | |
|---|
| | 61 | # Amavis |
|---|
| | 62 | amavis () { |
|---|
| | 63 | |
|---|
| | 64 | if [ "$1" == "" ]; then |
|---|
| | 65 | host="server.local" |
|---|
| | 66 | else |
|---|
| | 67 | host=$1 |
|---|
| | 68 | fi |
|---|
| | 69 | |
|---|
| | 70 | cfg=/etc/amavis/conf.d/05-node_id |
|---|
| | 71 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 72 | sed -i -e "s|^chomp(\$myhostname = .*);|chomp(\$myhostname = \"$host\");|g" $cfg |
|---|
| | 73 | |
|---|
| | 74 | cfg=/etc/amavis/conf.d/15-content_filter_mode |
|---|
| | 75 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 76 | sed -i -e 's|^#@bypass_virus_checks_maps = (|@bypass_virus_checks_maps = (|g' $cfg |
|---|
| | 77 | sed -i -e 's|^# \\%bypass_virus_checks, \\@bypass_virus_checks_acl, \\$bypass_virus_checks_re);| \\%bypass_virus_checks, \\@bypass_virus_checks_acl, \\$bypass_virus_checks_re);|g' $cfg |
|---|
| | 78 | sed -i -e 's|^#@bypass_spam_checks_maps = (|@bypass_spam_checks_maps = (|g' $cfg |
|---|
| | 79 | sed -i -e 's|^# \\%bypass_spam_checks, \\@bypass_spam_checks_acl, \\$bypass_spam_checks_re);| \\%bypass_spam_checks, \\@bypass_spam_checks_acl, \$bypass_spam_checks_re);|g' $cfg |
|---|
| | 80 | |
|---|
| | 81 | cfg=/etc/amavis/conf.d/20-debian_defaults |
|---|
| | 82 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 83 | sed -i -e 's|^\$final_banned_destiny = D_BOUNCE;|\$final_banned_destiny = D_DISCARD;|g' $cfg |
|---|
| | 84 | sed -i -e 's|^\$final_spam_destiny = D_BOUNCE;|\$final_spam_destiny = D_DISCARD;|g' $cfg |
|---|
| | 85 | |
|---|
| | 86 | adduser clamav amavis > /dev/null |
|---|
| | 87 | } |
|---|
| | 88 | |
|---|
| | 89 | # Postfix |
|---|
| | 90 | postfix () { |
|---|
| | 91 | |
|---|
| | 92 | cfg=/etc/postfix/main.cf |
|---|
| | 93 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 94 | |
|---|
| | 95 | key="home_mailbox" |
|---|
| | 96 | sep=" = " |
|---|
| | 97 | val="Maildir/" |
|---|
| | 98 | add_key $key $sep $cfg |
|---|
| | 99 | set_key $key $sep $val $cfg |
|---|
| | 100 | |
|---|
| | 101 | key="content_filter" |
|---|
| | 102 | sep="=" |
|---|
| | 103 | val="smtp-amavis:[127.0.0.1]:10024" |
|---|
| | 104 | add_key $key $sep $cfg |
|---|
| | 105 | set_key $key $sep $val $cfg |
|---|
| | 106 | |
|---|
| | 107 | cfg=/etc/postfix/master.cf |
|---|
| | 108 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 109 | cp /usr/share/cdd-utils/postfix/master.cf $cfg |
|---|
| | 110 | |
|---|
| | 111 | # Create Maildir for new users |
|---|
| | 112 | if ! [ -d /etc/skel/Maildir ]; then |
|---|
| | 113 | maildirmake /etc/skel/Maildir |
|---|
| | 114 | fi |
|---|
| | 115 | |
|---|
| 94 | | # Webmin |
|---|
| 95 | | webmin () { |
|---|
| 96 | | |
|---|
| 97 | | # Do not run with SSL |
|---|
| 98 | | cfg=/etc/webmin/miniserv.conf |
|---|
| 99 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 100 | | sed -i -e's/^ssl=1/ssl=0/g' $cfg |
|---|
| 101 | | |
|---|
| 102 | | # Add manager as webmin user |
|---|
| 103 | | cfg=/etc/webmin/miniserv.users |
|---|
| 104 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 105 | | if ! grep -q ^manager $cfg; then |
|---|
| 106 | | echo "manager:x:::::::" >> $cfg |
|---|
| 107 | | fi |
|---|
| 108 | | |
|---|
| 109 | | # Set manager privileges |
|---|
| 110 | | cfg=/etc/webmin/webmin.acl |
|---|
| 111 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 112 | | if ! grep -q ^manager $cfg; then |
|---|
| 113 | | echo "manager: ldap-useradmin firewall" >> $cfg |
|---|
| 114 | | fi |
|---|
| 115 | | |
|---|
| 116 | | # Configure ldap |
|---|
| 117 | | cfg=/etc/webmin/ldap-useradmin/config |
|---|
| 118 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 119 | | sed -i -e's|^auth_ldap=/etc/libnss-ldap.conf|auth_ldap=/etc/ldap.conf|g' $cfg |
|---|
| 120 | | sed -i -e's|^shells=fixed,ldap,passwd,shells|shells=fixed,passwd,shells|g' $cfg |
|---|
| 121 | | sed -i -e's|^samba_def=0|samba_def=1|g' $cfg |
|---|
| 122 | | sed -i -e's|^samba_gclass=sambaGroup|samba_gclass=sambaGroupMapping|g' $cfg |
|---|
| 123 | | if ! grep -q ^ldap_tls $cfg; then |
|---|
| 124 | | echo "ldap_tls=0" >> $cfg |
|---|
| 125 | | echo "login=cn=admin,dc=nodomain" >> $cfg |
|---|
| 126 | | echo "user_base=ou=people,dc=nodomain" >> $cfg |
|---|
| 127 | | echo "group_base=ou=groups,dc=nodomain" >> $cfg |
|---|
| 128 | | echo "props=sn: Cognome" >> $cfg |
|---|
| 129 | | echo "default_shell=/bin/bash" >> $cfg |
|---|
| 130 | | echo "pass=admin" >> $cfg |
|---|
| 131 | | echo "samba_domain=S-1-0-0" >> $cfg |
|---|
| 132 | | fi |
|---|
| | 129 | |
|---|
| | 130 | # Squirrelmail |
|---|
| | 131 | squirrelmail () { |
|---|
| | 132 | cfg=/etc/squirrelmail/apache.conf |
|---|
| | 133 | lnk=/etc/apache2/conf.d/squirrelmail.conf |
|---|
| | 134 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 135 | if ! exists $lnk; then ln -sf $cfg $lnk; fi |
|---|
| | 136 | |
|---|
| 160 | | # Postfix |
|---|
| 161 | | postfix () { |
|---|
| 162 | | |
|---|
| 163 | | cfg=/etc/postfix/main.cf |
|---|
| 164 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 165 | | if ! grep -q ^home_mailbox $cfg; then |
|---|
| 166 | | echo "home_mailbox = Maildir/" >> $cfg |
|---|
| 167 | | fi |
|---|
| 168 | | if ! grep -q ^content_filter $cfg; then |
|---|
| 169 | | echo "content_filter=smtp-amavis:[127.0.0.1]:10024" >> $cfg |
|---|
| 170 | | fi |
|---|
| 171 | | |
|---|
| 172 | | cfg=/etc/postfix/master.cf |
|---|
| 173 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 174 | | cp /usr/share/cdd-utils/postfix/master.cf $cfg |
|---|
| 175 | | |
|---|
| 176 | | # Create Maildir for new users |
|---|
| 177 | | if ! [ -d /etc/skel/Maildir ]; then |
|---|
| 178 | | maildirmake /etc/skel/Maildir |
|---|
| 179 | | fi |
|---|
| 180 | | |
|---|
| 181 | | } |
|---|
| 182 | | |
|---|
| 183 | | # Amavis |
|---|
| 184 | | amavis () { |
|---|
| 185 | | |
|---|
| 186 | | if [ "$1" == "" ]; then |
|---|
| 187 | | host="server.local" |
|---|
| 188 | | else |
|---|
| 189 | | host=$1 |
|---|
| 190 | | fi |
|---|
| 191 | | |
|---|
| 192 | | cfg=/etc/amavis/conf.d/05-node_id |
|---|
| 193 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 194 | | sed -i -e "s|^chomp(\$myhostname = .*);|chomp(\$myhostname = \"$host\");|g" $cfg |
|---|
| 195 | | |
|---|
| 196 | | cfg=/etc/amavis/conf.d/15-content_filter_mode |
|---|
| 197 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 198 | | sed -i -e 's|^#@bypass_virus_checks_maps = (|@bypass_virus_checks_maps = (|g' $cfg |
|---|
| 199 | | sed -i -e 's|^# \\%bypass_virus_checks, \\@bypass_virus_checks_acl, \\$bypass_virus_checks_re);| \\%bypass_virus_checks, \\@bypass_virus_checks_acl, \\$bypass_virus_checks_re);|g' $cfg |
|---|
| 200 | | sed -i -e 's|^#@bypass_spam_checks_maps = (|@bypass_spam_checks_maps = (|g' $cfg |
|---|
| 201 | | sed -i -e 's|^# \\%bypass_spam_checks, \\@bypass_spam_checks_acl, \\$bypass_spam_checks_re);| \\%bypass_spam_checks, \\@bypass_spam_checks_acl, \$bypass_spam_checks_re);|g' $cfg |
|---|
| 202 | | |
|---|
| 203 | | cfg=/etc/amavis/conf.d/20-debian_defaults |
|---|
| 204 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 205 | | sed -i -e 's|^\$final_banned_destiny = D_BOUNCE;|\$final_banned_destiny = D_DISCARD;|g' $cfg |
|---|
| 206 | | sed -i -e 's|^\$final_spam_destiny = D_BOUNCE;|\$final_spam_destiny = D_DISCARD;|g' $cfg |
|---|
| 207 | | |
|---|
| 208 | | adduser clamav amavis > /dev/null |
|---|
| | 166 | # Webmin |
|---|
| | 167 | webmin () { |
|---|
| | 168 | |
|---|
| | 169 | # Do not run with SSL |
|---|
| | 170 | cfg=/etc/webmin/miniserv.conf |
|---|
| | 171 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 172 | sed -i -e's/^ssl=1/ssl=0/g' $cfg |
|---|
| | 173 | |
|---|
| | 174 | # Add manager as webmin user |
|---|
| | 175 | cfg=/etc/webmin/miniserv.users |
|---|
| | 176 | key='manager' |
|---|
| | 177 | sep=':' |
|---|
| | 178 | val='$1$Vr6JgB.6$gVJ95a5DpY6pc9A0KvOfW.:::::::' |
|---|
| | 179 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 180 | add_key $key $sep $cfg |
|---|
| | 181 | set_key $key $sep $val $cfg |
|---|
| | 182 | |
|---|
| | 183 | # Set manager privileges |
|---|
| | 184 | cfg=/etc/webmin/webmin.acl |
|---|
| | 185 | mods="ldap-useradmin" |
|---|
| | 186 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 187 | if ! grep -q ^manager $cfg; then |
|---|
| | 188 | echo "manager: $mods" >> $cfg |
|---|
| | 189 | else |
|---|
| | 190 | sed -i -e "s/^manager.*/manager: $mods/g" $cfg |
|---|
| | 191 | fi |
|---|
| | 192 | |
|---|
| | 193 | # Configure ldap |
|---|
| | 194 | cfg=/etc/webmin/ldap-useradmin/config |
|---|
| | 195 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 196 | |
|---|
| | 197 | for key in ldap_tls login user_base group_base props default_shell pass samba_domain other_class; do |
|---|
| | 198 | add_key $key "=" $cfg |
|---|
| | 199 | done |
|---|
| | 200 | |
|---|
| | 201 | set_key "auth_ldap" "=" "/etc/ldap.conf" $cfg |
|---|
| | 202 | set_key "shells" "=" "fixed,passwd,shells" $cfg |
|---|
| | 203 | set_key "samba_def" "=" "1" $cfg |
|---|
| | 204 | set_key "samba_gclass" "=" "sambaGroupMapping" $cfg |
|---|
| | 205 | set_key "given_class" "=" "" $cfg |
|---|
| | 206 | set_key "other_class" "=" "inetOrgPerson" $cfg |
|---|
| | 207 | set_key "ldap_tls" "=" "0" $cfg |
|---|
| | 208 | set_key "login" "=" "cn=admin,dc=nodomain" $cfg |
|---|
| | 209 | set_key "user_base" "=" "ou=People,dc=nodomain" $cfg |
|---|
| | 210 | set_key "group_base" "=" "ou=Group,dc=nodomain" $cfg |
|---|
| | 211 | set_key "props" "=" "sn: Cognome" $cfg |
|---|
| | 212 | set_key "default_shell" "=" "/bin/bash" $cfg |
|---|
| | 213 | set_key "pass" "=" "admin" $cfg |
|---|
| | 214 | set_key "samba_domain" "=" "S-1-0-0" $cfg |
|---|
| | 215 | |
|---|
| 233 | | if ! grep -q ^/home $cfg; then |
|---|
| 234 | | echo "/home *(rw,sync,no_root_squash)" >> $cfg |
|---|
| 235 | | fi |
|---|
| 236 | | if ! grep -q ^/srv/data $cfg; then |
|---|
| 237 | | echo "/srv/data *(rw,sync,no_root_squash)" >> $cfg |
|---|
| 238 | | fi |
|---|
| 239 | | fi |
|---|
| 240 | | } |
|---|
| 241 | | |
|---|
| 242 | | # Squirrelmail |
|---|
| 243 | | squirrelmail () { |
|---|
| 244 | | cfg=/etc/squirrelmail/apache.conf |
|---|
| 245 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 246 | | } |
|---|
| 247 | | |
|---|
| 248 | | # Schedule a daily backup of the data on a local partition using |
|---|
| 249 | | # the rdiff-backup-wrapper |
|---|
| 250 | | backup () { |
|---|
| 251 | | partition=$1 # Path to the backup device |
|---|
| 252 | | if nullstr $partition; then warning "No partition given"; return; fi |
|---|
| 253 | | cfg=/etc/cron.daily/backup |
|---|
| 254 | | cat <<EOF > $cfg |
|---|
| 255 | | #!/bin/sh -e |
|---|
| 256 | | |
|---|
| 257 | | rdiff-backup-wrapper $partition |
|---|
| 258 | | EOF |
|---|
| 259 | | |
|---|
| 260 | | chmod 755 $cfg |
|---|
| 261 | | |
|---|
| | 240 | |
|---|
| | 241 | key="/home" |
|---|
| | 242 | sep=" " |
|---|
| | 243 | val="*(rw,sync,no_root_squash)" |
|---|
| | 244 | add_key "$key" "$sep" "$cfg" |
|---|
| | 245 | set_key "$key" "$sep" "$val" "$cfg" |
|---|
| | 246 | |
|---|
| | 247 | key="/srv/data" |
|---|
| | 248 | sep=" " |
|---|
| | 249 | val="*(rw,sync,no_root_squash)" |
|---|
| | 250 | add_key "$key" "$sep" "$cfg" |
|---|
| | 251 | set_key "$key" "$sep" "$val" "$cfg" |
|---|
| | 252 | |
|---|
| | 253 | fi |
|---|
| | 254 | } |
|---|
| | 255 | |
|---|
| | 256 | # Squid proxy |
|---|
| | 257 | squid () { |
|---|
| | 258 | |
|---|
| | 259 | if [ "$1" == "" ]; then |
|---|
| | 260 | network="192.168.1.0/24" |
|---|
| | 261 | else |
|---|
| | 262 | network="$1" |
|---|
| | 263 | fi |
|---|
| | 264 | |
|---|
| | 265 | cfg=/etc/squid/squid.conf |
|---|
| | 266 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 267 | |
|---|
| | 268 | if ! grep -q local_network $cfg; then |
|---|
| | 269 | sed -i -e "s|^acl CONNECT method CONNECT|acl CONNECT method CONNECT\nacl local_network src $network|g" $cfg |
|---|
| | 270 | sed -i -e "s|^http_access allow manager localhost|http_access allow manager localhost\nhttp_access allow local_network|g" $cfg |
|---|
| | 271 | else |
|---|
| | 272 | sed -i -e "s|^acl local_network src.*|acl local_network src = $network|g" $cfg |
|---|
| | 273 | fi |
|---|
| | 274 | |
|---|
| | 275 | } |
|---|
| | 276 | |
|---|
| | 277 | # HAVP antivirus proxy |
|---|
| | 278 | havp () { |
|---|
| | 279 | cfg=/etc/havp/havp.config |
|---|
| | 280 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 281 | sed -i -e 's/^# PARENTPROXY localhost/PARENTPROXY localhost/' $cfg |
|---|
| | 282 | sed -i -e 's/^# PARENTPORT 3128/PARENTPORT 3128/' $cfg |
|---|
| | 283 | } |
|---|
| | 284 | |
|---|
| | 285 | |
|---|
| | 286 | # |
|---|
| | 287 | # Klogd |
|---|
| | 288 | # |
|---|
| | 289 | klogd () { |
|---|
| | 290 | cfg=/etc/init.d/klogd |
|---|
| | 291 | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| | 292 | |
|---|
| | 293 | # Do not log low-level kernel messages |
|---|
| | 294 | sed -i -e 's|^KLOGD=.*|KLOGD="-c 4 -s"|g' $cfg |
|---|
| 291 | | # |
|---|
| 292 | | # Klogd |
|---|
| 293 | | # |
|---|
| 294 | | klogd () { |
|---|
| 295 | | cfg=/etc/init.d/klogd |
|---|
| 296 | | if ! exists $cfg; then warning $cfg not found; return; fi |
|---|
| 297 | | |
|---|
| 298 | | # Do not log low-level kernel messages |
|---|
| 299 | | sed -i -e 's|^KLOGD=.*|KLOGD="-c 4 -s"|g' $cfg |
|---|
| 300 | | } |
|---|
| | 324 | # Schedule a daily backup of the data on a local partition using |
|---|
| | 325 | # the rdiff-backup-wrapper |
|---|
| | 326 | backup () { |
|---|
| | 327 | device=$1 # Path to the backup device |
|---|
| | 328 | if nullstr $device; then warning "No device given"; return; fi |
|---|
| | 329 | cfg=/etc/cron.daily/backup |
|---|
| | 330 | cat <<EOF > $cfg |
|---|
| | 331 | #!/bin/sh -e |
|---|
| | 332 | |
|---|
| | 333 | rdiff-backup-wrapper $device /backup/local |
|---|
| | 334 | EOF |
|---|
| | 335 | chmod 755 $cfg |
|---|
| | 336 | |
|---|
| | 337 | cfg=/etc/udev/rules.d/80-backup.rules |
|---|
| | 338 | model="2500BEV External" |
|---|
| | 339 | vendor="WD" |
|---|
| | 340 | run="/usr/bin/rdiff-backup-wrapper /dev/backup /backup/removable" |
|---|
| | 341 | cat <<EOF > $cfg |
|---|
| | 342 | BUS=="scsi", ATTRS{vendor}=="$vendor", ATTRS{model}=="$model", NAME="%k", SYMLINK="backup" |
|---|
| | 343 | BUS=="scsi", ATTRS{vendor}=="$vendor", ATTRS{model}=="$model", ACTION=="add", RUN+="$run" |
|---|
| | 344 | BUS=="scsi", ATTRS{vendor}=="$vendor", ATTRS{model}=="$model", ACTION=="remove", RUN+="/bin/true" |
|---|
| | 345 | EOF |
|---|
| | 346 | |
|---|
| | 347 | } |
|---|