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