Changeset 25308


Ignore:
Timestamp:
2012-03-28T15:45:03+13:00 (12 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 edited

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        }
Note: See TracChangeset for help on using the changeset viewer.