⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.java

📁 OSGI这是一个中间件,与UPNP齐名,是用于移植到嵌入式平台之上
💻 JAVA
字号:
/* * Copyright (c) 2003, KNOPFLERFISH project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above *   copyright notice, this list of conditions and the following *   disclaimer in the documentation and/or other materials *   provided with the distribution. * * - Neither the name of the KNOPFLERFISH project nor the names of its *   contributors may be used to endorse or promote products derived *   from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */package org.knopflerfish.bundle.httpconsole;import java.util.*;import java.net.URL;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import org.osgi.framework.*;import org.osgi.service.http.*;public class Login {  static final String LOGIN_USER  = "loginname";  static final String LOGIN_PWD   = "loginpwd";  static final String LOGIN_CMD   = "login_cmd";  static final String LOGOUT_CMD  = "logout_cmd";  static final String USER_OBJ = ConsoleServlet.class.getName() + ".user";  boolean bRequireLogin =     "true".equals(System.getProperty("org.knopflerfish.httpconsole.requirelogin", "false"));    String adminUser  =     System.getProperty("org.knopflerfish.httpconsole.user", "admin");      String adminPwd   =     System.getProperty("org.knopflerfish.httpconsole.pwd",  "admin");  long expirationTime = 60 * 10; // time in seconds  public Login() {    try {      expirationTime =  	Long.getLong("org.knopflerfish.httpconsole.expirationtime",  		     expirationTime).longValue();    } catch (Exception e) {      Activator.log.warn("Bad expiration time", e);    }  }  boolean isValidUser(String user, String pwd) {    return       adminUser.equals(user) &&      adminPwd.equals(pwd);  }  /**   * Check if the use has been logged in. If not, print a login page   */  boolean checkLogin(HttpServletRequest  request, 		     HttpServletResponse response) throws IOException {    if(!bRequireLogin) {      return true;    }    HttpSession session = request.getSession();    if(null != request.getParameter(LOGOUT_CMD)) {      session.removeAttribute(USER_OBJ);    }    String     msg     = null;    UserObject userObj = null;    // Catch ClassCastException since the bundle itself    // may have been updated since the last request. If this    // happens, the http server may very well still hold on    // to a class named "UserObject", but which actually isn't    // the same class as the new, update bundle expects.    try {      userObj = (UserObject)session.getAttribute(USER_OBJ);    } catch (ClassCastException e) {      msg = "console updated/session expired";      session.removeAttribute(USER_OBJ);    }        if(userObj != null) {      if(userObj.hasExpired()) {	session.removeAttribute(USER_OBJ);	msg = "Session has expired";      } else {	userObj.touch();	return true;      }    }        String user = "";    if(null != request.getParameter(LOGIN_CMD)) {      user        = request.getParameter(LOGIN_USER);      String pwd  = request.getParameter(LOGIN_PWD);      if(isValidUser(user, pwd)) {	userObj = new UserObject();	session.setAttribute(USER_OBJ, userObj);	return true;      }      msg = "Login failed";    }    if(user == null) {      user = "";    }    PrintWriter out = response.getWriter();    printHeader(out);          Util.formStart(out, false);        out.println("<h4 style=\"margin: 3px;\" class=\"shadow\">Log in to HTTP console</h4>");    out.println("<div style=\"margin: 5px;\">");    if(msg != null) {      out.println("<div class=\"loginerror\">");      out.println(msg);      out.println("</div>");    }    out.println("<table>");    out.println(" <tr>");    out.println("  <td>Login name</td>");    out.println("  <td>");    out.println("  <input type=\"text\" name=\"" + LOGIN_USER + "\"" +		" value=\"" + user + "\">");    out.println("  </td>");    out.println(" </tr>");    out.println("  <td>Password</td>");    out.println("  <td>");    out.println("  <input type=\"password\" name=\"" + LOGIN_PWD + "\">");    out.println("  </td>");    out.println(" </tr>");    out.println(" <tr>");    out.println("  <td><input name=\"" + LOGIN_CMD + "\" type=\"submit\" value=\"Login\"></td>");    out.println("  <td>");    out.println("  ");    out.println("  </td>");    out.println(" </tr>");    out.println("</table>");    out.println("</form>");    out.println("</div>");    out.println("<div class=\"shadow\">&nbsp;</div>");    printFooter(out);      return false;  }  void printHeader(PrintWriter out) throws IOException {    out.println("<html>");    out.println("<head>");    out.println("<title>Knopflerfish OSGi console</title>");        out.println("<LINK href=\"" + Activator.RES_ALIAS + "/console.css\" rel=\"stylesheet\" type=\"text/css\">");    out.println("</head>");    out.println("<body>");      }  void printFooter(PrintWriter out) throws IOException {    out.println("</body>");    out.println("</html>");    }  /**   * Simple object for storing user info in an HttpSession.    * The HttpSession.setMaxInactiveInterval() could have been   * used instead of the custom timer...but then it would be    * hard to give a "session expired" message at timeouts.   */  class UserObject {    long touchTime;        public UserObject() {      touch();    }        public void touch() {      touchTime = System.currentTimeMillis();    }    public boolean hasExpired() {      return 	(System.currentTimeMillis() - touchTime) > ( 1000 * expirationTime);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -