improve opentracker configuration

This commit is contained in:
zzz
2012-06-02 13:49:14 +00:00
parent 324e9c960d
commit 7d94f9fb19
3 changed files with 64 additions and 29 deletions

View File

@ -457,14 +457,18 @@ public class I2PSnarkUtil {
_openTrackerString = ot; _openTrackerString = ot;
} }
/** Comma delimited list of open trackers to use as backups
* non-null but possibly empty
*/
public String getOpenTrackerString() { public String getOpenTrackerString() {
if (_openTrackerString == null) if (_openTrackerString == null)
return DEFAULT_OPENTRACKERS; return DEFAULT_OPENTRACKERS;
return _openTrackerString; return _openTrackerString;
} }
/** comma delimited list open trackers to use as backups */ /** List of open trackers to use as backups
/** sorted map of name to announceURL=baseURL */ * Null if disabled
*/
public List<String> getOpenTrackers() { public List<String> getOpenTrackers() {
if (!shouldUseOpenTrackers()) if (!shouldUseOpenTrackers())
return null; return null;

View File

@ -365,7 +365,7 @@ public class SnarkManager implements Snark.CompleteListener {
public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, String refreshDelay, public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, String refreshDelay,
String startDelay, String seedPct, String eepHost, String startDelay, String seedPct, String eepHost,
String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts, String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts,
String upLimit, String upBW, boolean useOpenTrackers, String openTrackers, String theme) { String upLimit, String upBW, boolean useOpenTrackers, String theme) {
boolean changed = false; boolean changed = false;
//if (eepHost != null) { //if (eepHost != null) {
// // unused, we use socket eepget // // unused, we use socket eepget
@ -549,14 +549,6 @@ public class SnarkManager implements Snark.CompleteListener {
_util.setUseOpenTrackers(useOpenTrackers); _util.setUseOpenTrackers(useOpenTrackers);
changed = true; changed = true;
} }
if (openTrackers != null) {
if (openTrackers.trim().length() > 0 && !openTrackers.trim().equals(_util.getOpenTrackerString())) {
_config.setProperty(PROP_OPENTRACKERS, openTrackers.trim());
_util.setOpenTrackerString(openTrackers);
addMessage(_("Open Tracker list changed - torrent restart required to take effect."));
changed = true;
}
}
if (theme != null) { if (theme != null) {
if(!theme.equals(_config.getProperty(PROP_THEME))) { if(!theme.equals(_config.getProperty(PROP_THEME))) {
_config.setProperty(PROP_THEME, theme); _config.setProperty(PROP_THEME, theme);
@ -571,6 +563,20 @@ public class SnarkManager implements Snark.CompleteListener {
} }
} }
/**
* @param ot null to restore default
* @since 0.9.1
*/
public void saveOpenTrackers(String ot) {
_util.setOpenTrackerString(ot);
if (ot != null)
_config.setProperty(PROP_OPENTRACKERS, ot);
else
_config.remove(PROP_OPENTRACKERS);
addMessage(_("Open Tracker list changed - torrent restart required to take effect."));
saveConfig();
}
public void saveConfig() { public void saveConfig() {
try { try {
synchronized (_configFile) { synchronized (_configFile) {

View File

@ -693,11 +693,11 @@ public class I2PSnarkServlet extends DefaultServlet {
String refreshDel = req.getParameter("refreshDelay"); String refreshDel = req.getParameter("refreshDelay");
String startupDel = req.getParameter("startupDelay"); String startupDel = req.getParameter("startupDelay");
boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null; boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null;
String openTrackers = req.getParameter("openTrackers"); //String openTrackers = req.getParameter("openTrackers");
String theme = req.getParameter("theme"); String theme = req.getParameter("theme");
_manager.updateConfig(dataDir, filesPublic, autoStart, refreshDel, startupDel, _manager.updateConfig(dataDir, filesPublic, autoStart, refreshDel, startupDel,
seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts,
upLimit, upBW, useOpenTrackers, openTrackers, theme); upLimit, upBW, useOpenTrackers, theme);
} else if ("Save2".equals(action)) { } else if ("Save2".equals(action)) {
String taction = req.getParameter("taction"); String taction = req.getParameter("taction");
if (taction != null) if (taction != null)
@ -771,26 +771,35 @@ public class I2PSnarkServlet extends DefaultServlet {
/** @since 0.9 */ /** @since 0.9 */
private void processTrackerForm(String action, HttpServletRequest req) { private void processTrackerForm(String action, HttpServletRequest req) {
if (action.equals(_("Delete selected"))) { if (action.equals(_("Delete selected")) || action.equals(_("Change open trackers"))) {
boolean changed = false; boolean changed = false;
Map<String, Tracker> trackers = _manager.getTrackerMap(); Map<String, Tracker> trackers = _manager.getTrackerMap();
StringBuilder openBuf = new StringBuilder(128);
Enumeration e = req.getParameterNames(); Enumeration e = req.getParameterNames();
while (e.hasMoreElements()) { while (e.hasMoreElements()) {
Object o = e.nextElement(); Object o = e.nextElement();
if (!(o instanceof String)) if (!(o instanceof String))
continue; continue;
String k = (String) o; String k = (String) o;
if (!k.startsWith("delete_")) if (k.startsWith("delete_")) {
continue; k = k.substring(7);
k = k.substring(7); if (trackers.remove(k) != null) {
if (trackers.remove(k) != null) { _manager.addMessage(_("Removed") + ": " + k);
_manager.addMessage(_("Removed") + ": " + k); changed = true;
changed = true; }
} else if (k.startsWith("open_")) {
if (openBuf.length() > 0)
openBuf.append(',');
openBuf.append(k.substring(5));
} }
} }
if (changed) { if (changed) {
_manager.saveTrackerMap(); _manager.saveTrackerMap();
} }
String newOpen = openBuf.toString();
if (!newOpen.equals(_manager.util().getOpenTrackerString())) {
_manager.saveOpenTrackers(newOpen);
}
} else if (action.equals(_("Add tracker"))) { } else if (action.equals(_("Add tracker"))) {
String name = req.getParameter("tname"); String name = req.getParameter("tname");
String hurl = req.getParameter("thurl"); String hurl = req.getParameter("thurl");
@ -803,6 +812,11 @@ public class I2PSnarkServlet extends DefaultServlet {
Map<String, Tracker> trackers = _manager.getTrackerMap(); Map<String, Tracker> trackers = _manager.getTrackerMap();
trackers.put(name, new Tracker(name, aurl, hurl)); trackers.put(name, new Tracker(name, aurl, hurl));
_manager.saveTrackerMap(); _manager.saveTrackerMap();
if (req.getParameter("_add_open_") != null) {
String oldOpen = _manager.util().getOpenTrackerString();
String newOpen = oldOpen.length() <= 0 ? aurl : oldOpen + ',' + aurl;
_manager.saveOpenTrackers(newOpen);
}
} else { } else {
_manager.addMessage(_("Enter valid tracker name and URLs")); _manager.addMessage(_("Enter valid tracker name and URLs"));
} }
@ -811,6 +825,7 @@ public class I2PSnarkServlet extends DefaultServlet {
} }
} else if (action.equals(_("Restore defaults"))) { } else if (action.equals(_("Restore defaults"))) {
_manager.setDefaultTrackerMap(); _manager.setDefaultTrackerMap();
_manager.saveOpenTrackers(null);
_manager.addMessage(_("Restored default trackers")); _manager.addMessage(_("Restored default trackers"));
} else { } else {
_manager.addMessage("Unknown POST action: \"" + action + '\"'); _manager.addMessage("Unknown POST action: \"" + action + '\"');
@ -1422,7 +1437,7 @@ public class I2PSnarkServlet extends DefaultServlet {
boolean filesPublic = _manager.areFilesPublic(); boolean filesPublic = _manager.areFilesPublic();
boolean autoStart = _manager.shouldAutoStart(); boolean autoStart = _manager.shouldAutoStart();
boolean useOpenTrackers = _manager.util().shouldUseOpenTrackers(); boolean useOpenTrackers = _manager.util().shouldUseOpenTrackers();
String openTrackers = _manager.util().getOpenTrackerString(); //String openTrackers = _manager.util().getOpenTrackerString();
//int seedPct = 0; //int seedPct = 0;
out.write("<form action=\"/i2psnark/configure\" method=\"POST\">\n" + out.write("<form action=\"/i2psnark/configure\" method=\"POST\">\n" +
@ -1536,12 +1551,12 @@ public class I2PSnarkServlet extends DefaultServlet {
+ (useOpenTrackers ? "checked " : "") + (useOpenTrackers ? "checked " : "")
+ "title=\""); + "title=\"");
out.write(_("If checked, announce torrents to open trackers as well as the tracker listed in the torrent file")); out.write(_("If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"));
out.write("\" > " + out.write("\" ></td></tr>\n");
"<tr><td>"); // "<tr><td>");
out.write(_("Open tracker announce URLs")); //out.write(_("Open tracker announce URLs"));
out.write(": <td><input type=\"text\" name=\"openTrackers\" value=\"" //out.write(": <td><input type=\"text\" name=\"openTrackers\" value=\""
+ openTrackers + "\" size=\"50\" ><br>\n"); // + openTrackers + "\" size=\"50\" ><br>\n");
//out.write("\n"); //out.write("\n");
//out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\"" //out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
@ -1613,27 +1628,37 @@ public class I2PSnarkServlet extends DefaultServlet {
.append("</th><th>") .append("</th><th>")
.append(_("Website URL")) .append(_("Website URL"))
.append("</th><th>") .append("</th><th>")
.append(_("Open Tracker?"))
.append("</th><th>")
.append(_("Announce URL")) .append(_("Announce URL"))
.append("</th></tr>\n"); .append("</th></tr>\n");
List<String> openTrackers = _manager.util().getOpenTrackers();
for (Tracker t : _manager.getSortedTrackers()) { for (Tracker t : _manager.getSortedTrackers()) {
String name = t.name; String name = t.name;
String homeURL = t.baseURL; String homeURL = t.baseURL;
String announceURL = t.announceURL.replace("&#61;", "="); String announceURL = t.announceURL.replace("&#61;", "=");
buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_") buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_")
.append(name).append("\">" + .append(name).append("\" title=\"").append(_("Delete")).append("\">" +
"</td><td align=\"left\">").append(name) "</td><td align=\"left\">").append(name)
.append("</td><td align=\"left\">").append(urlify(homeURL, 35)) .append("</td><td align=\"left\">").append(urlify(homeURL, 35))
.append("</td><td align=\"left\">").append(urlify(announceURL, 35)) .append("</td><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"open_")
.append(announceURL).append("\"");
if (openTrackers != null && openTrackers.contains(t.announceURL))
buf.append(" checked=\"checked\"");
buf.append(">" +
"</td><td align=\"left\">").append(urlify(announceURL, 35))
.append("</td></tr>\n"); .append("</td></tr>\n");
} }
buf.append("<tr><td align=\"center\"><b>") buf.append("<tr><td align=\"center\"><b>")
.append(_("Add")).append(":</b></td>" + .append(_("Add")).append(":</b></td>" +
"<td align=\"left\"><input type=\"text\" size=\"16\" name=\"tname\"></td>" + "<td align=\"left\"><input type=\"text\" size=\"16\" name=\"tname\"></td>" +
"<td align=\"left\"><input type=\"text\" size=\"40\" name=\"thurl\"></td>" + "<td align=\"left\"><input type=\"text\" size=\"40\" name=\"thurl\"></td>" +
"<td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"_add_open_\"></td>" +
"<td align=\"left\"><input type=\"text\" size=\"40\" name=\"taurl\"></td></tr>\n" + "<td align=\"left\"><input type=\"text\" size=\"40\" name=\"taurl\"></td></tr>\n" +
"<tr><td colspan=\"2\"></td><td colspan=\"2\" align=\"left\">\n" + "<tr><td colspan=\"2\"></td><td colspan=\"3\" align=\"left\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"default\" value=\"").append(_("Add tracker")).append("\">\n" + "<input type=\"submit\" name=\"taction\" class=\"default\" value=\"").append(_("Add tracker")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"delete\" value=\"").append(_("Delete selected")).append("\">\n" + "<input type=\"submit\" name=\"taction\" class=\"delete\" value=\"").append(_("Delete selected")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"accept\" value=\"").append(_("Change open trackers")).append("\">\n" +
// "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" + // "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"reload\" value=\"").append(_("Restore defaults")).append("\">\n" + "<input type=\"submit\" name=\"taction\" class=\"reload\" value=\"").append(_("Restore defaults")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"add\" value=\"").append(_("Add tracker")).append("\">\n" + "<input type=\"submit\" name=\"taction\" class=\"add\" value=\"").append(_("Add tracker")).append("\">\n" +