App.java
From MyWiki
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; } } }