slitaz-forge rev 716

mirror/floppies: multi-format support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Jul 23 16:41:12 2021 +0000 (2021-07-23)
parents cfad9fa3f53c
children 291e2d88bab3
files mirror/floppies/format.js mirror/floppies/mkfdrolling.sh mirror/floppies/mkindex.sh mirror/floppies/sets.sh mirror/info/graphs.php mirror/info/index.php tank/web/graphs.php tank/web/index.php
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/mirror/floppies/format.js	Fri Jul 23 16:41:12 2021 +0000
     1.3 @@ -0,0 +1,79 @@
     1.4 +window.URL = window.URL || window.webkitURL;
     1.5 +function download(ref, range, name) {
     1.6 +	var xhr = new XMLHttpRequest();
     1.7 +      
     1.8 +	xhr.open('GET', ref, true);
     1.9 +	xhr.setRequestHeader("Range", "bytes="+range);
    1.10 +	xhr.responseType = 'blob';
    1.11 +	xhr.onload = function () {
    1.12 +	    var a = document.createElement('a'), file;
    1.13 +	    file = new Blob([xhr.response], { type : 'application/octet-stream' });
    1.14 +	    a.href = window.URL.createObjectURL(file);
    1.15 +	    a.download = name;
    1.16 +	    a.click();
    1.17 +	};
    1.18 +	xhr.send();
    1.19 +}
    1.20 +
    1.21 +function format(size) {
    1.22 +	var max = sets[sets.length-1];
    1.23 +	var cols = Math.floor(Math.sqrt(max/size)+2);
    1.24 +	var lines = Math.floor(((max/size)+1)/cols+1);
    1.25 +	var e = document.getElementById('floppies');
    1.26 +	var s, i, j, ofs, fd, fds, curset;
    1.27 +	for (i = 0, ofs = 0, curset = 0, fd = 1, s = ""; i < lines; i++) {
    1.28 +		s += "<tr>";
    1.29 +		for (j = 0; j < cols; j++) {
    1.30 +			fds = ""+fd; if (fd < 100) fds = "0"+fds; if (fd < 10) fds = "0"+fds;
    1.31 +			s += "<td>";
    1.32 +			if (ofs < max) {
    1.33 +				s += "<a href=\"javascript:download('"+dir+"/fd.img', '"+ofs+"-";
    1.34 +				ofs = Number.parseInt(ofs)+Number.parseInt(size);
    1.35 +				s += (ofs-1)+"', 'fd"+fds+".img')\">fd"+fds+"</a>";
    1.36 +				if (ofs >= sets[curset]) {
    1.37 +					curset++;
    1.38 +					fd = (Math.floor(fd/100)+1)*100;
    1.39 +				} else fd++;
    1.40 +			}
    1.41 +			if (i == lines-1 && j == cols-1) {
    1.42 +				s += "<a href=\""+dir+"/"+size+"/md5sum\">md5</a>"
    1.43 +			}
    1.44 +			s += "</td>";
    1.45 +		}
    1.46 +		s += "</tr>";
    1.47 +	}
    1.48 +	e.innerHTML = s;
    1.49 +	for (i = 0, ofs = 0, curset = 0, fd = 0; ofs < max;) {
    1.50 +		i++; fd++;
    1.51 +		ofs = Number.parseInt(ofs)+Number.parseInt(size);
    1.52 +		if (ofs >= sets[curset]) {
    1.53 +			fds = ""+fd; if (fd < 100) fds = "0"+fds; if (fd < 10) fds = "0"+fds;
    1.54 +			e = document.getElementById('cnt'+curset);
    1.55 +			if (e) e.innerHTML = i;
    1.56 +			e = document.getElementById('last'+curset);
    1.57 +			if (e) e.innerHTML = fds;
    1.58 +			curset++;
    1.59 +			fd = (Math.floor(fd/100)+1)*100-1;
    1.60 +		}
    1.61 +	}
    1.62 +}
    1.63 +
    1.64 +var e = document.getElementById('format');
    1.65 +try {
    1.66 +	var dummy = new Blob();
    1.67 +	e.innerHTML="<select onChange='format(this.value)' style='background: #666; color: #FFF;'>" +
    1.68 +		"<option value='368640' title='/dev/fd0h360 (2,20) or /dev/fd0d360 (2,4) 5¼'>360K</option>" +
    1.69 +		"<option value='737280' title='/dev/fd0u720 3½ DD (2,16)'>720K</option>" +
    1.70 +		"<option value='819200' title='/dev/fd0u800 3½ DD (2,120)'>800K</option>" +
    1.71 +		"<option value='1228800' title='/dev/fd0h1200 5¼ (2,8)'>1.2MB</option>" +
    1.72 +		"<option value='1474560' title='/dev/fd0u1440 3½ HD (2,28) or /dev/fd0h1440 5¼ (2,40)' selected>1.44MB</option>" +
    1.73 +		"<option value='1638400' title='/dev/fd0u1600 3½ HD (2,124) or /dev/fd0h1600 5¼ (2,92)'>1.60MB</option>" +
    1.74 +		"<option value='1720320' title='/dev/fd0u1680 3½ HD (2,44)'>1.68MB</option>" +
    1.75 +		"<option value='1966080' title='/dev/fd0u1920 3½ HD (2,100)'>1.92MB</option>" +
    1.76 +		"<option value='2949120' title='/dev/fd0u2880 3½ ED (2,32)'>2.88MB</option>" +
    1.77 +		"<option value='3932160' title='/dev/fd0u3840 3½ ED (2,112)'>3.84MB</option>" +
    1.78 +		"</select>";
    1.79 +}
    1.80 +catch (err) {
    1.81 +	e.innerHTML="1.44MB"; 
    1.82 +}
     2.1 --- a/mirror/floppies/mkfdrolling.sh	Mon Feb 01 10:57:24 2021 +0000
     2.2 +++ b/mirror/floppies/mkfdrolling.sh	Fri Jul 23 16:41:12 2021 +0000
     2.3 @@ -19,7 +19,7 @@
     2.4  		mtime=$(LC_ALL=C date '+%d %B %Y' -d $mtime)
     2.5  	set -- $(sed '/ifmem/!d;s/.*ifmem //' $mnt/boot/isolinux/isolinux.cfg \
     2.6  		| sed 's|^|echo |;s|\([0-9][0-9]*\) |$((\1/1024))M |g' | sh)
     2.7 -	umount $mnt
     2.8 +	umount $mnt 2> /dev/null || umount -l $mnt
     2.9  	rmdir $mnt
    2.10  		cat > description.html <<EOT
    2.11  <p>This floppy set uses the BIOS instead of the linux driver. You can boot
    2.12 @@ -41,9 +41,9 @@
    2.13  			eval flavor=\$$((($n - $i)*2))
    2.14  			eval ram=\$$((($n - $i)*2 -1))
    2.15  			cat >> description.html <<EOT
    2.16 -	<li><b>$flavor</b> needs ${ram}B of RAM and $(ls fd* | \
    2.17 -		awk "/fd$(($i+1))/{q=1}{if(!q)n++}END{print n}") floppies:
    2.18 -		<tt>fd001.img</tt> to <tt>$(ls -r fd${i}* | sed q)</tt>.<br>
    2.19 +	<li><b>$flavor</b> needs ${ram}B of RAM and <span id="cnt$i">$(ls fd* | \
    2.20 +		awk "/fd$(($i+1))/{q=1}{if(!q)n++}END{print n}")</span> floppies:
    2.21 +		<tt>fd001.img</tt> to <tt>fd<span id="last$i">$(ls -r fd${i}* | sed 's|fd||;s|.img||;q')</span>.img</tt>.<br>
    2.22  		$flavor provides $(while read f d; do 
    2.23  			[ $f = $flavor ] && echo $d; done <<EOT
    2.24  base the minimum SliTaz distribution subset in text mode
     3.1 --- a/mirror/floppies/mkindex.sh	Mon Feb 01 10:57:24 2021 +0000
     3.2 +++ b/mirror/floppies/mkindex.sh	Fri Jul 23 16:41:12 2021 +0000
     3.3 @@ -12,6 +12,7 @@
     3.4  
     3.5  build_page() {
     3.6  	DIR=$1
     3.7 +	SETS="$(echo $(./sets.sh $1))"
     3.8  	case "$DIR" in
     3.9  	*.*)	stable=stable;;
    3.10  	*)	stable=development;;
    3.11 @@ -138,11 +139,12 @@
    3.12  
    3.13  	<!-- Navigation -->
    3.14  	<nav>
    3.15 -		<header>1.44MB SliTaz$TYPE $VERSION floppy images</header>
    3.16 -		<div class="large"><table>
    3.17 +		<header><span id="format">1.44MB</span> SliTaz$TYPE $VERSION floppy images</header>
    3.18 +			
    3.19 +		<div class="large"><table id="floppies">
    3.20  $(
    3.21  n=0
    3.22 -for f in $DIR/fd*img ; do
    3.23 +for f in $DIR/fd???.img ; do
    3.24  	[ $n -eq 0 ] && echo "			<tr>"
    3.25  	echo "				<td><a href=\"$f\">$(basename $f .img)</a></td>"
    3.26  	n=$(( ($n+1)%6 ))
    3.27 @@ -160,6 +162,16 @@
    3.28  	</nav>
    3.29  </div></div>
    3.30  
    3.31 +EOT
    3.32 +	[ -n "$SETS" ] && cat <<EOT
    3.33 +<script type="text/javascript">
    3.34 +var dir = "$VERSION";
    3.35 +var sets = [${SETS// /,}];
    3.36 +//-->
    3.37 +</script>
    3.38 +<script type="text/javascript" src="format.js"></script>
    3.39 +EOT
    3.40 +	cat <<EOT
    3.41  
    3.42  <!-- Content -->
    3.43  <main>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/mirror/floppies/sets.sh	Fri Jul 23 16:41:12 2021 +0000
     4.3 @@ -0,0 +1,72 @@
     4.4 +#!/bin/sh
     4.5 +
     4.6 +get()
     4.7 +{
     4.8 +	hexdump -v -s $1 -n ${4:-${3:-2}} -e "\"\" 1/${3:-2} \" %u\n\"" "$2"
     4.9 +}
    4.10 +
    4.11 +n=$((1 + $(get 497 $1/fd001.img 1) + 1 + ($(get 500 $1/fd001.img 4)-1)/32))
    4.12 +last=$(($n*512))
    4.13 +first=$last
    4.14 +dir=$1
    4.15 +n=$((512*$(get 497 $1/fd001.img 1) + 512 - 20))
    4.16 +SET=""
    4.17 +if [ -s $1/fd100.img ]; then
    4.18 +	for i in 0 1 2 3; do
    4.19 +		x=$(get $n $1/fd001.img 4)
    4.20 +		last=$(($last+$x))
    4.21 +		[ $x -eq 0 ] && SET="" && break
    4.22 +		SET="$SET $last"
    4.23 +		n=$(($n+4))
    4.24 +	done
    4.25 +	file=$1/fd.img
    4.26 +	cat $1/fd???.img > $file
    4.27 +	set -- $first $SET
    4.28 +	while [ -n "$2" ]; do
    4.29 +		n=$(get $1 $file)
    4.30 +		shift
    4.31 +		case $n in
    4.32 +		\ 14128|\ 93) continue ;;
    4.33 +		esac
    4.34 +		rm $file
    4.35 +		SET=""
    4.36 +		break
    4.37 +	done
    4.38 +else
    4.39 +	if [ $(get 494 $1/fd001.img) -eq 490 ]; then
    4.40 +		SET="$(($first+$(get 490 $1/fd001.img 4)))"
    4.41 +		cat $1/fd???.img > $1/fd.img
    4.42 +		set -- $SET
    4.43 +	fi
    4.44 +fi
    4.45 +if [ -n "$SET" ]; then
    4.46 +	size=$1
    4.47 +	best=$1
    4.48 +	cd $dir
    4.49 +	for i in $(sed '/option value/!d;s|.*value=.||;s|. title.*||' ../format.js); do
    4.50 +		s=$((((($size-1)/$i)+1)*$i))
    4.51 +		[ $s -gt $best ] && best=$s
    4.52 +		dd of=fd.img bs=1 count=0 seek=$s 2> /dev/null
    4.53 +		[ -d $i ] || mkdir $i
    4.54 +		cd $i
    4.55 +		split -b $i ../fd.img xx
    4.56 +		set -- $SET
    4.57 +		n=1; sz=0
    4.58 +		ls xx* | while read x; do
    4.59 +			mv $x $(printf "fd%03d.img" $n)
    4.60 +			n=$(($n+1))
    4.61 +			sz=$(($sz+$i))
    4.62 +			if [ $sz -ge $1 ]; then
    4.63 +				n=$(($n-($n%100)+100))
    4.64 +				shift
    4.65 +				[ -n "$1" ] || break
    4.66 +			fi
    4.67 +		done
    4.68 +		md5sum fd* > md5sum
    4.69 +		rm fd*
    4.70 +		cd ..
    4.71 +	done
    4.72 +	dd of=fd.img bs=1 count=0 seek=$best 2> /dev/null
    4.73 +	cd ..
    4.74 +	echo $SET
    4.75 +fi
     5.1 --- a/mirror/info/graphs.php	Mon Feb 01 10:57:24 2021 +0000
     5.2 +++ b/mirror/info/graphs.php	Fri Jul 23 16:41:12 2021 +0000
     5.3 @@ -36,10 +36,11 @@
     5.4  	<!-- Information/image -->
     5.5  	<div class="block_info">
     5.6  		<header>Codename: <?php echo $host; ?></header>
     5.7 +		<p>
     5.8 +			This is the SliTaz GNU/Linux main mirror. The server runs naturally 
     5.9 +			SliTaz (stable) in a virtual machine gracefully hosted by 
    5.10 +			<a href="https://www.linkedin.com/company/balinor-technologies/">balinor-technologies</a>.
    5.11  		</p>
    5.12 -			<p>This is the SliTaz GNU/Linux main mirror. The server runs naturally 
    5.13 -			SliTaz (stable) in a virtual machine gracefully hosted by 
    5.14 -			<a href="https://www.linkedin.com/company/balinor-technologies/">balinor-technologies</a>.</p>
    5.15  		<p>
    5.16  			Mirror CPU is a <?php
    5.17  system("( sed '/cpuinfo=/!d;" .
     6.1 --- a/mirror/info/index.php	Mon Feb 01 10:57:24 2021 +0000
     6.2 +++ b/mirror/info/index.php	Fri Jul 23 16:41:12 2021 +0000
     6.3 @@ -40,10 +40,11 @@
     6.4  	<!-- Top block begin -->
     6.5  	<div class="block_info">
     6.6  		<header>Codename: <?php echo $host; ?></header>
     6.7 +		<p>
     6.8 +			This is the SliTaz GNU/Linux main mirror. The server runs naturally 
     6.9 +			SliTaz (stable) in a virtual machine gracefully hosted by 
    6.10 +			<a href="https://www.linkedin.com/company/balinor-technologies/">balinor-technologies</a>.
    6.11  		</p>
    6.12 -			<p>This is the SliTaz GNU/Linux main mirror. The server runs naturally 
    6.13 -			SliTaz (stable) in a virtual machine gracefully hosted by 
    6.14 -			<a href="https://www.linkedin.com/company/balinor-technologies/">balinor-technologies</a>.</p>
    6.15  		<p>Mirror CPU is a <?php
    6.16  system("( sed '/cpuinfo=/!d;" .
    6.17  	"s/.*cpuinfo=\\([^ ]*\).*/: \\1/;s/_/ /g' /proc/cmdline ; grep '^model name' /etc/cpuinfo) | sed -e 's/.*Intel(R) //;" .
     7.1 --- a/tank/web/graphs.php	Mon Feb 01 10:57:24 2021 +0000
     7.2 +++ b/tank/web/graphs.php	Fri Jul 23 16:41:12 2021 +0000
     7.3 @@ -38,11 +38,9 @@
     7.4  			Tank CPU is a <?php system("sed -e '/^model name/!d;s/.*Intel(R) //;" .         
     7.5  			"s/@//;s/(.*)//;s/CPU //;s/.*AMD //;s/.*: //;s/Processor //' </etc/cpuinfo |" .
     7.6  			" awk '{ s=$0; n++ } END { if (n == 2) printf \"dual \";" .
     7.7 -			"if (n == 4) printf \"quad \"; print s }' ")?> -
     7.8 -			<?php system("free | awk '/Mem:/ { x=2*$2-1; while (x >= 1024) { x /= 1024; ".
     7.9 -			"n++ }; y=1; while (x > 2) { x /= 2; y *= 2}; ".
    7.10 -			"printf \"%d%cB RAM\",y,substr(\"MG\",n,1) }' ")?>  - Located in Paris,
    7.11 -			France.
    7.12 +			"if (n == 4) printf \"quad \"; if (n == 8) printf \"octo \"; print s }' ")?> -
    7.13 +			<?php system("free -g | awk '/Mem:/ { print $2 \"GB RAM\" }'")?> -
    7.14 +			Located in Paris, France.
    7.15  		</p>
    7.16  	</div>
    7.17  </div>
     8.1 --- a/tank/web/index.php	Mon Feb 01 10:57:24 2021 +0000
     8.2 +++ b/tank/web/index.php	Fri Jul 23 16:41:12 2021 +0000
     8.3 @@ -48,11 +48,9 @@
     8.4  			Tank CPU is a <?php system("sed -e '/^model name/!d;s/.*Intel(R) //;" .         
     8.5  			"s/@//;s/(.*)//;s/CPU //;s/.*AMD //;s/.*: //;s/Processor //' </etc/cpuinfo |" .
     8.6  			" awk '{ s=$0; n++ } END { if (n == 2) printf \"dual \";" .
     8.7 -			"if (n == 4) printf \"quad \"; print s }' ")?> -
     8.8 -			<?php system("free | awk '/Mem:/ { x=2*$2-1; while (x >= 1024) { x /= 1024; ".
     8.9 -			"n++ }; y=1; while (x > 2) { x /= 2; y *= 2}; ".
    8.10 -			"printf \"%d%cB RAM\",y,substr(\"MG\",n,1) }' ")?>  - Located in Paris,
    8.11 -			France. Tank is also monitored by RRDtool which provides 
    8.12 +			"if (n == 4) printf \"quad \"; if (n == 8) printf \"octo \"; print s }' ")?> -
    8.13 +			<?php system("free -g | awk '/Mem:/ { print $2 \"GB RAM\" }'")?> -
    8.14 +			Located in Paris, France. Tank is also monitored by RRDtool which provides 
    8.15  			<a href="graphs.php">graphical stats</a>.
    8.16  		</p>
    8.17  	</div>