slitaz-forge annotate tank/tank @ rev 104

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