import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AkentiAccess extends HttpServlet {
private String DNameStr,
CNameStr,
OUNameStr,
ONameStr,
CountryStr,
ResourceStr,
ConfFileStr,
LocalResourceRootStr,
cmd,
action;
boolean AkentiAccessType = false;
static final String AkentiImage = "Akenti.home.jpeg";
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
// first, set the "content type" header of the response
res.setContentType("text/html");
//Get the response's PrintWriter to return text to the client.
PrintWriter toClient = res.getWriter();
CNameStr = req.getParameter("CName");
OUNameStr = req.getParameter("OUName");
ONameStr = req.getParameter("OName");
CountryStr = req.getParameter("Country");
ResourceStr = req.getParameter("Resource");
ConfFileStr = req.getParameter("ConfFile");
LocalResourceRootStr = req.getParameter("LocalResourceRoot");
makingandexecutingScript();
AkentiAccessCheck();
AkentiResultDelete();
toClient.println("");
toClient.println("
");
toClient.println("");
toClient.println("
");
toClient.println("");
toClient.println("The List of your information
");
toClient.println("Common Name : "+CNameStr+"
");
toClient.println("Organization Unit : "+OUNameStr+"
");
toClient.println("Organization : "+ONameStr+"
");
toClient.println("Country : "+CountryStr+"
");
toClient.println("Resource : "+ResourceStr+"
");
toClient.println("ConfFile : "+ConfFileStr+"
");
toClient.println("LocalResourceRoot : "+LocalResourceRootStr+"
");
toClient.println("Allowed Action : "+""+action+""+"
");
toClient.println("
");
if (AkentiAccessType)
{
toClient.println("Accessed!!!
");
toClient.println("This user has access rights"+"
");
}
else
{
toClient.println("Denied!!!
");
toClient.println("This user can not access this resource"+"
");
}
toClient.println("");
toClient.println("Try it again......");
toClient.println(" Restart ");
toClient.println("
");
toClient.println("");
toClient.println("");
toClient.close();
}
public void makingandexecutingScript()
{
String dquote = "\"";
String CNheader = "/CN=";
String OUheader = "/OU=";
String Oheader = "/O=";
String Cheader = "/C=";
CNameStr = CNheader.concat(CNameStr);
OUNameStr = OUheader.concat(OUNameStr);
ONameStr = Oheader.concat(ONameStr);
CountryStr = Cheader.concat(CountryStr);
DNameStr = CountryStr+ONameStr+OUNameStr+CNameStr;
DNameStr = dquote.concat(DNameStr);
DNameStr = DNameStr.concat(dquote);
ResourceStr = dquote.concat(ResourceStr);
ResourceStr = ResourceStr.concat(dquote);
cmd = "/npac/home/webflow/Akenti/akenti-docs/cgi-bin/akenti_chk_acc -t W -n "+DNameStr+" -r "+ResourceStr+" -f "+ConfFileStr+" -d "+LocalResourceRootStr+" > /npac/home/webflow/Akenti/akenti-docs/cgi-bin/akentiresult";
String Akentiscript = "/npac/home/webflow/Akenti/akenti-docs/cgi-bin/akentiscript";
String FileContents = new String("#!/bin/sh -f\n");
FileContents += cmd+"\n";
int scriptsize = FileContents.length();
byte[] scriptbuf = new byte[scriptsize];
FileContents.getBytes(0, scriptsize, scriptbuf, 0);
File to_file = new File(Akentiscript);
FileOutputStream to = null;
try{
to = new FileOutputStream(to_file);
to.write(scriptbuf, 0, scriptsize);
}
catch(IOException exc){;}
finally{
if(to != null) try{ to.close(); } catch(IOException exc) {;}
}
try{
Process AkentiEnv = Runtime.getRuntime().exec("chmod 777 "+Akentiscript);
AkentiEnv.waitFor();
Process AkentiExec = Runtime.getRuntime().exec(Akentiscript);
AkentiExec.waitFor();
}
catch (Exception ex) {
// toClient.println("Error: " + ex.toString()+"
");
}
}
public void AkentiAccessCheck() {
File f = new File("/npac/home/webflow/Akenti/akenti-docs/cgi-bin/akentiresult");
int size = (int) f.length();
int bytes_read = 0;
String tem_data;
try{
FileInputStream in = new FileInputStream(f);
byte[] data = new byte[size];
while(bytes_read < size)
bytes_read += in.read(data, bytes_read, size-bytes_read);
tem_data = new String(data);
int indexNum = tem_data.indexOf("Allowed actions:");
action = tem_data.substring(indexNum+16);
if (action.startsWith("none")) AkentiAccessType = false;
else if (action.startsWith("read") || action.startsWith("execute") || action.startsWith("write") || action.startsWith("add") || action.startsWith("delete")) AkentiAccessType = true;
else AkentiAccessType = false;
} catch (IOException e) {
// System.err.println("Error: " + e.toString());
}
}
public void AkentiResultDelete() {
String Akentiresult = "/npac/home/webflow/Akenti/akenti-docs/cgi-bin/akentiresult";
String Akentiscript = "/npac/home/webflow/Akenti/akenti-docs/cgi-bin/akentiscript";
try{
Process AkentiDelete = Runtime.getRuntime().exec("rm -r "+Akentiresult);
AkentiDelete.waitFor();
Process AkentiSDelete = Runtime.getRuntime().exec("rm -r "+Akentiscript);
AkentiDelete.waitFor();
}
catch (Exception ex1) {
//System.err.println("Error: " + ex1.toString());
}
}
public String getServletInfo() {
return "Checking access as Akenti Security Servlet";
}
}