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 |