forked from I2P_Developers/i2p.i2p
* Addresses: Add utility toString() methods
* Transport: Log tweaks
This commit is contained in:
@@ -16,9 +16,9 @@ import java.util.TreeSet;
|
||||
|
||||
|
||||
/**
|
||||
* Get the local addresses
|
||||
* Methods to get the local addresses, and other IP utilities
|
||||
*
|
||||
* @since 0.8.3 moved to core
|
||||
* @since 0.8.3 moved to core from router/transport
|
||||
* @author zzz
|
||||
*/
|
||||
public abstract class Addresses {
|
||||
@@ -114,6 +114,44 @@ public abstract class Addresses {
|
||||
(ia instanceof Inet4Address));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to convert an IP address to a String
|
||||
* without throwing an exception.
|
||||
* @return "null" for null, and "bad IP length x" if length is invalid
|
||||
* @since 0.8.12
|
||||
*/
|
||||
public static String toString(byte[] addr) {
|
||||
if (addr == null)
|
||||
return "null";
|
||||
try {
|
||||
return InetAddress.getByAddress(addr).getHostAddress();
|
||||
} catch (UnknownHostException uhe) {
|
||||
return "bad IP length " + addr.length;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to convert an IP address and port to a String
|
||||
* without throwing an exception.
|
||||
* @return "ip:port"
|
||||
* @since 0.8.12
|
||||
*/
|
||||
public static String toString(byte[] addr, int port) {
|
||||
if (addr == null)
|
||||
return "null:" + port;
|
||||
try {
|
||||
String ip = InetAddress.getByAddress(addr).getHostAddress();
|
||||
if (addr.length != 16)
|
||||
return ip + ':' + port;
|
||||
return '[' + ip + "]:" + port;
|
||||
} catch (UnknownHostException uhe) {
|
||||
return "(bad IP length " + addr.length + "):" + port;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print out the local addresses
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
System.err.println("External Addresses:");
|
||||
Set<String> a = getAddresses(false, false);
|
||||
|
@@ -212,9 +212,10 @@ public abstract class TransportImpl implements Transport {
|
||||
|
||||
if (msToSend > 1000) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("afterSend slow: [success=" + sendSuccessful + "] " + msg.getMessageSize() + " byte "
|
||||
+ msg.getMessageType() + " " + msg.getMessageId() + " to "
|
||||
+ msg.getTarget().getIdentity().calculateHash().toBase64().substring(0,6) + " took " + msToSend);
|
||||
_log.warn(getStyle() + " afterSend slow: " + (sendSuccessful ? "success " : "FAIL ")
|
||||
+ msg.getMessageSize() + " byte "
|
||||
+ msg.getMessageType() + ' ' + msg.getMessageId() + " to "
|
||||
+ msg.getTarget().getIdentity().calculateHash().toBase64().substring(0,6) + " took " + msToSend + " ms");
|
||||
}
|
||||
//if (true)
|
||||
// _log.error("(not error) I2NP message sent? " + sendSuccessful + " " + msg.getMessageId() + " after " + msToSend + "/" + msg.getTransmissionTime());
|
||||
@@ -225,21 +226,22 @@ public abstract class TransportImpl implements Transport {
|
||||
if (!sendSuccessful)
|
||||
level = Log.INFO;
|
||||
if (_log.shouldLog(level))
|
||||
_log.log(level, "afterSend slow (" + lifetime + "/" + msToSend + "): [success=" + sendSuccessful + "] " + msg.getMessageSize() + " byte "
|
||||
_log.log(level, getStyle() + " afterSend slow (" + (sendSuccessful ? "success " : "FAIL ")
|
||||
+ lifetime + "/" + msToSend + "): " + msg.getMessageSize() + " byte "
|
||||
+ msg.getMessageType() + " " + msg.getMessageId() + " from " + _context.routerHash().toBase64().substring(0,6)
|
||||
+ " to " + msg.getTarget().getIdentity().calculateHash().toBase64().substring(0,6) + ": " + msg.toString());
|
||||
} else {
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("afterSend: [success=" + sendSuccessful + "] " + msg.getMessageSize() + " byte "
|
||||
_log.info(getStyle() + " afterSend: " + (sendSuccessful ? "success " : "FAIL ")
|
||||
+ msg.getMessageSize() + " byte "
|
||||
+ msg.getMessageType() + " " + msg.getMessageId() + " from " + _context.routerHash().toBase64().substring(0,6)
|
||||
+ " to " + msg.getTarget().getIdentity().calculateHash().toBase64().substring(0,6) + "\n" + msg.toString());
|
||||
}
|
||||
|
||||
if (sendSuccessful) {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Send message " + msg.getMessageType() + " to "
|
||||
+ msg.getTarget().getIdentity().getHash().toBase64() + " with transport "
|
||||
+ getStyle() + " successfully");
|
||||
_log.debug(getStyle() + " Sent " + msg.getMessageType() + " successfully to "
|
||||
+ msg.getTarget().getIdentity().getHash().toBase64());
|
||||
Job j = msg.getOnSendJob();
|
||||
if (j != null)
|
||||
_context.jobQueue().addJob(j);
|
||||
@@ -247,9 +249,9 @@ public abstract class TransportImpl implements Transport {
|
||||
msg.discardData();
|
||||
} else {
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Failed to send message " + msg.getMessageType()
|
||||
_log.info(getStyle() + " Failed to send " + msg.getMessageType()
|
||||
+ " to " + msg.getTarget().getIdentity().getHash().toBase64()
|
||||
+ " with transport " + getStyle() + " (details: " + msg + ")");
|
||||
+ " (details: " + msg + ')');
|
||||
if (msg.getExpiration() < _context.clock().now())
|
||||
_context.statManager().addRateData("transport.expiredOnQueueLifetime", lifetime, lifetime);
|
||||
|
||||
|
@@ -122,17 +122,20 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
public DetectedIP[] getAddress() {
|
||||
_log.info("UP&P.getAddress() is called \\o/");
|
||||
if(isDisabled) {
|
||||
_log.warn("Plugin has been disabled previously, ignoring request.");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Plugin has been disabled previously, ignoring request.");
|
||||
return null;
|
||||
} else if(!isNATPresent()) {
|
||||
_log.warn("No UP&P device found, detection of the external ip address using the plugin has failed");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("No UP&P device found, detection of the external ip address using the plugin has failed");
|
||||
return null;
|
||||
}
|
||||
|
||||
DetectedIP result = null;
|
||||
final String natAddress = getNATAddress();
|
||||
if (natAddress == null || natAddress.length() <= 0) {
|
||||
_log.warn("No external address returned");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("No external address returned");
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
@@ -141,13 +144,15 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
short status = DetectedIP.NOT_SUPPORTED;
|
||||
thinksWeAreDoubleNatted = !TransportImpl.isPubliclyRoutable(detectedIP.getAddress());
|
||||
// If we have forwarded a port AND we don't have a private address
|
||||
_log.warn("NATAddress: \"" + natAddress + "\" detectedIP: " + detectedIP + " double? " + thinksWeAreDoubleNatted);
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("NATAddress: \"" + natAddress + "\" detectedIP: " + detectedIP + " double? " + thinksWeAreDoubleNatted);
|
||||
if((portsForwarded.size() > 1) && (!thinksWeAreDoubleNatted))
|
||||
status = DetectedIP.FULL_INTERNET;
|
||||
|
||||
result = new DetectedIP(detectedIP, status);
|
||||
|
||||
_log.warn("Successful UP&P discovery :" + result);
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Successful UP&P discovery :" + result);
|
||||
|
||||
return new DetectedIP[] { result };
|
||||
} catch (UnknownHostException e) {
|
||||
@@ -159,16 +164,19 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
public void deviceAdded(Device dev) {
|
||||
synchronized (lock) {
|
||||
if(isDisabled) {
|
||||
_log.warn("Plugin has been disabled previously, ignoring new device.");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Plugin has been disabled previously, ignoring new device.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(!ROUTER_DEVICE.equals(dev.getDeviceType()) || !dev.isRootDevice()) {
|
||||
_log.warn("UP&P non-IGD device found, ignoring : " + dev.getFriendlyName());
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("UP&P non-IGD device found, ignoring : " + dev.getFriendlyName());
|
||||
return; // ignore non-IGD devices
|
||||
} else if(isNATPresent()) {
|
||||
// maybe we should see if the old one went away before ignoring the new one?
|
||||
_log.warn("UP&P ignoring additional IGD device found: " + dev.getFriendlyName() + " UDN: " + dev.getUDN());
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("UP&P ignoring additional IGD device found: " + dev.getFriendlyName() + " UDN: " + dev.getUDN());
|
||||
/********** seems a little drastic
|
||||
isDisabled = true;
|
||||
|
||||
@@ -182,7 +190,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
return;
|
||||
}
|
||||
|
||||
_log.warn("UP&P IGD found : " + dev.getFriendlyName() + " UDN: " + dev.getUDN() + " lease time: " + dev.getLeaseTime());
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("UP&P IGD found : " + dev.getFriendlyName() + " UDN: " + dev.getUDN() + " lease time: " + dev.getLeaseTime());
|
||||
synchronized(lock) {
|
||||
_router = dev;
|
||||
}
|
||||
@@ -231,7 +240,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
|
||||
_service = current2.getService(WAN_PPP_CONNECTION);
|
||||
if(_service == null) {
|
||||
_log.warn(_router.getFriendlyName()+ " doesn't seems to be using PPP; we won't be able to extract bandwidth-related informations out of it.");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn(_router.getFriendlyName()+ " doesn't seems to be using PPP; we won't be able to extract bandwidth-related informations out of it.");
|
||||
_service = current2.getService(WAN_IP_CONNECTION);
|
||||
if(_service == null)
|
||||
_log.error(_router.getFriendlyName()+ " doesn't export WAN_IP_CONNECTION either: we won't be able to use it!");
|
||||
@@ -244,7 +254,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
}
|
||||
|
||||
public boolean tryAddMapping(String protocol, int port, String description, ForwardPort fp) {
|
||||
_log.warn("Registering a port mapping for " + port + "/" + protocol);
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Registering a port mapping for " + port + "/" + protocol);
|
||||
int nbOfTries = 0;
|
||||
boolean isPortForwarded = false;
|
||||
while(nbOfTries++ < 5) {
|
||||
@@ -255,7 +266,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {}
|
||||
}
|
||||
_log.warn((isPortForwarded ? "Mapping is successful!" : "Mapping has failed!") + " ("+ nbOfTries + " tries)");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn((isPortForwarded ? "Mapping is successful!" : "Mapping has failed!") + " ("+ nbOfTries + " tries)");
|
||||
return isPortForwarded;
|
||||
}
|
||||
|
||||
@@ -268,7 +280,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
}
|
||||
|
||||
public void deviceRemoved(Device dev ){
|
||||
_log.warn("UP&P device removed : " + dev.getFriendlyName() + " UDN: " + dev.getUDN());
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("UP&P device removed : " + dev.getFriendlyName() + " UDN: " + dev.getUDN());
|
||||
synchronized (lock) {
|
||||
if(_router == null) return;
|
||||
// I2P this wasn't working
|
||||
@@ -277,7 +290,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
dev.isRootDevice() &&
|
||||
stringEquals(_router.getFriendlyName(), dev.getFriendlyName()) &&
|
||||
stringEquals(_router.getUDN(), dev.getUDN())) {
|
||||
_log.warn("UP&P IGD device removed : " + dev.getFriendlyName());
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("UP&P IGD device removed : " + dev.getFriendlyName());
|
||||
_router = null;
|
||||
_service = null;
|
||||
}
|
||||
@@ -287,7 +301,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
/** event callback - unused for now - how many devices support events? */
|
||||
public void eventNotifyReceived(String uuid, long seq, String varName, String value) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.error("Event: " + uuid + ' ' + seq + ' ' + varName + '=' + value);
|
||||
_log.warn("Event: " + uuid + ' ' + seq + ' ' + varName + '=' + value);
|
||||
}
|
||||
|
||||
/** compare two strings, either of which could be null */
|
||||
@@ -647,7 +661,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
portsForwarded.remove(fp);
|
||||
}
|
||||
|
||||
if(!noLog)
|
||||
if(_log.shouldLog(Log.WARN) && !noLog)
|
||||
_log.warn("UPnP: Removed mapping for "+fp.name+" "+port+" / "+protocol);
|
||||
return retval;
|
||||
}
|
||||
@@ -659,7 +673,8 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
|
||||
public void onChangePublicPorts(Set<ForwardPort> ports, ForwardPortCallback cb) {
|
||||
Set<ForwardPort> portsToDumpNow = null;
|
||||
Set<ForwardPort> portsToForwardNow = null;
|
||||
_log.warn("UP&P Forwarding "+ports.size()+" ports...");
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("UP&P Forwarding "+ports.size()+" ports...");
|
||||
synchronized(lock) {
|
||||
if(forwardCallback != null && forwardCallback != cb && cb != null) {
|
||||
_log.error("ForwardPortCallback changed from "+forwardCallback+" to "+cb+" - using new value, but this is very strange!");
|
||||
|
@@ -12,6 +12,7 @@ import net.i2p.data.RouterIdentity;
|
||||
import net.i2p.data.SessionKey;
|
||||
import net.i2p.data.Signature;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.util.Addresses;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
/**
|
||||
@@ -93,7 +94,7 @@ class InboundEstablishState {
|
||||
_bobIP = new byte[req.readIPSize()];
|
||||
req.readIP(_bobIP, 0);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Receive sessionRequest, BobIP = " + Base64.encode(_bobIP));
|
||||
_log.debug("Receive sessionRequest, BobIP = " + Addresses.toString(_bobIP));
|
||||
if (_currentState == STATE_UNKNOWN)
|
||||
_currentState = STATE_REQUEST_RECEIVED;
|
||||
packetReceived();
|
||||
@@ -186,10 +187,8 @@ class InboundEstablishState {
|
||||
buf.append("Signing sessionCreated:");
|
||||
buf.append(" ReceivedX: ").append(Base64.encode(_receivedX));
|
||||
buf.append(" SentY: ").append(Base64.encode(_sentY));
|
||||
buf.append(" AliceIP: ").append(Base64.encode(_aliceIP));
|
||||
buf.append(" AlicePort: ").append(_alicePort);
|
||||
buf.append(" BobIP: ").append(Base64.encode(_bobIP));
|
||||
buf.append(" BobPort: ").append(_bobPort);
|
||||
buf.append(" Alice: ").append(Addresses.toString(_aliceIP, _alicePort));
|
||||
buf.append(" Bob: ").append(Addresses.toString(_bobIP, _bobPort));
|
||||
buf.append(" RelayTag: ").append(_sentRelayTag);
|
||||
buf.append(" SignedOn: ").append(_sentSignedOnTime);
|
||||
buf.append(" signature: ").append(Base64.encode(_sentSignature.getData()));
|
||||
@@ -346,12 +345,8 @@ class InboundEstablishState {
|
||||
buf.append(" ReceivedX: ").append(Base64.encode(_receivedX, 0, 4));
|
||||
if (_sentY != null)
|
||||
buf.append(" SentY: ").append(Base64.encode(_sentY, 0, 4));
|
||||
if (_aliceIP != null)
|
||||
buf.append(" AliceIP: ").append(Base64.encode(_aliceIP));
|
||||
buf.append(" AlicePort: ").append(_alicePort);
|
||||
if (_bobIP != null)
|
||||
buf.append(" BobIP: ").append(Base64.encode(_bobIP));
|
||||
buf.append(" BobPort: ").append(_bobPort);
|
||||
buf.append(" Alice: ").append(Addresses.toString(_aliceIP, _alicePort));
|
||||
buf.append(" Bob: ").append(Addresses.toString(_bobIP, _bobPort));
|
||||
buf.append(" RelayTag: ").append(_sentRelayTag);
|
||||
buf.append(" SignedOn: ").append(_sentSignedOnTime);
|
||||
buf.append(" state: ").append(_currentState);
|
||||
|
@@ -13,6 +13,7 @@ import net.i2p.data.SessionKey;
|
||||
import net.i2p.data.Signature;
|
||||
import net.i2p.router.OutNetMessage;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.util.Addresses;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
/**
|
||||
@@ -165,7 +166,7 @@ class OutboundEstablishState {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Receive session created:\neSig: " + Base64.encode(_receivedEncryptedSignature)
|
||||
+ "\nreceivedIV: " + Base64.encode(_receivedIV)
|
||||
+ "\nAliceIP: " + Base64.encode(_aliceIP)
|
||||
+ "\nAliceIP: " + Addresses.toString(_aliceIP)
|
||||
+ " RelayTag: " + _receivedRelayTag
|
||||
+ " SignedOn: " + _receivedSignedOnTime
|
||||
+ "\nthis: " + this.toString());
|
||||
@@ -290,10 +291,8 @@ class OutboundEstablishState {
|
||||
if (!valid || _log.shouldLog(Log.DEBUG)) {
|
||||
StringBuilder buf = new StringBuilder(128);
|
||||
buf.append("Signed sessionCreated:");
|
||||
buf.append(" AliceIP: ").append(Base64.encode(_aliceIP));
|
||||
buf.append(" AlicePort: ").append(_alicePort);
|
||||
buf.append(" BobIP: ").append(Base64.encode(_bobIP));
|
||||
buf.append(" BobPort: ").append(_bobPort);
|
||||
buf.append(" Alice: ").append(Addresses.toString(_aliceIP, _alicePort));
|
||||
buf.append(" Bob: ").append(Addresses.toString(_bobIP, _bobPort));
|
||||
buf.append(" RelayTag: ").append(_receivedRelayTag);
|
||||
buf.append(" SignedOn: ").append(_receivedSignedOnTime);
|
||||
buf.append(" signature: ").append(Base64.encode(_receivedSignature.getData()));
|
||||
|
@@ -16,6 +16,7 @@ import net.i2p.data.RouterIdentity;
|
||||
import net.i2p.data.SessionKey;
|
||||
import net.i2p.data.Signature;
|
||||
import net.i2p.util.ByteCache;
|
||||
import net.i2p.util.Addresses;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
/**
|
||||
@@ -596,10 +597,8 @@ class PacketBuilder {
|
||||
if (_log.shouldLog(Log.DEBUG)) {
|
||||
StringBuilder buf = new StringBuilder(128);
|
||||
buf.append("Sending sessionCreated:");
|
||||
buf.append(" AliceIP: ").append(Base64.encode(sentIP));
|
||||
buf.append(" AlicePort: ").append(state.getSentPort());
|
||||
buf.append(" BobIP: ").append(Base64.encode(state.getReceivedOurIP()));
|
||||
buf.append(" BobPort: ").append(externalPort);
|
||||
buf.append(" Alice: ").append(Addresses.toString(sentIP, state.getSentPort()));
|
||||
buf.append(" Bob: ").append(Addresses.toString(state.getReceivedOurIP(), externalPort));
|
||||
buf.append(" RelayTag: ").append(state.getSentRelayTag());
|
||||
buf.append(" SignedOn: ").append(state.getSentSignedOnTime());
|
||||
buf.append(" signature: ").append(Base64.encode(state.getSentSignature().getData()));
|
||||
|
Reference in New Issue
Block a user