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 |