bug fix
This commit is contained in:
parent
553f8da549
commit
c21b229882
5 changed files with 37 additions and 30 deletions
|
|
@ -1,6 +1,6 @@
|
|||
package zutil.network.http;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* This is a interface for a ordinary page for the HttpServer
|
||||
|
|
@ -21,8 +21,8 @@ public interface HttpPage{
|
|||
* @param request is POST and GET requests from the client
|
||||
*/
|
||||
public abstract void respond(HttpPrintStream out,
|
||||
HashMap<String,String> client_info,
|
||||
HashMap<String,Object> session,
|
||||
HashMap<String,String> cookie,
|
||||
HashMap<String,String> request);
|
||||
Map<String,String> client_info,
|
||||
Map<String,Object> session,
|
||||
Map<String,String> cookie,
|
||||
Map<String,String> request);
|
||||
}
|
||||
|
|
@ -10,7 +10,9 @@ import java.security.KeyStoreException;
|
|||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.NoSuchProviderException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
@ -19,6 +21,7 @@ import javax.net.ssl.SSLServerSocketFactory;
|
|||
|
||||
import zutil.MultiPrintStream;
|
||||
|
||||
|
||||
/**
|
||||
* A simple web server that handles both cookies and
|
||||
* sessions for all the clients
|
||||
|
|
@ -38,7 +41,7 @@ public class HttpServer extends Thread{
|
|||
|
||||
private HashMap<String,HttpPage> pages;
|
||||
private HttpPage defaultPage;
|
||||
private HashMap<String,HashMap<String,Object>> sessions;
|
||||
private Map<String,Map<String,Object>> sessions;
|
||||
private int nextSessionId;
|
||||
|
||||
/**
|
||||
|
|
@ -67,7 +70,7 @@ public class HttpServer extends Thread{
|
|||
this.keyStore = keyStore;
|
||||
|
||||
pages = new HashMap<String,HttpPage>();
|
||||
sessions = new HashMap<String,HashMap<String,Object>>();
|
||||
sessions = Collections.synchronizedMap(new HashMap<String,Map<String,Object>>());
|
||||
nextSessionId = 0;
|
||||
|
||||
Timer timer = new Timer();
|
||||
|
|
@ -82,9 +85,9 @@ public class HttpServer extends Thread{
|
|||
*/
|
||||
private class GarbageCollector extends TimerTask {
|
||||
public void run(){
|
||||
synchronized(sessions) {
|
||||
for(String key : sessions.keySet()){
|
||||
HashMap<String,Object> client_session = sessions.get(key);
|
||||
Object[] keys = sessions.keySet().toArray();
|
||||
for(Object key : keys){
|
||||
Map<String,Object> client_session = sessions.get(key);
|
||||
|
||||
// Check if session is still valid
|
||||
if((Long)client_session.get("ttl") < System.currentTimeMillis()){
|
||||
|
|
@ -92,7 +95,7 @@ public class HttpServer extends Thread{
|
|||
if(DEBUG) MultiPrintStream.out.println("Removing Session: "+key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -259,14 +262,14 @@ public class HttpServer extends Thread{
|
|||
|
||||
//**************************** HANDLE REQUEST *********************************
|
||||
// Get the client session or create one
|
||||
HashMap<String, Object> client_session;
|
||||
Map<String, Object> client_session;
|
||||
long ttl_time = System.currentTimeMillis()+SESSION_TTL;
|
||||
if(cookie.containsKey("session_id") && sessions.containsKey(cookie.get("session_id"))){
|
||||
client_session = sessions.get(cookie.get("session_id"));
|
||||
// Check if session is still valid
|
||||
if((Long)client_session.get("ttl") < System.currentTimeMillis()){
|
||||
int session_id = (Integer)client_session.get("session_id");
|
||||
client_session = new HashMap<String, Object>();
|
||||
client_session = Collections.synchronizedMap(new HashMap<String, Object>());
|
||||
client_session.put("session_id", session_id);
|
||||
sessions.put(""+session_id, client_session);
|
||||
}
|
||||
|
|
@ -274,7 +277,7 @@ public class HttpServer extends Thread{
|
|||
client_session.put("ttl", ttl_time);
|
||||
}
|
||||
else{
|
||||
client_session = new HashMap<String, Object>();
|
||||
client_session = Collections.synchronizedMap(new HashMap<String, Object>());
|
||||
client_session.put("session_id", nextSessionId);
|
||||
client_session.put("ttl", ttl_time);
|
||||
sessions.put(""+nextSessionId, client_session);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import java.lang.reflect.Modifier;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.wsdl.Binding;
|
||||
import javax.wsdl.BindingInput;
|
||||
|
|
@ -190,9 +191,10 @@ public class SOAPHttpPage implements HttpPage{
|
|||
|
||||
|
||||
public void respond(HttpPrintStream out,
|
||||
HashMap<String, String> client_info,
|
||||
HashMap<String, Object> session, HashMap<String, String> cookie,
|
||||
HashMap<String, String> request) {
|
||||
Map<String, String> client_info,
|
||||
Map<String, Object> session,
|
||||
Map<String, String> cookie,
|
||||
Map<String, String> request) {
|
||||
|
||||
try {
|
||||
out.setHeader("Content-Type", "text/xml");
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package zutil.test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import zutil.network.http.HttpPage;
|
||||
import zutil.network.http.HttpPrintStream;
|
||||
|
|
@ -18,15 +18,16 @@ public class HTTPGuessTheNumber implements HttpPage{
|
|||
}
|
||||
|
||||
public void respond(HttpPrintStream out,
|
||||
HashMap<String, String> client_info,
|
||||
HashMap<String, Object> session, HashMap<String, String> cookie,
|
||||
HashMap<String, String> request) {
|
||||
Map<String, String> client_info,
|
||||
Map<String, Object> session,
|
||||
Map<String, String> cookie,
|
||||
Map<String, String> request) {
|
||||
|
||||
out.enableBuffering(true);
|
||||
out.println("<html>");
|
||||
out.println("<H2>Welcome To The Number Guess Game!</H2>");
|
||||
|
||||
if(session.containsKey("random_nummber") && request.containsKey("guess")){
|
||||
if(session.containsKey("random_nummber") && request.containsKey("guess") && !request.get("guess").isEmpty()){
|
||||
int guess = Integer.parseInt(request.get("guess"));
|
||||
int nummber = (Integer)session.get("random_nummber");
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package zutil.test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import zutil.network.http.HttpPage;
|
||||
import zutil.network.http.HttpPrintStream;
|
||||
|
|
@ -18,9 +18,10 @@ public class HTTPUploaderTest implements HttpPage{
|
|||
}
|
||||
|
||||
public void respond(HttpPrintStream out,
|
||||
HashMap<String, String> client_info,
|
||||
HashMap<String, Object> session, HashMap<String, String> cookie,
|
||||
HashMap<String, String> request) {
|
||||
Map<String, String> client_info,
|
||||
Map<String, Object> session,
|
||||
Map<String, String> cookie,
|
||||
Map<String, String> request) {
|
||||
|
||||
if(!session.containsKey("file1")){
|
||||
out.println("</html>" +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue