WebManager.java 5.54 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/**
 * $RCSfile$
 * $Revision$
 * $Date$
 *
 * Copyright (C) 2004 Jive Software. All rights reserved.
 *
 * 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
12 13 14 15 16 17
package org.jivesoftware.util;

import org.jivesoftware.messenger.muc.MultiUserChatServer;
import org.jivesoftware.messenger.auth.AuthToken;
import org.jivesoftware.messenger.user.User;
import org.jivesoftware.messenger.user.UserManager;
Matt Tucker's avatar
Matt Tucker committed
18
import org.jivesoftware.messenger.roster.RosterManager;
Matt Tucker's avatar
Matt Tucker committed
19
import org.jivesoftware.messenger.XMPPServer;
20
import org.jivesoftware.messenger.PrivateStorage;
Matt Tucker's avatar
Matt Tucker committed
21 22 23
import org.jivesoftware.messenger.PresenceManager;
import org.jivesoftware.messenger.SessionManager;
import org.jivesoftware.messenger.XMPPServerInfo;
Matt Tucker's avatar
Matt Tucker committed
24
import org.jivesoftware.messenger.group.GroupManager;
25

Matt Tucker's avatar
Matt Tucker committed
26 27 28
import java.util.LinkedHashMap;
import java.util.Map;

29 30 31
/**
 * A utility bean for Messenger admin console pages.
 */
Matt Tucker's avatar
Matt Tucker committed
32
public class WebManager extends WebBean {
33 34

    private Map breadcrumbMap = new LinkedHashMap();
Matt Tucker's avatar
Matt Tucker committed
35 36 37 38 39 40 41 42 43
    private String title = "";
    private String sidebar = "";

    private int start = 0;
    private int range = 15;

    public WebManager() {
    }

44 45 46
    /**
     * Returns the auth token redirects to the login page if an auth token is not found.
     */
Matt Tucker's avatar
Matt Tucker committed
47
    public AuthToken getAuthToken() {
48
        return (AuthToken)session.getAttribute("jive.admin.authToken");
Matt Tucker's avatar
Matt Tucker committed
49 50
    }

51 52 53
    /**
     * Returns <tt>true</tt> if the Messenger container is in setup mode, <tt>false</tt> otherwise.
     */
Matt Tucker's avatar
Matt Tucker committed
54
    public boolean isSetupMode() {
55
        return getXMPPServer().isSetupMode();
Matt Tucker's avatar
Matt Tucker committed
56 57
    }

58 59 60
    /**
     * Returns the XMPP server object -- can get many config items from here.
     */
Matt Tucker's avatar
Matt Tucker committed
61
    public XMPPServer getXMPPServer() {
62
        final XMPPServer xmppServer = XMPPServer.getInstance();
Matt Tucker's avatar
Matt Tucker committed
63 64 65 66 67 68 69 70 71
        if (xmppServer == null) {
            // Show that the server is down
            showServerDown();
            return null;
        }
        return xmppServer;
    }

    public UserManager getUserManager() {
72
        return getXMPPServer().getUserManager();
73 74
    }

Matt Tucker's avatar
Matt Tucker committed
75 76 77 78
    public GroupManager getGroupManager() {
        return GroupManager.getInstance();
    }

79
    public RosterManager getRosterManager() {
80
        return getXMPPServer().getRosterManager();
Matt Tucker's avatar
Matt Tucker committed
81 82
    }

83
    public PrivateStorage getPrivateStore() {
84
        return getXMPPServer().getPrivateStorage();
Matt Tucker's avatar
Matt Tucker committed
85 86 87
    }

    public PresenceManager getPresenceManager() {
88
        return getXMPPServer().getPresenceManager();
Matt Tucker's avatar
Matt Tucker committed
89 90 91
    }

    public SessionManager getSessionManager() {
92
        return getXMPPServer().getSessionManager();
Matt Tucker's avatar
Matt Tucker committed
93 94 95
    }

    public MultiUserChatServer getMultiUserChatServer() {
96
        return getXMPPServer().getMultiUserChatServer();
Matt Tucker's avatar
Matt Tucker committed
97 98 99 100 101 102
    }

    public XMPPServerInfo getServerInfo() {
        return getXMPPServer().getServerInfo();
    }

103 104 105
    /**
     * Returns the page user or <tt>null</tt> if one is not found.
     */
Matt Tucker's avatar
Matt Tucker committed
106 107 108
    public User getUser() {
        User pageUser = null;
        try {
109
            pageUser = getUserManager().getUser(getAuthToken().getUsername());
Matt Tucker's avatar
Matt Tucker committed
110
        }
Bill Lynch's avatar
Bill Lynch committed
111
        catch (Exception ignored) {}
Matt Tucker's avatar
Matt Tucker committed
112 113 114
        return pageUser;
    }

115 116 117
    /**
     * Returns <tt>true</tt> if the server is in embedded mode, <tt>false</tt> otherwise.
     */
Matt Tucker's avatar
Matt Tucker committed
118 119
    public boolean isEmbedded() {
        try {
Matt Tucker's avatar
Matt Tucker committed
120
            ClassUtils.forName("org.jivesoftware.messenger.starter.ServerStarter");
Matt Tucker's avatar
Matt Tucker committed
121 122 123 124 125 126 127
            return true;
        }
        catch (Exception ignored) {
            return false;
        }
    }

128
    /**
129
     * Restarts the server then sleeps for 3 seconds.
130
     */
131
    public void restart() {
Matt Tucker's avatar
Matt Tucker committed
132
        try {
133
            getXMPPServer().restart();
Matt Tucker's avatar
Matt Tucker committed
134 135 136 137 138
        }
        catch (Exception e) {
            Log.error(e);
        }
        sleep();
139
    }
Matt Tucker's avatar
Matt Tucker committed
140

141
    /**
142
     * Stops the server then sleeps for 3 seconds.
143
     */
144
    public void stop() {
Matt Tucker's avatar
Matt Tucker committed
145
        try {
146
            getXMPPServer().stop();
Matt Tucker's avatar
Matt Tucker committed
147 148 149 150 151
        }
        catch (Exception e) {
            Log.error(e);
        }
        sleep();
152
    }
Matt Tucker's avatar
Matt Tucker committed
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220

    public WebManager getManager() {
        return this;
    }

    public void validateService() {
        if (getPresenceManager() == null ||
                getXMPPServer() == null) {
            showServerDown();
        }
    }

    public boolean isServerRunning() {
        if (getPresenceManager() == null ||
                getXMPPServer() == null) {
            return false;
        }
        return true;
    }

    public void addBreadCrumb(String name, String url) {
        breadcrumbMap.put(name, url);
    }

    public Map getBreadCrumbs() {
        return breadcrumbMap;
    }

    public void setSidebar(String sidebar) {
        this.sidebar = sidebar;
    }

    public String getSidebar() {
        return sidebar;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public int getBreadcrumbSize() {
        return getBreadCrumbs().size();
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getStart() {
        return start;
    }

    public void setRange(int range) {
        this.range = range;
    }

    public int getRange() {
        return range;
    }

    public int getCurrentPage() {
        return (start / range) + 1;
    }

221 222 223 224 225 226 227 228 229
    private void sleep() {
        // Sleep for a minute:
        try {
            Thread.sleep(3000L);
        }
        catch (Exception ignored) {
        }
    }

Derek DeMoro's avatar
Derek DeMoro committed
230
    protected void showServerDown() {
231 232 233 234 235 236 237
        try {
            response.sendRedirect("error-serverdown.jsp");
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }
Matt Tucker's avatar
Matt Tucker committed
238
}