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

merge
author Christophe Lincoln <pankso@slitaz.org>
date Tue Mar 27 11:32:58 2012 +0200 (2012-03-27)
parents b870dbff832c
children 15d286d476f4
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
pascal@32 62 mkdir -p $tmpdir/slitaz-$id/rootfs
pascal@32 63 mv $upload/rootfs/* $tmpdir/slitaz-$id/rootfs
pascal@32 64 rm -rf $tmpdir/slitaz-$id/upload-* $upload/rootfs
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 tmpname="$(FILE wallpaper tmpname)"
pankso@7 77 wallpaper="$(FILE wallpaper name)"
pankso@7 78 size="$(FILE wallpaper size)"
pankso@7 79 if echo $wallpaper | fgrep -q .jpg; then
pankso@7 80 images=$tmpdir/slitaz-$id/rootfs/usr/share/images
pankso@7 81 mkdir -p $images
pankso@7 82 mv $tmpname $images/slitaz-background.jpg
pankso@7 83 chmod a+r $images/*.jpg
pankso@25 84 notify "$(gettext "Added image:") $wallpaper ($size Bytes)"
pankso@7 85 else
pankso@7 86 notify "$(gettext "Unsupported image format")" "error"
pankso@7 87 fi ;;
pankso@37 88 *\ desktop\ *)
pankso@25 89 id="$(POST id)"
pankso@37 90 tmpname="$(FILE desktop tmpname)"
pankso@37 91 file="$(FILE desktop name)"
pankso@37 92 size="$(FILE desktop size)"
pankso@25 93 path="$tmpdir/slitaz-$id/rootfs/etc/skel/Desktop"
pankso@25 94 mkdir -p $path
pankso@25 95 case "$file" in
pankso@25 96 *README*|*.desktop|*.html|*.png|*.jpg)
pankso@25 97 mv $tmpname $path/$file
pankso@37 98 chmod a+r $path/$file
pankso@25 99 notify "$(gettext "Added file:") $file ($size Bytes)" ;;
pankso@25 100 *)
pankso@25 101 notify "$(gettext "Unsupported file type")" "error" ;;
pankso@25 102 esac
pankso@25 103 ;;
pankso@7 104 *\ tarball\ *)
pankso@7 105 tmpname="$(FILE tarball tmpname)"
pankso@7 106 tarball="$(FILE tarball name)"
pankso@7 107 size="$(FILE tarball size)" ;;
pankso@7 108 *)
pankso@7 109 id="$(GET id)" ;;
pankso@7 110 esac
pankso@7 111
pascal@32 112 [ -n "$id" ] || id="$(POST id)"
pascal@32 113
pascal@35 114 if [ "$(GET loram)" != "none" ] && [ "$(GET loram)" != "" ]; then
pankso@34 115 echo "Low RAM convertion: $(GET loram)" >> $log
pankso@34 116 notify "$(gettext "Low RAM convertion:") $(GET loram)"
pascal@32 117 mkdir -p $tmpdir/slitaz-$id/rootfs/etc/tazlito 2> /dev/null
pascal@32 118 cat > $tmpdir/slitaz-$id/rootfs/etc/tazlito/loram.final <<EOT
pascal@32 119 cd \$1/..
pascal@32 120 iso=\$(ls *.iso)
pascal@32 121 if [ -s "\$iso" ]; then
pascal@32 122 echo "Converting \$iso to low ram iso..."
pascal@32 123 yes y | tazlito build-loram \$iso $iso.\$\$ $(GET loram)
pascal@32 124 mv -f \$iso.\$\$ \$iso
pascal@32 125 md5sum \$iso > \${iso%.iso}.md5
pascal@32 126 echo "================================================================================"
pascal@32 127 fi
pascal@32 128 cd - > /dev/null
pascal@32 129 EOT
pascal@32 130 fi
pascal@32 131
pankso@7 132 #
paul@9 133 # Source receipt and display page with additional rootfs or file upload.
pankso@7 134 #
pankso@7 135 . $tmpdir/slitaz-$id/receipt
pankso@7 136 cat << EOT
pankso@7 137 <h2>Rootfs</h2>
pankso@7 138 <form method="post" action="rootfs.cgi" enctype="multipart/form-data">
pankso@7 139
pankso@7 140 <p>
pankso@7 141 SliTaz root filesystem modification can be done via an easy to use form,
paul@9 142 a single tarball or by uploading files one by one in the wanted directory.
pankso@7 143 </p>
pankso@7 144
pankso@7 145 <h3>$(gettext "Easy customization")</h3>
pankso@7 146
pankso@25 147 <p>
pankso@25 148 $(gettext "Desktop Wallpaper in JPG format"):
pankso@25 149 <p>
pankso@25 150
pankso@25 151 <div class="inputfile">
pankso@25 152 <div class="inputhide">
pankso@25 153 <input type="file" name="wallpaper" size="48" />
pankso@25 154 </div>
pankso@25 155 </div>
pankso@36 156 <input type="submit" value="Upload Image" style="margin-left: 6px;" />
pankso@25 157
pankso@25 158 <p>
pankso@25 159 $(gettext "Files on user desktop such as README, desktop file or documenatation.
pankso@37 160 The file will be copied in the Home directory of each new user. SliTaz create
pankso@37 161 the default Live user at boot. Allowed file and extentions are:") README
pankso@37 162 .desktop .html .png .jpg:
pankso@25 163 <p>
pankso@25 164
pankso@25 165 <div class="inputfile">
pankso@25 166 <div class="inputhide">
pankso@37 167 <input type="file" name="desktop" size="48" />
pankso@25 168 </div>
pankso@25 169 </div>
pankso@36 170 <input type="submit" value="Upload File" style="margin-left: 6px;" />
pankso@25 171
pankso@7 172
pankso@7 173 <h3>$(gettext "Rootfs tarball")</h3>
pankso@7 174 <p>
pankso@7 175 The files in the rootfs archive must have the same directory structure
paul@9 176 as any standard SliTaz or Linux system. For example if you wish to
pankso@7 177 have a custom boot configuration file, you will have: rootfs/etc/rcS.conf.
paul@9 178 Accepted tarball formats are: <strong>tar.gz tar.bz2 tar.lzma</strong>
pankso@7 179 and the archived directory must be named rootfs with a valid file system
pankso@7 180 hierachy such as: /usr/bin /etc /var/www
pankso@7 181 </p>
pankso@7 182
pankso@36 183 <div class="inputfile">
pankso@36 184 <div class="inputhide">
pankso@36 185 <input type="file" name="tarball" size="48" />
pankso@25 186 </div>
pankso@36 187 </div>
pankso@36 188 <input type="submit" value="Upload rootfs" style="margin-left: 6px;" />
pascal@32 189
pascal@32 190 <h3>$(gettext "ISO image convertion")</h3>
pascal@32 191
pascal@32 192 $(gettext "Low RAM support"):
pascal@32 193 <select name="loram">
pascal@32 194 <option value="none">$(gettext "No")</option>
pascal@32 195 <option value="ram">$(gettext "In RAM only")</option>
pascal@32 196 <option value="smallcdrom">$(gettext "Small CDROM or RAM")</option>
pascal@32 197 <option value="cdrom">$(gettext "Large CDROM or RAM")</option>
pascal@32 198 </select>
pascal@32 199 <input type="submit" value="Convert" />
pankso@36 200
pankso@36 201 <input type="hidden" name="id" value="$id" />
pankso@7 202 </form>
pankso@7 203
pankso@7 204 $([ "$tarball" ] && tarball_handler)
pankso@7 205
pankso@7 206 <pre>
pankso@7 207 Uniq ID : $id
pankso@7 208 Flavor : $FLAVOR
pankso@7 209 Short desc : $SHORT_DESC
pankso@7 210 </pre>
pankso@7 211 <div class="next">
pankso@7 212 <form method="get" action="./">
pankso@7 213 <input type="hidden" name="id" value="$id" />
pankso@7 214 <input type="submit" name="gen" value="$(gettext "Continue")">
pankso@7 215 </form>
pankso@7 216 </div>
pankso@7 217 EOT
pankso@7 218
pankso@7 219 # HTML footer.
pankso@7 220 cat lib/footer.html
pankso@7 221
pankso@7 222 exit 0