5748855 [rkeene@sledge /home/rkeene/projects/scripts]$ cat -n addweb.sh
 1 #!/bin/bash
 2 
 3 IPS="209.224.199.201 2002:d1e0:c7c9::1"
 4 VHOSTSFILE=/etc/apache/conf.d/user-vhosts.conf
 5 DOMAINSDIR=/var/named/pz/
 6 USER="$1"
 7 USERDOMAIN="$2"
 8 HOSTSHORT=`hostname --short`
 9 HOSTLONG=`hostname --fqdn`
10 DOMAIN=`echo "${HOSTLONG}" | sed s/"^${HOSTSHORT}\."//`
11 if [ -f /etc/mail/local-host-names ]; then
12     DOMAIN=`grep "^${DOMAIN}$" /etc/mail/local-host-names | head -1`
13     if [ -z "${DOMAIN}" ]; then
14         DOMAIN=`head -1 /etc/mail/local-host-names 2>/dev/null`
15     fi
16 fi
17 
18 if [ -z "${USER}" ]; then
19     echo -n "Enter the username: "
20     read USER
21     if [ -z "${USER}" ]; then
22         exit 1
23     fi
24 fi
25 
26 if [ -z "${USERDOMAIN}" ]; then
27     USERDOMAIN="${USER}.${DOMAIN}"
28     NEEDDOMAIN=1
29 fi
30 
31 UUID=`id -u "${USER}" 2>/dev/null`
32 UGID=`id -g "${USER}" 2>/dev/null`
33 UGROUP=`id -gn "${USER}" 2>/dev/null`
34 UHOMEDIR=`grep "^${USER}:" /etc/passwd | cut -f 6 -d :`
35 if [ -z "${UUID}" -o -z "${UGID}" -o -z "${UHOMEDIR}" -o -z "${UGROUP}" ]; then
36     echo "Could not get user information, exiting."
37     exit 1
38 fi
39 
40 UWEBDIR="/web/${USER}"
41 UFTPDIR="/home/ftp/pub/${USER}"
42 mkdir "${UWEBDIR}" && chown "${UUID}":"${UGID}" "${UWEBDIR}"
43 mkdir "${UFTPDIR}" && chown "${UUID}":"${UGID}" "${UFTPDIR}"
44 mkdir "${UHOMEDIR}/web/" && chown "${UUID}":"${UGID}" "${UHOMEDIR}/web"
45 
46 if [ ! -f "${UHOMEDIR}/public_html" -a ! -L "${UHOMEDIR}/public_html" ]; then
47     ln -s "${UWEBDIR}" "${UHOMEDIR}/public_html"
48 fi
49 
50 if grep "${USERDOMAIN}" "${VHOSTSFILE}" >/dev/null; then
51     NEEDDOMAIN=0
52     true
53 else
54     cat <<EOF >> "${VHOSTSFILE}"
55 <VirtualHost *:80>
56     User ${USER}
57     Group ${UGROUP}
58     ServerAdmin ${USER}@${DOMAIN}
59     DocumentRoot ${UWEBDIR}
60     UserDir /disabled
61     ServerName ${USERDOMAIN}
62     ErrorLog ${UHOMEDIR}/web/error_log
63     CustomLog ${UHOMEDIR}/web/access_log combined
64 </VirtualHost>
65 EOF
66     /etc/init.d/apache reload 2>/dev/null >/dev/null
67 fi
68 
69 
70 if [ "${NEEDDOMAIN}" = 1 ]; then
71     DOMAINFILE="${DOMAINSDIR}/${DOMAIN}"
72     if [ -f "${DOMAINFILE}" ]; then
73         if grep "^${USER}[^A-Za-z0-9.-]" "${DOMAINFILE}" >/dev/null; then
74             true
75         else
76             for c_IP in ${IPS}; do
77                 if echo "${c_IP}" | grep ':' >/dev/null; then
78                     TYPE=AAAA
79                 else
80                     TYPE=A
81                 fi
82                 echo "${USER}   IN  ${TYPE} ${c_IP}" >> "${DOMAINFILE}"
83             done
84             sed -e s/'\([0-9]\+\).*; Serial'/'\1|\t; Serial'/ -e 's/0|/1/' -e 's/1|/2/' -e 's/2|/3/' -e 's/3|/4/' -e
	's/4|/5/' -e 's/5|/6/' -e 's/6|/7/' -e 's/7|/8/' -e 's/8|/9/' -e 's/09|/10/' -e 's/19|/20/' -e 's/29|/30/' -e
	's/39|/40/' -e 's/49|/50/' -e 's/59|/60/' -e 's/69|/70/' -e 's/79|/80/' -e 's/89|/90/' -e 's/99|/99/' "${DOMAINFILE}"
	> "${DOMAINFILE}.tmp"
85             mv "${DOMAINFILE}" "${DOMAINFILE}.bak"
86             mv "${DOMAINFILE}.tmp" "${DOMAINFILE}"
87             /etc/init.d/bind9 reload
88         fi
89     fi
90 fi
91 
92 echo "Added http://${USERDOMAIN}/ to user ${USER} (${UWEBDIR})"
5748856 [rkeene@sledge /home/rkeene/projects/scripts]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2004-01-24 20:06:43