Listing of Source cgi/SimpleStatusCGI.javapackage se.entra.phantom.server.http;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;
import java.util.Enumeration;
import java.util.Vector;
import se.entra.phantom.common.Utilities;
import se.entra.phantom.server.ClientSessionManager;
import se.entra.phantom.server.ServerSocketInterface2;
/**
* Returns the simple status of the server and requesting agent.
*/
public class SimpleStatusCGI implements CgiPrintInterface
{
/**
* This method should print a HTML document content using the
* <code>PrintWriter</code> parameter.
*
* <p>The current directory of the CGI for the client agent is defined in the
* <code>HttpSession</code> class instance.
*
* @throws IOException for IO errors.
*/
@Override
public void performAction(HttpSession session,PrintWriter out) throws IOException
{
Socket socket=session.socket;
String referer=session.headerFields.getHeader(HttpHeaderFields.SHF_Referer);
if ( referer==null )
referer="<none>";
out.print("<html><head>\r\n"
+" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\r\n"
+" <title>"+Utilities.PROGRAM_NAME+" - Simple Status Servlet/CGI</title>\r\n"
+"</head><body bgcolor=#FFFFFF text=#000000 topmargin=0 leftmargin=2>"
+"<font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>Server Information</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">"
+" <p>Version: "+ClientSessionManager.progVer+"\r\n"
+" <br>Server universal time: "+HttpDate.getCurrentUTC()+"\r\n"
+" <br>Server local time: "+(new Date())+"\r\n"
+" <br>Connection since (local time): "+session.sessionEstablishedTime+"\r\n"
+" <br>Concurrent user count: "+ClientSessionManager.getServerAdminInterface().getClientConnectionCount()+"\r\n"
+" <br>Host name: "+session.hostName+"\r\n"
+" <br>Host address: "+session.hostAddress+"\r\n"
+" <br>Port: "+session.serverPort+"\r\n"
+" <br>HTTP request line: "+InternetCharacterConversion.stringConvertToHTMLString(session.requestLine)+"\r\n"
+" <br>Referer: "+InternetCharacterConversion.stringConvertToHTMLString(referer)+"\r\n"
+"<p><font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>Client Information</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">\r\n"
+" <p>Agent: "+InternetCharacterConversion.stringConvertToHTMLString(session.environment.userAgent)+"\r\n"
+" <br>Host name: "+session.getClientDNSName()+"\r\n"
+" <br>Host address: "+session.getClientIPAddress()+"\r\n"
+" <br>Port: "+socket.getPort()+"\r\n"
+" <br>User ID: "+InternetCharacterConversion.stringConvertToHTMLString(session.environment.userID==null? "<none>": session.environment.userID)+"\r\n");
if ( session.serverSocket.isUsingSSL() )
{
out.print("<p><font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>SSL Information</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">\r\n"
+" <p>Cipher suite: "+InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_GETCIPHER))+"\r\n"
+" <br>Maximum asymmetric bit-strength: "+session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_GETEFFECTIVEBITS)+"\r\n");
String s=session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_VERSION);
if ( s!=null )
{
out.print("<p><font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>Client Certificate Information</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">\r\n"
+" <p>Version: "+s+"\r\n"
+" <br>Serial number: "+session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_SERIALNUMBER)+"\r\n"
+" <br>Signature algorithm: "+InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_SIGNATUREALGORITHM ))+"\r\n"
+" <br>Issuer: " +InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_ISSUER ).replace('\0',','))+"\r\n"
+" <br>Valid from: " +InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_VALIDFROM ))+"\r\n"
+" <br>Valid to: " +InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_VALIDTO ))+"\r\n"
+" <br>Subject: " +InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_SUBJECT).replace('\0',','))+"\r\n"
+" <br>Public key format: " +InternetCharacterConversion.stringConvertToHTMLString(session.serverSocket.getInformation(socket,ServerSocketInterface2.SSLINFO_CLIENTCERT_PUBLICKEYFORMAT ))+"\r\n");
}
}
if ( session.uriParams!=null )
out.print("<p><font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>URI Parameter</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">\r\n"
+" <p>Parameter: "+InternetCharacterConversion.stringConvertToHTMLString(session.uriParams)+"\r\n");
Vector<HttpCookie> cv=session.headerFields.getCookies();
if ( cv!=null )
{
out.print("<p><font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>Cookies</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">\r\n");
Enumeration<HttpCookie> e=cv.elements();
String first="<p>";
while ( e.hasMoreElements() )
{
HttpCookie cookie=e.nextElement();
out.print(" "+first
+"name = '"+InternetCharacterConversion.stringConvertToHTMLString(cookie.name)
+"', value = '"+InternetCharacterConversion.stringConvertToHTMLString(cookie.value)
+"'\r\n");
first="<br>";
}
}
if ( session.formData!=null )
{
out.print("<p><font size=4 face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#405D79\"><b>HTML Form Data</b></font>"
+"<font size=2 face=\"Verdana, Arial, Helvetica, sans-serif\">\r\n");
Enumeration<String> e=session.formData.keys();
String first="<p>";
while ( e.hasMoreElements() )
{
String n=e.nextElement();
String v=session.formData.get(n);
out.print(" "+first
+"name = '"+InternetCharacterConversion.stringConvertToHTMLString(n)
+"', value = '"+InternetCharacterConversion.stringConvertToHTMLString(v)
+"'\r\n");
first="<br>";
}
}
out.print("</body></html>\r\n");
}
}