diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 0c68ab1c1..ab44a7630 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -179,6 +179,7 @@ + @@ -202,6 +203,7 @@ + @@ -213,6 +215,7 @@ + diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java index af9f3fbf1..3a5c001f6 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java @@ -45,7 +45,7 @@ public class TunnelController implements Logging { private boolean _running; private boolean _starting; - private static final String KEY_BACKUP_DIR = "i2ptunnel-keyBackup"; + public static final String KEY_BACKUP_DIR = "i2ptunnel-keyBackup"; /** * Create a new controller for a tunnel out of the specific config options. @@ -108,13 +108,11 @@ public class TunnelController implements Logging { log("Private key created and saved in " + keyFile.getAbsolutePath()); log("You should backup this file in a secure place."); log("New destination: " + destStr); - log("Base32: " + Base32.encode(dest.calculateHash().getData()) + ".b32.i2p"); + String b32 = Base32.encode(dest.calculateHash().getData()) + ".b32.i2p"; + log("Base32: " + b32); File backupDir = new SecureFile(I2PAppContext.getGlobalContext().getConfigDir(), KEY_BACKUP_DIR); - if (backupDir.exists() || backupDir.mkdir()) { - String name = keyFile.getName(); - if (name.endsWith(".dat")) - name = name.substring(0, name.length() - 4); - name += "-" + I2PAppContext.getGlobalContext().clock().now() + ".dat"; + if (backupDir.isDirectory() || backupDir.mkdir()) { + String name = b32 + '-' + I2PAppContext.getGlobalContext().clock().now() + ".dat"; File backup = new File(backupDir, name); if (FileUtil.copy(keyFile, backup, false, true)) log("Private key backup saved to " + backup.getAbsolutePath()); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java index 141336070..0f4d6636c 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java @@ -79,7 +79,7 @@ public class EditBean extends IndexBean { if (tun != null && tun.getPrivKeyFile() != null) return tun.getPrivKeyFile(); if (tunnel < 0) - tunnel = _group == null ? 1 : _group.getControllers().size() + 1; + tunnel = _group == null ? 999 : _group.getControllers().size(); return "i2ptunnel" + tunnel + "-privKeys.dat"; } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java index 838377624..692f3585c 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -38,6 +38,7 @@ import net.i2p.util.ConcurrentHashSet; import net.i2p.util.FileUtil; import net.i2p.util.Log; import net.i2p.util.PasswordManager; +import net.i2p.util.SecureFile; /** * Simple accessor for exposing tunnel info, but also an ugly form handler @@ -373,10 +374,13 @@ public class IndexBean { name = Long.toString(_context.clock().now()); } } - name = "i2ptunnel-deleted-" + name.replace(' ', '_') + "-privkeys.dat"; - File to = new File(_context.getConfigDir(), name); - if (to.exists()) - to = new File(_context.getConfigDir(), name + '-' + _context.clock().now()); + name = "i2ptunnel-deleted-" + name.replace(' ', '_') + '-' + _context.clock().now() + "-privkeys.dat"; + File backupDir = new SecureFile(_context.getConfigDir(), TunnelController.KEY_BACKUP_DIR); + File to; + if (backupDir.isDirectory() || backupDir.mkdir()) + to = new File(backupDir, name); + else + to = new File(_context.getConfigDir(), name); boolean success = FileUtil.rename(pkf, to); if (success) msgs.add("Private key file " + pkf.getAbsolutePath() + diff --git a/apps/i2ptunnel/jsp/editClient.jsp b/apps/i2ptunnel/jsp/editClient.jsp index 92d2c1fd9..6ee0ae540 100644 --- a/apps/i2ptunnel/jsp/editClient.jsp +++ b/apps/i2ptunnel/jsp/editClient.jsp @@ -433,7 +433,7 @@ - class="tickbox" /> + class="tickbox" />