1 8 package com.coldcore.coloradoftp.command.impl.ftp; 9 10 import com.coldcore.coloradoftp.command.Reply; 11 import com.coldcore.coloradoftp.command.impl.AbstractCommand; 12 import com.coldcore.coloradoftp.session.LoginState; 13 import com.coldcore.coloradoftp.session.Session; 14 import com.coldcore.coloradoftp.session.SessionAttributeName; 15 import org.apache.log4j.Logger; 16 17 public class PassCommand extends AbstractCommand { 18 19 private static Logger log = Logger.getLogger(PassCommand.class); 20 private String emailRegExp; 21 22 23 public PassCommand() { 24 emailRegExp = "([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]*)"; 25 } 26 27 28 31 public String getEmailRegExp() { 32 return emailRegExp; 33 } 34 35 36 39 public void setEmailRegExp(String emailRegExp) { 40 this.emailRegExp = emailRegExp; 41 } 42 43 44 public Reply execute() { 45 Reply reply = getReply(); 46 47 String password = getParameter(); 48 49 Session session = getConnection().getSession(); 50 LoginState loginState = (LoginState) session.getAttribute(SessionAttributeName.LOGIN_STATE); 51 if (loginState != null) { 52 log.debug("Already logged in user submits PASS command again"); 53 reply.setCode("503"); 54 reply.setText("Already logged in."); 55 return reply; 56 } 57 58 String username = (String ) session.getAttribute(SessionAttributeName.USERNAME); 59 if (username == null) { 60 reply.setCode("503"); 61 reply.setText("Send your user name."); 62 return reply; 63 } 64 65 if (password.length() == 0) { 66 log.debug("Invalid syntax of submitted password"); 67 reply.setCode("501"); 68 reply.setText("Send your password."); 69 return reply; 70 } 71 72 if (username.equalsIgnoreCase("anonymous")) { 74 if (checkRegExp(password, emailRegExp)) { 75 log.debug("Anonymous login successful for username: "+username+" ("+password+")"); 76 session.setAttribute(SessionAttributeName.LOGIN_STATE, LoginState.ANONYMOUS); 77 session.setAttribute(SessionAttributeName.PASSWORD, password); 78 reply.setCode("230"); 79 reply.setText("User logged in, proceed."); 80 return reply; 81 } else { 82 log.debug("Anonymous login failed for username: "+username+" ("+password+")"); 83 reply.setCode("530"); 84 reply.setText("Not logged in."); 85 return reply; 86 } 87 } 88 89 if (checkLogin(username, password)) { 91 log.debug("Login successful for username: "+username); 92 session.setAttribute(SessionAttributeName.LOGIN_STATE, LoginState.REGULAR); 93 94 reply.setCode("230"); 95 reply.setText("User logged in, proceed."); 96 return reply; 97 } 98 99 log.debug("Login failed for username: "+username); 101 reply.setCode("530"); 102 reply.setText("Not logged in."); 103 return reply; 104 } 105 106 107 113 protected boolean checkLogin(String username, String password) { 114 return false; 115 } 116 } 117 | Popular Tags |