From c9ad4772d5e8414059fa0a412b078455303b7e8d Mon Sep 17 00:00:00 2001 From: yangziwen Date: Wed, 29 Aug 2018 23:21:02 +0800 Subject: [PATCH] modify --- Dockerfile | 11 ++++++---- .../zyftp/config/FtpServerConfig.java | 3 +-- .../io/github/yangziwen/zyftp/main/Main.java | 22 +++++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 826df37..229339c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,9 @@ FROM openjdk:8-jre-alpine -WORKDIR /usr/src/myapp -ENV PASSIVE_ADDRESS=127.0.0.1 PASSIVE_PORTS=40000-40060 +WORKDIR /zy-ftp +ENV LOCAL_IP 0.0.0.0 +ENV LOCAL_PORT 21 +ENV PASSIVE_ADDRESS 127.0.0.1 +ENV PASSIVE_PORTS 40000-40060 COPY target/zy-ftp.jar zy-ftp.jar -CMD ["sh", "-c", "java -jar zy-ftp.jar -c server.config -l zy-ftp.log --passive-address $PASSIVE_ADDRESS --passive-ports $PASSIVE_PORTS"] -EXPOSE 8021 +CMD ["sh", "-c", "java -jar zy-ftp.jar -c server.config -l zy-ftp.log --passive-address $PASSIVE_ADDRESS --passive-ports $PASSIVE_PORTS --local-ip $LOCAL_IP --local-port $LOCAL_PORT"] +EXPOSE 21 diff --git a/src/main/java/io/github/yangziwen/zyftp/config/FtpServerConfig.java b/src/main/java/io/github/yangziwen/zyftp/config/FtpServerConfig.java index cb0883b..cd97f5d 100644 --- a/src/main/java/io/github/yangziwen/zyftp/config/FtpServerConfig.java +++ b/src/main/java/io/github/yangziwen/zyftp/config/FtpServerConfig.java @@ -8,7 +8,6 @@ import java.io.File; import java.net.InetSocketAddress; -import java.net.SocketAddress; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -47,7 +46,7 @@ public class FtpServerConfig { private static final String DEFAULT_HOME_DIRECTORY = "res/"; - private SocketAddress localAddress; + private InetSocketAddress localAddress; private int maxLogins; diff --git a/src/main/java/io/github/yangziwen/zyftp/main/Main.java b/src/main/java/io/github/yangziwen/zyftp/main/Main.java index 16e6a11..778d061 100644 --- a/src/main/java/io/github/yangziwen/zyftp/main/Main.java +++ b/src/main/java/io/github/yangziwen/zyftp/main/Main.java @@ -1,6 +1,7 @@ package io.github.yangziwen.zyftp.main; import java.io.File; +import java.net.InetSocketAddress; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -31,6 +32,18 @@ public class Main { required = false) private File logFile = new File("log/zy-ftp.log"); + @Parameter( + names = {"--local-ip"}, + description = "specify the local ip", + required = false) + private String localIp; + + @Parameter( + names = {"--local-port"}, + description = "specify the local port", + required = false) + private Integer localPort; + @Parameter( names = {"--passive-address"}, description = "specify the passive address", @@ -80,6 +93,15 @@ public void run() throws Exception { FtpServerContext context = new FtpServerContext(configFile); + InetSocketAddress address = context.getServerConfig().getLocalAddress(); + if (StringUtils.isNotBlank(localIp) && !localIp.equals(address.getHostString())) { + address = new InetSocketAddress(localIp, address.getPort()); + context.getServerConfig().setLocalAddress(address); + } + if (localPort != null && !localPort.equals(address.getPort())) { + address = new InetSocketAddress(address.getHostString(), localPort); + context.getServerConfig().setLocalAddress(address); + } if (StringUtils.isNotBlank(passiveAddress)) { context.getServerConfig().setPassiveAddress(passiveAddress); }