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

Fix i18n
author Christophe Lincoln <pankso@slitaz.org>
date Sat Jan 25 14:21:08 2014 +0100 (2014-01-25)
parents e663d20d6b65
children 57a95ac66802
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@61 63 cp -a $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@48 114 if [ "$(POST fastboot)" != "" ]; then
pascal@48 115 echo "Fast boot conversion" >> $log
pascal@48 116 notify "$(gettext "Fast boot conversion")"
pascal@48 117 mkdir -p $tmpdir/slitaz-$id/rootfs/etc/tazlito 2> /dev/null
pascal@50 118 # lzo decompression crash with 2.6.37...
pascal@50 119 false && cat > $tmpdir/slitaz-$id/rootfs/etc/tazlito/fastboot.iso <<EOT
pascal@48 120 [ -x /usr/bin/lzop ] || tazpkg get-install lzop
pascal@48 121 find * | cpio -o -H newc | lzop -9 > \$1/boot/rootfs.gz
pascal@48 122 EOT
pascal@50 123 cat > $tmpdir/slitaz-$id/rootfs/etc/tazlito/fastboot.iso <<EOT
pascal@50 124 find * | cpio -o -H newc | gzip -9 > \$1/boot/rootfs.gz
pascal@50 125 [ -x /usr/bin/advdef ] || tazpkg get-install advancecomp
pascal@50 126 [ -x /usr/bin/advdef ] && advdef -z4 \$1/boot/rootfs.gz
pascal@50 127 EOT
pascal@48 128 cat > $tmpdir/slitaz-$id/rootfs/etc/tazlito/fastboot.rootfs <<EOT
pascal@48 129 sed -i 's/FAST_BOOT_X="no"/FAST_BOOT_X="yes"/' etc/rcS.conf
pascal@48 130 EOT
pascal@48 131 fi
pascal@48 132
pascal@46 133 if [ "$(POST loram)" != "none" ] && [ "$(POST loram)" != "" ]; then
pascal@46 134 echo "Low RAM conversion: $(POST loram)" >> $log
pascal@46 135 notify "$(gettext "Low RAM conversion:") $(POST loram)"
pascal@32 136 mkdir -p $tmpdir/slitaz-$id/rootfs/etc/tazlito 2> /dev/null
pascal@48 137 rm -f $tmpdir/slitaz-$id/rootfs/etc/tazlito/fastboot.iso 2> /dev/null
pascal@32 138 cat > $tmpdir/slitaz-$id/rootfs/etc/tazlito/loram.final <<EOT
pascal@32 139 cd \$1/..
pascal@32 140 iso=\$(ls *.iso)
pascal@32 141 if [ -s "\$iso" ]; then
pascal@32 142 echo "Converting \$iso to low ram iso..."
pascal@46 143 yes y | tazlito build-loram \$iso \$iso.\$\$ $(POST loram)
pascal@32 144 mv -f \$iso.\$\$ \$iso
pascal@32 145 md5sum \$iso > \${iso%.iso}.md5
pascal@32 146 echo "================================================================================"
pascal@32 147 fi
pascal@32 148 cd - > /dev/null
pascal@32 149 EOT
pascal@32 150 fi
pascal@32 151
pankso@7 152 #
paul@9 153 # Source receipt and display page with additional rootfs or file upload.
pankso@7 154 #
pankso@7 155 . $tmpdir/slitaz-$id/receipt
pankso@7 156 cat << EOT
pankso@7 157 <h2>Rootfs</h2>
pankso@7 158 <form method="post" action="rootfs.cgi" enctype="multipart/form-data">
pankso@7 159
pankso@7 160 <p>
pankso@7 161 SliTaz root filesystem modification can be done via an easy to use form,
paul@9 162 a single tarball or by uploading files one by one in the wanted directory.
pankso@7 163 </p>
pankso@7 164
pankso@7 165 <h3>$(gettext "Easy customization")</h3>
pankso@7 166
pankso@25 167 <p>
pankso@25 168 $(gettext "Desktop Wallpaper in JPG format"):
pankso@25 169 <p>
pankso@25 170
pankso@25 171 <div class="inputfile">
pankso@25 172 <div class="inputhide">
pankso@25 173 <input type="file" name="wallpaper" size="48" />
pankso@25 174 </div>
pankso@25 175 </div>
pankso@36 176 <input type="submit" value="Upload Image" style="margin-left: 6px;" />
pankso@25 177
pankso@25 178 <p>
paul@45 179 $(gettext "Files on user desktop such as README, desktop files or documentation.
paul@45 180 The files will be copied in the Home directory of each new user. SliTaz creates
paul@45 181 the default Live user at boot. Allowed files and extentions are:") README
pankso@37 182 .desktop .html .png .jpg:
pankso@25 183 <p>
pankso@25 184
pankso@25 185 <div class="inputfile">
pankso@25 186 <div class="inputhide">
pankso@37 187 <input type="file" name="desktop" size="48" />
pankso@25 188 </div>
pankso@25 189 </div>
pankso@36 190 <input type="submit" value="Upload File" style="margin-left: 6px;" />
pankso@25 191
pankso@7 192
pankso@7 193 <h3>$(gettext "Rootfs tarball")</h3>
pankso@7 194 <p>
pankso@7 195 The files in the rootfs archive must have the same directory structure
paul@9 196 as any standard SliTaz or Linux system. For example if you wish to
pankso@7 197 have a custom boot configuration file, you will have: rootfs/etc/rcS.conf.
paul@9 198 Accepted tarball formats are: <strong>tar.gz tar.bz2 tar.lzma</strong>
pankso@7 199 and the archived directory must be named rootfs with a valid file system
pankso@7 200 hierachy such as: /usr/bin /etc /var/www
pankso@7 201 </p>
pankso@7 202
pankso@36 203 <div class="inputfile">
pankso@36 204 <div class="inputhide">
pankso@36 205 <input type="file" name="tarball" size="48" />
pankso@25 206 </div>
pankso@36 207 </div>
pankso@36 208 <input type="submit" value="Upload rootfs" style="margin-left: 6px;" />
pascal@32 209
paul@45 210 <h3>$(gettext "ISO image conversion")</h3>
pascal@32 211
pascal@48 212 <input type="checkbox" name="fastboot" />
pascal@48 213 $(gettext "Fast boot") -
pascal@32 214 $(gettext "Low RAM support"):
pascal@32 215 <select name="loram">
pascal@32 216 <option value="none">$(gettext "No")</option>
pascal@32 217 <option value="ram">$(gettext "In RAM only")</option>
pascal@32 218 <option value="smallcdrom">$(gettext "Small CDROM or RAM")</option>
pascal@32 219 <option value="cdrom">$(gettext "Large CDROM or RAM")</option>
pascal@32 220 </select>
pascal@32 221 <input type="submit" value="Convert" />
pankso@36 222
pankso@36 223 <input type="hidden" name="id" value="$id" />
pankso@7 224 </form>
pankso@7 225
pankso@7 226 $([ "$tarball" ] && tarball_handler)
pankso@7 227
pankso@7 228 <pre>
pankso@7 229 Uniq ID : $id
pankso@7 230 Flavor : $FLAVOR
pankso@7 231 Short desc : $SHORT_DESC
pankso@7 232 </pre>
pankso@7 233 <div class="next">
pankso@7 234 <form method="get" action="./">
pankso@7 235 <input type="hidden" name="id" value="$id" />
pankso@7 236 <input type="submit" name="gen" value="$(gettext "Continue")">
pankso@7 237 </form>
pankso@7 238 </div>
pankso@7 239 EOT
pankso@7 240
pankso@7 241 # HTML footer.
pankso@7 242 cat lib/footer.html
pankso@7 243
pankso@7 244 exit 0