Help with old Java servlets

Hi all –

I have some really old servlets that access Domino. The servlets utilize javax.servlet.http. I have compiled the code and just about everything works, except that it is continuing to send over Anonymous for request.getRemoteUser. I am using Netbeans to compile the code and jdk1.3.1_18. In the web.xml I have the following:

BASIC

</login-config>

I’m not a Java developer and I really don’t understand if I’m missing anything else. If I take the old code which is already compiled, it runs fine. So, I think that I may be missing some instructions for comiling the code or configuring it for my servers.

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.ServletInputStream;

import java.io.*;

import java.util.*;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;

import lotus.domino.*;

public class accept extends javax.servlet.http.HttpServlet {

private static final String REALM = “/servlet”;

private static final String CONTENT_TYPE = “text/html”;

private static final String DIRNAME = “c:/queues/in-http”;

private static final String DBNAME = “in-http.nsf”;

private static Session notesSession;

private static Database notesDb;

/*Initialize global variables/

public void init(ServletConfig config) throws ServletException {

// public void init() throws ServletException {

super.init(config);

wmConnection.init();

}

private boolean isSecured(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if (!request.getScheme().equalsIgnoreCase(“https”)) { // Force redirect to same URL via https.

System.out.println(request.getScheme() + “://” + request.getServerName() + “:” + request.getServerPort() + request.getRequestURI());

String url = new String (HttpUtils.getRequestURL(request));

response.setHeader(“Location”, “https” + url.substring(4) + “?” + request.getQueryString());

response.sendError(HttpServletResponse.SC_MOVED_TEMPORARILY);

System.out.println(request.getScheme() + “://” + request.getServerName() + “:” + request.getServerPort() + request.getRequestURI());

return false;

} else if (request.getRemoteUser() == null) { // Return request for basic authentication to browser.

response.setHeader(“WWW-Authenticate”, “Basic realm="” + REALM + “"”);

response.sendError(HttpServletResponse.SC_UNAUTHORIZED);

System.out.println( request.getRemoteUser().toString() );

return false;

}

IT GETS HERE - SO MY USER SHOULD BE AUTHENTICATED

System.out.println( request.getQueryString());

System.out.println( request.getContentType());

System.out.println( request.getContentLength());

System.out.println( request.getHeader(“User-Agent”));

System.out.println(request.getMethod());

System.out.println( request.getRemoteUser()); //returns ANONYMOUS always

System.out.println(request.getScheme() + “://” + request.getServerName() + “:” + request.getServerPort() + request.getRequestURI());

System.out.println(request.getHeader(“authorization”) );

return true;

}

/*Process the HTTP Get request/

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if (isSecured(request, response)) {

response.setContentType(CONTENT_TYPE);

PrintWriter out = response.getWriter();

out.println(“”);

out.println(“”);

}

}

// public

//need to add a class that invoke my service

// if request.getQueryString()

// wmConnection urlTest = new wmConnection();

// }

private String createDocument(HttpServletRequest request, File f) throws NotesException {

Document doc = notesDb.createDocument();

doc.appendItemValue(“REMOTE_ADDR”, request.getRemoteAddr());

doc.appendItemValue(“REMOTE_USER”, request.getRemoteUser());

doc.appendItemValue(“LOCAL_ADDR”, request.getServerName());

doc.appendItemValue(“PATH_INFO”, f.getPath());

doc.appendItemValue(“CONTENT_TYPE”, request.getContentType());

doc.appendItemValue(“CONTENT_LENGTH”, request.getContentLength());

doc.appendItemValue(“REQUEST_METHOD”, request.getMethod());

doc.appendItemValue(“REQUEST_PARAMETERS”, request.getQueryString());

doc.appendItemValue(“USER_AGENT”, request.getHeader(“User-Agent”));

Enumeration e = request.getHeaderNames();

Vector headers = new Vector();

while (e != null && e.hasMoreElements()) {

String name = (String)e.nextElement();

headers.addElement(name + ": " + request.getHeader(name));

}

doc.appendItemValue(“HEADERS”, headers);

//Calendar postEnd = Calendar.getInstance();

//doc.appendItemValue(“DURATION”, postEnd.getTime().getTime() - postStart.getTime().getTime());

DateTime timeNow = notesSession.createDateTime(“Today”);

timeNow.setNow();

doc.appendItemValue(“SUBMITTED”, timeNow);

doc.save();

String id = doc.getNoteID();

doc.recycle();

return id;

}

private File createTempFile(String dir) {

int counter = new Random().nextInt();

File f;

do {

f = new File(dir, “fil” + Integer.toString(counter & 0xffff) + “.tmp”);

counter++;

} while (f.exists());

return f;

}

/*Process the HTTP Post request/

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if (isSecured(request, response)) {

PrintWriter out = response.getWriter();

response.setContentType(“text/xml”);

out.println(“<?xml version=\"1.0\" standalone=\"yes\" ?>”);

out.println(“”);

System.out.println( request.getQueryString());

System.out.println( request.getRemoteUser());

System.out.println( request.getQueryString());

System.out.println( request.getContentType());

System.out.println( request.getContentLength());

System.out.println( request.getHeader(“User-Agent”));

System.out.println(request.getMethod());

System.out.println(request.getScheme() + “://” + request.getServerName() + “:” + request.getServerPort() + request.getRequestURI());

System.out.println(request.getHeader(“authorization”) );

Subject: Help with old Java servlets

If the servlets run under the Domino Servlet Manager you should be aware that Domino unfortunately doesn’t support the use of web.xml file… Configuration of servlets in Domino is done using the servlets.properties file.

/lekkim

Subject: RE: Help with old Java servlets

Thanks for the information. Any idea how I would prevent Anonymous access using the servlets.properties file?

Thanks,

Donna

Subject: RE: Help with old Java servlets

Well you could probably use a file protection document in the internet sites view to protect the url.

/lekkim