use of APJP.HTTP11.HTTPMessageHeader in project apjp by jvansteirteghem.
the class HTTPSServerWorker method processHTTPResponseMessage.
protected void processHTTPResponseMessage(HTTPResponseMessage httpResponseMessage) throws Exception {
HTTPMessageHeader httpResponseMessageHeader1 = httpResponseMessage.getHTTPMessageHeader("Content-Length");
if (httpResponseMessageHeader1 == null) {
keepAlive = false;
}
HTTPMessageHeader httpResponseMessageHeader2 = httpResponseMessage.getHTTPMessageHeader("Proxy-Connection");
if (httpResponseMessageHeader2 != null) {
httpResponseMessage.removeHTTPMessageHeader(httpResponseMessageHeader2);
}
if (keepAlive == true) {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Proxy-Connection", "Keep-Alive"));
} else {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Proxy-Connection", "close"));
}
HTTPMessageHeader httpResponseMessageHeader3 = httpResponseMessage.getHTTPMessageHeader("Connection");
if (httpResponseMessageHeader3 != null) {
httpResponseMessage.removeHTTPMessageHeader(httpResponseMessageHeader3);
}
if (keepAlive == true) {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Connection", "Keep-Alive"));
} else {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Connection", "close"));
}
}
use of APJP.HTTP11.HTTPMessageHeader in project apjp by jvansteirteghem.
the class HTTPSServerWorker method process.
public void process() throws Exception {
InputStream inputSSLSocketInputStream = inputSSLSocket.getInputStream();
OutputStream inputSSLSocketOutputStream = inputSSLSocket.getOutputStream();
HTTPSRequests httpsRequests = HTTPSRequests.getHTTPSRequests();
HTTPRequestMessage httpRequestMessage1 = new HTTPRequestMessage(inputSSLSocketInputStream);
httpRequestMessage1.read();
HTTPMessageHeader httpRequestMessage1Header1 = httpRequestMessage1.getHTTPMessageHeader("");
if (httpRequestMessage1Header1 == null) {
keepAlive = false;
return;
}
String httpRequestMessage1Header1Value1 = httpRequestMessage1Header1.getValue();
if (httpRequestMessage1Header1Value1.equalsIgnoreCase("")) {
keepAlive = false;
return;
}
processHTTPRequestMessage(httpRequestMessage1);
HTTPResponseMessage httpResponseMessage1 = null;
try {
HTTPSRequest httpsRequest1 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
httpsRequest1.open();
try {
httpResponseMessage1 = httpsRequest1.getHTTPResponseMessage();
processHTTPResponseMessage(httpResponseMessage1);
HTTPMessageHeader[] httpResponseMessage1Headers1 = httpResponseMessage1.getHTTPMessageHeaders();
HTTPMessageHeader httpResponseMessage1Header1 = httpResponseMessage1Headers1[0];
String httpResponseMessage1Header1Key1 = httpResponseMessage1Header1.getKey();
String httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
inputSSLSocketOutputStream.write((httpResponseMessage1Header1Value1 + "\r\n").getBytes());
for (int i = 1; i < httpResponseMessage1Headers1.length; i = i + 1) {
httpResponseMessage1Header1 = httpResponseMessage1Headers1[i];
httpResponseMessage1Header1Key1 = httpResponseMessage1Header1.getKey();
httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
inputSSLSocketOutputStream.write((httpResponseMessage1Header1Key1 + ": " + httpResponseMessage1Header1Value1 + "\r\n").getBytes());
}
inputSSLSocketOutputStream.write(("\r\n").getBytes());
httpResponseMessage1.read(inputSSLSocketOutputStream);
} catch (Exception e) {
throw e;
} finally {
try {
httpsRequest1.close();
} catch (Exception e) {
}
}
} catch (Exception e) {
logger.log(2, "HTTPS_SERVER_WORKER/PROCESS: EXCEPTION", e);
if (httpResponseMessage1 == null) {
String[] httpRequestMessage1Header1Values1 = httpRequestMessage1Header1Value1.split(" ");
String httpRequestMessage1Header1Value2 = httpRequestMessage1Header1Values1[0];
if (!httpRequestMessage1Header1Value2.equalsIgnoreCase("GET")) {
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/METHOD != \"GET\", REQUEST/METHOD == \"" + httpRequestMessage1Header1Value2 + "\"");
}
HTTPMessageHeader httpRequestMessage1Header2 = httpRequestMessage1.getHTTPMessageHeader("If-Range");
if (httpRequestMessage1Header2 != null) {
String httpRequestMessage1Header2Value1 = httpRequestMessage1Header2.getValue();
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/IF_RANGE != \"\", REQUEST/IF_RANGE == \"" + httpRequestMessage1Header2Value1 + "\"");
}
HTTPMessageHeader httpRequestMessage1Header3 = httpRequestMessage1.getHTTPMessageHeader("Range");
if (httpRequestMessage1Header3 != null) {
String httpRequestMessage1Header3Value1 = httpRequestMessage1Header3.getValue();
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/RANGE != \"\", REQUEST/RANGE == \"" + httpRequestMessage1Header3Value1 + "\"");
}
httpRequestMessage1Header1Values1[0] = "HEAD";
httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Values1[0];
for (int i = 1; i < httpRequestMessage1Header1Values1.length; i = i + 1) {
httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Value1 + " " + httpRequestMessage1Header1Values1[i];
}
httpRequestMessage1Header1.setValue(httpRequestMessage1Header1Value1);
HTTPSRequest httpsRequest1 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
httpsRequest1.open();
try {
httpResponseMessage1 = httpsRequest1.getHTTPResponseMessage();
} catch (Exception e2) {
throw e2;
} finally {
try {
httpsRequest1.close();
} catch (Exception e2) {
}
}
HTTPMessageHeader httpResponseMessage1Header1 = httpResponseMessage1.getHTTPMessageHeader("Accept-Ranges");
if (httpResponseMessage1Header1 == null) {
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/ACCEPT_RANGES != \"bytes\", RESPONSE/ACCEPT_RANGES == \"\"");
}
String httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
if (!httpResponseMessage1Header1Value1.equalsIgnoreCase("bytes")) {
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/ACCEPT_RANGES != \"bytes\", RESPONSE/ACCEPT_RANGES == \"" + httpResponseMessage1Header1Value1 + "\"");
}
processHTTPResponseMessage(httpResponseMessage1);
HTTPMessageHeader[] httpResponseMessage1Headers1 = httpResponseMessage1.getHTTPMessageHeaders();
HTTPMessageHeader httpResponseMessage1Header2 = httpResponseMessage1Headers1[0];
String httpResponseMessage1Header2Key1 = httpResponseMessage1Header2.getKey();
String httpResponseMessage1Header2Value1 = httpResponseMessage1Header2.getValue();
inputSSLSocketOutputStream.write((httpResponseMessage1Header2Value1 + "\r\n").getBytes());
for (int i = 1; i < httpResponseMessage1Headers1.length; i = i + 1) {
httpResponseMessage1Header2 = httpResponseMessage1Headers1[i];
httpResponseMessage1Header2Key1 = httpResponseMessage1Header2.getKey();
httpResponseMessage1Header2Value1 = httpResponseMessage1Header2.getValue();
inputSSLSocketOutputStream.write((httpResponseMessage1Header2Key1 + ": " + httpResponseMessage1Header2Value1 + "\r\n").getBytes());
}
inputSSLSocketOutputStream.write(("\r\n").getBytes());
HTTPMessageHeader httpResponseMessage1Header3 = httpResponseMessage1.getHTTPMessageHeader("Content-Length");
int httpResponseMessage1Header3Value1 = 0;
if (httpResponseMessage1Header3 != null) {
try {
httpResponseMessage1Header3Value1 = new Integer(httpResponseMessage1Header3.getValue());
} catch (Exception e2) {
}
}
httpRequestMessage1Header1Values1[0] = "GET";
httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Values1[0];
for (int i = 1; i < httpRequestMessage1Header1Values1.length; i = i + 1) {
httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Value1 + " " + httpRequestMessage1Header1Values1[i];
}
httpRequestMessage1Header1.setValue(httpRequestMessage1Header1Value1);
long i = 0;
long j = 1048576;
if (j > httpResponseMessage1Header3Value1 - 1) {
j = httpResponseMessage1Header3Value1 - 1;
}
while (i < httpResponseMessage1Header3Value1 - 1) {
HTTPMessageHeader httpRequestMessage1Header4 = httpRequestMessage1.getHTTPMessageHeader("Range");
if (httpRequestMessage1Header4 != null) {
httpRequestMessage1.removeHTTPMessageHeader(httpRequestMessage1Header4);
}
httpRequestMessage1.addHTTPMessageHeader(new HTTPMessageHeader("Range", "bytes=" + i + "-" + j));
HTTPResponseMessage httpResponseMessage2 = null;
int k = 1;
while (k <= 5) {
try {
HTTPSRequest httpsRequest2 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
httpsRequest2.open();
try {
httpResponseMessage2 = httpsRequest2.getHTTPResponseMessage();
HTTPMessageHeader httpResponseMessage2Header1 = httpResponseMessage2.getHTTPMessageHeader("Content-Range");
if (httpResponseMessage2Header1 == null) {
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/CONTENT_RANGE != \"bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1 + "\", RESPONSE/CONTENT_RANGE == \"\"");
}
String httpResponseMessage2Header1Value1 = httpResponseMessage2Header1.getValue();
if (!httpResponseMessage2Header1Value1.equalsIgnoreCase("bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1)) {
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/CONTENT_RANGE != \"bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1 + "\", RESPONSE/CONTENT_RANGE == \"" + httpResponseMessage2Header1Value1 + "\"");
}
httpResponseMessage2.read(inputSSLSocketOutputStream);
} catch (Exception e2) {
throw e;
} finally {
try {
httpsRequest2.close();
} catch (Exception e2) {
}
}
k = 5;
} catch (Exception e2) {
logger.log(2, "HTTPS_SERVER_WORKER/PROCESS: EXCEPTION", e2);
if (k == 5) {
throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS");
}
}
k = k + 1;
}
i = j + 1;
j = j + 1 + 1048576;
if (j > httpResponseMessage1Header3Value1 - 1) {
j = httpResponseMessage1Header3Value1 - 1;
}
}
}
}
}
use of APJP.HTTP11.HTTPMessageHeader in project apjp by jvansteirteghem.
the class HTTPSServerWorker method processHTTPRequestMessage.
protected void processHTTPRequestMessage(HTTPRequestMessage httpRequestMessage) throws Exception {
HTTPMessageHeader httpRequestMessage1Header01 = httpRequestMessage.getHTTPMessageHeader("Proxy-Connection");
if (httpRequestMessage1Header01 != null) {
String httpRequestMessage1Header1Value01 = httpRequestMessage1Header01.getValue();
if (httpRequestMessage1Header1Value01.equalsIgnoreCase("close")) {
keepAlive = false;
}
}
HTTPMessageHeader httpRequestMessage1Header02 = httpRequestMessage.getHTTPMessageHeader("Connection");
if (httpRequestMessage1Header02 != null) {
String httpRequestMessage1Header1Value02 = httpRequestMessage1Header02.getValue();
if (httpRequestMessage1Header1Value02.equalsIgnoreCase("close")) {
keepAlive = false;
}
}
}
use of APJP.HTTP11.HTTPMessageHeader in project apjp by jvansteirteghem.
the class HTTPSProxyServerWorker method run.
public void run() {
try {
final Socket inputSocket = this.inputSocket;
final InputStream inputSocketInputStream = inputSocket.getInputStream();
final OutputStream inputSocketOutputStream = inputSocket.getOutputStream();
HTTPRequestMessage httpRequestMessage1 = new HTTPRequestMessage(inputSocketInputStream);
httpRequestMessage1.read();
HTTPMessageHeader httpRequestMessage1Header1 = httpRequestMessage1.getHTTPMessageHeader("");
if (httpRequestMessage1Header1 != null) {
// CONNECT 127.0.0.1:443 HTTP/1.1
String httpRequestMessage1Header1Value1 = httpRequestMessage1Header1.getValue();
String[] httpRequestMessage1Header1Values1 = httpRequestMessage1Header1Value1.split(" ");
// CONNECT
String httpRequestMessage1Header1Value2 = httpRequestMessage1Header1Values1[0];
if (httpRequestMessage1Header1Value2.equalsIgnoreCase("CONNECT")) {
final Socket outputSocket = new Socket();
try {
try {
outputSocket.connect(new InetSocketAddress(httpsServer.getLocalAddress(), httpsServer.getLocalPort()));
inputSocketOutputStream.write(("HTTP/1.0 200 OK\r\n").getBytes());
inputSocketOutputStream.write(("Connection: keep-alive\r\n").getBytes());
inputSocketOutputStream.write(("\r\n").getBytes());
} catch (Exception e) {
inputSocketOutputStream.write(("HTTP/1.0 500 Internal Server Error\r\n").getBytes());
inputSocketOutputStream.write(("Connection: close\r\n").getBytes());
inputSocketOutputStream.write(("\r\n").getBytes());
throw e;
}
final InputStream outputSocketInputStream = outputSocket.getInputStream();
final OutputStream outputSocketOutputStream = outputSocket.getOutputStream();
Thread thread1 = new Thread() {
public void run() {
try {
byte[] byteArray1;
int byteArray1Length;
byteArray1 = new byte[5120];
byteArray1Length = 0;
while ((byteArray1Length = inputSocketInputStream.read(byteArray1)) != -1) {
outputSocketOutputStream.write(byteArray1, 0, byteArray1Length);
}
} catch (Exception e) {
} finally {
try {
outputSocket.shutdownInput();
outputSocket.shutdownOutput();
} catch (Exception e) {
}
}
}
};
thread1.start();
Thread thread2 = new Thread() {
public void run() {
try {
byte[] byteArray1;
int byteArray1Length;
byteArray1 = new byte[5120];
byteArray1Length = 0;
while ((byteArray1Length = outputSocketInputStream.read(byteArray1)) != -1) {
inputSocketOutputStream.write(byteArray1, 0, byteArray1Length);
}
} catch (Exception e) {
} finally {
try {
inputSocket.shutdownInput();
inputSocket.shutdownOutput();
} catch (Exception e) {
}
}
}
};
thread2.start();
thread1.join();
thread2.join();
} catch (Exception e) {
throw e;
} finally {
try {
outputSocket.close();
} catch (Exception e) {
}
}
}
}
} catch (Exception e) {
if (thread != null) {
logger.log(2, "HTTPS_PROXY_SERVER_WORKER: EXCEPTION", e);
}
} finally {
if (thread != null) {
try {
httpsProxyServer.stopHTTPSProxyServerWorker(this);
} catch (Exception e) {
}
}
}
}
use of APJP.HTTP11.HTTPMessageHeader in project apjp by jvansteirteghem.
the class HTTPSServerWorker method processHTTPResponseMessage.
protected void processHTTPResponseMessage(HTTPResponseMessage httpResponseMessage) throws Exception {
HTTPMessageHeader httpResponseMessageHeader1 = httpResponseMessage.getHTTPMessageHeader("Content-Length");
if (httpResponseMessageHeader1 == null) {
keepAlive = false;
}
HTTPMessageHeader httpResponseMessageHeader2 = httpResponseMessage.getHTTPMessageHeader("Proxy-Connection");
if (httpResponseMessageHeader2 != null) {
httpResponseMessage.removeHTTPMessageHeader(httpResponseMessageHeader2);
}
if (keepAlive == true) {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Proxy-Connection", "Keep-Alive"));
} else {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Proxy-Connection", "close"));
}
HTTPMessageHeader httpResponseMessageHeader3 = httpResponseMessage.getHTTPMessageHeader("Connection");
if (httpResponseMessageHeader3 != null) {
httpResponseMessage.removeHTTPMessageHeader(httpResponseMessageHeader3);
}
if (keepAlive == true) {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Connection", "Keep-Alive"));
} else {
httpResponseMessage.addHTTPMessageHeader(new HTTPMessageHeader("Connection", "close"));
}
}
Aggregations