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

Fix again help (rename to helper and it works...) up skel
author Christophe Lincoln <pankso@slitaz.org>
date Thu Mar 16 18:45:22 2017 +0100 (2017-03-16)
parents 57a95ac66802
children
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>"
al@108 18 eval_gettext 'File name: $tarball'
al@108 19 eval_gettext 'File size: $size Bytes'
al@108 20 eval_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
al@108 26
paul@9 27 # Extract into the tmp upload dir.
al@108 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 ;;
al@108 33 *) echo; error 'Unsupported tarball format'; rm -rf $upload
pankso@7 34 esac
al@108 35
al@108 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.
al@108 38 # Don't allow files in /dev /proc /sys /tmp /mnt
pankso@7 39 if [ -d "$upload/rootfs" ]; then
al@108 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 ;;
al@108 45 *) eval_gettext 'Bad FSH path for: $i'; rm -rf $upload ;;
pankso@7 46 esac
pankso@7 47 done && status
al@108 48 # Don't allow too big rootfs content.
pankso@7 49 size=$(du -s $upload/rootfs | awk '{print $1}')
al@108 50 gettext 'Checking uploaded rootfs size...'
pankso@7 51 if [ "$size" -lt "$MAX_UPLOAD" ]; then
pankso@7 52 status
pankso@7 53 else
al@108 54 echo; error 'Tarball is too big'
pankso@7 55 rm -rf $upload
pankso@7 56 fi
pankso@7 57 fi
pankso@7 58
al@108 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
al@108 84 notify "$(eval_gettext 'Added image: $wallpaper ($size Bytes)')"
pankso@7 85 else
al@108 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
al@108 96 *README*|*.desktop|*.html|*.png|*.jpg)
pankso@25 97 mv $tmpname $path/$file
pankso@37 98 chmod a+r $path/$file
al@108 99 notify "$(gettext 'Added file: $file ($size Bytes)')" ;;
al@108 100 *)
al@108 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
al@108 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
al@108 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
al@108 157 <h2>RootFS</h2>
pankso@7 158 <form method="post" action="rootfs.cgi" enctype="multipart/form-data">
pankso@7 159
pankso@7 160 <p>
al@108 161 $(gettext "SliTaz root filesystem modification can be done via an easy to use form, \
al@108 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>
al@108 176 <input type="submit" value="$(gettext 'Upload Image')" style="margin-left: 6px;" />
pankso@25 177
pankso@25 178 <p>
al@108 179 $(gettext "Files on user desktop such as README, desktop files or documentation. \
al@108 180 The files will be copied in the Home directory of each new user. SliTaz creates \
paul@106 181 the default Live user at boot. Allowed files and extensions 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>
al@108 190 <input type="submit" value="$(gettext 'Upload File')" style="margin-left: 6px;" />
pankso@25 191
pankso@7 192
al@108 193 <h3>$(gettext "RootFS tarball")</h3>
pankso@7 194 <p>
al@108 195 $(gettext "The files in the rootfs archive must have the same directory structure \
al@108 196 as any standard SliTaz or Linux system. For example if you wish to \
al@108 197 have a custom boot configuration file, you will have: rootfs/etc/rcS.conf. \
al@108 198 Accepted tarball formats are: <strong>tar.gz tar.bz2 tar.lzma</strong> \
al@108 199 and the archived directory must be named rootfs with a valid file system \
al@108 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>
al@108 208 <input type="submit" value="$(gettext '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>
al@108 218 <option value="smallcdrom">$(gettext "Small CD-ROM or RAM")</option>
al@108 219 <option value="cdrom">$(gettext "Large CD-ROM or RAM")</option>
pascal@32 220 </select>
al@108 221 <input type="submit" value="$(gettext '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>
al@108 229 $(gettext 'Uniq ID :') $id
al@108 230 $(gettext 'Flavor :') $FLAVOR
al@108 231 $(gettext '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" />
al@108 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