//////////////////////////////////////////////////////////////////////////////// // CWDcomm class. // //////////////////////////////////////////////////////////////////////////////// import java.net.*; import java.io.*; class CWDcomm extends ftpFunc { public void start(ftpState sessionState) { System.out.println("CWDobj started!!"); // Tenta abrir o diretório. File listFile = null; if(sessionState.param == null) { // Diretório atual. listFile = new File(sessionState.rootPath,sessionState.path); } else if(sessionState.param.charAt(0) == File.separatorChar) { // Path 'absoluto'. listFile = new File(sessionState.rootPath,sessionState.param); } else { // Path 'relativo'. listFile = new File(sessionState.rootPath,sessionState.path+sessionState.param); } // Efetua a mudança de diretório. try { if(listFile.exists() && listFile.isDirectory() && listFile.getCanonicalPath().startsWith(sessionState.rootPath)) { System.out.println("Absolute path: " + listFile.getCanonicalPath()); sessionState.path = listFile.getCanonicalPath().substring(sessionState.rootPath.length())+listFile.separator; System.out.println("ftp path: " + sessionState.path); //---------------------------------------------------------- // Envia mensagem de transmissão terminada. sessionState.sendMesg.writeBytes("226 CWD ok.\r\n"); sessionState.sendMesg.flush(); } else { sessionState.sendMesg.writeBytes("550 Não é um diretório válido.\r\n"); sessionState.sendMesg.flush(); } } catch (IOException e) { System.out.println(e); } } }