package oculusPrime;
import org.red5.server.api.service.IServiceCapableConnection;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NetworkServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
static BanList ban = null;
public void init(ServletConfig config) throws ServletException {
super.init(config);
ban = BanList.getRefrence();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (!ban.knownAddress(request.getRemoteAddr())) {
Util.log("unknown address: sending to login: " + request.getRemoteAddr(), this);
response.sendRedirect("/oculusPrime");
return;
}
try {
String url = "http://localhost";
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
String postData = "";
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
if (postData.length()!=0) postData += "&";
String paramName = parameterNames.nextElement();
postData += paramName;
String[] paramValues = request.getParameterValues(paramName);
for (int i = 0; i < paramValues.length; i++) {
postData += "=";
postData += paramValues[i];
}
}
// manage params if any
if (postData.length() != 0) {
// send params via post
con.setRequestMethod("POST");
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(postData.getBytes());
os.flush();
os.close();
// redirect to '/' if certain params (mirroring similar conditions in Jetty doGet())
String action = request.getParameter("action");
String router = request.getParameter("router");
String password = request.getParameter("password");
if (router != null && password != null) {
response.sendRedirect(request.getRequestURL().toString());
}
else if(action != null) {
if (!action.equals("status") && !action.equals("connect") && !action.equals("xmlinfo") &&
!action.equals("config") && !action.equals("wifiready")) {
response.sendRedirect(request.getRequestURL().toString());
}
}
}
// render response
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
String charset = "ISO-8859-1";
Reader r = new InputStreamReader(con.getInputStream(), charset);
PrintWriter out = response.getWriter();
while (true) {
int ch = r.read();
if (ch < 0)
break;
out.print((char) ch);
}
}
} catch (Exception e) {
e.printStackTrace();
}
// response.sendRedirect(request.getRequestURL().toString());
}
}