[dijjer-cvs] Dijjer/src/dijjer/io/xfer/http/handlers DownloadResponse.java,1.7,1.8
Brought to you by:
gnovos
|
From: Turadg A. <tu...@us...> - 2006-02-24 02:58:14
|
Update of /cvsroot/dijjer/Dijjer/src/dijjer/io/xfer/http/handlers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20392/src/dijjer/io/xfer/http/handlers Modified Files: DownloadResponse.java Log Message: look for MD5 checksums using the Maven scheme, in URL + ".md5" Index: DownloadResponse.java =================================================================== RCS file: /cvsroot/dijjer/Dijjer/src/dijjer/io/xfer/http/handlers/DownloadResponse.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** DownloadResponse.java 4 Apr 2005 11:23:51 -0000 1.7 --- DownloadResponse.java 24 Feb 2006 02:58:11 -0000 1.8 *************** *** 1,10 **** package dijjer.io.xfer.http.handlers; - import java.io.BufferedReader; import java.io.IOException; - import java.io.InputStreamReader; import java.io.OutputStream; - import java.net.HttpURLConnection; - import java.net.MalformedURLException; import java.net.URL; import java.util.LinkedList; --- 1,6 ---- *************** *** 12,17 **** import dijjer.io.store.Store; import dijjer.io.xfer.http.HTTPResponse; import dijjer.util.MD5OutputStream; - import dijjer.util.Misc; import dijjer.util.TruncatingOutputStream; import dijjer.util.logging.Logger; --- 8,13 ---- import dijjer.io.store.Store; import dijjer.io.xfer.http.HTTPResponse; + import dijjer.util.Integrity; import dijjer.util.MD5OutputStream; import dijjer.util.TruncatingOutputStream; import dijjer.util.logging.Logger; *************** *** 20,35 **** public static final String VERSION = "$Id$"; public static final int MAX_RECENT_DOWNLOADS = 5; public static final String RECENT_DOWNLOADS_HEADER = "<tr><td><b>Filename</b></td><td><b>Size (kb)</b></td><td><b>Download Rate(kb/sec)</b></td><td><b>MD5</b> (<font color=\"#00FF00\">Good</font>, <font color=\"#FF0000\">Bad</font>, <font color=\"#000000\">Unverified</font>)</td><td><b>% From cache</b></td></tr>"; public static LinkedList recentDownloads = new LinkedList(); private final long _length; private final byte[] _initialSniffBytes; private final URL _reqUrl; private final String _lastModified; private final long _rangeStart; private final long _rangeEnd; ! public DownloadResponse(int code, String message, String contentType, long length, byte[] initialSniffBytes, ! URL reqUrl, String lastModified, long rangeStart, long rangeEnd) { super(code, message, contentType); _length = length; --- 16,41 ---- public static final String VERSION = "$Id$"; + public static final int MAX_RECENT_DOWNLOADS = 5; + public static final String RECENT_DOWNLOADS_HEADER = "<tr><td><b>Filename</b></td><td><b>Size (kb)</b></td><td><b>Download Rate(kb/sec)</b></td><td><b>MD5</b> (<font color=\"#00FF00\">Good</font>, <font color=\"#FF0000\">Bad</font>, <font color=\"#000000\">Unverified</font>)</td><td><b>% From cache</b></td></tr>"; + public static LinkedList recentDownloads = new LinkedList(); + private final long _length; + private final byte[] _initialSniffBytes; + private final URL _reqUrl; + private final String _lastModified; + private final long _rangeStart; + private final long _rangeEnd; ! public DownloadResponse(int code, String message, String contentType, ! long length, byte[] initialSniffBytes, URL reqUrl, ! String lastModified, long rangeStart, long rangeEnd) { super(code, message, contentType); _length = length; *************** *** 50,62 **** int startBlock = (int) (_rangeStart / Store.DATA_BLOCK_SIZE); int endBlock = (int) (_rangeEnd / Store.DATA_BLOCK_SIZE); ! OutputStream tos = new TruncatingOutputStream(out, DownloadHandler.INITIAL_SNIFF_BYTES ! + (_rangeStart % Store.DATA_BLOCK_SIZE), (_rangeEnd - _rangeStart) + 1 ! - DownloadHandler.INITIAL_SNIFF_BYTES); ! Download dl = new Download(_reqUrl, _length, _lastModified, startBlock, endBlock, tos); long startTime = System.currentTimeMillis(); dl.start(); long totalTime = System.currentTimeMillis() - startTime; String actualMD5 = out.getMD5Sum(); ! String correctMD5 = downloadMD5(); synchronized (recentDownloads) { while (recentDownloads.size() >= MAX_RECENT_DOWNLOADS) { --- 56,71 ---- int startBlock = (int) (_rangeStart / Store.DATA_BLOCK_SIZE); int endBlock = (int) (_rangeEnd / Store.DATA_BLOCK_SIZE); ! OutputStream tos = new TruncatingOutputStream(out, ! DownloadHandler.INITIAL_SNIFF_BYTES ! + (_rangeStart % Store.DATA_BLOCK_SIZE), ! (_rangeEnd - _rangeStart) + 1 ! - DownloadHandler.INITIAL_SNIFF_BYTES); ! Download dl = new Download(_reqUrl, _length, _lastModified, startBlock, ! endBlock, tos); long startTime = System.currentTimeMillis(); dl.start(); long totalTime = System.currentTimeMillis() - startTime; String actualMD5 = out.getMD5Sum(); ! String correctMD5 = downloadMd5(); synchronized (recentDownloads) { while (recentDownloads.size() >= MAX_RECENT_DOWNLOADS) { *************** *** 66,73 **** rd.append("<tr>"); rd.append("<td>" ! + _reqUrl.toString() ! .substring(_reqUrl.toString().lastIndexOf("/") + 1, _reqUrl.toString().length()) + "</td>"); rd.append("<td>" + (_length / 1024) + "</td>"); ! rd.append("<td>" + ((int)((1000f * (float)dl.getDownloaded()) / (1024f * (float)totalTime))) + "</td>"); String md5Colour; if (correctMD5 == null) { --- 75,86 ---- rd.append("<tr>"); rd.append("<td>" ! + _reqUrl.toString().substring( ! _reqUrl.toString().lastIndexOf("/") + 1, ! _reqUrl.toString().length()) + "</td>"); rd.append("<td>" + (_length / 1024) + "</td>"); ! rd ! .append("<td>" ! + ((int) ((1000f * (float) dl.getDownloaded()) / (1024f * (float) totalTime))) ! + "</td>"); String md5Colour; if (correctMD5 == null) { *************** *** 78,86 **** } else { md5Colour = "#FF0000"; ! Logger.warning("File "+_reqUrl+" failed MD5Sum check!"); } } ! rd.append("<td><font color=\""+md5Colour+"\">"+actualMD5+"</font></td>"); ! rd.append("<td>"+Math.min(100, (dl.getBytesFromCache() * 100) / dl.getDownloaded())+"</td>"); rd.append("</tr>"); recentDownloads.addFirst(rd.toString()); --- 91,102 ---- } else { md5Colour = "#FF0000"; ! Logger.warning("File " + _reqUrl + " failed MD5Sum check!"); } } ! rd.append("<td><font color=\"" + md5Colour + "\">" + actualMD5 ! + "</font></td>"); ! rd.append("<td>" ! + Math.min(100, (dl.getBytesFromCache() * 100) ! / dl.getDownloaded()) + "</td>"); rd.append("</tr>"); recentDownloads.addFirst(rd.toString()); *************** *** 88,125 **** } ! private String downloadMD5() { ! try { ! // Check for md5sum file ! URL md5sumUrl = new URL(_reqUrl.toString().substring(0, _reqUrl.toString().lastIndexOf("/")) + "/MD5SUM"); ! HttpURLConnection muc = Misc.openHttpUrlConnection(md5sumUrl); ! muc.connect(); ! if (muc.getResponseCode() != HttpURLConnection.HTTP_OK) { ! Logger.info("Got " + muc.getResponseMessage() + " when requesting " + md5sumUrl); ! return null; ! } ! String filename = _reqUrl.toString().substring(_reqUrl.toString().lastIndexOf("/") + 1, ! _reqUrl.toString().length()); ! BufferedReader br = new BufferedReader(new InputStreamReader(muc.getInputStream())); ! while (true) { ! String line = br.readLine(); ! if (line == null) { ! break; ! } ! if (line.indexOf(" ") == -1) { ! continue; ! } ! String m = line.substring(0, line.indexOf(" ")); ! String f = line.substring(line.lastIndexOf(" ") + 1, line.length()); ! if (f.equalsIgnoreCase(filename)) { ! return m; ! } ! } ! muc.disconnect(); ! } catch (MalformedURLException e) { ! e.printStackTrace(); ! } catch (IOException e) { ! throw new RuntimeException(e); ! } ! return null; } } --- 104,112 ---- } ! private String downloadMd5() { ! String sum = Integrity.checksumByMD5SUM(_reqUrl); ! if (sum == null) ! sum = Integrity.checksumByDotMd5(_reqUrl); ! return sum; } } |