App.java

From MyWiki
Jump to: navigation, search
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.sql.*; 
import java.util.*;
import java.math.*;
 
 
public class App {
	  String url = "jdbc:mysql://<db_Server>:3306/";  /// Mysql connection
          String dbName = "<db_name>";
          String driver = "com.mysql.jdbc.Driver";
          String userName = "<username>";
          String password = "<password>";
          Connection conn;
          Statement st;
          int n = 0;
          String distinguished;
          Hashtable  ht;
 
 
 
 
App.Translate  tr;	
App.Mysql my ;
App.DateConvert dc;
App.MakeHash ha;
String header;
 
 
 
 
 
    private static void copy(InputStream in, OutputStream out) throws IOException {
        while (true) {
                      int c = in.read();
                      if (c == -1) {
                                   break;
                                   }
                      out.write((char) c);
                     }
                                                                                  }
 
   void runnit() throws IOException, InterruptedException
 {
 	tr = this.new Translate();
 	my = this.new Mysql();
 	dc = this.new DateConvert();
 	ha = this.new MakeHash();
 	 ht = ha.makeIt();
 
        ProcessBuilder processBuilder = new ProcessBuilder("c:\\my1.bat");
        processBuilder.redirectErrorStream(true);
 
        Process process = processBuilder.start();
        copy(process.getInputStream(), System.out);
        process.waitFor();
        System.out.println("Exit Status : " + process.exitValue());
 
 
 
 }
 
 
 public static void main(String[] args) throws IOException,InterruptedException
 {
 	App ap = new App();
 	ap.runnit();
 
 	App.FileStreamsTest fs  = ap.new FileStreamsTest();
 	fs.reado();
 
 
 
 } 
 
 
 
 
 
 class Translate
 {
 String trans(String s)
   	               {
   	    	               	String in;
   	    	               	int FLAG=1;
   	               	String out="";
   	               	String outTemp, outTemp2;
   	               	in = s;
   	               // 	outTemp2 = s.replace("'","_");
   	              // 	outTemp =  outTemp2.replace(",","','");
 
   	              // 	out = "'" + outTemp + "'";
 
 
   	               for (int index = 0; index < in.length();
                    index++) {
                              char aChar = in.charAt(index);
 
                             if ( FLAG == 1 && aChar == '"') { FLAG=0; outTemp=out+"\"";out=outTemp;    }
                             else if ( FLAG == 0 && aChar == '"') {FLAG=1; outTemp=out+aChar; out = outTemp;}
                             else if ( FLAG ==1 && aChar == ',' ) { outTemp = out+"','" ;  out = outTemp ;}
                             else if (  aChar =='\'' ) { outTemp=out+"\\'";out = outTemp;}
                             else { outTemp=out+aChar;out = outTemp;}
 
 
 
                             }
                             outTemp = "'"+out+"'";
                             out=outTemp;
 
 
   	               return out;
 
   	               }
 
 
 
 
 }
 
 
 
 
 
 
class FileStreamsTest {
     void reado(){
        try {
            File inputFile = new File("c:\\output.csv");
 
 
            FileInputStream fis = new FileInputStream(inputFile);
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
 
            String strLine;
 
            header = br.readLine();
            System.out.println(header);
 
 my.connect();
             try{
                 st = conn.createStatement();
 
                      while((strLine = br.readLine())!= null )
                           {
                           	       String delimo = strLine;
                           	       delimo = delimo.replaceAll("'","_");
                                   String[] tokeno = delimo.split("\",");
                                   distinguished = tokeno[0]+'"';
                                 System.out.println("The distinguiahed name is "+distinguished);
 
 
                         	 System.out.println("REPLACE into ad_fields ("+header+") VALUES("+tr.trans(strLine)+")");
                         	 System.out.println("==============================");
                         	 System.out.println("length of line is "+strLine.length()+ "n is "+ n);
                         	 n++;
                          st.executeUpdate("REPLACE into adfields ("+header+") VALUES("+tr.trans(strLine)+")");
                          System.out.println("Insert has been completed");
                          System.out.println("SELECT lastlogon FROM  adfields where DN='"+distinguished+"'");
                          ResultSet res = st.executeQuery("SELECT lastlogon FROM  adfields where DN='"+distinguished+"'");
                         if ( res.next() )
                    {
                          String LAST=res.getString("lastlogon");
                          System.out.println("lastlogoin is "+LAST);
                         if (LAST.length() > 6 ) 
                         {
                          String lastlog = dc.con(LAST);
                          System.out.println(lastlog);
                          st.executeUpdate("update adfields set lastlogon_date='"+lastlog+"' where DN='"+distinguished+"'" );
                         }
 
                     }    
                                                   System.out.println("SELECT pwdLastSet FROM  adfields where DN='"+distinguished+"'");
                          ResultSet ress = st.executeQuery("SELECT pwdLastSet FROM  adfields where DN='"+distinguished+"'");
                       if (   ress.next() )
                     {
                          String LASTT=ress.getString("pwdLastSet");
                          System.out.println("pwdLastSet is "+LASTT);
                         if (LASTT.length() > 6 ) 
                         {
                          String lastpw = dc.con(LASTT);
                          System.out.println(lastpw);
                          st.executeUpdate("update adfields set pwdLastSet_date='"+lastpw+"' where DN='"+distinguished+"'" );
                         }
 
                      }   
                         // Now for the hashtable
 
 
                          System.out.println("SELECT userAccountControl  FROM  adfields where DN='"+distinguished+"'");
                          ResultSet resss = st.executeQuery("SELECT userAccountControl FROM  adfields where DN='"+distinguished+"'");
                       if (    resss.next() ) 
                     {
                          String LASTTT=resss.getString("userAccountControl");
                          System.out.println("userAccountControl is "+LASTTT);
                         if (LASTTT.length() > 2 ) 
                         {
                          String userAccountControl  = (String)ht.get(LASTTT);
                          System.out.println(userAccountControl);
                          st.executeUpdate("update adfields set userAccountControl_interpreted='"+userAccountControl+"' where DN='"+distinguished+"'" );
                         }
 
 
                         }
                         st.executeUpdate("update adfields set updated=now() where DN='"+distinguished+"'" );
 
                      }   
 
                         System.out.println("TEsting user account control for 512 "+(String)ht.get("512"));
                        //System.out.println("TEsting user account control for 514 "+(String)ht.get("514"));
                        // System.out.println("TEsting user account control for 66048 "+(String)ht.get("66048"));
                        // System.out.println("TEsting user account control for 66050 "+(String)ht.get("66050"));
 
                           // } 
                }
                            catch (SQLException ee) {
                                                      ee.printStackTrace();
                                                    } 
 
 
 
 
 
//my.connect();
 
my.disconnect();
            fis.close();
 
        } catch (FileNotFoundException e) {
            System.err.println("FileStreamsTest: " + e);
        } catch (IOException e) {
            System.err.println("FileStreamsTest: " + e);
        }
    }
}
 
 
 
class Mysql 
{
void connect()
{
try {
          Class.forName(driver).newInstance();
          conn = DriverManager.getConnection(url+dbName,userName,password);
          System.out.println("Successful connection to mysql on argus.goldilocks.ac.uk");
 
          } catch (Exception e) {
          e.printStackTrace();
 
          }
 
 
 
}
 
void disconnect()
{
	try{
conn.close();
System.out.println("Database successfully closed");
}
catch (Exception e) {
          e.printStackTrace();
          }	
}
 
 
 
}
 
 
 
 
 
public class DateConvert
{
 
String con(String s)
{
 
       final String secondsInHourStr = (60 * 60) + "";
 
        //Convert the huge number to hours
        BigInteger big = new BigInteger(s);
        //Note, I got the spitByValue after trial/error testing, hope its correct
        String splitByValue = "10000000";
        BigInteger secondsBig = big.divide(new BigInteger(splitByValue));
 
        BigInteger hoursBig = secondsBig.divide(new BigInteger(secondsInHourStr));
 
        //Get the remaining seconds
        BigInteger modSeconds = secondsBig.mod(new BigInteger(secondsInHourStr));
        //Create a Calender object representing 1601-01-01 00:00:01
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 1601);
        cal.set(Calendar.MONTH, 0);
        cal.set(Calendar.DATE, 1);
        cal.set(Calendar.HOUR, -12);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 1);
 
 
        //Add the hours
        cal.add(Calendar.HOUR, hoursBig.intValue());
 
 
        //Add seconds
        cal.add(Calendar.SECOND, modSeconds.intValue());
 
