Package echoserver

Source Code of echoserver.EchoServerAuthenticatorDBBased

/*
* This file is part of the QuickServer library
* Copyright (C) 2003-2005 QuickServer.org
*
* Use, modification, copying and distribution of this software is subject to
* the terms and conditions of the GNU Lesser General Public License.
* You should have received a copy of the GNU LGP License along with this
* library; if not, you can download a copy from <http://www.quickserver.org/>.
*
* For questions, suggestions, bug-reports, enhancement-requests etc.
* visit http://www.quickserver.org
*
*/

package echoserver;

import org.quickserver.net.server.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import org.quickserver.net.AppException;

public class EchoServerAuthenticatorDBBased extends QuickAuthenticationHandler {
  public AuthStatus askAuthentication(ClientHandler handler)
      throws IOException, AppException {
    Data data = (Data) handler.getClientData();
    data.setLastAsked("U");
    handler.sendClientMsg("User Name :");
    return null;
  }

  public AuthStatus handleAuthentication(ClientHandler handler, String command)
      throws IOException, AppException {
    Data data = (Data)handler.getClientData();

    if(data.getLastAsked().equals("U")) {
      data.setUsername(command);
      data.setLastAsked("P");
      handler.sendClientMsg("Password :");
    } else if(data.getLastAsked().equals("P")) {
      data.setPassword(command.getBytes());
     
      if(validate(handler, data.getUsername(), data.getPassword())) {
        handler.sendClientMsg("Auth OK");
        data.setPassword(null);
        handler.sendClientMsg(data.getWelcomeMsg());
        return AuthStatus.SUCCESS;
      } else {
        handler.sendClientMsg("Auth Failed");
        data.setPassword(null);
        return AuthStatus.FAILURE;
      }
    } else {
      throw new AppException("Unknown LastAsked!");
    }

    return null;
  }

  protected static boolean validate(ClientHandler handler, String username, byte[] password) {
    Connection con = null;
    try {
      con = handler.getServer().getDBPoolUtil().getConnection("TestDB1");
      Statement s = con.createStatement();
      ResultSet r = s.executeQuery("SELECT welcomemesage FROM Auth "+
        "WHERE USERNAME='"+username+"' AND PASSWORD='"+new String(password)+"'");
      if(r.next()) {
        Data data = (Data)handler.getClientData();
        data.setWelcomeMsg(r.getString(1));
        return true;
      } else {
        return false;
     
    } catch(Exception e) {
      return false;
    } finally {
      try  {
        con.close();
      } catch(Exception e) {
        handler.sendSystemMsg("IGNORING: "+e);
      }     
    }
  }
}
TOP

Related Classes of echoserver.EchoServerAuthenticatorDBBased

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.