AdminConsolePlugin.java 2.88 KB
Newer Older
Matt Tucker's avatar
Matt Tucker committed
1
/**
Matt Tucker's avatar
Matt Tucker committed
2 3 4 5
 * $RCSfile$
 * $Revision$
 * $Date$
 *
Matt Tucker's avatar
Matt Tucker committed
6
 * Copyright (C) 2004 Jive Software. All rights reserved.
Matt Tucker's avatar
Matt Tucker committed
7
 *
Matt Tucker's avatar
Matt Tucker committed
8 9
 * This software is published under the terms of the GNU Public License (GPL),
 * a copy of which is included in this distribution.
Matt Tucker's avatar
Matt Tucker committed
10
 */
Matt Tucker's avatar
Matt Tucker committed
11

Matt Tucker's avatar
Matt Tucker committed
12
package org.jivesoftware.messenger.container;
Matt Tucker's avatar
Matt Tucker committed
13

14
import org.jivesoftware.messenger.JiveGlobals;
Matt Tucker's avatar
Matt Tucker committed
15 16 17 18 19
import org.jivesoftware.util.LocaleUtils;
import org.jivesoftware.util.Log;
import java.io.File;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.WebApplicationContext;
20
import org.mortbay.log.*;
Matt Tucker's avatar
Matt Tucker committed
21 22

/**
Matt Tucker's avatar
Matt Tucker committed
23 24
 * The admin console plugin. It starts a Jetty instance on the configured
 * port and loads the admin console web application.
Matt Tucker's avatar
Matt Tucker committed
25
 *
Matt Tucker's avatar
Matt Tucker committed
26
 * @author Matt Tucker
Matt Tucker's avatar
Matt Tucker committed
27
 */
Matt Tucker's avatar
Matt Tucker committed
28
public class AdminConsolePlugin implements Plugin {
Matt Tucker's avatar
Matt Tucker committed
29 30 31 32 33 34 35

    private Server jetty = null;
    private String port = null;

    /**
     * Create a jetty module.
     */
Matt Tucker's avatar
Matt Tucker committed
36
    public AdminConsolePlugin() {
Matt Tucker's avatar
Matt Tucker committed
37 38 39
    }

    public String getName() {
40
        return "Admin Console";
Matt Tucker's avatar
Matt Tucker committed
41 42
    }

Matt Tucker's avatar
Matt Tucker committed
43 44 45 46 47 48 49 50 51 52 53 54 55
    public String getDescription() {
        return "Web-based admin console for Jive Messenger.";
    }

    public String getAuthor() {
        return "Jive Software";
    }

    public String getVersion() {
        return "2.0";
    }

    public void initialize(PluginManager manager, File pluginDir) {
Matt Tucker's avatar
Matt Tucker committed
56 57
        try {
            // Configure logging to a file, creating log dir if needed
Matt Tucker's avatar
Matt Tucker committed
58 59 60 61 62 63 64 65 66 67 68 69
            System.setProperty("org.apache.commons.logging.LogFactory","org.mortbay.log.Factory");
            File logDir = new File(JiveGlobals.getMessengerHome(), "logs");
            if (!logDir.exists()) {
                logDir.mkdirs();
            }
            File logFile = new File(logDir, "admin-console.log");
            OutputStreamLogSink logSink = new OutputStreamLogSink(logFile.toString());
            logSink.start();
            LogImpl log = (LogImpl)Factory.getFactory().getInstance("");
            // Ignore INFO logs.
            log.setVerbose(-1);
            log.add(logSink);
Matt Tucker's avatar
Matt Tucker committed
70 71

            jetty = new Server();
Matt Tucker's avatar
Matt Tucker committed
72
            
Matt Tucker's avatar
Matt Tucker committed
73 74

            // Configure HTTP socket listener
75
            port = JiveGlobals.getProperty("embedded-web.port", "9090");
Matt Tucker's avatar
Matt Tucker committed
76 77 78
            jetty.addListener(port);

            // Add web-app
Matt Tucker's avatar
Matt Tucker committed
79 80
            WebApplicationContext webAppContext = jetty.addWebApplication("/",
                    pluginDir.getAbsoluteFile() + File.separator + "webapp");
Matt Tucker's avatar
Matt Tucker committed
81
            webAppContext.setWelcomeFiles(new String[]{"index.jsp"});
Matt Tucker's avatar
Matt Tucker committed
82 83

            jetty.start();
Matt Tucker's avatar
Matt Tucker committed
84

Matt Tucker's avatar
Matt Tucker committed
85
            Log.info("Started admin console on port: " + port);
Matt Tucker's avatar
Matt Tucker committed
86 87
        }
        catch (Exception e) {
Matt Tucker's avatar
Matt Tucker committed
88
            Log.error("Trouble initializing admin console", e);
Matt Tucker's avatar
Matt Tucker committed
89 90 91
        }
    }

Matt Tucker's avatar
Matt Tucker committed
92
    public void destroy() {
Matt Tucker's avatar
Matt Tucker committed
93 94 95 96 97 98 99 100 101 102 103
        try {
            if (jetty != null) {
                jetty.stop();
                jetty = null;
            }
        }
        catch (InterruptedException e) {
            Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
        }
    }
}