package sd.web.controllers;
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.rmi.*;
import java.util.Hashtable;
import org.json.*;
import com.alcidesfonseca.mvc.RoutedServlet;
import com.alcidesfonseca.db.User;
import sd.ns.*;
import sd.web.models.*;
import sd.web.templates.JSONMessage;
public class AdminServlet extends RoutedServlet {
static String prefix = "/admin";
static LoadBalancerBean lbb;
public AdminServlet() throws NamingException {
super();
}
public void init() {
lbb = new LoadBalancerBean();
}
public void route(String method, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("application/x-json");
PrintWriter out = response.getWriter();
String req = getPath(request,prefix);
if ( req.equals("servers") && method.equals("get") ) {
view_get_servers(request,out);
} else if ( req.equals("accounts")) {
if ( method.equals("get") ) {
view_get_accounts(request,out);
} else if ( method.equals("post") ) {
view_post_accounts(request,out);
} else if ( method.equals("put") ) {
view_put_accounts(request,out);
} else if ( method.equals("delete") ) {
view_delete_accounts(request,out);
}
} else {
response.sendError(HttpServletResponse.SC_NOT_FOUND,"Page not found.");
}
}
private void view_get_servers(HttpServletRequest request, PrintWriter out) {
try {
JSONObject j = new JSONObject();
j.put("status","ok");
JSONArray a = new JSONArray();
OnlineServer[] ar = lbb.getServers();
for(int i = 0; i<ar.length; i++ ) {
JSONObject o = new JSONObject();
o.put("address", ar[i].toString());
o.put("cpu", ar[i].getCPU());
o.put("memory", ar[i].getMemory());
o.put("network", ar[i].getNetwork());
o.put("jids",ar[i].getClients());
a.put(o);
}
j.put("servers",a);
j.put("ns",lbb.getNamingService());
out.println(j);
} catch (JSONException e) {
out.println(new JSONMessage("error","Weird error."));
}
}
private void view_get_accounts(HttpServletRequest request, PrintWriter out) {
try {
JSONObject j = new JSONObject();
j.put("status","ok");
JSONArray a = new JSONArray();
User[] ar = lbb.getAccounts();
for(int i = 0; i<ar.length; i++ ) {
a.put(ar[i].toString());
}
j.put("accounts",a);
out.println(j);
} catch (JSONException e) {
out.println(new JSONMessage("error","Weird error."));
}
}
private void view_post_accounts(HttpServletRequest request, PrintWriter out) {
String uname = request.getParameter("username");
String pwd = request.getParameter("password");
if ( uname != null && pwd != null) {
lbb.setPassword(uname,pwd);
out.println(new JSONMessage("ok","Password changed."));
} else {
out.println(new JSONMessage("error","Can't be blank."));
}
}
private void view_put_accounts(HttpServletRequest request, PrintWriter out) {
String uname = request.getParameter("username");
String pwd = request.getParameter("password");
if ( uname != null && pwd != null) {
lbb.createUser(uname,pwd);
out.println(new JSONMessage("ok","User Created."));
} else {
out.println(new JSONMessage("error","Can't be blank."));
}
}
private void view_delete_accounts(HttpServletRequest request, PrintWriter out) {
String uname = request.getParameter("username");
if ( uname != null) {
lbb.deleteUser(uname);
out.println(new JSONMessage("ok","User Deleted"));
} else {
out.println(new JSONMessage("error","Can't be blank."));
}
}
}