tazlito annotate live.cgi @ rev 382
live.cgi: align submenu
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue May 05 09:11:31 2015 +0200 (2015-05-05) |
parents | 980becc97bff |
children | 3f451953e917 |
rev | line source |
---|---|
pascal@320 | 1 #!/bin/sh |
pascal@320 | 2 # |
pascal@320 | 3 # CGI interface for SliTaz Live systems using Tazlito and TazUSB. |
pascal@320 | 4 # |
pascal@320 | 5 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License |
pascal@320 | 6 # |
pascal@320 | 7 |
pascal@320 | 8 if [ "$1" == "call" ]; then |
pascal@320 | 9 case "$2" in |
pascal@320 | 10 merge_cleanup) |
pascal@320 | 11 mv -f $3.merged $3 |
pascal@320 | 12 for i in $4/*; do |
pascal@320 | 13 umount -d $i |
pascal@320 | 14 done |
pascal@320 | 15 rm -rf $4 |
pascal@320 | 16 exit ;; |
pascal@320 | 17 esac |
pascal@320 | 18 fi |
pascal@320 | 19 |
pascal@320 | 20 # Common functions from libtazpanel |
pascal@320 | 21 . lib/libtazpanel |
pascal@320 | 22 get_config |
pascal@320 | 23 header |
pascal@320 | 24 |
pascal@382 | 25 #------ |
pascal@382 | 26 # menu |
pascal@382 | 27 #------ |
pascal@382 | 28 |
pascal@382 | 29 case "$1" in |
pascal@382 | 30 menu) |
pascal@382 | 31 TEXTDOMAIN_original=$TEXTDOMAIN |
pascal@382 | 32 export TEXTDOMAIN='tazlito' |
pascal@382 | 33 cat <<EOT |
pascal@382 | 34 <li><a data-icon="cd" href="live.cgi" data-root>$(gettext 'Live')</a> |
pascal@382 | 35 <menu> |
pascal@382 | 36 <li><a data-icon="" href="live.cgi?liveusb" data-root>$(gettext 'Create a live USB key')</a></li> |
pascal@382 | 37 <li><a data-icon="" href="live.cgi#liveiso" data-root>$(gettext 'Create a live CD-ROM')</a></li> |
pascal@382 | 38 <li><a data-icon="" href="live.cgi#hybrid" data-root>$(gettext 'Create a hybrid ISO')</a></li> |
pascal@382 | 39 <li><a data-icon="" href="live.cgi#loram" data-root>$(gettext 'Convert ISO to loram')</a></li> |
pascal@382 | 40 <li><a data-icon="" href="live.cgi#meta" data-root>$(gettext 'Build a meta ISO')</a></li> |
pascal@382 | 41 </menu> |
pascal@382 | 42 </li> |
pascal@382 | 43 EOT |
pascal@382 | 44 export TEXTDOMAIN=$TEXTDOMAIN_original |
pascal@382 | 45 exit |
pascal@382 | 46 esac |
pascal@382 | 47 |
pascal@382 | 48 |
pascal@320 | 49 TITLE=$(gettext 'TazPanel - Live') |
pascal@320 | 50 |
pascal@320 | 51 # Build arguments to create a meta iso using 'tazlito merge' command |
pascal@320 | 52 merge_args() |
pascal@320 | 53 { |
pascal@320 | 54 tmp=$1 |
pascal@320 | 55 first=true |
pascal@320 | 56 i=1 |
pascal@320 | 57 while [ -n "$(GET input$i)" ]; do |
pascal@320 | 58 echo "$(stat -c "%s" $(GET input$i)) $(GET input$i) $(GET ram$i)" |
pascal@320 | 59 $((i++)) |
pascal@320 | 60 done | sort -nr | while read size file ram; do |
pascal@320 | 61 if $first; then |
pascal@320 | 62 cp $file $(GET metaoutput) |
pascal@320 | 63 echo -n "$ram $(GET metaoutput) " |
pascal@320 | 64 first=false |
pascal@320 | 65 continue |
pascal@320 | 66 fi |
pascal@320 | 67 dir=$tmp/$(basename $file) |
pascal@320 | 68 mkdir $dir |
pascal@320 | 69 mount -o loop,ro $file $dir |
pascal@320 | 70 echo -n "$ram $dir/boot/rootfs.gz " |
pascal@320 | 71 done |
pascal@320 | 72 } |
pascal@320 | 73 |
pascal@320 | 74 # |
pascal@320 | 75 # Commands executed in Xterm first |
pascal@320 | 76 # |
pascal@320 | 77 |
pascal@320 | 78 case " $(GET) " in |
pascal@320 | 79 *\ write_iso\ *) |
pascal@320 | 80 $TERMINAL $TERM_OPTS \ |
pascal@320 | 81 -T "write-iso" \ |
pascal@320 | 82 -e "tazlito writeiso $(GET write_iso)" & ;; |
pascal@320 | 83 *\ loramoutput\ *) |
pascal@320 | 84 $TERMINAL $TERM_OPTS \ |
pascal@320 | 85 -T "build loram iso" \ |
pascal@320 | 86 -e "tazlito build-loram $(GET input) $(GET loramoutput) $(GET type)" & ;; |
pascal@320 | 87 *\ meta\ *) |
pascal@320 | 88 tmp=/tmp/$(basename $0).$$ |
pascal@320 | 89 cleanup="sh $0 call merge_cleanup $(GET output) $tmp" |
pascal@320 | 90 $TERMINAL $TERM_OPTS \ |
pascal@320 | 91 -T "build meta iso" \ |
pascal@320 | 92 -e "tazlito merge $(merge_args $tmp); \ |
pascal@320 | 93 gettext 'ENTER to quit'; read i; \ |
pascal@320 | 94 $cleanup" & ;; |
pascal@320 | 95 *\ hybrid\ *) |
pascal@320 | 96 $TERMINAL $TERM_OPTS \ |
pascal@320 | 97 -T "build hybrid iso" \ |
pascal@320 | 98 -e "iso2exe $(GET input)" & ;; |
pascal@320 | 99 esac |
pascal@320 | 100 |
pascal@320 | 101 # |
pascal@320 | 102 # Commands |
pascal@320 | 103 # |
pascal@320 | 104 |
pascal@320 | 105 case " $(GET) " in |
pascal@320 | 106 *\ create\ *) |
pascal@320 | 107 # |
pascal@320 | 108 # Create a flavor file and ISO in options with all settings |
pascal@320 | 109 # Step by step interface and store files in cache. |
pascal@320 | 110 # |
pascal@320 | 111 gettext 'TODO' ;; |
pascal@320 | 112 *\ liveusb\ *) |
pascal@320 | 113 xhtml_header |
pascal@320 | 114 cat << EOT |
pascal@320 | 115 <div id="wrapper"> |
pascal@320 | 116 <h2>$(gettext 'SliTaz LiveUSB')</h2> |
pascal@320 | 117 <p>$(gettext 'Create Live USB SliTaz systems')<p> |
pascal@320 | 118 </div> |
pascal@320 | 119 |
pascal@320 | 120 <p>$(gettext "Generate SliTaz LiveUSB media and boot in RAM! Insert a LiveCD \ |
pascal@320 | 121 into the cdrom drive, select the correct device and press Generate.")</p> |
pascal@320 | 122 |
pascal@320 | 123 <form method="get" action="$SCRIPT_NAME"> |
pascal@320 | 124 <input type="hidden" name="liveusb" /> |
pascal@320 | 125 $(gettext 'USB Media to use:') |
pascal@320 | 126 <select name="gen"> |
pascal@320 | 127 EOT |
pascal@320 | 128 # List disk if there is a plugged USB device |
pascal@320 | 129 if [ -d /proc/scsi/usb-storage ]; then |
pascal@320 | 130 for i in `blkid | cut -d ":" -f 1`; do |
pascal@320 | 131 echo "<option value='$i'>$i</option>" |
pascal@320 | 132 done |
pascal@320 | 133 else |
pascal@320 | 134 echo "<option value="">$(gettext 'Not found')</option>" |
pascal@320 | 135 fi |
pascal@320 | 136 cat << EOT |
pascal@320 | 137 </select> |
pascal@320 | 138 <input type="submit" value="$(gettext 'Generate')" /> |
pascal@320 | 139 </form> |
pascal@320 | 140 EOT |
pascal@320 | 141 if [ "$(GET gen)" ]; then |
pascal@320 | 142 cat << EOT |
pascal@320 | 143 <h3>tazusb gen-liveusb $(GET gen)</h3> |
pascal@320 | 144 <pre> |
pascal@320 | 145 EOT |
pascal@320 | 146 # No pipe here so output is displayed in realtime |
pascal@320 | 147 yes | tazusb gen-liveusb $(GET gen) |
pascal@320 | 148 echo '</pre>' |
pascal@320 | 149 fi ;; |
pascal@320 | 150 *) |
pascal@320 | 151 # |
pascal@320 | 152 # Default xHTML content |
pascal@320 | 153 # |
pascal@320 | 154 xhtml_header |
pascal@320 | 155 cat << EOT |
pascal@320 | 156 <div id="wrapper"> |
pascal@320 | 157 <h2>$(gettext 'SliTaz Live Systems')</h2> |
pascal@320 | 158 <p>$(gettext 'Create and manage Live CD or USB SliTaz systems')<p> |
pascal@320 | 159 </div> |
pascal@320 | 160 |
pascal@320 | 161 <div id="actions"> |
pascal@320 | 162 <a class="button" href="$SCRIPT_NAME?liveusb"> |
pascal@320 | 163 <img src="$IMAGES/harddisk.png" />$(gettext 'Create LiveUSB')</a> |
pascal@320 | 164 </div> |
pascal@320 | 165 |
pascal@320 | 166 |
pascal@320 | 167 <!-- |
pascal@320 | 168 <h3 id="livecd">$(gettext 'Write a Live CD')</h3> |
pascal@320 | 169 |
pascal@320 | 170 <p>$(gettext "The command writeiso will generate an ISO image of the current \ |
pascal@320 | 171 filesystem as is, including all files in the /home directory. It is an easy \ |
pascal@320 | 172 way to remaster a SliTaz Live system, you just have to: boot, modify, \ |
pascal@320 | 173 writeiso.")</p> |
pascal@320 | 174 |
pascal@320 | 175 <form method="get" action="$SCRIPT_NAME"> |
pascal@320 | 176 $(gettext 'Compression type:') |
pascal@320 | 177 <select name="write_iso"> |
pascal@320 | 178 <option value="gzip">gzip</option> |
pascal@320 | 179 <option value="lzma">lzma</option> |
pascal@320 | 180 <option value="none">$(gettext 'none')</option> |
pascal@320 | 181 </select> |
pascal@320 | 182 <input type="submit" value="$(gettext 'Write ISO')" /> |
pascal@320 | 183 </form> --> |
pascal@320 | 184 |
pascal@320 | 185 |
pascal@320 | 186 <h3>$(gettext 'Live CD tools')</h3> |
pascal@320 | 187 |
pascal@320 | 188 <h4 id="loram">$(gettext 'Convert ISO to loram')</h4> |
pascal@320 | 189 |
pascal@320 | 190 <p>$(gettext "This command will convert an ISO image of a SliTaz Live CD to a \ |
pascal@320 | 191 new ISO image requiring less RAM to run.")</p> |
pascal@320 | 192 |
pascal@320 | 193 <form method="get" action="$SCRIPT_NAME#loram"> |
pascal@320 | 194 <table> |
pascal@320 | 195 <tr> |
pascal@320 | 196 <td>$(gettext 'ISO to convert') |
pascal@320 | 197 <input type="text" accept=".iso" name="input" value="/root/" /></td> |
pascal@320 | 198 </tr> |
pascal@320 | 199 <tr> |
pascal@320 | 200 <td><input type="radio" name="type" value="ram" id="type1" checked /> |
pascal@320 | 201 <label for="type1">$(gettext 'The filesystem is always in RAM')</label> |
pascal@320 | 202 </td> |
pascal@320 | 203 </tr> |
pascal@320 | 204 <tr> |
pascal@320 | 205 <td><input type="radio" name="type" value="smallcdrom" id="type2" /> |
pascal@320 | 206 <label for="type2">$(gettext 'The filesystem may be on a small CDROM')</label> |
pascal@320 | 207 </td> |
pascal@320 | 208 </tr> |
pascal@320 | 209 <tr> |
pascal@320 | 210 <td><input type="radio" name="type" value="cdrom" id="type3" /> |
pascal@320 | 211 <label for="type3">$(gettext 'The filesystem may be on a large CDROM')</label> |
pascal@320 | 212 </td> |
pascal@320 | 213 </tr> |
pascal@320 | 214 <tr> |
pascal@320 | 215 <td>$(gettext 'ISO to create') |
pascal@320 | 216 <input type="text" accept=".iso" name="loramoutput" value="/root/loram.iso" /> |
pascal@320 | 217 </td> |
pascal@320 | 218 </tr> |
pascal@320 | 219 </table> |
pascal@320 | 220 <input type="submit" value="$(gettext 'Convert ISO to loram')" /> |
pascal@320 | 221 </form> |
pascal@320 | 222 |
pascal@320 | 223 |
pascal@320 | 224 <h4 id="hybrid">$(gettext 'Build a hybrid ISO')</h4> |
pascal@320 | 225 |
paul@339 | 226 <p>$(gettext "Add a master boot sector and an EXE header to the ISO image. \ |
pascal@320 | 227 ")</p> |
pascal@320 | 228 |
pascal@320 | 229 <form method="get" action="$SCRIPT_NAME#hybrid"> |
pascal@320 | 230 <table> |
pascal@320 | 231 <tr> |
pascal@320 | 232 <td> |
pascal@320 | 233 $(gettext 'ISO to convert') |
pascal@320 | 234 <input type="text" name="input" value="/root/" /> |
pascal@320 | 235 </td> |
pascal@320 | 236 </tr> |
pascal@320 | 237 </table> |
pascal@320 | 238 <input type="submit" name="hybrid" value="$(gettext 'Build a hybrid ISO')" /> |
pascal@320 | 239 </form> |
pascal@320 | 240 |
pascal@320 | 241 <h4 id="meta">$(gettext 'Build a meta ISO')</h4> |
pascal@320 | 242 |
pascal@320 | 243 <p>$(gettext "Combines several ISO flavors like nested Russian dolls. The \ |
pascal@320 | 244 amount of RAM available at startup will be used to select the utmost one.")</p> |
pascal@320 | 245 |
pascal@320 | 246 <form method="get" action="$SCRIPT_NAME#meta"> |
pascal@320 | 247 <table> |
pascal@320 | 248 EOT |
pascal@320 | 249 i="" |
pascal@320 | 250 while [ -n "$(GET addmeta)" ]; do |
pascal@320 | 251 [ -n "$(GET input$i)" ] || break |
pascal@320 | 252 j=$(($i + 1)) |
pascal@320 | 253 cat << EOT |
pascal@320 | 254 <tr> |
pascal@320 | 255 <td>$(gettext 'ISO number') $j: $(GET input$i) |
pascal@320 | 256 <input type="hidden" name="input$j" value="$(GET input$i)" /> |
pascal@320 | 257 </td> |
pascal@320 | 258 <td>$(gettext 'Minimum RAM'): $(GET ram$i) |
pascal@320 | 259 <input type="hidden" name="ram$j" value="$(GET ram$i)" /> |
pascal@320 | 260 </td> |
pascal@320 | 261 </tr> |
pascal@320 | 262 EOT |
pascal@320 | 263 i=$j |
pascal@320 | 264 done |
pascal@320 | 265 metaoutput="$(GET metaoutput)" |
pascal@320 | 266 [ -n "$metaoutput" ] || metaoutput="/root/meta.iso" |
pascal@320 | 267 |
pascal@320 | 268 cat << EOT |
pascal@320 | 269 <tr> |
pascal@320 | 270 <td>$(gettext 'ISO to add') |
pascal@320 | 271 <input type="text" name="input" value="/root/" /> |
pascal@320 | 272 </td> |
pascal@320 | 273 <td>$(gettext 'Minimum RAM') |
pascal@320 | 274 <input type="text" name="ram" value="128M" /> |
pascal@320 | 275 <input type="submit" name="addmeta" value="$(gettext 'Add to the list')" /> |
pascal@320 | 276 </td> |
pascal@320 | 277 </tr> |
pascal@320 | 278 <tr> |
pascal@320 | 279 <td>$(gettext 'ISO to create') |
pascal@320 | 280 <input type="text" name="metaoutput" value="$metaoutput" /> |
pascal@320 | 281 </td> |
pascal@320 | 282 </tr> |
pascal@320 | 283 </table> |
pascal@320 | 284 <input type="submit" name="meta" value="$(gettext 'Build a meta ISO')" /> |
pascal@320 | 285 </form> |
pascal@320 | 286 |
pascal@320 | 287 EOT |
pascal@320 | 288 ;; |
pascal@320 | 289 esac |
pascal@320 | 290 |
pascal@320 | 291 xhtml_footer |
pascal@320 | 292 exit 0 |