diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..26507f7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+.classpath
+.project
+.settings/
+.recommenders/
+target/
+.metadata
+Servers/
+RemoteSystemTempFiles/
+fastDataTransfer/
\ No newline at end of file
diff --git a/lib/globus/bcprov-jdk15on-1.50.jar b/lib/globus/bcprov-jdk15on-1.50.jar
deleted file mode 100644
index d4b510d..0000000
Binary files a/lib/globus/bcprov-jdk15on-1.50.jar and /dev/null differ
diff --git a/lib/globus/bouncycastle.LICENSE b/lib/globus/bouncycastle.LICENSE
deleted file mode 100644
index 942c10c..0000000
--- a/lib/globus/bouncycastle.LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-Copyright (c) 2000 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/pom.xml b/pom.xml
index d32e103..41e59ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
jar
- 1.7
+ 1.8UTF-8
@@ -16,41 +16,57 @@
edu.illinois.ncsaBCGSS1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/BCGSS.jar
+
org.bouncycastle
- bcprov
- 1.50.0
+ bcprov-jdk15on
+ 1.50
+
org.apache.commonscommons-compress
- 1.2.0
+ 1.2net.iharder.dndfiledrop1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/filedrop.jar
+
- com.sshtools.common
+ sshtoolsj2ssh-common0.2.7
+ system
+ ${project.basedir}/lib/gsi-sshterm/j2ssh-common-0.2.7.jar
+
- com.sshtools.core
+ sshtoolsj2ssh-core0.2.7
+ system
+ ${project.basedir}/lib/gsi-sshterm/j2ssh-core-0.2.7.jarorg.lirc.socketjlirc-unix-soc1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/jlirc-unix-soc.jaruk.ac.rl.esc.browserlibbrowser1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/libbrowser.jarlog4j
@@ -61,9 +77,12 @@
edu.illinois.ncsancsa-lcrypto1.4.6
+ system
+ ${project.basedir}/lib/gsi-sshterm/ncsa-lcrypto-146.jar
+
- org.apache.commons
+ ca.juliusdaviesnot-yet-commons-ssl0.3.11
@@ -71,46 +90,64 @@
com.sshtools.extputty-pk1.1.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/putty-pk-1.1.0.jarcom.sshtools.tunnelSecureTunneling1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/SecureTunneling.jarcom.sshtools.shiftShiFT1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/ShiFT.jarcom.sshtools.sshtermSSHTerm1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/SSHTerm-1.0.0.jarcom.sshtools.sshvncSSHVnc1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/SSHVnc.jarorg.jdesktopswing-layout1.0.3
+ system
+ ${project.basedir}/lib/gsi-sshterm/swing-layout-1.0.3.jarorg.globusonlineTransferAPIClient1.0.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/TransferAPIClient.jarorg.italiangridvoms-api-java3.0.1
+ system
+ ${project.basedir}/lib/gsi-sshterm/voms-api-java-2.0.9.jarorg.globusaxisg2.2.0
+ system
+ ${project.basedir}/lib/gsi-sshterm/jglobus2/axisg-2.2.0.jarcommons-logging
@@ -126,21 +163,29 @@
org.globusgram2.2.0
+ system
+ ${project.basedir}/lib/globus/gram-2.2.0.jarorg.globusgridftp2.2.0
+ system
+ ${project.basedir}/lib/globus/gridftp-2.2.0.jarorg.globus.gsi.gssapigss2.2.0
+ system
+ ${project.basedir}/lib/globus/gss-2.2.0.jarorg.globus.ioio2.2.0
+ system
+ ${project.basedir}/lib/globus/io-2.2.0.jarorg.apache.httpcomponents
@@ -156,6 +201,8 @@
org.globus.jssejsse2.2.0
+ system
+ ${project.basedir}/lib/globus/jsse-2.2.0.jarcom.google.guava
@@ -171,16 +218,22 @@
org.globus.myproxymyproxy2.2.0
+ system
+ ${project.basedir}/lib/globus/myproxy-2.2.0.jarorg.globusssl-proxies2.2.0
+ system
+ ${project.basedir}/lib/globus/ssl-proxies-2.2.0.jarorg.opentsdbopentsdb-client2.1.0
+ system
+ ${project.basedir}/lib/opentsdb/opentsdb-client-2.1.0.jar
@@ -262,7 +315,8 @@
- java -jar fdt.jar "$@"
+ java
+ -jar fdt.jar "$@"755
diff --git a/project b/project
deleted file mode 100644
index efb71dc..0000000
--- a/project
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- FDT
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
- edu.umd.cs.findbugs.plugin.eclipse.findbugsNature
-
-
diff --git a/src/lia/util/net/common/Config.java b/src/lia/util/net/common/Config.java
index 987be8f..8493bf1 100644
--- a/src/lia/util/net/common/Config.java
+++ b/src/lia/util/net/common/Config.java
@@ -7,6 +7,7 @@ import lia.util.net.copy.PosixFSFileChannelProviderFactory;
import org.opentsdb.client.HttpClientImpl;
import java.io.BufferedReader;
+import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.*;
@@ -300,6 +301,8 @@ public class Config {
portNo = Utils.getIntValue(configMap, "-p", DEFAULT_PORT_NO);
transportPorts = Utils.getTransportPortsValue(configMap, "-tp", DEFAULT_TRANSFER_PORT_NO);
+ if(transportPorts.size() == 1 && transportPorts.element().intValue() == DEFAULT_TRANSFER_PORT_NO)
+ transportPorts.clear();
tp = Arrays.asList(transportPorts.toArray());
isCoordinatorMode = (configMap.get("-coord") != null);
isThirdPartyCopyAgent = (configMap.get("-agent") != null);
@@ -703,7 +706,7 @@ public class Config {
}
private String[] getLogFiles(String sessionID) {
- return new String[]{"/tmp/" + sessionID + ".log"};
+ return new String[] { System.getProperty("java.io.tmpdir") + File.pathSeparatorChar + sessionID + ".log" };
}
public String getListFilesFrom() {
@@ -905,12 +908,16 @@ public class Config {
}
public int getNewRemoteTransferPort() {
+ int rtp = -1;
try {
if (!transportPorts.isEmpty()) {
- int rtp = this.transportPorts.poll(20, TimeUnit.SECONDS);
- System.out.println("Took new remote transfer port " + rtp);
- return rtp;
+ rtp = this.transportPorts.poll(20, TimeUnit.SECONDS);
+ logger.log(Level.FINER,"Reusing remote transfer port " + rtp);
+ } else {
+ rtp = findAvailablePort();
+ logger.log(Level.FINER,"Used new remote transfer port " + rtp);
}
+
} catch (Exception e) {
if (transportPorts.size() == 0) {
logger.log(Level.WARNING, "No transfer ports defined or no free transfer ports left...", e);
@@ -918,10 +925,31 @@ public class Config {
logger.log(Level.WARNING, "Failed to retrieve remote transfer port", e);
}
}
- return -1;
- }
-
- public void setSessionSocket(ServerSocketChannel ssc, ServerSocket ss, SocketChannel sc, Socket s, int port) {
+
+ return rtp;
+ }
+
+ private int findAvailablePort() {
+
+ /**
+ * Returns a free port number on localhost.
+ * @since December 2017
+ * @author will
+ * @return a free port number on localhost
+ * @throws IllegalStateException if unable to find a free port
+ */
+ try(ServerSocket socket = new ServerSocket(0)) {
+ socket.setReuseAddress(true);
+ return socket.getLocalPort();
+ } catch(IOException e)
+ {
+ logger.log(Level.WARNING, "Unable to find a free Socket", e);
+ }
+
+ throw new IllegalStateException("Could not find a free TCP/IP port");
+ }
+
+ public void setSessionSocket(ServerSocketChannel ssc, ServerSocket ss, SocketChannel sc, Socket s, int port) {
List