// ---------------------------------------------------------------------------
// jWebSocket - jWebSocket Statistics Filter
// Copyright (c) 2010 Innotrade GmbH, jWebSocket.org
// ---------------------------------------------------------------------------
// THIS CODE IS FOR RESEARCH, EVALUATION AND TEST PURPOSES ONLY!
// THIS CODE MAY BE SUBJECT TO CHANGES WITHOUT ANY NOTIFICATION!
// ---------------------------------------------------------------------------
// This program is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by the
// Free Software Foundation; either version 3 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 Lesser General Public License for
// more details.
// You should have received a copy of the GNU Lesser General Public License along
// with this program; if not, see <http://www.gnu.org/licenses/lgpl.html>.
// ---------------------------------------------------------------------------
package org.jwebsocket.plugins.statistics;
import org.apache.log4j.Logger;
import org.jwebsocket.api.FilterConfiguration;
import org.jwebsocket.api.WebSocketConnector;
import org.jwebsocket.filter.TokenFilter;
import org.jwebsocket.filters.system.SystemFilter;
import org.jwebsocket.kit.FilterResponse;
import org.jwebsocket.logging.Logging;
import org.jwebsocket.server.TokenServer;
import org.jwebsocket.token.Token;
/**
*
* @author aschulze
*/
public class StatisticsFilter extends TokenFilter {
private static Logger mLog = Logging.getLogger(SystemFilter.class);
/**
*
* @param aConfiguration
*/
public StatisticsFilter(FilterConfiguration aConfiguration) {
super(aConfiguration);
if (mLog.isDebugEnabled()) {
mLog.debug("Instantiating statistics filter...");
}
}
/**
*
* @param aResponse
* @param aConnector
* @param aToken
*/
@Override
public void processTokenIn(FilterResponse aResponse,
WebSocketConnector aConnector, Token aToken) {
if (mLog.isDebugEnabled()) {
mLog.debug("Analyzing incoming token from "
+ (aConnector != null
? aConnector.getId()
: "[not given]")
+ ": " + aToken.toString() + "...");
}
TokenServer lServer = getServer();
String lUsername = lServer.getUsername(aConnector);
// TODO: very first security test, replace by user's locked state!
if ("locked".equals(lUsername)) {
Token lToken = lServer.createAccessDenied(aToken);
lServer.sendToken(aConnector, lToken);
aResponse.rejectMessage();
return;
}
}
/**
*
* @param aResponse
* @param aSource
* @param aTarget
* @param aToken
*/
@Override
public void processTokenOut(FilterResponse aResponse,
WebSocketConnector aSource, WebSocketConnector aTarget, Token aToken) {
if (mLog.isDebugEnabled()) {
mLog.debug("Analyzing incoming token from "
+ (aSource != null
? aSource.getId()
: "[not given]") + " to "
+ (aTarget != null ? aTarget.getId() : "[not given]")
+ ": " + aToken.toString() + "...");
}
}
}