Changeset 25308

Show
Ignore:
Timestamp:
28.03.2012 15:45:03 (7 years ago)
Author:
ak19
Message:

1. Updated txt2usersDB.java to compile again and to also work with usersDB2txt.java such that the output of running one becomes the exact input required by the other and vice-versa. So running usersDB2txt and then txt2usersDB on the txt file generated by the former, will generate a DB file that can be fed back into usersDB2txt which will once more produce an identical text output. 2. Created the ChangePwdUsersDB.java file which build.xml's new ant config-admin target calls to reset the admin password.

Location:
main/trunk/greenstone3
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/build.xml

    r25214 r25308  
    12141214 
    12151215    </if> 
     1216  </target> 
     1217 
     1218  <!-- This target won't work with Eclipse because the SecureInputHandler used below conflicts with it.  
     1219    See http://www.dcepler.net/post.cfm/hiding-password-input-in-ant  
     1220    But you can do: echo mypassword | ant config-admin --> 
     1221  <target name="config-admin" description="Reset admin password"> 
     1222    <input addproperty="admin.password" defaultvalue="admin" message="New admin password (3-8 characters):&gt;"> 
     1223      <handler classname="org.apache.tools.ant.input.SecureInputHandler" /> <!-- password won't be visible on screen --> 
     1224    </input> 
     1225    <!--<echo>${admin.password}</echo>--> <!-- for testing --> 
     1226    <java classname="org.greenstone.gsdl3.util.ChangePwdUsersDB"> 
     1227      <classpath refid="compile.classpath"/> <!--for ${web.lib}/gsdl3.jar and supporting files--> 
     1228      <arg file="${web.home}/sites/localsite/etc/usersDB"/> 
     1229      <arg value="admin"/> 
     1230      <arg value="${admin.password}"/> 
     1231    </java> 
    12161232  </target> 
    12171233 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/DerbyWrapper.java

    r25261 r25308  
    345345    } 
    346346 
     347    // findUser(null) will return all users, which is why a UserQueryResult  
     348    // (a vector of UserTermInfo) is returned 
    347349    public UserQueryResult findUser(String username) throws SQLException 
    348350    { 
     
    464466    public void db2txt() 
    465467    { 
    466         try 
    467         { 
    468             conn.setAutoCommit(false); 
     468        System.err.println(db2txtString());      
     469    } 
     470 
     471    public String db2txtString() 
     472    { 
     473        //String db2txt = "Error in converting db2txt string."; 
     474        String db2txt = ""; 
     475        try 
     476        { 
     477            conn.setAutoCommit(false); // An exception at this line can happen when the GS3 tomcat server is already running 
     478                                       // and GS3 is already accessing the usersDB when this function independently tries to 
     479                                       // connect to it (via usersDB2txt.java's main(). For an explanation of the possible  
     480                                       // reasons, see http://db.apache.org/derby/papers/DerbyTut/embedded_intro.html 
     481                                       // section "Embedded Derby supports multiple users in one JVM". 
    469482            String sql_list_all_user = "select username, password, accountstatus, comment, email from " + USERS; 
    470483            ResultSet rs = state.executeQuery(sql_list_all_user); 
     
    497510                } 
    498511                conn.commit(); 
    499  
    500                 System.err.println("-------------------------------------"); 
    501                 System.err.println("USERNAME = " + user.get("username")); 
    502                 System.err.println("PASSWORD = " + user.get("password")); 
    503                 System.err.println("GROUPS = " + returnedGroups); 
    504                 System.err.println("STATUS = " + user.get("status")); 
    505                 System.err.println("COMMENT = " + user.get("comment")); 
    506                 System.err.println("EMAIL = " + user.get("email")); 
    507                 System.err.println("-------------------------------------"); 
     512                 
     513                StringBuffer buffer = new StringBuffer();//("-------------------------------------"); 
     514                buffer.append("USERNAME = " + user.get("username")); 
     515                buffer.append("\nPASSWORD = " + user.get("password")); 
     516                buffer.append("\nGROUPS = " + returnedGroups); 
     517                buffer.append("\nSTATUS = " + user.get("status")); 
     518                buffer.append("\nCOMMENT = " + user.get("comment")); 
     519                buffer.append("\nEMAIL = " + user.get("email")); 
     520                buffer.append("\n-------------------------------------\n"); 
     521                db2txt = buffer.toString(); 
    508522            } 
    509523 
     
    514528        { 
    515529            ex.printStackTrace(); 
     530        } finally { 
     531            return db2txt; 
    516532        } 
    517533    } 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/txt2usersDB.java

    r16869 r25308  
    3838        dw.connectDatabase(args[1],false); 
    3939        boolean delete_rows = dw.deleteAllUser(); 
     40        dw.closeDatabase(); 
    4041        if (!delete_rows){ 
    4142        System.out.println("Couldn't delete rows of the users table"); 
     
    4748        String accountstatus=null; 
    4849        String comment=null; 
     50        String email=null; 
    4951        while ((str = in.readLine()) != null) { 
    5052        //ystem.out.println(str); 
    51         if (str.startsWith("<")){ 
     53         
     54        if(str.indexOf(" = ") != -1) { // works with DerbyWrapper.db2txt() and usersDB2txt.java. Fields listed as: USERNAME = admin 
     55            String field=str.substring(0,str.indexOf(" = ")); 
     56            if (field.equalsIgnoreCase("email")){ 
     57            email=str.substring(str.indexOf(" = ")+3,str.length()); 
     58            } 
     59            if (field.equalsIgnoreCase("comment")){ 
     60            comment=str.substring(str.indexOf(" = ")+3,str.length()); 
     61            } 
     62            if (field.equalsIgnoreCase("status")){ 
     63            accountstatus=str.substring(str.indexOf(" = ")+3,str.length()); 
     64            } 
     65            if (field.equalsIgnoreCase("groups")){ 
     66            groups=str.substring(str.indexOf(" = ")+3,str.length()); 
     67            } 
     68            if (field.equalsIgnoreCase("password")){ 
     69            //password=dw.rot13(str.substring(str.indexOf(">")+1,str.length())); 
     70            password=str.substring(str.indexOf(" = ")+3,str.length()); 
     71            } 
     72            if (field.equalsIgnoreCase("username")){ 
     73            username=str.substring(str.indexOf(" = ")+3,str.length()); 
     74            } 
     75        }        
     76        else if (str.startsWith("<")){ // fields listed as: <username>admin 
    5277            String field=str.substring(1,str.indexOf(">")); 
     78            if (field.equals("email")){ 
     79            email=str.substring(str.indexOf(">")+1,str.length()); 
     80            } 
    5381            if (field.equals("comment")){ 
    5482            comment=str.substring(str.indexOf(">")+1,str.length()); 
    5583            } 
    56             if (field.equals("enabled")){ 
     84            if (field.equals("enabled") || field.equals("status")){ 
    5785            accountstatus=str.substring(str.indexOf(">")+1,str.length()); 
    5886            } 
     
    6189            } 
    6290            if (field.equals("password")){ 
    63             password=dw.rot13(str.substring(str.indexOf(">")+1,str.length())); 
     91            //password=dw.rot13(str.substring(str.indexOf(">")+1,str.length())); 
     92            password=str.substring(str.indexOf(">")+1,str.length()); 
    6493            } 
    6594            if (field.equals("username")){ 
     
    6796            } 
    6897        } 
    69         if (str.equals("----------------------------------------------------------------------")){ 
    70             if ((username!=null) && (password!=null) && (groups!=null) && (accountstatus!=null) && (comment!=null)){ 
     98        else if (str.equals("----------------------------------------------------------------------") 
     99             || str.equals("-------------------------------------")) {           
     100             
     101            if ((username!=null) && (password!=null) && (groups!=null) && (accountstatus!=null) && (comment!=null) && (email!=null)) { 
    71102            dw.connectDatabase(args[1],false); 
    72             dw.addUser(username, password, groups, accountstatus, comment); 
     103            dw.addUser(username, password, groups, accountstatus, comment, email); 
    73104            username=null; 
    74105            password=null; 
     
    76107            accountstatus=null; 
    77108            comment=null; 
    78             dw.connectDatabase(args[1],false); 
     109            email=null; 
     110            //dw.connectDatabase(args[1],false); // should this be closeDatabase()???? 
     111            dw.closeDatabase(); 
     112            } 
     113        } 
     114        else { // encrypted passwords can span multiple lines for some reason 
     115               // assume that is the case here 
     116            if(password != null) {  
     117            password = password + "\n" + str; 
    79118            } 
    80119        }