        //Here is your Java object
        java.util.Date date = cal.getTime();
       // System.out.println(date);
        return date.toString();
 
}
 
}
 
 
class MakeHash
{
Hashtable myHash;
 
 
MakeHash()
{
myHash = new Hashtable(29);	
 
myHash.put("514","ACCOUNTDISABLE");
myHash.put("528","Enabled - LOCKOUT");
myHash.put("530","ACCOUNTDISABLE - LOCKOUT");
myHash.put("544","Enabled - PASSWD_NOTREQD");
myHash.put("546","ACCOUNTDISABLE - PASSWD_NOTREQD");
myHash.put("560","Enabled - PASSWD_NOTREQD - LOCKOUT");
myHash.put("640","Enabled - ENCRYPTED_TEXT_PWD_ALLOWED");
myHash.put("2048","INTERDOMAIN_TRUST_ACCOUNT");
myHash.put("2080","INTERDOMAIN_TRUST_ACCOUNT - PASSWD_NOTREQD");
myHash.put("4096","WORKSTATION_TRUST_ACCOUNT");
myHash.put("8192","SERVER_TRUST_ACCOUNT");
myHash.put("66048","Enabled - DONT_EXPIRE_PASSWORD");
myHash.put("66050","ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD");
myHash.put("66064","Enabled - DONT_EXPIRE_PASSWORD - LOCKOUT");
myHash.put("66066","ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD - LOCKOUT");
myHash.put("66080","Enabled - DONT_EXPIRE_PASSWORD - PASSWD_NOTREQD");
myHash.put("66082","ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD - PASSWD_NOTREQD");
myHash.put("66176","Enabled - DONT_EXPIRE_PASSWORD - ENCRYPTED_TEXT_PWD_ALLOWED");
myHash.put("131584","Enabled - MNS_LOGON_ACCOUNT");
myHash.put("131586","ACCOUNTDISABLE - MNS_LOGON_ACCOUNT");
myHash.put("131600","Enabled - MNS_LOGON_ACCOUNT - LOCKOUT");
myHash.put("197120","Enabled - MNS_LOGON_ACCOUNT - DONT_EXPIRE_PASSWORD");
myHash.put("532480","SERVER_TRUST_ACCOUNT - TRUSTED_FOR_DELEGATION (Domain Controller)");
myHash.put("1049088","Enabled - NOT_DELEGATED");
myHash.put("1049090","ACCOUNTDISABLE - NOT_DELEGATED");
myHash.put("2097664","Enabled - USE_DES_KEY_ONLY");
myHash.put("2687488","Enabled - DONT_EXPIRE_PASSWORD - TRUSTED_FOR_DELEGATION - USE_DES_KEY_ONLY");
myHash.put("4194816","Enabled - DONT_REQ_PREAUTH");
myHash.put("512","Enabled");
 
}
 
 
 
Hashtable makeIt()
{	
return myHash;	
}
 
 
 
}
 
 
 
 
 
 
}