/* * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/* * All we got to do here is create a ServerSocket and wait for connections. * When a connection happens, we just have to create a thread that will * handle it.
*/ publicvoid run() { try {
Socket client; for (int i=0; i<2; i++) {
client = server.accept();
(new FtpServerHandler(client)).run();
}
} catch(Exception e) {
} finally { try { server.close(); } catch (IOException unused) {}
}
}
} publicstaticvoid main(String[] args) throws Exception {
IPSupport.throwSkippedExceptionIfNonOperational();
FtpURL test = new FtpURL();
}
public FtpURL() throws Exception {
FtpServer server = new FtpServer(InetAddress.getLoopbackAddress(), 0);
BufferedReader in = null; try {
server.start();
String authority = server.getAuthority();
System.out.println("FTP server waiting for connections at: " + authority); assert authority != null;
// Now let's check the URL handler
URL url = new URL("ftp://user:password@" + authority + "/%2Fetc/motd;type=a");
URLConnection con = url.openConnection(Proxy.NO_PROXY);
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s; do {
s = in.readLine();
} while (s != null); if (!("user".equals(server.getUsername()))) thrownew RuntimeException("Inccorect username received"); if (!("password".equals(server.getPassword()))) thrownew RuntimeException("Inccorect password received"); if (!("/etc".equals(server.pwd()))) thrownew RuntimeException("Inccorect directory received"); if (!("motd".equals(server.getFilename()))) thrownew RuntimeException("Inccorect username received"); if (!("A".equals(server.getType()))) thrownew RuntimeException("Incorrect type received");
in.close(); // We're done!
// Second URL test
// Now let's check the URL handler
url = new URL("ftp://user2@" + authority + "/%2Fusr/bin;type=d");
con = url.openConnection(Proxy.NO_PROXY);
in = new BufferedReader(new InputStreamReader(con.getInputStream())); do {
s = in.readLine();
} while (s != null); if (!server.getList()) thrownew RuntimeException(";type=d didn't generate a NLST"); if (server.getPassword() != null) thrownew RuntimeException("password should be null!"); if (! "bin".equals(server.getFilename())) thrownew RuntimeException("Incorrect filename received"); if (! "/usr".equals(server.pwd())) thrownew RuntimeException("Incorrect pwd received"); // We're done!
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.