moved i2cp password to PasswordManager

This commit is contained in:
zzz
2012-10-13 22:42:26 +00:00
parent 24b7b6fabd
commit 5e5dc35a1e
4 changed files with 23 additions and 32 deletions

View File

@ -394,11 +394,12 @@ public class ConfigClientsHandler extends FormHandler {
if (intfc != null)
changes.put(ClientManagerFacadeImpl.PROP_CLIENT_HOST, intfc);
String user = getJettyString("user");
if (user != null)
changes.put(ConfigClientsHelper.PROP_USER, user);
String pw = getJettyString("pw");
if (pw != null)
changes.put(ConfigClientsHelper.PROP_PW, pw);
if (user != null && pw != null && user.length() > 0 && pw.length() > 0) {
ConsolePasswordManager mgr = new ConsolePasswordManager(_context);
mgr.saveHash(ConfigClientsHelper.PROP_AUTH, user, pw);
addFormNotice(_("Added user {0}", user));
}
String mode = getJettyString("mode");
boolean disabled = "0".equals(mode);
boolean ssl = "2".equals(mode);

View File

@ -24,8 +24,6 @@ public class ConfigClientsHelper extends HelperBase {
public static final String PROP_ENABLE_SSL = "i2cp.SSL";
/** from ClientMessageEventListener */
public static final String PROP_AUTH = "i2cp.auth";
public static final String PROP_USER = "i2cp.username";
public static final String PROP_PW = "i2cp.password";
public ConfigClientsHelper() {}
@ -35,16 +33,6 @@ public class ConfigClientsHelper extends HelperBase {
Integer.toString(ClientManagerFacadeImpl.DEFAULT_PORT));
}
/** @since 0.8.3 */
public String getUser() {
return _context.getProperty(PROP_USER, "");
}
/** @since 0.8.3 */
public String getPw() {
return _context.getProperty(PROP_PW, "");
}
/** @since 0.8.3 */
public String i2cpModeChecked(int mode) {
boolean disabled = _context.getBooleanProperty(PROP_DISABLE_EXTERNAL);

View File

@ -36,6 +36,7 @@ import net.i2p.data.i2cp.SetDateMessage;
import net.i2p.router.ClientTunnelSettings;
import net.i2p.router.RouterContext;
import net.i2p.util.Log;
import net.i2p.util.PasswordManager;
import net.i2p.util.RandomSource;
/**
@ -49,6 +50,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
private final ClientConnectionRunner _runner;
private final boolean _enforceAuth;
private static final String PROP_AUTH = "i2cp.auth";
/**
* @param enforceAuth set false for in-JVM, true for socket access
*/
@ -169,19 +172,17 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
}
// Auth, since 0.8.2
if (_enforceAuth && _context.getBooleanProperty("i2cp.auth")) {
String configUser = _context.getProperty("i2cp.username");
String configPW = _context.getProperty("i2cp.password");
if (configUser != null && configPW != null) {
if (_enforceAuth && _context.getBooleanProperty(PROP_AUTH)) {
Properties props = in.getOptions();
String user = props.getProperty("i2cp.username");
String pw = props.getProperty("i2cp.password");
if (user == null || pw == null) {
if (user == null || user.length() == 0 || pw == null || pw.length() == 0) {
_log.error("I2CP auth failed for client: " + props.getProperty("inbound.nickname"));
_runner.disconnectClient("Authorization required to create session, specify i2cp.username and i2cp.password in session options");
return;
}
if ((!user.equals(configUser)) || (!pw.equals(configPW))) {
PasswordManager mgr = new PasswordManager(_context);
if (!mgr.checkHash(PROP_AUTH, user, pw)) {
_log.error("I2CP auth failed for client: " + props.getProperty("inbound.nickname") + " user: " + user);
_runner.disconnectClient("Authorization failed for Create Session, user = " + user);
return;
@ -189,7 +190,6 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
if (_log.shouldLog(Log.INFO))
_log.info("I2CP auth success for client: " + props.getProperty("inbound.nickname") + " user: " + user);
}
}
SessionId sessionId = new SessionId();
sessionId.setSessionId(getNextSessionId());
@ -244,9 +244,9 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
msg.setSessionId(_runner.getSessionId().getSessionId());
Payload payload = _runner.getPayload(new MessageId(message.getMessageId()));
if (payload == null) {
if (_log.shouldLog(Log.ERROR))
_log.error("Payload for message id [" + message.getMessageId()
+ "] is null! Unknown message id?");
if (_log.shouldLog(Log.WARN))
_log.warn("Payload for message id [" + message.getMessageId()
+ "] is null! Dropped or Unknown message id");
return;
}
msg.setPayload(payload);

View File

@ -24,7 +24,8 @@ public class RouterPasswordManager extends PasswordManager {
private static final String PROP_MIGRATED = "router.passwordManager.migrated";
// migrate these to hash
private static final String PROP_I2CP_OLD = "i2cp.password";
private static final String PROP_I2CP_OLD_PW = "i2cp.password";
private static final String PROP_I2CP_OLD_USER = "i2cp.username";
private static final String PROP_I2CP_NEW = "i2cp.auth";
/****
// migrate these to b64
@ -64,11 +65,10 @@ public class RouterPasswordManager extends PasswordManager {
if (_context.getBooleanProperty(PROP_MIGRATED))
return true;
// i2cp.password
String pw = _context.getProperty(PROP_I2CP_OLD);
if (pw != null) {
if (pw.length() > 0)
saveHash(PROP_I2CP_NEW, null, pw);
_context.router().saveConfig(PROP_I2CP_OLD, null);
String user = _context.getProperty(PROP_I2CP_OLD_USER);
String pw = _context.getProperty(PROP_I2CP_OLD_PW);
if (pw != null && user != null && pw.length() > 0 && user.length() > 0) {
saveHash(PROP_I2CP_NEW, user, pw);
}
// obfuscation of plaintext passwords
Map<String, String> toAdd = new HashMap(5);
@ -81,6 +81,8 @@ public class RouterPasswordManager extends PasswordManager {
}
}
****/
toDel.add(PROP_I2CP_OLD_USER);
toDel.add(PROP_I2CP_OLD_PW);
toAdd.put(PROP_MIGRATED, "true");
return _context.router().saveConfig(toAdd, toDel);
}