slitaz-forge annotate tank/tank @ rev 112
Add cook.slitaz.org custom files
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Wed Mar 14 03:12:37 2012 +0100 (2012-03-14) |
parents | f163fd02e5ae |
children | fec794d4852f |
rev | line source |
---|---|
pankso@54 | 1 #!/bin/sh |
pankso@75 | 2 # Tank - Admin Tank, backup, update and give stats. |
pankso@54 | 3 # |
pankso@54 | 4 # (C) 2011 SliTaz - GNU General Public License. |
pankso@54 | 5 # Author: Christophe Lincoln <pankso@slitaz.org> |
pankso@54 | 6 # |
pankso@54 | 7 |
pankso@54 | 8 REPOS="/home/slitaz/repos" |
pankso@54 | 9 WWW="/home/slitaz/www" |
pankso@54 | 10 VHOST="$WWW/tank" |
pankso@54 | 11 WEBSITE="$WWW/website" |
pankso@54 | 12 BACKUPS="/home/backups" |
pankso@69 | 13 PYTHON_LIB="/usr/lib/python2.5" |
pankso@69 | 14 DOC_LIB="$WWW/doc/lib" |
pankso@54 | 15 |
pankso@54 | 16 usage() { |
pankso@54 | 17 echo -e "\nUsage: `basename $0` [command] |
pankso@54 | 18 Commands: |
pankso@112 | 19 stats|-s Display some Tank stats |
pankso@112 | 20 backup|-b Backup files and MySQL DB |
pankso@112 | 21 adduser Add user on Tank and create people files |
pankso@112 | 22 chroot|-c Move a user into a new chroot location |
pankso@112 | 23 up-stats Update Awstats statistics (run by cron) |
pankso@112 | 24 |
pankso@112 | 25 up-tank Update http://tank.slitaz.org/ |
pankso@112 | 26 up-people Update http://people.slitaz.org/ |
pankso@112 | 27 up-pro Update http://pro.slitaz.org/ |
pankso@112 | 28 up-boot Update http://boot.slitaz.org/ |
pankso@112 | 29 up-cook Update http://cook.slitaz.org/ |
pankso@112 | 30 |
pankso@112 | 31 #up-www Update website http://www.slitaz.org/ |
pankso@112 | 32 #up-hg Update template for http://hg.slitaz.org/ |
pankso@112 | 33 #up-doc Update template for http://doc.slitaz.org/\n" |
pankso@54 | 34 } |
pankso@54 | 35 |
pankso@54 | 36 case "$1" in |
pankso@54 | 37 stats|-s) |
pankso@54 | 38 # Report some stats |
pankso@54 | 39 clear |
pankso@54 | 40 cat << EOF |
pankso@54 | 41 |
pankso@54 | 42 Connected user |
pankso@54 | 43 -------------- |
pankso@54 | 44 `who` |
pankso@54 | 45 |
pankso@54 | 46 System usage |
pankso@54 | 47 ------------ |
pankso@54 | 48 `df -h` |
pankso@54 | 49 |
pankso@54 | 50 `free` |
pankso@54 | 51 |
pankso@54 | 52 EOF |
pankso@54 | 53 ;; |
pankso@54 | 54 chroot|-c) |
pankso@54 | 55 # Move a user into a new chroot location |
pankso@54 | 56 if [ -s $2/bin/sh ] && grep -qs $3: /etc/password ; then |
pankso@54 | 57 grep -q ^chroot /etc/busybox.conf || |
pankso@54 | 58 echo 'chroot = ssx root.root' >> /etc/busybox.conf |
pankso@54 | 59 [ -s /bin/chrootsh ] || cat > /bin/chrootsh << EOF |
pankso@54 | 60 #!/bin/sh |
pankso@54 | 61 |
pankso@54 | 62 #case " \$@ " in |
pankso@54 | 63 #*rsync*) exec /bin/sh "\$@" ;; |
pankso@54 | 64 #esac |
pankso@54 | 65 |
pankso@54 | 66 case "\$USER" in |
pankso@54 | 67 pankso) exec /bin/sh "\$@" ;; |
pankso@54 | 68 *) exec /usr/sbin/chroot $2 /bin/chrootsh "\$@" ;; |
pankso@54 | 69 esac |
pankso@54 | 70 EOF |
pankso@54 | 71 [ -s $2/bin/chrootsh ] || cat > $2/bin/chrootsh << EOF |
pankso@54 | 72 #!/bin/sh |
pankso@54 | 73 |
pankso@54 | 74 export SHELL='/bin/sh' |
pankso@54 | 75 cd \$HOME |
pankso@54 | 76 . /etc/profile |
pankso@54 | 77 exec /bin/sh "\$@" |
pankso@54 | 78 EOF |
pankso@54 | 79 chmod +x /bin/chrootsh $2/bin/chrootsh |
pankso@54 | 80 base=$(awk -F: "/^$3:/ { print \$6 }" /etc/passwd) |
pankso@54 | 81 target=$base |
pankso@54 | 82 while [ -L $target ]; do |
pankso@54 | 83 target=$(readlink $target) |
pankso@54 | 84 done |
pankso@54 | 85 mv $target $2/$base |
pankso@54 | 86 [ -L $base ] && rm -f $base |
pankso@54 | 87 ln -s $2/$base $base |
pankso@54 | 88 if ! grep -q ^$3: $2/etc/passwd ; then |
pankso@54 | 89 grep ^$3: /etc/passwd >> $2/etc/passwd |
pankso@54 | 90 grep ^$3: /etc/shadow >> $2/etc/shadow fi |
pankso@54 | 91 fi |
pankso@54 | 92 else |
pankso@54 | 93 cat << EOF |
pankso@54 | 94 Usage: $0 $1 newchroot user |
pankso@54 | 95 Move a user in a new chroot location |
pankso@54 | 96 EOF |
pankso@68 | 97 fi ;; |
pankso@54 | 98 backup|-b) |
pankso@54 | 99 # Backup config files and SQL db. |
pankso@68 | 100 echo "TODO" ;; |
pankso@112 | 101 up-www) |
pankso@54 | 102 # Update website from repo. |
pankso@54 | 103 echo -e "\nUpdating: www.slitaz.org..." |
pankso@104 | 104 cd $WEBSITE && hg pull -u |
pankso@54 | 105 echo "" ;; |
pankso@112 | 106 up-tank) |
pankso@54 | 107 # Update Tank web interface: http://tank.slitaz.org/ |
pankso@54 | 108 echo -e "\nUpdating: tank.slitaz.org..." |
pankso@54 | 109 cd $REPOS/slitaz-forge |
pankso@104 | 110 hg pull -u |
pankso@104 | 111 rm -rf $VHOST/*.* $VHOST/images |
pankso@54 | 112 cp -a tank/web/* $VHOST |
pankso@54 | 113 echo "" ;; |
pankso@112 | 114 up-people) |
pankso@54 | 115 # Update People web interface: http://people.slitaz.org/ |
pankso@54 | 116 echo -e "\nUpdating: people.slitaz.org..." |
pankso@54 | 117 cd $REPOS/slitaz-forge |
pankso@104 | 118 hg pull -u |
pankso@54 | 119 rm -rf $WWW/people/* |
pankso@54 | 120 cp -a people/* $WWW/people |
pankso@54 | 121 echo "" ;; |
pankso@106 | 122 up-pro) |
pankso@106 | 123 # Update Pro website: http://pro.slitaz.org/ |
pankso@106 | 124 echo -e "\nUpdating: pro.slitaz.org..." |
pankso@106 | 125 cd $REPOS/slitaz-forge |
pankso@106 | 126 hg pull -u |
pankso@106 | 127 rm -rf $WWW/pro/* |
pankso@106 | 128 cp -a pro/* $WWW/pro |
pankso@106 | 129 echo "" ;; |
pankso@112 | 130 up-boot) |
pankso@54 | 131 # Update Web Boot interface: http://boot.slitaz.org/ |
pankso@54 | 132 echo -e "\nUpdating: boot.slitaz.org..." |
pankso@54 | 133 cd $REPOS/slitaz-forge |
pankso@104 | 134 hg pull -u |
pankso@54 | 135 rm -rf $WWW/boot/* |
pankso@54 | 136 cp -a boot/* $WWW/boot |
pankso@54 | 137 echo "" ;; |
pankso@112 | 138 up-cook) |
pankso@112 | 139 # Update Web Boot interface: http://boot.slitaz.org/ |
pankso@112 | 140 echo -e "\nUpdating: cook.slitaz.org..." |
pankso@112 | 141 cd $REPOS/slitaz-forge |
pankso@112 | 142 hg pull -u |
pankso@112 | 143 cp -a cook/* $WWW/cook |
pankso@112 | 144 cp -a cook/* $WWW/cook/undigest |
pankso@112 | 145 echo "" ;; |
pankso@112 | 146 up-hg) |
paul@73 | 147 # Since Tank runs stable and we update the style in slitaz-dev-tools |
paul@73 | 148 # the cooking package is unbuildable because it uses the new Tazwok function |
pankso@68 | 149 # with mercurial|* |
pankso@69 | 150 echo -e "\nUpdating Mercurial template..." |
pankso@104 | 151 cd $REPOS/slitaz-dev-tools && hg pull -u |
pankso@68 | 152 cp -a slitaz-mercurial-style/* $PYTHON_LIB/site-packages/mercurial |
pankso@68 | 153 chown -R root.root $PYTHON_LIB/site-packages/mercurial/templates |
pankso@68 | 154 echo "" ;; |
pankso@112 | 155 up-doc) |
pankso@69 | 156 # Update Wiki doc template from Hg: http://doc.slitaz.org/ |
pankso@69 | 157 echo -e "\nUpdating Wiki documentation template..." |
pankso@104 | 158 cd $REPOS/slitaz-forge && hg pull -u |
pankso@69 | 159 cp -a doc/lib/tpl/* $DOC_LIB/tpl |
pankso@69 | 160 echo "" ;; |
pankso@112 | 161 up-stats) |
pankso@54 | 162 echo -e "\nUpdating all awstats databases..." |
pankso@112 | 163 for vh in pro boot cook |
pankso@54 | 164 do |
pankso@54 | 165 /var/www/cgi-bin/awstats.pl -config=$vh.slitaz.org |
pankso@54 | 166 done |
pankso@54 | 167 echo "" ;; |
pankso@112 | 168 adduser) |
paul@73 | 169 # On Tank /etc/skel is empty to let tank handle default user |
pankso@54 | 170 # files. |
pankso@54 | 171 echo "" |
pankso@54 | 172 if [ -n "$2" ]; then |
pankso@54 | 173 user=$2 |
pankso@54 | 174 else |
pankso@54 | 175 echo -n "User name: " && read user |
pankso@54 | 176 fi |
pankso@54 | 177 if [ -d /home/$user ]; then |
pankso@54 | 178 echo -e "User $user already exists...\n" && exit 1 |
pankso@54 | 179 fi |
pankso@54 | 180 echo "Adding user: $user" |
paul@73 | 181 # adduser -s /bin/sh -g "SliTaz User" -G users -h /home/$user $user # for cooking |
pankso@54 | 182 adduser $user |
pankso@54 | 183 # HG access |
pankso@54 | 184 echo -n "Hg password: " && read passwd |
pankso@54 | 185 echo "$user:$passwd" >> /etc/lighttpd/plain.passwd |
pankso@54 | 186 # Public dir at http://people.slitaz.org/~$user/ |
pankso@75 | 187 cp -a /usr/share/tank/Public/* /home/$user/Public |
pankso@59 | 188 sed -i s/'%user%'/"$user"/ /home/$user/Public/index.html |
pankso@54 | 189 # README and empty Shell profile |
pankso@54 | 190 cp -a /usr/share/tank/README /home/$user/ |
pankso@54 | 191 cat > /home/$user/.profile << EOF |
pankso@54 | 192 # ~/.profile: Executed by Bourne-compatible login SHells. |
pankso@54 | 193 # |
pankso@54 | 194 EOF |
pankso@54 | 195 chown -R $user.$user /home/$user |
pankso@54 | 196 echo -e "Done\n" ;; |
pankso@54 | 197 *) |
pankso@54 | 198 usage ;; |
pankso@54 | 199 esac |
pankso@54 | 200 exit 0 |