#lang scheme/base
(require "../base.ss"
"../file.ss"
mzlib/process)
(define (make-data-directories)
(parameterize
((current-directory "/"))
(make-directory-tree
'("data" ("www" "log" "conf" ("www" ("auth" "web-server")))))))
(define (make-groups)
(system "addgroup admin")
(system "addgroup www-data"))
(define (copy-configuration-files)
(move-and-link "apache2" "/etc" "/data/conf/www")
(move-and-link "apache2" "/var/log" "/data/log")
(delete-link "/data/conf/www/apache2/sites-enabled/000-default"))
(define (update-permissions)
(system "chgrp -R admin /data")
(system "chmod -R g+rw /data"))
(define (move-and-link item src des)
(if (or (link-exists? (format "~a/~a" src item))
(file-exists? (format "~a/~a" des item))
(directory-exists? (format "~a/~a" des item)))
(printf "move-and-link: Skipping ~a ~a ~a as one or more already exist\n" item src des)
(begin
(system (format "mv ~a/~a ~a" src item des))
(system (format "ln -s ~a/~a ~a/~a" des item src item)))))
(define (delete-link path)
(if (link-exists? path)
(delete-file path)
(printf "delete-link: Skipping ~a - either it does not exist or it isn't a link\n" path)))
(provide make-data-directories
make-groups
copy-configuration-files
update-permissions)