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 |