tools/. download.inc.php
Jeremy Newman
jnewman at wine.codeweavers.com
Fri Dec 1 10:34:16 CST 2006
ChangeSet ID: 30234
CVSROOT: /opt/cvs-commit
Module name: tools
Changes by: jnewman at winehq.org 2006/12/01 10:34:15
Added files:
. : download.inc.php
Log message:
Jonathan Ernst <jonathan at ernstfamily.ch>
- refactor Wine downloader scripts
Patch: http://cvs.winehq.org/patch.py?id=30234
Old revision New revision Changes Path
Added 1.1 +0 -0 tools/download.inc.php
Index: tools/download.inc.php
diff -u -p /dev/null tools/download.inc.php:1.1
--- /dev/null 1 Dec 2006 16:34:15 -0000
+++ tools/download.inc.php 1 Dec 2006 16:34:15 -0000
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Common code for Wine downloader scripts.
+ *
+ * Copyright (c) 2006 Jonathan Ernst
+ */
+
+// List of common locations for files
+$aList += array("http://switch.dl.sourceforge.net/sourceforge/wine/",
+ "http://surfnet.dl.sourceforge.net/sourceforge/wine/",
+ "http://citkit.dl.sourceforge.net/sourceforge/wine/",
+ "http://keihanna.dl.sourceforge.net/sourceforge/wine/",
+ "http://heanet.dl.sourceforge.net/sourceforge/wine/",
+ "http://easynews.dl.sourceforge.net/sourceforge/wine/",
+ "http://ovh.dl.sourceforge.net/sourceforge/wine/",
+ "http://jaist.dl.sourceforge.net/sourceforge/wine/",
+ "http://puzzle.dl.sourceforge.net/sourceforge/wine/",
+ "http://nchc.dl.sourceforge.net/sourceforge/wine/",
+ "http://switch.dl.sourceforge.net/sourceforge/wine/",
+ "http://kent.dl.sourceforge.net/sourceforge/wine/",
+ "http://optusnet.dl.sourceforge.net/sourceforge/wine/",
+ "http://mesh.dl.sourceforge.net/sourceforge/wine/",
+ "http://internap.dl.sourceforge.net/sourceforge/wine/",
+ "http://superb-east.dl.sourceforge.net/sourceforge/wine/",
+ "http://optusnet.dl.sourceforge.net/sourceforge/wine/",
+ "http://superb-west.dl.sourceforge.net/sourceforge/wine/",
+ "http://nchc.dl.sourceforge.net/sourceforge/wine/",
+ "http://umn.dl.sourceforge.net/sourceforge/wine/",
+ "http://belnet.dl.sourceforge.net/sourceforge/wine/",
+ "http://ufpr.dl.sourceforge.net/sourceforge/wine/"
+ );
+
+
+function is_downloadable($sUrl){
+ global $iFileSize;
+ $parse = parse_url($sUrl);
+ // open a socket connection
+ if($fp = @fsockopen($parse['host'], 80, $errno, $errstr, 10)){
+ // set request
+ $get = "HEAD ".$parse['path']." HTTP/1.1\r\n".
+ "Host: ".$parse['host']."\r\n".
+ "Connection: close\r\n\r\n";
+ fputs($fp, $get);
+ while(!feof($fp)){
+ // get ONLY header informations
+ $header .= fgets($fp, 128);
+ }
+ fclose($fp);
+ // match file size
+ preg_match('/Content-Length:\s([0-9].+?)\s/', $header, $matches);
+ $iSize = intval($matches[1]);
+ if($iSize == $iFileSize) return TRUE;
+ }
+ return FALSE;
+}
+
+
+if($_REQUEST['action']=="showlist") {
+ echo "<h2>List of mirrors available for file ".$sFileName." (".$iFileSize." bytes)</h2>";
+ foreach($aList as $sLocation) {
+ echo $sLocation.": ";
+ if(is_downloadable($sLocation.$sFileName)) {
+ echo "<font color=\"green\">online</font>";
+ } else {
+ echo "<font color=\"red\">offline</font>";
+ }
+ echo "\n<br />";
+ }
+} else {
+ while(!is_downloadable($sUrl)) {
+ $iRand = rand(0, (sizeof($aList)-1));
+ $sUrl = $aList[$iRand].$sFileName;
+ }
+ header("Location: ".$sUrl);
+}
+?>
More information about the wine-cvs
mailing list