diff --git a/source/de/anomic/http/httpd.java b/source/de/anomic/http/httpd.java index d3d40f9c6..97d793a53 100644 --- a/source/de/anomic/http/httpd.java +++ b/source/de/anomic/http/httpd.java @@ -1125,7 +1125,7 @@ public final class httpd implements serverHandler { // tp.put("host", serverCore.publicIP().getHostAddress()); // tp.put("port", switchboard.getConfig("port", "8080")); tp.put("peerName", yacyCore.seedDB.mySeed.getName()); - tp.put("host", serverCore.publicIP().getHostAddress()); + tp.put("host", serverCore.publicIP()); tp.put("port", (serverCore.portForwardingEnabled && (serverCore.portForwarding != null)) ? Integer.toString(serverCore.portForwarding.getPort()) : switchboard.getConfig("port", "8080")); diff --git a/source/de/anomic/net/ftpc.java b/source/de/anomic/net/ftpc.java index 394bb21e9..48f9e5bed 100644 --- a/source/de/anomic/net/ftpc.java +++ b/source/de/anomic/net/ftpc.java @@ -1549,11 +1549,12 @@ cd .. int DataPort = DataSocketActive.getLocalPort(); // client ip - InetAddress LocalIp = serverCore.publicIP(); + //InetAddress LocalIp = serverCore.publicIP(); // InetAddress LocalIp = DataSocketActive.getInetAddress().getLocalHost(); // save ip address in high byte order - byte[] Bytes = LocalIp.getAddress(); + //byte[] Bytes = LocalIp.getAddress(); + byte[] Bytes = serverCore.publicIP().getBytes(); // bytes greater than 127 should not be printed as negative short Shorts[] = new short[4]; diff --git a/source/de/anomic/net/natLib.java b/source/de/anomic/net/natLib.java index d3fe10f53..d7996220d 100644 --- a/source/de/anomic/net/natLib.java +++ b/source/de/anomic/net/natLib.java @@ -157,11 +157,13 @@ public class natLib { } // maybe this is a dial-up connection (or LAN and DebugMode) and we can get it from java variables - InetAddress ia = serverCore.publicIP(); + /*InetAddress ia = serverCore.publicIP(); if (ia != null) { ip = ia.getHostAddress(); if (isProper(ip)) return ip; - } + }*/ + ip = serverCore.publicIP(); + if (isProper(ip)) return ip; // now go the uneasy way and ask some web responder disorderHeap random = new disorderHeap(retrieveOptions()); diff --git a/source/de/anomic/server/serverCore.java b/source/de/anomic/server/serverCore.java index 49ceb1d05..4b1e8efb7 100644 --- a/source/de/anomic/server/serverCore.java +++ b/source/de/anomic/server/serverCore.java @@ -80,6 +80,7 @@ import de.anomic.http.httpc; import de.anomic.http.httpd; import de.anomic.server.logging.serverLog; import de.anomic.yacy.yacyCore; +import de.anomic.plasma.plasmaSwitchboard; public final class serverCore extends serverAbstractThread implements serverThread { @@ -275,7 +276,7 @@ public final class serverCore extends serverAbstractThread implements serverThre serverCore.portForwarding.connect(); serverCore.portForwardingEnabled = true; - yacyCore.seedDB.mySeed.put("IP",publicIP().getHostAddress()); + yacyCore.seedDB.mySeed.put("IP",publicIP()); yacyCore.seedDB.mySeed.put("Port",Integer.toString(serverCore.portForwarding.getPort())); } catch (Exception e) { serverCore.portForwardingEnabled = false; @@ -310,14 +311,22 @@ public final class serverCore extends serverAbstractThread implements serverThre return true; } - public static InetAddress publicIP() { + public static String publicIP() { try { // If port forwarding was enabled we need to return the remote IP Address + plasmaSwitchboard sb = plasmaSwitchboard.getSwitchboard(); + if(sb != null){ + String staticIP=sb.getConfig("staticIP", ""); + if( (!staticIP.equals("")) && sb.getConfig("yacyDebugMode", "false").equals("true") ){ + return staticIP; + } + } if ((serverCore.portForwardingEnabled)&&(serverCore.portForwarding != null)) { - return InetAddress.getByName(serverCore.portForwarding.getHost()); + //does not return serverCore.portForwarding.getHost(), because hostnames are not valid, except in DebugMode + return InetAddress.getByName(serverCore.portForwarding.getHost()).getHostAddress(); } else { - return publicLocalIP(); + return publicLocalIP().getHostAddress(); } } catch (java.net.UnknownHostException e) { System.err.println("ERROR: (internal) " + e.getMessage()); diff --git a/source/de/anomic/yacy/yacyClient.java b/source/de/anomic/yacy/yacyClient.java index 7eff54231..bff7f6771 100644 --- a/source/de/anomic/yacy/yacyClient.java +++ b/source/de/anomic/yacy/yacyClient.java @@ -145,7 +145,7 @@ public class yacyClient { if (!serverCore.portForwardingEnabled) { yacyCore.seedDB.mySeed.put("IP", (String) result.get("yourip")); } else { - yacyCore.seedDB.mySeed.put("IP", serverCore.publicIP().getHostAddress()); + yacyCore.seedDB.mySeed.put("IP", serverCore.publicIP()); } /* If we have port forwarding enabled but the other peer uses a too old yacy version diff --git a/source/de/anomic/yacy/yacyPeerActions.java b/source/de/anomic/yacy/yacyPeerActions.java index 0e8ddf954..dce81dc96 100644 --- a/source/de/anomic/yacy/yacyPeerActions.java +++ b/source/de/anomic/yacy/yacyPeerActions.java @@ -94,7 +94,7 @@ public class yacyPeerActions { public void updateMySeed() { if (sb.getConfig("peerName", "nameless").equals("nameless")) { // generate new peer name - String newPeerName = serverCore.publicIP().getHostName() + yacyCore.speedKey + serverSystem.infoKey() + (System.currentTimeMillis() & 99); + String newPeerName = serverCore.publicIP() + yacyCore.speedKey + serverSystem.infoKey() + (System.currentTimeMillis() & 99); newPeerName = newPeerName.replace('.', '-'); newPeerName = newPeerName.replace('_', '-'); sb.setConfig("peerName", newPeerName); diff --git a/source/de/anomic/yacy/yacySeedDB.java b/source/de/anomic/yacy/yacySeedDB.java index e0752b228..554b2899f 100644 --- a/source/de/anomic/yacy/yacySeedDB.java +++ b/source/de/anomic/yacy/yacySeedDB.java @@ -632,7 +632,7 @@ public class yacySeedDB { if (seed == null) return null; if ((seed == mySeed) && (!(seed.isOnline()))) { // take local ip instead of external - return serverCore.publicIP().getHostAddress() + ":" + sb.getConfig("port", "8080") + ((subdom == null) ? "" : ("/" + subdom)); + return serverCore.publicIP() + ":" + sb.getConfig("port", "8080") + ((subdom == null) ? "" : ("/" + subdom)); } return seed.getAddress() + ((subdom == null) ? "" : ("/" + subdom)); } else {