w3c.model.tools.basicweb.Server
/* basicweb.Server.java
* $Id, $Date eric Exp $
* (c) COPYRIGHT MIT and INRIA, 1997.
* Please first read the full copyright statement in file COPYRIGHT.html
*
* Caution: emits shower of sparks.
*/
package w3c.model.tools.basicweb;
import java.io.*;
import java.net.Socket;
import java.util.Properties;
import w3c.model.www.pep.PEPAgent;
import w3c.model.www.pep.PEPServer;
import w3c.model.www.pep.altlib.*;
public class Server extends BaseServer
static final int DEFAULT_PORT = 8888;
Properties properties;
Server( int port, Properties properties) throws IOException{
super(port);
this.properties = properties;
System.out.println("<!- server port: " + port + " ->");
System.out.println("<!- server root: "" + properties.getProperty(prop_SERVER_ROOT) + "/" ->");
super.serve();
}
Request makeRequest ( Socket socket, InputStream in, OutputStream out, PEPAgent pepAgent, ErrorContext errorContext) {
return Request(socket, in, null, pepAgent, errorContext);
}
void prepPEP () throwsHttpParserException HTTPException{
pepAgent = PEPServer();
/* create and initialize optional AccessCounter */
w3c.model.www.pep.extensions.accessCounter.Server accCounterServer = w3c.model.www.pep.extensions.accessCounter.Server();
accCounterServer.initialize(pepAgent, false);
pepAgent.addUrlExtension(accCounterServer, "/countable/*");
pepAgent.addUrlExtension(accCounterServer, "/metered/*");
/* create and initialize required EscapeBody */
w3c.model.www.pep.extensions.escapeBody.Server escapeServer = w3c.model.www.pep.extensions.escapeBody.Server();
escapeServer.initialize(pepAgent, true);
pepAgent.addUrlExtension(escapeServer, "/escaped/*");
/* compensate for proxie's ignorance of accessCounter */
pepAgent.addUrlExtension(escapeServer, "/countable/escaped/*");
pepAgent.addUrlExtension(escapeServer, "/metered/escaped/*");
/* emulate binary HTTP */
w3c.model.www.pep.extensions.escapeMessage.Server binaryServer = w3c.model.www.pep.extensions.escapeMessage.Server();
binaryServer.initialize(pepAgent, false);
/* would be addAlwaysExtension(binaryServer) but needs URL for C-PEP-INFO */
// pepAgent.addUrlExtension(binaryServer, "/*");
}
void preServe ( Request request) {
request.mapURI("/", properties.getProperty(prop_SERVER_ROOT) + "/");
}
public static void main ( String args[]) throws IOException{
int port = DEFAULT_PORT;
Properties properties = System.getProperties();
String root = properties.getProperty("user.dir");
for (int i = 0 ; i < args.length ; i++)) {
if ("-port".equals(args[i]))) {
try {
port = Integer.parseInt(args[++i]) ;
} catch (NumberFormatException ex)) {
System.out.println("invalid port number ["+args[i]+"]");
System.exit (1) ;
}
}elseif ("-root".equals(args[i]))) {
root = args[++i];
System.out.println("new root:" + root);
}
}
properties.put(prop_SERVER_ROOT, root);
Server(port, properties);
}