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