use of org.apache.commons.net.ftp.FTPFile in project nutch by apache.
the class FtpResponse method list2html.
// generate html page from ftp dir list
private byte[] list2html(List<FTPFile> list, String path, boolean includeDotDot) {
// StringBuffer x = new
// StringBuffer("<!doctype html public \"-//ietf//dtd html//en\"><html><head>");
StringBuffer x = new StringBuffer("<html><head>");
x.append("<title>Index of " + path + "</title></head>\n");
x.append("<body><h1>Index of " + path + "</h1><pre>\n");
if (includeDotDot) {
x.append("<a href='../'>../</a>\t-\t-\t-\n");
}
for (int i = 0; i < list.size(); i++) {
FTPFile f = (FTPFile) list.get(i);
String name = f.getName();
String time = HttpDateFormat.toString(f.getTimestamp());
if (f.isDirectory()) {
// some ftp server LIST "." and "..", we skip them here
if (name.equals(".") || name.equals(".."))
continue;
x.append("<a href='" + name + "/" + "'>" + name + "/</a>\t");
x.append(time + "\t-\n");
} else if (f.isFile()) {
x.append("<a href='" + name + "'>" + name + "</a>\t");
x.append(time + "\t" + f.getSize() + "\n");
} else {
// ignore isSymbolicLink()
// ignore isUnknown()
}
}
x.append("</pre></body></html>\n");
return new String(x).getBytes();
}
use of org.apache.commons.net.ftp.FTPFile in project audit4j-core by audit4j.
the class FTPArchiveClient method init.
/**
* Inits the.
*
* @param args the args
* @throws UnknownHostException the unknown host exception
*/
public static void init(String[] args) throws UnknownHostException {
boolean storeFile = false, binaryTransfer = false, error = false, listFiles = false, listNames = false, hidden = false;
boolean localActive = false, useEpsvWithIPv4 = false, feat = false, printHash = false;
boolean mlst = false, mlsd = false;
boolean lenient = false;
long keepAliveTimeout = -1;
int controlKeepAliveReplyTimeout = -1;
// listings require 3 params
int minParams = 5;
// SSL protocol
String protocol = null;
String doCommand = null;
String trustmgr = null;
String proxyHost = null;
int proxyPort = 80;
String proxyUser = null;
String proxyPassword = null;
String username = null;
String password = null;
int base = 0;
for (base = 0; base < args.length; base++) {
if (args[base].equals("-s")) {
storeFile = true;
} else if (args[base].equals("-a")) {
localActive = true;
} else if (args[base].equals("-A")) {
username = "anonymous";
password = System.getProperty("user.name") + "@" + InetAddress.getLocalHost().getHostName();
} else if (args[base].equals("-b")) {
binaryTransfer = true;
} else if (args[base].equals("-c")) {
doCommand = args[++base];
minParams = 3;
} else if (args[base].equals("-d")) {
mlsd = true;
minParams = 3;
} else if (args[base].equals("-e")) {
useEpsvWithIPv4 = true;
} else if (args[base].equals("-f")) {
feat = true;
minParams = 3;
} else if (args[base].equals("-h")) {
hidden = true;
} else if (args[base].equals("-k")) {
keepAliveTimeout = Long.parseLong(args[++base]);
} else if (args[base].equals("-l")) {
listFiles = true;
minParams = 3;
} else if (args[base].equals("-L")) {
lenient = true;
} else if (args[base].equals("-n")) {
listNames = true;
minParams = 3;
} else if (args[base].equals("-p")) {
protocol = args[++base];
} else if (args[base].equals("-t")) {
mlst = true;
minParams = 3;
} else if (args[base].equals("-w")) {
controlKeepAliveReplyTimeout = Integer.parseInt(args[++base]);
} else if (args[base].equals("-T")) {
trustmgr = args[++base];
} else if (args[base].equals("-PrH")) {
proxyHost = args[++base];
String[] parts = proxyHost.split(":");
if (parts.length == 2) {
proxyHost = parts[0];
proxyPort = Integer.parseInt(parts[1]);
}
} else if (args[base].equals("-PrU")) {
proxyUser = args[++base];
} else if (args[base].equals("-PrP")) {
proxyPassword = args[++base];
} else if (args[base].equals("-#")) {
printHash = true;
} else {
break;
}
}
int remain = args.length - base;
if (username != null) {
minParams -= 2;
}
if (// server, user, pass, remote, local [protocol]
remain < minParams) {
System.err.println(USAGE);
System.exit(1);
}
String server = args[base++];
int port = 0;
String[] parts = server.split(":");
if (parts.length == 2) {
server = parts[0];
port = Integer.parseInt(parts[1]);
}
if (username == null) {
username = args[base++];
password = args[base++];
}
String remote = null;
if (args.length - base > 0) {
remote = args[base++];
}
String local = null;
if (args.length - base > 0) {
local = args[base++];
}
final FTPClient ftp;
if (protocol == null) {
if (proxyHost != null) {
System.out.println("Using HTTP proxy server: " + proxyHost);
ftp = new FTPHTTPClient(proxyHost, proxyPort, proxyUser, proxyPassword);
} else {
ftp = new FTPClient();
}
} else {
FTPSClient ftps;
if (protocol.equals("true")) {
ftps = new FTPSClient(true);
} else if (protocol.equals("false")) {
ftps = new FTPSClient(false);
} else {
String[] prot = protocol.split(",");
if (prot.length == 1) {
// Just protocol
ftps = new FTPSClient(protocol);
} else {
// protocol,true|false
ftps = new FTPSClient(prot[0], Boolean.parseBoolean(prot[1]));
}
}
ftp = ftps;
if ("all".equals(trustmgr)) {
ftps.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager());
} else if ("valid".equals(trustmgr)) {
ftps.setTrustManager(TrustManagerUtils.getValidateServerCertificateTrustManager());
} else if ("none".equals(trustmgr)) {
ftps.setTrustManager(null);
}
}
if (printHash) {
ftp.setCopyStreamListener(createListener());
}
if (keepAliveTimeout >= 0) {
ftp.setControlKeepAliveTimeout(keepAliveTimeout);
}
if (controlKeepAliveReplyTimeout >= 0) {
ftp.setControlKeepAliveReplyTimeout(controlKeepAliveReplyTimeout);
}
ftp.setListHiddenFiles(hidden);
// suppress login details
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));
try {
int reply;
if (port > 0) {
ftp.connect(server, port);
} else {
ftp.connect(server);
}
System.out.println("Connected to " + server + " on " + (port > 0 ? port : ftp.getDefaultPort()));
// After connection attempt, you should check the reply code to
// verify
// success.
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
} catch (IOException e) {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException f) {
// do nothing
}
}
System.err.println("Could not connect to server.");
e.printStackTrace();
System.exit(1);
}
__main: try {
if (!ftp.login(username, password)) {
ftp.logout();
error = true;
break __main;
}
System.out.println("Remote system is " + ftp.getSystemType());
if (binaryTransfer) {
ftp.setFileType(FTP.BINARY_FILE_TYPE);
} else {
// in theory this should not be necessary as servers should
// default to ASCII
// but they don't all do so - see NET-500
ftp.setFileType(FTP.ASCII_FILE_TYPE);
}
// behind firewalls these days.
if (localActive) {
ftp.enterLocalActiveMode();
} else {
ftp.enterLocalPassiveMode();
}
ftp.setUseEPSVwithIPv4(useEpsvWithIPv4);
if (storeFile) {
InputStream input;
input = new FileInputStream(local);
ftp.storeFile(remote, input);
input.close();
} else if (listFiles) {
if (lenient) {
FTPClientConfig config = new FTPClientConfig();
config.setLenientFutureDates(true);
ftp.configure(config);
}
for (FTPFile f : ftp.listFiles(remote)) {
System.out.println(f.getRawListing());
System.out.println(f.toFormattedString());
}
} else if (mlsd) {
for (FTPFile f : ftp.mlistDir(remote)) {
System.out.println(f.getRawListing());
System.out.println(f.toFormattedString());
}
} else if (mlst) {
FTPFile f = ftp.mlistFile(remote);
if (f != null) {
System.out.println(f.toFormattedString());
}
} else if (listNames) {
for (String s : ftp.listNames(remote)) {
System.out.println(s);
}
} else if (feat) {
// boolean feature check
if (remote != null) {
// See if the command is present
if (ftp.hasFeature(remote)) {
System.out.println("Has feature: " + remote);
} else {
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
System.out.println("FEAT " + remote + " was not detected");
} else {
System.out.println("Command failed: " + ftp.getReplyString());
}
}
// Strings feature check
String[] features = ftp.featureValues(remote);
if (features != null) {
for (String f : features) {
System.out.println("FEAT " + remote + "=" + f + ".");
}
} else {
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
System.out.println("FEAT " + remote + " is not present");
} else {
System.out.println("Command failed: " + ftp.getReplyString());
}
}
} else {
if (ftp.features()) {
// Command listener has already printed the output
} else {
System.out.println("Failed: " + ftp.getReplyString());
}
}
} else if (doCommand != null) {
if (ftp.doCommand(doCommand, remote)) {
// Command listener has already printed the output
// for(String s : ftp.getReplyStrings()) {
// System.out.println(s);
// }
} else {
System.out.println("Failed: " + ftp.getReplyString());
}
} else {
OutputStream output;
output = new FileOutputStream(local);
ftp.retrieveFile(remote, output);
output.close();
}
// check that control connection is working OK
ftp.noop();
ftp.logout();
} catch (FTPConnectionClosedException e) {
error = true;
System.err.println("Server closed connection.");
e.printStackTrace();
} catch (IOException e) {
error = true;
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException f) {
// do nothing
}
}
}
System.exit(error ? 1 : 0);
}
use of org.apache.commons.net.ftp.FTPFile in project hutool by looly.
the class Ftp method lsFiles.
/**
* 遍历某个目录下所有文件和目录,不会递归遍历<br>
* 此方法自动过滤"."和".."两种目录
*
* @param path 目录
* @param filter 过滤器,null表示不过滤,默认去掉"."和".."两种目录
* @return 文件或目录列表
* @since 5.3.5
*/
public List<FTPFile> lsFiles(String path, Filter<FTPFile> filter) {
final FTPFile[] ftpFiles = lsFiles(path);
if (ArrayUtil.isEmpty(ftpFiles)) {
return ListUtil.empty();
}
final List<FTPFile> result = new ArrayList<>(ftpFiles.length - 2 <= 0 ? ftpFiles.length : ftpFiles.length - 2);
String fileName;
for (FTPFile ftpFile : ftpFiles) {
fileName = ftpFile.getName();
if (false == StrUtil.equals(".", fileName) && false == StrUtil.equals("..", fileName)) {
if (null == filter || filter.accept(ftpFile)) {
result.add(ftpFile);
}
}
}
return result;
}
use of org.apache.commons.net.ftp.FTPFile in project hutool by looly.
the class Ftp method delDir.
@Override
public boolean delDir(String dirPath) throws IORuntimeException {
FTPFile[] dirs;
try {
dirs = client.listFiles(dirPath);
} catch (IOException e) {
throw new IORuntimeException(e);
}
String name;
String childPath;
for (FTPFile ftpFile : dirs) {
name = ftpFile.getName();
childPath = StrUtil.format("{}/{}", dirPath, name);
if (ftpFile.isDirectory()) {
// 上级和本级目录除外
if (false == ".".equals(name) && false == "..".equals(name)) {
delDir(childPath);
}
} else {
delFile(childPath);
}
}
// 删除空目录
try {
return this.client.removeDirectory(dirPath);
} catch (IOException e) {
throw new IORuntimeException(e);
}
}
use of org.apache.commons.net.ftp.FTPFile in project pancm_project by xuwujing.
the class FtpHelper method getListFiles.
/**
* 获取文件列表文件的属性
*
* @param ip
* @param port
* @param user
* @param pwd
* @param url
* @return
*/
public static List<Map<String, String>> getListFiles(String ip, int port, String user, String pwd, String url) throws IOException {
List<Map<String, String>> mapList = new ArrayList<>();
FTPClient ftpClient = new FTPClient();
ftpClient.connect(ip, port);
ftpClient.login(user, pwd);
FTPFile[] ftpFiles = ftpClient.listFiles(url);
if (ftpFiles != null && ftpFiles.length > 0) {
for (FTPFile ftpFile : ftpFiles) {
Map<String, String> map = new HashMap<>();
map.put("fileName", ftpFile.getName());
map.put("fileSize", getSize(ftpFile.getSize()));
map.put("fileTime", ftpFile.getTimestamp().getTime().toString());
mapList.add(map);
}
}
return mapList;
}
Aggregations