AuthenticatorHandler.java
上传用户:huihesys
上传日期:2007-01-04
资源大小:3877k
文件大小:3k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /* $Id: AuthenticatorHandler.java,v 1.2 2000/04/06 08:02:02 wastl Exp $ */
  2. package net.wastl.webmail.server;
  3. import net.wastl.webmail.config.*;
  4. import java.io.*;
  5. import java.util.*;
  6. /**
  7.  * AuthenticatorHandler.java
  8.  *
  9.  * Created: Wed Sep  1 15:04:04 1999
  10.  *
  11.  * Copyright (C) 1999-2000 Sebastian Schaffert
  12.  * 
  13.  * This program is free software; you can redistribute it and/or
  14.  * modify it under the terms of the GNU General Public License
  15.  * as published by the Free Software Foundation; either version 2
  16.  * of the License, or (at your option) any later version.
  17.  * 
  18.  * This program is distributed in the hope that it will be useful,
  19.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21.  * GNU General Public License for more details.
  22.  * 
  23.  * You should have received a copy of the GNU General Public License
  24.  * along with this program; if not, write to the Free Software
  25.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  26.  */
  27. /**
  28.  *
  29.  * @author Sebastian Schaffert
  30.  * @version
  31.  */
  32. public class AuthenticatorHandler  {    
  33.     
  34.     WebMailServer parent;
  35.     String auth_path;
  36.     Hashtable authenticators;
  37.     public AuthenticatorHandler(WebMailServer parent) {
  38. this.parent=parent;
  39. this.auth_path=parent.getProperty("webmail.auth.path");
  40. parent.getConfigScheme().configRegisterChoiceKey("AUTH","Authentication method to use.");
  41. //parent.getConfigScheme().configRegisterStringKey("AUTHHOST","localhost","Host used for remote authentication (e.g. for IMAP,POP3)");
  42. registerAuthenticators();
  43.     }
  44.     /**
  45.      * Initialize and register WebMail Authenticators.
  46.      */
  47.     public void registerAuthenticators() {
  48. System.err.println("- Initializing WebMail Authenticator Plugins ...");
  49. File f=new File(auth_path);
  50. if(!f.canRead() || !f.isDirectory()) {
  51.     System.err.println("Can't read directory "+auth_path);
  52. }
  53. String[] classlist=f.list(new FFilter());
  54. authenticators=new Hashtable();
  55. for(int i=0;classlist != null && i<classlist.length;i++) {
  56.     String name=classlist[i].substring(0,classlist[i].length()-6);
  57.     try {
  58. Class c=Class.forName(name);
  59. Authenticator a=(Authenticator) c.newInstance();
  60. a.register(parent.getConfigScheme());
  61. authenticators.put(a.getKey(),a);
  62. System.err.println("  * registered authenticator plugin ""+c.getName()+""");
  63.     } catch(Exception ex) {
  64. System.err.println("  * Error: could not register ""+name+"" ("+ex.getMessage()+")!");
  65. //ex.printStackTrace();
  66.     }
  67. }
  68. System.err.println("  done!");
  69.     }
  70.     public Authenticator getAuthenticator(String key) {
  71. return (Authenticator)authenticators.get(key);
  72.     }
  73.    
  74.     /**
  75.      * A filter to find WebMail Plugins.
  76.      */
  77.     class FFilter implements FilenameFilter {
  78. FFilter() {
  79. }
  80. public boolean accept(File f, String s) {
  81.     if(s.endsWith(".class")) {
  82. return true;
  83.     } else {
  84. return false;
  85.     }
  86. }
  87.     }
  88.     
  89. } // AuthenticatorHandler