|
What this is
Other links
The source code/* CVS ID: $Id: AdminPlugin.java,v 1.1.1.1 2002/10/02 18:42:50 wastl Exp $ */ import net.wastl.webmail.config.*; import net.wastl.webmail.server.*; import net.wastl.webmail.server.http.*; import net.wastl.webmail.ui.html.*; import net.wastl.webmail.ui.xml.*; import net.wastl.webmail.xml.*; import net.wastl.webmail.exceptions.*; import java.util.*; /** * AdminPlugin.java * * Created: Thu Sep 9 16:52:36 1999 * * Copyright (C) 2000 Sebastian Schaffert * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** * * * * @author Sebastian Schaffert * @version */ public class AdminPlugin implements Plugin, URLHandler { public static final String VERSION="1.3"; public static final String URL="/admin"; protected Vector sessions; WebMailServer parent; public AdminPlugin() { sessions=new Vector(); } public void register(WebMailServer parent) { parent.getURLHandler().registerHandler(URL,this); this.parent=parent; } public String getName() { return "Administrator"; } public String getDescription() { return "Change WebMail settings"; } public String getVersion() { return VERSION; } public String getURL() { return URL; } protected void reqShutdown(int time, boolean reboot) { new ShutdownThread(time,reboot,parent); } public HTMLDocument handleURL(String suburl, HTTPSession session, HTTPRequestHeader header) throws WebMailException { HTMLDocument content=null; if(session != null) { session.setLastAccess(); session.setEnv(); } if(session == null && !(suburl.equals("/") || suburl.equals(""))) { throw new DocumentNotFoundException("Could not continue as there was no session id submitted"); } else if(suburl.startsWith("/login")) { System.err.println("Admin login ... "); content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-frame.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); } else if(suburl.startsWith("/system")) { if(suburl.startsWith("/system/set")) { XMLSystemData sysdata=parent.getStorage().getSystemData(); Enumeration enum=sysdata.getConfigKeys(); while(enum.hasMoreElements()) { String ckey=(String)enum.nextElement(); if(header.isContentSet(ckey)) { // System.err.println(ckey+" = "+header.getContent(ckey)); sysdata.setConfig(ckey,header.getContent(ckey)); } } parent.getStorage().save(); session.setEnv(); } content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-system.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); } else if(suburl.startsWith("/navigation")) { content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-navigation.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); // Modified by exce, end } else if(suburl.startsWith("/control")) { if(suburl.startsWith("/control/kill")) { String sid=header.getContent("kill"); parent.getStorage().log(Storage.LOG_INFO,"Session "+sid+": removing on administrator request."); HTTPSession sess2=parent.getSession(sid); if(sess2 != null) { parent.removeSession(sess2); } session.setEnv(); } if(header.isContentSet("SHUTDOWN")) { int time=0; try { time=Integer.parseInt(header.getContent("SHUTDOWN SECONDS")); } catch(NumberFormatException e) {} reqShutdown(time,false); } else if(header.isContentSet("REBOOT")) { int time=0; try { time=Integer.parseInt(header.getContent("SHUTDOWN SECONDS")); } catch(NumberFormatException e) {} reqShutdown(time,true); } content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-status.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); } else if(suburl.startsWith("/domain")) { if(suburl.startsWith("/domain/set")) { try { Enumeration enum=parent.getStorage().getVirtualDomains(); while(enum.hasMoreElements()) { String s1=(String)enum.nextElement(); if(header.getContent("CHANGE "+s1) != null && !header.getContent("CHANGE "+s1).equals("")) { WebMailVirtualDomain vd=parent.getStorage().getVirtualDomain(s1); if(!vd.getDomainName().equals(header.getContent(s1+" DOMAIN"))) { vd.setDomainName(header.getContent(s1+" DOMAIN")); } vd.setDefaultServer(header.getContent(s1+" DEFAULT HOST")); vd.setAuthenticationHost(header.getContent(s1+" AUTH HOST")); vd.setHostsRestricted(header.getContent(s1+" HOST RESTRICTION")!=null); vd.setAllowedHosts(header.getContent(s1+" ALLOWED HOSTS")); parent.getStorage().setVirtualDomain(s1,vd); } else if(header.getContent("DELETE "+s1) != null && !header.getContent("DELETE "+s1).equals("")) { parent.getStorage().deleteVirtualDomain(s1); } } if(header.getContent("ADD NEW") != null && !header.getContent("ADD NEW").equals("")) { WebMailVirtualDomain vd=parent.getStorage().createVirtualDomain(header.getContent("NEW DOMAIN")); vd.setDomainName(header.getContent("NEW DOMAIN")); vd.setDefaultServer(header.getContent("NEW DEFAULT HOST")); vd.setAuthenticationHost(header.getContent("NEW AUTH HOST")); vd.setHostsRestricted(header.getContent("NEW HOST RESTRICTION")!=null); vd.setAllowedHosts(header.getContent("NEW ALLOWED HOSTS")); parent.getStorage().setVirtualDomain(header.getContent("NEW DOMAIN"),vd); } } catch(Exception ex) { ex.printStackTrace(); } parent.getStorage().save(); session.setEnv(); } content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-domains.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); } else if(suburl.startsWith("/user")) { if(header.isContentSet("domain")) { ((AdminSession)session).selectDomain(header.getContent("domain")); } if(suburl.startsWith("/user/edit") && (header.isContentSet("edit") || header.isContentSet("change"))) { if(header.isContentSet("user")) { ((AdminSession)session).selectUser(header.getContent("user")); /* 10/22/2000 devink -- setup new password changing stuff */ ((AdminSession)session).setupUserEdit(); if(header.isContentSet("change")) { ((AdminSession)session).changeUser(header); } } else { ((AdminSession)session).clearUser(); } content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-edituser.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); } else { if(header.isContentSet("user") && header.isContentSet("delete")) { ((AdminSession)session).deleteUser(header.getContent("user")); } content=new XHTMLDocument(session.getModel(), parent.getStorage().getStylesheet("admin-users.xsl", parent.getDefaultLocale(), parent.getProperty("webmail.default.theme"))); } } else { if(suburl.startsWith("/logout")) { session.logout(); } //content=new HTMLDocument("WebMail Administrator Login",parent.getStorage(),"adminlogin",parent.getBasePath()); XMLGenericModel model = parent.getStorage().createXMLGenericModel(); if(header.isContentSet("login")) { model.setStateVar("invalid password","yes"); } content=new XHTMLDocument(model.getRoot(),parent.getStorage().getStylesheet("admin-login.xsl",parent.getDefaultLocale(),parent.getProperty("webmail.default.theme"))); } return content; } public String provides() { return "admin"; } public String requires() { return ""; } protected class ShutdownThread extends Thread { protected WebMailServer parent; protected int time; protected boolean reboot; ShutdownThread(int time, boolean restart, WebMailServer parent) { this.parent=parent; this.time=time; this.reboot=restart; this.start(); } public void run() { String action=reboot?"reboot":"shutdown"; if(time >=0) { System.err.println("\n*** WebMail "+action+" in "+time+" seconds! ***\n"); parent.getStorage().log(Storage.LOG_CRIT,"*** WebMail "+action+" in "+time+" seconds! ***"); try { Thread.sleep(time*1000); } catch(InterruptedException ex) {} System.err.println("\n*** WebMail "+action+" NOW! ***\n"); if(reboot) { parent.restart(); } else { parent.shutdown(); } } } } } // AdminPlugin |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.