1 5 package com.coldcore.coloradoftp.command.impl.ftp; 6 7 import com.coldcore.coloradoftp.command.Reply; 8 import com.coldcore.coloradoftp.command.impl.AbstractCommand; 9 import com.coldcore.coloradoftp.connection.DataConnectionInitiator; 10 import com.coldcore.coloradoftp.session.DataOpenerType; 11 import com.coldcore.coloradoftp.session.Session; 12 import com.coldcore.coloradoftp.session.SessionAttributeName; 13 import org.apache.log4j.Logger; 14 15 import java.util.StringTokenizer ; 16 17 public class PortCommand extends AbstractCommand { 18 19 private static Logger log = Logger.getLogger(PortCommand.class); 20 21 22 public Reply execute() { 23 Reply reply = getReply(); 24 if (!testLogin()) return reply; 25 26 Session session = getConnection().getSession(); 27 session.removeAttribute(SessionAttributeName.DATA_OPENER_TYPE); 28 29 try { 31 StringTokenizer st = new StringTokenizer (getParameter(), ","); 32 String ip = Integer.parseInt(st.nextToken())+"." 33 + Integer.parseInt(st.nextToken())+"." 34 + Integer.parseInt(st.nextToken())+"." 35 + Integer.parseInt(st.nextToken()); 36 int port = Integer.parseInt(st.nextToken())*256+Integer.parseInt(st.nextToken()); 37 38 DataConnectionInitiator initiator = controlConnection.getDataConnectionInitiator(); 39 initiator.setIp(ip); 40 initiator.setPort(port); 41 log.debug("Data connection will connect to "+ip+":"+port); 42 43 } catch (Throwable e) { 44 reply.setCode("501"); 45 reply.setText("Send correct IP and port number."); 46 return reply; 47 } 48 49 session.setAttribute(SessionAttributeName.DATA_OPENER_TYPE, DataOpenerType.PORT); 51 52 reply.setCode("200"); 53 reply.setText("PORT command successful."); 54 return reply; 55 } 56 } 57 | Popular Tags |