slitaz-pizza annotate web/rootfs.cgi @ rev 14

Add Gravatar support to flavor status page
author Christophe Lincoln <pankso@slitaz.org>
date Mon Mar 26 13:05:04 2012 +0200 (2012-03-26)
parents 8b324cb2c5e2
children a666d22cd751
rev   line source
pankso@7 1 #!/bin/sh
pankso@7 2 #
paul@9 3 # SliTaz Pizza CGI/web interface - Let's have a pizza :-)
pankso@7 4 # SliTaz rootfs step
pankso@7 5 #
pankso@7 6
pankso@7 7 . lib/libpizza
pankso@7 8 log="$tmpdir/slitaz-$id/distro.log"
pankso@7 9
pankso@7 10 # Internationalization: $(gettext "")
pankso@7 11 . /usr/bin/gettext.sh
pankso@7 12 TEXTDOMAIN='pizza'
pankso@7 13 export TEXTDOMAIN
pankso@7 14
pankso@7 15 # Handle rootfs.* file upload.
pankso@7 16 tarball_handler() {
pankso@7 17 echo "<pre>"
pankso@7 18 echo "File name : $tarball"
pankso@7 19 echo "File size : $size Bytes"
pankso@7 20 gettext "Moving rootfs tarball to slitaz-$id"
pankso@7 21 upload=$tmpdir/slitaz-$id/upload-$$
pankso@7 22 mkdir -p $upload && cd $upload
pankso@7 23 mv $tmpname "$upload/$tarball" && rm -rf $(dirname $tmpname)
pankso@7 24 chmod a+r $upload/$tarball
pankso@7 25 status
pankso@7 26
paul@9 27 # Extract into the tmp upload dir.
pankso@7 28 gettext "Extracting archive for sanity checks..."
pankso@7 29 case "$tarball" in
pankso@7 30 *.tar.gz) tar xzf $tarball && status ;;
pankso@7 31 *.tar.bz2) tar xjf $tarball && status ;;
pankso@7 32 *.tar.lzma) tar xaf $tarball && status ;;
pankso@7 33 *) echo && error "Unsupported tarball format" && rm -rf $upload
pankso@7 34 esac
pankso@7 35
pankso@7 36 # Upload dir is removed if bad tarball so we stop here. Now be a bit
pankso@7 37 # restrictive using only rootfs as archive name and check FSH in root.
pankso@7 38 # Dont allow files in /dev /proc /sys /tmp /mnt
pankso@7 39 if [ -d "$upload/rootfs" ]; then
pankso@7 40 gettext "Checking Filesystem Standard..."
pankso@7 41 for i in $(ls $upload/rootfs)
pankso@7 42 do
pankso@7 43 case "$i" in
pankso@7 44 bin|boot|etc|home|init|lib|root|sbin|usr|var) continue ;;
pankso@7 45 *) echo "Bad FSH path for: $i" && rm -rf $upload ;;
pankso@7 46 esac
pankso@7 47 done && status
pankso@7 48 # Dont allow too big rootfs content.
pankso@7 49 size=$(du -s $upload/rootfs | awk '{print $1}')
pankso@7 50 gettext "Checking uploaded rootfs size..."
pankso@7 51 if [ "$size" -lt "$MAX_UPLOAD" ]; then
pankso@7 52 status
pankso@7 53 else
pankso@7 54 echo && error "Tarball is too big"
pankso@7 55 rm -rf $upload
pankso@7 56 fi
pankso@7 57 fi
pankso@7 58
pankso@7 59 # So now it time to move the addfile to flavor files.
pankso@7 60 if [ -d "$upload/rootfs" ]; then
paul@9 61 echo "Additional rootfs: accepted" | tee -a $log
pankso@7 62 mkdir -p $tmpdir/slitaz-$id
pankso@7 63 mv $upload/rootfs $tmpdir/slitaz-$id
pankso@7 64 rm -rf $tmpdir/slitaz-$id/upload-*
pankso@7 65 fi
pankso@7 66 echo "</pre>"
pankso@7 67 rm -rf $upload
pankso@7 68 }
pankso@7 69
pankso@7 70 #
pankso@7 71 # Actions
pankso@7 72 #
pankso@7 73
pankso@7 74 case " $(FILE) " in
pankso@7 75 *\ wallpaper\ *)
pankso@7 76 id="$(POST id)"
pankso@7 77 tmpname="$(FILE wallpaper tmpname)"
pankso@7 78 wallpaper="$(FILE wallpaper name)"
pankso@7 79 size="$(FILE wallpaper size)"
pankso@7 80 if echo $wallpaper | fgrep -q .jpg; then
pankso@7 81 images=$tmpdir/slitaz-$id/rootfs/usr/share/images
pankso@7 82 mkdir -p $images
pankso@7 83 mv $tmpname $images/slitaz-background.jpg
pankso@7 84 chmod a+r $images/*.jpg
pankso@7 85 notify "$(gettext "Added image:") $wallpaper ($size Bytes)" "info"
pankso@7 86 else
pankso@7 87 notify "$(gettext "Unsupported image format")" "error"
pankso@7 88 fi ;;
pankso@7 89 *\ tarball\ *)
pankso@7 90 id="$(POST id)"
pankso@7 91 tmpname="$(FILE tarball tmpname)"
pankso@7 92 tarball="$(FILE tarball name)"
pankso@7 93 size="$(FILE tarball size)" ;;
pankso@7 94 *)
pankso@7 95 id="$(GET id)" ;;
pankso@7 96 esac
pankso@7 97
pankso@7 98 #
paul@9 99 # Source receipt and display page with additional rootfs or file upload.
pankso@7 100 #
pankso@7 101 . $tmpdir/slitaz-$id/receipt
pankso@7 102 cat << EOT
pankso@7 103 <h2>Rootfs</h2>
pankso@7 104 <form method="post" action="rootfs.cgi" enctype="multipart/form-data">
pankso@7 105
pankso@7 106 <p>
pankso@7 107 SliTaz root filesystem modification can be done via an easy to use form,
paul@9 108 a single tarball or by uploading files one by one in the wanted directory.
pankso@7 109 </p>
pankso@7 110
pankso@7 111 <h3>$(gettext "Easy customization")</h3>
pankso@7 112
pankso@7 113 $(gettext "Desktop Wallpaper"):
pankso@7 114 <input type="file" name="wallpaper" size="40" />
pankso@7 115 <input type="submit" value="Upload" />
pankso@7 116
pankso@7 117 <h3>$(gettext "Rootfs tarball")</h3>
pankso@7 118 <p>
pankso@7 119 The files in the rootfs archive must have the same directory structure
paul@9 120 as any standard SliTaz or Linux system. For example if you wish to
pankso@7 121 have a custom boot configuration file, you will have: rootfs/etc/rcS.conf.
paul@9 122 Accepted tarball formats are: <strong>tar.gz tar.bz2 tar.lzma</strong>
pankso@7 123 and the archived directory must be named rootfs with a valid file system
pankso@7 124 hierachy such as: /usr/bin /etc /var/www
pankso@7 125 </p>
pankso@7 126
pankso@7 127 Rootfs tarball:
pankso@7 128 <input type="file" name="tarball" size="40" />
pankso@7 129 <input type="hidden" name="id" value="$id" />
pankso@7 130 <input type="submit" value="Upload" />
pankso@7 131 </form>
pankso@7 132
pankso@7 133 $([ "$tarball" ] && tarball_handler)
pankso@7 134
pankso@7 135 <pre>
pankso@7 136 Uniq ID : $id
pankso@7 137 Flavor : $FLAVOR
pankso@7 138 Short desc : $SHORT_DESC
pankso@7 139 </pre>
pankso@7 140 <div class="next">
pankso@7 141 <form method="get" action="./">
pankso@7 142 <input type="hidden" name="id" value="$id" />
pankso@7 143 <input type="submit" name="gen" value="$(gettext "Continue")">
pankso@7 144 </form>
pankso@7 145 </div>
pankso@7 146 EOT
pankso@7 147
pankso@7 148 # HTML footer.
pankso@7 149 cat lib/footer.html
pankso@7 150
pankso@7 151 exit 0