Changeset 28210 for main/trunk/greenstone3
- Timestamp:
- 2013-09-04T15:19:34+12:00 (11 years ago)
- Location:
- main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/Authentication.java
r28202 r28210 128 128 protected static final String GET_USER_INFORMATION_SERVICE = "GetUserInformation"; 129 129 130 protected static DerbyWrapper _derbyWrapper = null;131 130 protected static boolean _derbyWrapperDoneForcedShutdown = false; 132 131 … … 157 156 158 157 DerbyWrapper.shutdownDatabaseServer(); 159 _derbyWrapper = null;160 158 _derbyWrapperDoneForcedShutdown = true; 161 159 } … … 271 269 } 272 270 273 openDatabase();271 DerbyWrapper derbyWrapper = openDatabase(); 274 272 275 273 try 276 274 { 277 UserQueryResult userQueryResult = _derbyWrapper.findUser(username);275 UserQueryResult userQueryResult = derbyWrapper.findUser(username); 278 276 279 277 Vector<UserTermInfo> terms = userQueryResult.getUserTerms(); … … 282 280 { 283 281 GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND)); 284 closeDatabase();285 282 return result; 286 283 } … … 308 305 } 309 306 310 closeDatabase();307 derbyWrapper.closeDatabase(); 311 308 312 309 return result; … … 664 661 } 665 662 663 DerbyWrapper derbyWrapper = openDatabase(); 666 664 String chpa_groups = retrieveDataForUser(user_name, "groups"); 667 665 String chpa_comment = "password_changed_by_user"; 668 String info = this._derbyWrapper.modifyUserInfo(user_name, hashPassword(newPassword), chpa_groups, null, chpa_comment, null); 666 String info = derbyWrapper.modifyUserInfo(user_name, hashPassword(newPassword), chpa_groups, null, chpa_comment, null); 667 derbyWrapper.closeDatabase(); 669 668 if (info != "succeed") 670 669 {//see DerbyWrapper.modifyUserInfo … … 820 819 private void checkAdminUserExists() 821 820 { 822 openDatabase();823 824 UserQueryResult userQueryResult = _derbyWrapper.findUser(null, null);821 DerbyWrapper derbyWrapper = openDatabase(); 822 UserQueryResult userQueryResult = derbyWrapper.findUser(null, null); 823 derbyWrapper.closeDatabase(); 825 824 826 825 if (userQueryResult != null) … … 842 841 } 843 842 } 844 845 closeDatabase(); 846 } 847 848 private boolean openDatabase() 849 { 850 if (_derbyWrapper == null) 851 { 852 // check the usersDb database, if it isn't existing, check the etc dir, create the etc dir if it isn't existing, then create the user database and add a "admin" user 853 String usersDB_dir = GlobalProperties.getGSDL3Home() + File.separatorChar + "etc" + File.separatorChar + "usersDB"; 854 855 _derbyWrapper = new DerbyWrapper(usersDB_dir); 856 857 File usersDB_file = new File(usersDB_dir); 858 if (!usersDB_file.exists()) 859 { 860 String etc_dir = GlobalProperties.getGSDL3Home() + File.separatorChar + "etc"; 861 File etc_file = new File(etc_dir); 862 if (!etc_file.exists()) 863 { 864 boolean success = etc_file.mkdir(); 865 if (!success) 866 { 867 logger.error("Couldn't create the etc dir under " + GlobalProperties.getGSDL3Home() + "."); 868 return false; 869 } 870 } 871 _derbyWrapper.createDatabase(); 872 } 873 } 874 875 return true; 876 } 877 878 private void closeDatabase() 879 { 880 if (_derbyWrapper != null) 881 { 882 _derbyWrapper.closeDatabase(); 883 _derbyWrapper = null; 884 } 843 } 844 845 private DerbyWrapper openDatabase() 846 { 847 // check the usersDb database, if it isn't existing, check the etc dir, create the etc dir if it isn't existing, then create the user database and add a "admin" user 848 String usersDB_dir = GlobalProperties.getGSDL3Home() + File.separatorChar + "etc" + File.separatorChar + "usersDB"; 849 850 DerbyWrapper derbyWrapper = new DerbyWrapper(usersDB_dir); 851 852 File usersDB_file = new File(usersDB_dir); 853 if (!usersDB_file.exists()) 854 { 855 String etc_dir = GlobalProperties.getGSDL3Home() + File.separatorChar + "etc"; 856 File etc_file = new File(etc_dir); 857 if (!etc_file.exists()) 858 { 859 boolean success = etc_file.mkdir(); 860 if (!success) 861 { 862 logger.error("Couldn't create the etc dir under " + GlobalProperties.getGSDL3Home() + "."); 863 return null; 864 } 865 } 866 derbyWrapper.createDatabase(); 867 } 868 869 return derbyWrapper; 885 870 } 886 871 887 872 private int addUserInformationToNode(String username, Element serviceNode) 888 873 { 889 openDatabase();890 891 UserQueryResult userQueryResult = _derbyWrapper.findUser(username, null);874 DerbyWrapper derbyWrapper = openDatabase(); 875 UserQueryResult userQueryResult = derbyWrapper.findUser(username, null); 876 derbyWrapper.closeDatabase(); 892 877 893 878 if (userQueryResult != null) … … 895 880 Element user_node = getUserNode(userQueryResult); 896 881 serviceNode.appendChild(user_node); 897 closeDatabase();898 882 return NO_ERROR; 899 883 } 900 884 901 closeDatabase();902 885 return ERROR_COULD_NOT_GET_USER_INFO; 903 886 } … … 910 893 } 911 894 912 openDatabase();913 914 boolean success = _derbyWrapper.deleteUser(username);895 DerbyWrapper derbyWrapper = openDatabase(); 896 boolean success = derbyWrapper.deleteUser(username); 897 derbyWrapper.closeDatabase(); 915 898 916 899 if (success) 917 900 { 918 closeDatabase();919 901 return NO_ERROR; 920 902 } 921 903 922 closeDatabase();923 904 return ERROR_REMOVING_USER; 924 905 } … … 926 907 private int addUser(String newUsername, String newPassword, String newGroups, String newStatus, String newComment, String newEmail) 927 908 { 928 openDatabase();929 930 909 newGroups = newGroups.replaceAll(" ", ""); 931 910 932 911 //Check if the user already exists 933 UserQueryResult userQueryResult = _derbyWrapper.findUser(newUsername, null); 912 DerbyWrapper derbyWrapper = openDatabase(); 913 UserQueryResult userQueryResult = derbyWrapper.findUser(newUsername, null); 934 914 935 915 if (userQueryResult != null) 936 916 { 937 closeDatabase();917 derbyWrapper.closeDatabase(); 938 918 return ERROR_USER_ALREADY_EXISTS; 939 919 } … … 941 921 { 942 922 System.err.println("ADDING " + newUsername + " " + newPassword); 943 boolean success = _derbyWrapper.addUser(newUsername, newPassword, newGroups, newStatus, newComment, newEmail); 923 boolean success = derbyWrapper.addUser(newUsername, newPassword, newGroups, newStatus, newComment, newEmail); 924 derbyWrapper.closeDatabase(); 925 944 926 if (!success) 945 927 { 946 closeDatabase();947 928 return ERROR_ADDING_USER; 948 929 } 949 930 } 950 931 951 closeDatabase();952 932 return NO_ERROR; 953 933 } … … 957 937 boolean check_status = false; 958 938 959 openDatabase(); 960 939 DerbyWrapper derbyWrapper = openDatabase(); 961 940 try 962 941 { 963 UserQueryResult result = _derbyWrapper.findUser(username);942 UserQueryResult result = derbyWrapper.findUser(username); 964 943 965 944 if (result != null) … … 974 953 ex.printStackTrace(); 975 954 } 976 977 closeDatabase(); 955 derbyWrapper.closeDatabase(); 956 978 957 return check_status; 979 958 } … … 987 966 try 988 967 { 989 UserQueryResult result = _derbyWrapper.findUser(username); 968 DerbyWrapper derbyWrapper = openDatabase(); 969 UserQueryResult result = derbyWrapper.findUser(username); 970 derbyWrapper.closeDatabase(); 990 971 Vector userInfo = result.users; 991 972 … … 1024 1005 } 1025 1006 1026 closeDatabase();1027 1007 return data; 1028 1008 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/UserTracker.java
r28202 r28210 90 90 protected synchronized Element processGetActivityOnPage(Element request) 91 91 { 92 System.err.println("CALLED");93 92 Element result = GSXML.createBasicResponse(this.doc, GET_ACTIVITY_ON_PAGE); 94 93 try … … 98 97 if (paramList == null) 99 98 { 100 System.err.println("WHA?");101 99 GSXML.addError(this.doc, result, "Request has no parameter list"); 102 100 return result; … … 110 108 DerbyWrapper database = new DerbyWrapper(GlobalProperties.getGSDL3Home() + File.separatorChar + "etc" + File.separatorChar + "usersDB"); 111 109 ArrayList<HashMap<String, String>> userActions = database.getMostRecentUserActions(site, collection, oid); 112 113 System.err.println(userActions.size());114 110 115 111 Element userList = this.doc.createElement("userList"); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/DerbyWrapper.java
r28201 r28210 197 197 try 198 198 { 199 String query = "SELECT username, action FROM usertracker WHERE site = '" + site + "' and collection = '" + collection + "' and oid = '" + oid + "' ORDER BY time";199 String query = "SELECT username, action, time FROM usertracker WHERE site = '" + site + "' and collection = '" + collection + "' and oid = '" + oid + "' ORDER BY time"; 200 200 Statement state = conn.createStatement(); 201 201 ResultSet rs = state.executeQuery(query); … … 203 203 204 204 HashSet<String> usernamesSeen = new HashSet<String>(); 205 206 205 while (rs.next()) 207 206 { 207 String timeStr = rs.getString("time"); 208 long time = Long.parseLong(timeStr); 209 210 if (System.currentTimeMillis() - time > 6000) 211 { 212 continue; 213 } 214 208 215 HashMap<String, String> action = new HashMap<String, String>(); 209 216 if (!usernamesSeen.contains(rs.getString("username"))) … … 217 224 } 218 225 state.close(); 226 227 clearOldUserActions(); 219 228 } 220 229 catch (Exception ex) … … 223 232 } 224 233 return actions; 234 } 235 236 public void clearOldUserActions() 237 { 238 try 239 { 240 Statement state = conn.createStatement(); 241 state.execute("DELETE FROM usertracker WHERE (CAST (time AS BIGINT)) < " + (System.currentTimeMillis() - 20000)); 242 conn.commit(); 243 state.close(); 244 } 245 catch (Exception ex) 246 { 247 ex.printStackTrace(); 248 } 225 249 } 226 250 … … 572 596 Statement state = conn.createStatement(); 573 597 ResultSet rs = state.executeQuery(sql_find_user); 598 conn.commit(); 574 599 while (rs.next()) 575 600 { … … 583 608 users.add(user); 584 609 } 585 conn.commit(); 586 610 state.close(); 611 612 state = conn.createStatement(); 587 613 for (HashMap<String, String> user : users) 588 614 { 589 615 ResultSet gs = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'"); 616 conn.commit(); 590 617 591 618 String group = "";
Note:
See TracChangeset
for help on using the changeset viewer.