From fcd8a3ae69954a9c2c7071fcddf772c2dd93a41b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 21 Dec 2019 12:54:48 +0000 Subject: [PATCH] i2psnark: Fix autostart for torrent files copied into the dir Use Collator for case-insensitive sort Use Exception.getLocalizedMessage() Prevent duplicate torrent starts Don't write debug info to wrapper log Increase max piece size Navbar cleanup --- .../java/src/org/klomp/snark/Snark.java | 2 ++ .../src/org/klomp/snark/SnarkManager.java | 26 +++++++++++------- .../java/src/org/klomp/snark/Storage.java | 2 +- .../resources/themes/snark/dark/snark.css | 1 - .../snark/ubergine/images/snarktopnav.png | Bin 163 -> 0 bytes .../resources/themes/snark/ubergine/snark.css | 6 ---- 6 files changed, 19 insertions(+), 18 deletions(-) delete mode 100644 installer/resources/themes/snark/ubergine/images/snarktopnav.png diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 4f3992c42c..900165876c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -552,6 +552,8 @@ public class Snark * @throws RuntimeException via fatal() */ public synchronized void startTorrent() { + if (!stopped) + return; starting = true; try { x_startTorrent(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index fd5aa4f537..ec3241a764 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -1590,7 +1590,7 @@ public class SnarkManager implements CompleteListener, ClientApp { fis = new FileInputStream(sfile); } catch (IOException ioe) { // catch this here so we don't try do delete it below - addMessage(_t("Cannot open \"{0}\"", sfile.getName()) + ": " + ioe.getMessage()); + addMessage(_t("Cannot open \"{0}\"", sfile.getName()) + ": " + ioe.getLocalizedMessage()); return false; } @@ -1654,13 +1654,13 @@ public class SnarkManager implements CompleteListener, ClientApp { } catch (IOException ioe) { // close before rename/delete for windows if (fis != null) try { fis.close(); fis = null; } catch (IOException ioe2) {} - String err = _t("Torrent in \"{0}\" is invalid", sfile.toString()) + ": " + ioe.getMessage(); + String err = _t("Torrent in \"{0}\" is invalid", sfile.toString()) + ": " + ioe.getLocalizedMessage(); addMessage(err); _log.error(err, ioe); disableTorrentFile(filename); return false; } catch (OutOfMemoryError oom) { - addMessage(_t("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getMessage()); + addMessage(_t("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getLocalizedMessage()); return false; } finally { if (fis != null) try { fis.close(); } catch (IOException ioe) {} @@ -2232,13 +2232,17 @@ public class SnarkManager implements CompleteListener, ClientApp { */ private void locked_saveTorrentStatus(byte[] ih, Properties config) { File conf = configFile(_configDir, ih); + if (shouldAutoStart() && !conf.exists()) { + // force on for new torrents + config.setProperty(PROP_META_RUNNING, "true"); + } File subdir = conf.getParentFile(); if (!subdir.exists()) subdir.mkdirs(); try { DataHelper.storeProps(config, conf); if (_log.shouldInfo()) - _log.info("Saved config to " + conf); + _log.info("Saved config to " + conf /* , new Exception() */ ); } catch (IOException ioe) { _log.error("Unable to save the config to " + conf); } @@ -2391,12 +2395,13 @@ public class SnarkManager implements CompleteListener, ClientApp { } else if (info.getTotalLength() <= 0) { return _t("Torrent \"{0}\" has no data!", info.getName()); } else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) { +/* System.out.println("torrent info: " + info.toString()); List<Long> lengths = info.getLengths(); if (lengths != null) for (int i = 0; i < lengths.size(); i++) System.out.println("File " + i + " is " + lengths.get(i) + " long."); - +*/ return _t("Torrents larger than {0}B are not supported yet \"{1}\"!", Storage.MAX_TOTAL_SIZE, info.getName()); } else { // ok @@ -2414,7 +2419,7 @@ public class SnarkManager implements CompleteListener, ClientApp { filename = sfile.getCanonicalPath(); } catch (IOException ioe) { _log.error("Unable to remove the torrent " + filename, ioe); - addMessage(_t("Error: Could not remove the torrent {0}", filename) + ": " + ioe.getMessage()); + addMessage(_t("Error: Could not remove the torrent {0}", filename) + ": " + ioe.getLocalizedMessage()); return null; } int remaining = 0; @@ -2709,8 +2714,8 @@ public class SnarkManager implements CompleteListener, ClientApp { } Set<String> existingNames = listTorrentFiles(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("DirMon found: " + DataHelper.toString(foundNames) + " existing: " + DataHelper.toString(existingNames)); + //if (_log.shouldLog(Log.DEBUG)) + // _log.debug("DirMon found: " + DataHelper.toString(foundNames) + " existing: " + DataHelper.toString(existingNames)); // lets find new ones first... boolean shouldStart = shouldAutoStart(); for (String name : foundNames) { @@ -3086,14 +3091,15 @@ public class SnarkManager implements CompleteListener, ClientApp { } } } - + /** * ignore case, current locale * @since 0.9 */ private static class IgnoreCaseComparator implements Comparator<Tracker>, Serializable { + private final Collator coll = Collator.getInstance(); public int compare(Tracker l, Tracker r) { - return l.name.toLowerCase().compareTo(r.name.toLowerCase()); + return coll.compare(l.name, r.name); } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index 16d214f679..d3fa8df10a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -85,7 +85,7 @@ public class Storage implements Closeable /** The default piece size. */ private static final int DEFAULT_PIECE_SIZE = 256*1024; /** bigger than this will be rejected */ - public static final int MAX_PIECE_SIZE = 16*1024*1024; + public static final int MAX_PIECE_SIZE = 32*1024*1024; /** The maximum number of pieces in a torrent. */ public static final int MAX_PIECES = 32*1024; public static final long MAX_TOTAL_SIZE = MAX_PIECE_SIZE * (long) MAX_PIECES; diff --git a/installer/resources/themes/snark/dark/snark.css b/installer/resources/themes/snark/dark/snark.css index 2525c6f791..29e6addca0 100644 --- a/installer/resources/themes/snark/dark/snark.css +++ b/installer/resources/themes/snark/dark/snark.css @@ -728,7 +728,6 @@ td.subHeaderPriority, td.priority { td.subHeaderPriority { background: #020; font-weight: bold; - background: url(images/snarktopnav.png) repeat-x scroll center center #110011; background-image: linear-gradient(to bottom, #030 0%, #020 50%, #000 51%); text-align: center !important; padding: 0 1px !important; diff --git a/installer/resources/themes/snark/ubergine/images/snarktopnav.png b/installer/resources/themes/snark/ubergine/images/snarktopnav.png deleted file mode 100644 index 0d00c75c2ff77e1cbef02aaeb7faf2824ee5af40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVDRK%VqjpH8Y(cGfq{Xuz$3Dlfr0NZ2s0kf zUy;JVz!2)`;uumfCz<CGM^Xc$7+c$aj&u9}d(8R&|G#3PL_o^F#}gb48O~;;T%IuX zZ}Ndu&7)NXzn{zdZ5NbP;IT+8U>9ZPOXab!J?=1vF}|)gQG)fbI0M7-AE7tQuC#PB OfZX8f=d#Wzp$P!URy5@R diff --git a/installer/resources/themes/snark/ubergine/snark.css b/installer/resources/themes/snark/ubergine/snark.css index 7a3ba6620a..02dc7b2150 100644 --- a/installer/resources/themes/snark/ubergine/snark.css +++ b/installer/resources/themes/snark/ubergine/snark.css @@ -80,12 +80,6 @@ body { .snarknavbar { margin: -10px 0 10px 0 !important; padding: 15px 10px 14px; - border: 1px solid #101; - border-radius: 0 0 4px 4px; - box-shadow: inset 0 0 0 1px #3f173f, inset 0 0 3px 1px #212; - filter: drop-shadow(0 1px 4px #101); - background: #101 url(images/snarktopnav.png) repeat-x scroll center center; - background: linear-gradient(to bottom, #522852, #4a2449 11%, #321831 33%, #281428 51%, #1c0e1c 52%, #101 54%); min-width: 600px; width: 70%; text-align: center; -- GitLab