~ save before overhaul.

pull/1/head
Ivan Olexyn 5 years ago
parent 8c33c46e7e
commit f6559a73de

@ -28,7 +28,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.olexyn.misp.helper</groupId> <groupId>com.olexyn.misp.helper</groupId>
<artifactId>misp-helper</artifactId> <artifactId>helper</artifactId>
<version>0.1</version> <version>0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

@ -53,6 +53,7 @@ public class Forward extends HttpServlet {
}); });
handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread"); handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread");
handleGetRideRequestDataThread.start(); handleGetRideRequestDataThread.start();
try {handleGetRideRequestDataThread.join(); } catch (InterruptedException ignored) { }
} else { } else {
Thread handleGetRequestThread = new Thread(() -> { Thread handleGetRequestThread = new Thread(() -> {
@ -62,6 +63,7 @@ public class Forward extends HttpServlet {
}); });
handleGetRequestThread.setName("handleGetRequestThread"); handleGetRequestThread.setName("handleGetRequestThread");
handleGetRequestThread.start(); handleGetRequestThread.start();
try {handleGetRequestThread.join(); } catch (InterruptedException ignored) { }
} }
} }
@ -78,24 +80,23 @@ public class Forward extends HttpServlet {
final Ride ride; final Ride ride;
//final ServletInputStream in = request.getInputStream(); //final ServletInputStream in = request.getInputStream();
final String parsedRequest = null; //new String(in.readAllBytes()); final String parsedRequest = null; //new String(in.readAllBytes());
byte[] foo =null; byte[] foo = null;
try{ try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(byteOut); ObjectOutputStream objOut = new ObjectOutputStream(byteOut);
objOut.writeObject(request); objOut.writeObject(request);
int br =0; int br = 0;
foo = byteOut.toByteArray(); foo = byteOut.toByteArray();
objOut.close(); objOut.close();
byteOut.close(); byteOut.close();
br=1; br = 1;
}catch (IOException e){ } catch (IOException e) {
int br =0; int br = 0;
} }
int br =0; int br = 0;
synchronized (available) { synchronized (available) {
@ -181,6 +182,7 @@ public class Forward extends HttpServlet {
}); });
handlePostRideThread.setName("handlePostRideThread"); handlePostRideThread.setName("handlePostRideThread");
handlePostRideThread.start(); handlePostRideThread.start();
try {handlePostRideThread.join(); } catch (InterruptedException ignored) { }
} }
@ -191,8 +193,6 @@ public class Forward extends HttpServlet {
protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
String jsonPayload = IOUtils.toString(request.getReader()); String jsonPayload = IOUtils.toString(request.getReader());
final Ride ride = new Ride(jsonPayload); final Ride ride = new Ride(jsonPayload);
@ -203,7 +203,7 @@ public class Forward extends HttpServlet {
// ID is final/threadsafe // ID is final/threadsafe
while (!(booked.containsKey(ride.getID()))) { while (!(booked.containsKey(ride.getID()))) {
Thread.sleep(50); Thread.sleep(500);
} }
synchronized (booked) { synchronized (booked) {

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
version="0.1" version="0.1"
file="target/misp-helper-${version}.jar" file="target/helper-${version}.jar"
groupId="com.olexyn.misp.helper" groupId="com.olexyn.misp.helper"
artifactId="misp-helper" artifactId="helper"

@ -1,6 +1,9 @@
package com.olexyn.misp.helper; package com.olexyn.misp.helper;
import org.json.JSONObject;
import java.util.List; import java.util.List;
import java.util.Map;
public class WebPrint { public class WebPrint {
@ -30,31 +33,37 @@ public class WebPrint {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("<table style=\"width:100%\">"); sb.append("<table style=\"width:100%\">");
JSONObject obj = new JSONObject(list.get(0));
Map<String,Object> map = obj.toMap();
sb.append("<tr>"); sb.append("<tr>");
for (Map.Entry<String,Object> entry : map.entrySet()){
sb.append("<th>"); sb.append("<th>");
sb.append("URL"); sb.append( entry.getKey());
sb.append("</th>");
sb.append("<th>");
sb.append("Method");
sb.append("</th>");
sb.append("<th>");
sb.append("Query");
sb.append("</th>"); sb.append("</th>");
}
sb.append("</tr>"); sb.append("</tr>");
for (String entry : list) { for (String entry : list) {
String[] split = entry.split(SPLIT);
JSONObject line = new JSONObject(entry);
Map<String,Object> map2 = line.toMap();
sb.append("<tr>"); sb.append("<tr>");
for (Map.Entry<String,Object> entry2 : map2.entrySet()){
sb.append("<td>"); sb.append("<td>");
sb.append(split[0]); sb.append(entry2.getValue().toString());
sb.append("</td>");
sb.append("<td>");
sb.append(split[1]);
sb.append("</td>");
sb.append("<td>");
sb.append(split[2]);
sb.append("</td>"); sb.append("</td>");
}
sb.append("</tr>"); sb.append("</tr>");
} }
return sb.toString(); return sb.toString();

@ -28,7 +28,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.olexyn.misp.helper</groupId> <groupId>com.olexyn.misp.helper</groupId>
<artifactId>misp-helper</artifactId> <artifactId>helper</artifactId>
<version>0.1</version> <version>0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

@ -3,6 +3,7 @@ package com.olexyn.misp.mirror;
import com.olexyn.misp.helper.Ride; import com.olexyn.misp.helper.Ride;
import com.olexyn.misp.helper.WebPrint; import com.olexyn.misp.helper.WebPrint;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.json.JSONObject;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
@ -17,7 +18,7 @@ import java.util.Map;
public class Mirror extends HttpServlet { public class Mirror extends HttpServlet {
protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core";
private final List<String> list = new ArrayList<>(); private final List<String> list = new ArrayList<>();
@ -26,13 +27,16 @@ public class Mirror extends HttpServlet {
private void addRequest(HttpServletRequest request){ private void addRequest(HttpServletRequest request){
synchronized (list) { synchronized (list) {
StringBuffer sb = new StringBuffer(); JSONObject obj = new JSONObject();
sb.append(request.getRequestURL().toString()); obj.put("RequestURL", request.getRequestURL());
sb.append(WebPrint.SPLIT); obj.put("RemoteAddr" , request.getRemoteAddr());
sb.append(request.getMethod()); obj.put("Method", request.getMethod());
sb.append(WebPrint.SPLIT); obj.put("Param", request.getParameterMap().toString());
sb.append(request.getQueryString()); obj.put("QueryString", request.getQueryString());
list.add(sb.toString()); obj.put("ContextPath",request.getContextPath());
list.add(obj.toString());
} }
} }
// ####### // #######

@ -27,7 +27,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.olexyn.misp.helper</groupId> <groupId>com.olexyn.misp.helper</groupId>
<artifactId>misp-helper</artifactId> <artifactId>helper</artifactId>
<version>0.1</version> <version>0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

@ -18,7 +18,8 @@ class GetRequestRunnable implements Runnable {
synchronized (reverse.booked) { synchronized (reverse.booked) {
if (reverse.booked.size() > 0) { if (reverse.booked.size() > 0) {
final Ride ride = reverse.booked.entrySet().iterator().next().getValue(); final Ride ride = reverse.booked.entrySet().iterator().next().getValue();
try { reverse.sendGetRequest(ride); } catch (IOException ignored) {} Thread t = new Thread(() -> { try { reverse.sendGetRequest(ride); } catch (IOException ignored) { } });
t.start();
} }
} }
} }

@ -18,7 +18,8 @@ class GetRideRequestDataRunnable implements Runnable {
synchronized (reverse.loaded) { synchronized (reverse.loaded) {
if (reverse.loaded.size() > 0) { if (reverse.loaded.size() > 0) {
final Ride ride = reverse.loaded.entrySet().iterator().next().getValue(); final Ride ride = reverse.loaded.entrySet().iterator().next().getValue();
try { reverse.sendGetRideRequestData(ride); } catch (IOException ignored) {} Thread t = new Thread(() -> { try { reverse.sendGetRideRequestData(ride); } catch (IOException ignored) { } });
t.start();
} }
} }
} }

@ -14,9 +14,12 @@ class PostRideRunnable implements Runnable {
public void run() { public void run() {
while (true) { while (true) {
synchronized (reverse.available) { synchronized (reverse.available) {
if (reverse.available.size() < reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER) { if (Reverse.AVAILABLE_RIDES < Reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER) {
for (int i = 0; i < reverse.AVAILABLE_RIDES_OVERHEAD; i++) {
try {reverse.sendPostRide();} catch (IOException ignored) {} for (int i = Reverse.AVAILABLE_RIDES; i < Reverse.AVAILABLE_RIDES_OVERHEAD; i++) {
Reverse.AVAILABLE_RIDES++;
Thread t = new Thread(() -> { try { reverse.sendPostRide(); } catch (IOException ignored) { } });
t.start();
} }
} }
} }

@ -15,16 +15,17 @@ import java.util.Map;
public class Reverse { public class Reverse {
public String FORWARD_URL = "http://localhost:8090/bridge"; public String FORWARD_URL = "http://localhost:8090/forward";
public String APP_URL = "http://localhost:8090/app"; public String APP_URL = "http://localhost:8090/app";
public int AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1; public static int AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1;
public int AVAILABLE_RIDES_OVERHEAD = 2; public static int AVAILABLE_RIDES_OVERHEAD = 2;
public static int AVAILABLE_RIDES = 0;
public final Map<Long, Ride> available = new HashMap<>(); final Map<Long, Ride> available = new HashMap<>();
public final Map<Long, Ride> booked = new HashMap<>(); final Map<Long, Ride> booked = new HashMap<>();
public final Map<Long, Ride> loaded = new HashMap<>(); final Map<Long, Ride> loaded = new HashMap<>();
public void start() { public void start() {
@ -46,13 +47,23 @@ public class Reverse {
final Ride ride = new Ride(); final Ride ride = new Ride();
synchronized (available) { available.put(ride.getID(), ride); } synchronized (available) {
available.put(ride.getID(), ride);
}
final String result = send("POST", FORWARD_URL, ride.json()); final String result = send("POST", FORWARD_URL, ride.json());
synchronized (available) { synchronized (available) {
AVAILABLE_RIDES--;
available.remove(ride.getID()); available.remove(ride.getID());
ride.setRequest(new Ride(result).getRequest());
String _parsed = new Ride(result).getRequest();
String request = _parsed==null ? "" : _parsed;
ride.setRequest(request);
} }
synchronized (booked) { booked.put(ride.getID(), ride); } synchronized (booked) { booked.put(ride.getID(), ride); }
@ -72,14 +83,19 @@ public class Reverse {
void sendGetRideRequestData(Ride ride) throws IOException { void sendGetRideRequestData(Ride ride) throws IOException {
synchronized (loaded) {loaded.remove(ride.getID()); }
send("GET", FORWARD_URL, ride.json()); send("GET", FORWARD_URL, ride.json());
synchronized (loaded) {loaded.remove(ride.getID()); }
} }
private static String send(String method, String urlString, String body) throws IOException { private String send(String method, String urlString, String body) throws IOException {
if (method.equals("GET")){
int br =0;
}
URL url = new URL(urlString); URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(method); connection.setRequestMethod(method);
@ -104,7 +120,6 @@ public class Reverse {
} }
} }

@ -22,8 +22,8 @@ public class ReverseApp implements Runnable {
reverse.FORWARD_URL = "http://localhost:8090/forward"; reverse.FORWARD_URL = "http://localhost:8090/forward";
reverse.APP_URL = "http://localhost:8090/app"; reverse.APP_URL = "http://localhost:8090/app";
reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1; Reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1;
reverse.AVAILABLE_RIDES_OVERHEAD = 2; Reverse.AVAILABLE_RIDES_OVERHEAD = 2;
reverse.start(); reverse.start();
} }

Loading…
Cancel
Save