741 |
10 Oct 06 |
olle |
1 |
/* |
1652 |
22 May 07 |
gregory |
$Id$ |
741 |
10 Oct 06 |
olle |
3 |
|
1916 |
31 Aug 07 |
jari |
Copyright (C) 2006 Olle Mansson |
1916 |
31 Aug 07 |
jari |
Copyright (C) 2007 Gregory Vincic |
741 |
10 Oct 06 |
olle |
6 |
|
1652 |
22 May 07 |
gregory |
This file is part of Proteios. |
1652 |
22 May 07 |
gregory |
Available at http://www.proteios.org/ |
741 |
10 Oct 06 |
olle |
9 |
|
1652 |
22 May 07 |
gregory |
Proteios is free software; you can redistribute it and/or modify it |
1652 |
22 May 07 |
gregory |
under the terms of the GNU General Public License as published by |
1652 |
22 May 07 |
gregory |
the Free Software Foundation; either version 2 of the License, or |
1652 |
22 May 07 |
gregory |
(at your option) any later version. |
741 |
10 Oct 06 |
olle |
14 |
|
1652 |
22 May 07 |
gregory |
Proteios is distributed in the hope that it will be useful, but |
1652 |
22 May 07 |
gregory |
WITHOUT ANY WARRANTY; without even the implied warranty of |
1652 |
22 May 07 |
gregory |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1652 |
22 May 07 |
gregory |
General Public License for more details. |
741 |
10 Oct 06 |
olle |
19 |
|
1652 |
22 May 07 |
gregory |
You should have received a copy of the GNU General Public License |
1652 |
22 May 07 |
gregory |
along with this program; if not, write to the Free Software |
1652 |
22 May 07 |
gregory |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
1652 |
22 May 07 |
gregory |
02111-1307, USA. |
1652 |
22 May 07 |
gregory |
24 |
*/ |
741 |
10 Oct 06 |
olle |
25 |
|
741 |
10 Oct 06 |
olle |
// Xerver Free Web Server |
741 |
10 Oct 06 |
olle |
// Copyright (C) 2002-2005 Omid Rouhani |
741 |
10 Oct 06 |
olle |
28 |
// |
741 |
10 Oct 06 |
olle |
29 |
// |
741 |
10 Oct 06 |
olle |
// This program is free software; you can redistribute it and/or |
741 |
10 Oct 06 |
olle |
// modify it under the terms of the GNU General Public License |
741 |
10 Oct 06 |
olle |
// as published by the Free Software Foundation; either version 2 |
741 |
10 Oct 06 |
olle |
// of the License, or (at your option) any later version. |
741 |
10 Oct 06 |
olle |
34 |
// |
741 |
10 Oct 06 |
olle |
// This program is distributed in the hope that it will be useful, |
741 |
10 Oct 06 |
olle |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
741 |
10 Oct 06 |
olle |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
741 |
10 Oct 06 |
olle |
// GNU General Public License for more details. |
741 |
10 Oct 06 |
olle |
39 |
// |
741 |
10 Oct 06 |
olle |
// You should have received a copy of the GNU General Public License |
741 |
10 Oct 06 |
olle |
// along with this program; if not, write to the Free Software |
741 |
10 Oct 06 |
olle |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
741 |
10 Oct 06 |
olle |
43 |
// |
741 |
10 Oct 06 |
olle |
44 |
// |
741 |
10 Oct 06 |
olle |
45 |
// ############################################################# |
741 |
10 Oct 06 |
olle |
// ## YOU CAN CONTACT THE AUTHOR (OMID ROUHANI) AT: ## |
741 |
10 Oct 06 |
olle |
// ## HTTP://WWW.JAVASCRIPT.NU/XERVER/ ## |
741 |
10 Oct 06 |
olle |
48 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## IF YOUR SOFTWARE IS NOT RELEASED UNDER THE ## |
741 |
10 Oct 06 |
olle |
// ## GNU GENERAL PUBLIC LICENSE (GPL), ## |
741 |
10 Oct 06 |
olle |
// ## PLEASE DO NOT COPY ANYTHING FROM THIS SOURCE CODE!!! ## |
741 |
10 Oct 06 |
olle |
52 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## FOR FULL LICENSE, PLEASE READ "XERVER LICENSE". ## |
741 |
10 Oct 06 |
olle |
54 |
// ############################################################# |
741 |
10 Oct 06 |
olle |
55 |
|
1652 |
22 May 07 |
gregory |
56 |
package se.lu.thep.coreftpd.ftp_server; |
741 |
10 Oct 06 |
olle |
57 |
|
791 |
23 Oct 06 |
olle |
58 |
import se.lu.thep.coreftpd.common.MyString; |
741 |
10 Oct 06 |
olle |
59 |
|
741 |
10 Oct 06 |
olle |
60 |
/** |
1652 |
22 May 07 |
gregory |
61 |
* |
1652 |
22 May 07 |
gregory |
* <B>About this class:</B> <BR> |
1652 |
22 May 07 |
gregory |
* This class represents an account containing what permissions he has, what |
1652 |
22 May 07 |
gregory |
* alliases he has etc. |
1652 |
22 May 07 |
gregory |
65 |
* |
741 |
10 Oct 06 |
olle |
* @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a> |
741 |
10 Oct 06 |
olle |
* @version 1.0 |
741 |
10 Oct 06 |
olle |
68 |
*/ |
741 |
10 Oct 06 |
olle |
69 |
|
1652 |
22 May 07 |
gregory |
70 |
final public class UserData { |
1652 |
22 May 07 |
gregory |
71 |
private final static boolean b_showErrors = false; |
741 |
10 Oct 06 |
olle |
72 |
|
1652 |
22 May 07 |
gregory |
// private final static String |
1652 |
22 May 07 |
gregory |
// s_userFolder=FTPServerController.s_userFolder; |
1652 |
22 May 07 |
gregory |
// private final static String |
1652 |
22 May 07 |
gregory |
// s_userDataExtension=FTPServerController.s_userDataExtension; |
741 |
10 Oct 06 |
olle |
77 |
private String s_aliasesFromFile; |
1652 |
22 May 07 |
gregory |
78 |
|
741 |
10 Oct 06 |
olle |
79 |
private String s_permissionsFromFile; |
1652 |
22 May 07 |
gregory |
80 |
|
741 |
10 Oct 06 |
olle |
81 |
private MyHashTableWithPaths MH_allPermissions; |
1652 |
22 May 07 |
gregory |
82 |
|
1652 |
22 May 07 |
gregory |
83 |
private String[] as_writePermissionDirs; |
1652 |
22 May 07 |
gregory |
84 |
|
1652 |
22 May 07 |
gregory |
85 |
private String[] as_readPermissionDirs; |
1652 |
22 May 07 |
gregory |
86 |
|
1652 |
22 May 07 |
gregory |
87 |
private String[] as_createPermissionDirs; |
1652 |
22 May 07 |
gregory |
88 |
|
1652 |
22 May 07 |
gregory |
89 |
private String[] as_listPermissionDirs; |
1652 |
22 May 07 |
gregory |
90 |
|
1652 |
22 May 07 |
gregory |
91 |
private String[] as_aliasesName; |
1652 |
22 May 07 |
gregory |
92 |
|
1652 |
22 May 07 |
gregory |
93 |
private String[] as_aliasesPath; |
1652 |
22 May 07 |
gregory |
94 |
|
741 |
10 Oct 06 |
olle |
95 |
private String s_username; |
1652 |
22 May 07 |
gregory |
96 |
|
741 |
10 Oct 06 |
olle |
97 |
private String s_password; |
1652 |
22 May 07 |
gregory |
98 |
|
741 |
10 Oct 06 |
olle |
99 |
private String s_root; |
741 |
10 Oct 06 |
olle |
100 |
|
790 |
23 Oct 06 |
olle |
101 |
/** |
790 |
23 Oct 06 |
olle |
* Logger used. Used to log specific events. |
790 |
23 Oct 06 |
olle |
103 |
*/ |
790 |
23 Oct 06 |
olle |
104 |
private static final org.apache.log4j.Logger log = org.apache.log4j.LogManager |
1652 |
22 May 07 |
gregory |
105 |
.getLogger("se.lu.thep.coreftpd.ftp_server"); |
790 |
23 Oct 06 |
olle |
106 |
|
1652 |
22 May 07 |
gregory |
107 |
public UserData(String argUsername) throws Exception { |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1652 |
22 May 07 |
gregory |
109 |
log.info("UserData::UserData(): Start - argUsername = \"" + argUsername |
1652 |
22 May 07 |
gregory |
110 |
+ "\""); |
1652 |
22 May 07 |
gregory |
111 |
s_username = argUsername; |
741 |
10 Oct 06 |
olle |
112 |
updateData(); |
741 |
10 Oct 06 |
olle |
113 |
} |
741 |
10 Oct 06 |
olle |
114 |
|
1652 |
22 May 07 |
gregory |
115 |
public String getPassword() { |
741 |
10 Oct 06 |
olle |
116 |
return s_password; |
741 |
10 Oct 06 |
olle |
117 |
} |
741 |
10 Oct 06 |
olle |
118 |
|
1652 |
22 May 07 |
gregory |
119 |
public String getUsername() { |
741 |
10 Oct 06 |
olle |
120 |
return s_username; |
741 |
10 Oct 06 |
olle |
121 |
} |
741 |
10 Oct 06 |
olle |
122 |
|
741 |
10 Oct 06 |
olle |
123 |
/** |
1652 |
22 May 07 |
gregory |
* Update the information stored in this class from file (in case the user |
1652 |
22 May 07 |
gregory |
* data file has been changed). |
1652 |
22 May 07 |
gregory |
126 |
*/ |
1652 |
22 May 07 |
gregory |
127 |
public void updateData() throws Exception { |
741 |
10 Oct 06 |
olle |
128 |
String tmpString; |
1652 |
22 May 07 |
gregory |
129 |
String[] as_TMPallPermissions, as_TMPallAlliases; |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
790 |
23 Oct 06 |
olle |
131 |
log.info("UserData::updateData(): Start"); |
1652 |
22 May 07 |
gregory |
// DatabaseFile DF_databaseFile=new |
1652 |
22 May 07 |
gregory |
// DatabaseFile(s_userFolder+s_username+s_userDataExtension); |
741 |
10 Oct 06 |
olle |
134 |
|
1652 |
22 May 07 |
gregory |
// READ EVERYTHING FROM "USERNAME.DAT" |
741 |
10 Oct 06 |
olle |
136 |
|
1652 |
22 May 07 |
gregory |
// if ((tmpString=DF_databaseFile.getValue("PASSWORD"))!=null) |
1652 |
22 May 07 |
gregory |
// s_password=tmpString; |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
// s_password=""; |
790 |
23 Oct 06 |
olle |
141 |
|
1652 |
22 May 07 |
gregory |
// if ((tmpString=DF_databaseFile.getValue("ROOT"))!=null) |
1652 |
22 May 07 |
gregory |
// s_root=tmpString; |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
// s_root=""; |
790 |
23 Oct 06 |
olle |
146 |
|
1652 |
22 May 07 |
gregory |
// if |
1652 |
22 May 07 |
gregory |
// ((s_permissionsFromFile=DF_databaseFile.getValue("PERMISSIONS"))!=null) |
1652 |
22 May 07 |
gregory |
149 |
// { |
1652 |
22 May 07 |
gregory |
// MH_allPermissions=new |
1652 |
22 May 07 |
gregory |
// MyHashTableWithPaths(s_permissionsFromFile/*MyString.searchAndReplace(s_permissionsFromFile,"*;",";")*/, |
1652 |
22 May 07 |
gregory |
// ",", ";"); //Make sure that "c:\a\*" becomes "c:\a\" |
1652 |
22 May 07 |
gregory |
// as_TMPallPermissions=MyString.makeArrayOfString(s_permissionsFromFile,","); |
1652 |
22 May 07 |
gregory |
154 |
// } |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
156 |
// { |
1652 |
22 May 07 |
gregory |
// MH_allPermissions=new MyHashTableWithPaths("", ",", ";"); |
1652 |
22 May 07 |
gregory |
// as_TMPallPermissions=MyString.makeArrayOfString("",","); |
1652 |
22 May 07 |
gregory |
159 |
// } |
790 |
23 Oct 06 |
olle |
160 |
|
1652 |
22 May 07 |
gregory |
// if ((s_aliasesFromFile=DF_databaseFile.getValue("ALIASES"))!=null) |
1652 |
22 May 07 |
gregory |
// as_TMPallAlliases=MyString.makeArrayOfString(s_aliasesFromFile,","); |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
// as_TMPallAlliases=MyString.makeArrayOfString("",","); |
790 |
23 Oct 06 |
olle |
165 |
|
1652 |
22 May 07 |
gregory |
// DF_databaseFile.destroy(); |
1652 |
22 May 07 |
gregory |
// DF_databaseFile=null; |
790 |
23 Oct 06 |
olle |
168 |
|
1652 |
22 May 07 |
gregory |
// PASSWORD=selena3 |
930 |
16 Nov 06 |
olle |
170 |
tmpString = new String("selena3"); |
1652 |
22 May 07 |
gregory |
// if ((tmpString=DF_databaseFile.getValue("PASSWORD"))!=null) |
1652 |
22 May 07 |
gregory |
172 |
if (tmpString != null) |
1652 |
22 May 07 |
gregory |
173 |
s_password = tmpString; |
790 |
23 Oct 06 |
olle |
174 |
else |
1652 |
22 May 07 |
gregory |
175 |
s_password = ""; |
741 |
10 Oct 06 |
olle |
176 |
|
1652 |
22 May 07 |
gregory |
// ROOT=/home/luna/ |
930 |
16 Nov 06 |
olle |
178 |
tmpString = new String("/home/luna/"); |
1652 |
22 May 07 |
gregory |
// if ((tmpString=DF_databaseFile.getValue("ROOT"))!=null) |
1652 |
22 May 07 |
gregory |
180 |
if (tmpString != null) |
1652 |
22 May 07 |
gregory |
181 |
s_root = tmpString; |
741 |
10 Oct 06 |
olle |
182 |
else |
1652 |
22 May 07 |
gregory |
183 |
s_root = ""; |
741 |
10 Oct 06 |
olle |
184 |
|
1652 |
22 May 07 |
gregory |
// PERMISSIONS=/home/luna/*;lrw |
930 |
16 Nov 06 |
olle |
s_permissionsFromFile = new String("/home/luna/*;lrw"); |
1652 |
22 May 07 |
gregory |
// if |
1652 |
22 May 07 |
gregory |
// ((s_permissionsFromFile=DF_databaseFile.getValue("PERMISSIONS"))!=null) |
1652 |
22 May 07 |
gregory |
if (s_permissionsFromFile != null) { |
1652 |
22 May 07 |
gregory |
MH_allPermissions = new MyHashTableWithPaths( |
1652 |
22 May 07 |
gregory |
s_permissionsFromFile/* MyString.searchAndReplace(s_permissionsFromFile,"*;",";") */, |
1652 |
22 May 07 |
gregory |
192 |
",", ";"); // Make sure that "c:\a\*" becomes "c:\a\" |
1652 |
22 May 07 |
gregory |
193 |
as_TMPallPermissions = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
194 |
s_permissionsFromFile, ","); |
1652 |
22 May 07 |
gregory |
195 |
} else { |
1652 |
22 May 07 |
gregory |
196 |
MH_allPermissions = new MyHashTableWithPaths("", ",", ";"); |
1652 |
22 May 07 |
gregory |
197 |
as_TMPallPermissions = MyString.makeArrayOfString("", ","); |
741 |
10 Oct 06 |
olle |
198 |
} |
741 |
10 Oct 06 |
olle |
199 |
|
1652 |
22 May 07 |
gregory |
// ALIASES= |
790 |
23 Oct 06 |
olle |
201 |
s_aliasesFromFile = new String(""); |
1652 |
22 May 07 |
gregory |
// if ((s_aliasesFromFile=DF_databaseFile.getValue("ALIASES"))!=null) |
1652 |
22 May 07 |
gregory |
203 |
if (s_aliasesFromFile != null) |
1652 |
22 May 07 |
gregory |
204 |
as_TMPallAlliases = MyString.makeArrayOfString(s_aliasesFromFile, |
1652 |
22 May 07 |
gregory |
205 |
","); |
741 |
10 Oct 06 |
olle |
206 |
else |
1652 |
22 May 07 |
gregory |
207 |
as_TMPallAlliases = MyString.makeArrayOfString("", ","); |
741 |
10 Oct 06 |
olle |
208 |
|
1652 |
22 May 07 |
gregory |
// DF_databaseFile.destroy(); |
1652 |
22 May 07 |
gregory |
// DF_databaseFile=null; |
741 |
10 Oct 06 |
olle |
211 |
|
1652 |
22 May 07 |
gregory |
// FIX VARS |
790 |
23 Oct 06 |
olle |
213 |
fixPermissionVars(as_TMPallPermissions); |
790 |
23 Oct 06 |
olle |
214 |
fixAliasVars(as_TMPallAlliases); |
790 |
23 Oct 06 |
olle |
215 |
} |
741 |
10 Oct 06 |
olle |
216 |
|
790 |
23 Oct 06 |
olle |
217 |
/** |
1652 |
22 May 07 |
gregory |
* Root directory update method, not part of the original Xerver code. |
1652 |
22 May 07 |
gregory |
* Update the root direcory to correspond to the core home directory of the |
1652 |
22 May 07 |
gregory |
* logged-in user. |
1652 |
22 May 07 |
gregory |
221 |
* |
1652 |
22 May 07 |
gregory |
* @param homeDirPath |
1652 |
22 May 07 |
gregory |
* String with path to core home directory of logged-in user |
1652 |
22 May 07 |
gregory |
224 |
*/ |
1652 |
22 May 07 |
gregory |
225 |
public void updateData(String homeDirPath) throws Exception { |
790 |
23 Oct 06 |
olle |
226 |
String tmpString; |
1652 |
22 May 07 |
gregory |
227 |
String[] as_TMPallPermissions, as_TMPallAlliases; |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1652 |
22 May 07 |
gregory |
229 |
log |
1652 |
22 May 07 |
gregory |
230 |
.info("UserData::updateData(String homeDirPath): Start - homeDirPath = \"" |
1652 |
22 May 07 |
gregory |
231 |
+ homeDirPath + "\""); |
790 |
23 Oct 06 |
olle |
232 |
|
790 |
23 Oct 06 |
olle |
233 |
/* |
1652 |
22 May 07 |
gregory |
* Set FTP root directory path to core home directory of logged-in user |
1652 |
22 May 07 |
gregory |
* by appending slash "/" at end. |
790 |
23 Oct 06 |
olle |
236 |
*/ |
1652 |
22 May 07 |
gregory |
// ROOT=/home/luna/ |
1652 |
22 May 07 |
gregory |
// tmpString = new String("/home/luna/"); |
790 |
23 Oct 06 |
olle |
239 |
tmpString = makeSlashAtEnd(homeDirPath); |
1652 |
22 May 07 |
gregory |
// if ((tmpString=DF_databaseFile.getValue("ROOT"))!=null) |
1652 |
22 May 07 |
gregory |
241 |
if (tmpString != null) |
1652 |
22 May 07 |
gregory |
242 |
s_root = tmpString; |
790 |
23 Oct 06 |
olle |
243 |
else |
1652 |
22 May 07 |
gregory |
244 |
s_root = ""; |
790 |
23 Oct 06 |
olle |
245 |
|
790 |
23 Oct 06 |
olle |
246 |
/* |
1652 |
22 May 07 |
gregory |
* Set full permissions for List, Read, Write on files in FTP root |
1652 |
22 May 07 |
gregory |
* directory. |
790 |
23 Oct 06 |
olle |
249 |
*/ |
1652 |
22 May 07 |
gregory |
// PERMISSIONS=/home/luna/*;lrw |
1652 |
22 May 07 |
gregory |
// s_permissionsFromFile = new String("/home/luna/*;lrw"); |
1652 |
22 May 07 |
gregory |
s_permissionsFromFile = new String(s_root + "*;lrw"); |
1652 |
22 May 07 |
gregory |
// if |
1652 |
22 May 07 |
gregory |
// ((s_permissionsFromFile=DF_databaseFile.getValue("PERMISSIONS"))!=null) |
1652 |
22 May 07 |
gregory |
if (s_permissionsFromFile != null) { |
1652 |
22 May 07 |
gregory |
MH_allPermissions = new MyHashTableWithPaths( |
1652 |
22 May 07 |
gregory |
s_permissionsFromFile/* MyString.searchAndReplace(s_permissionsFromFile,"*;",";") */, |
1652 |
22 May 07 |
gregory |
258 |
",", ";"); // Make sure that "c:\a\*" becomes "c:\a\" |
1652 |
22 May 07 |
gregory |
259 |
as_TMPallPermissions = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
260 |
s_permissionsFromFile, ","); |
1652 |
22 May 07 |
gregory |
261 |
} else { |
1652 |
22 May 07 |
gregory |
262 |
MH_allPermissions = new MyHashTableWithPaths("", ",", ";"); |
1652 |
22 May 07 |
gregory |
263 |
as_TMPallPermissions = MyString.makeArrayOfString("", ","); |
790 |
23 Oct 06 |
olle |
264 |
} |
790 |
23 Oct 06 |
olle |
265 |
|
1652 |
22 May 07 |
gregory |
// ALIASES= |
790 |
23 Oct 06 |
olle |
267 |
s_aliasesFromFile = new String(""); |
1652 |
22 May 07 |
gregory |
// if ((s_aliasesFromFile=DF_databaseFile.getValue("ALIASES"))!=null) |
1652 |
22 May 07 |
gregory |
269 |
if (s_aliasesFromFile != null) |
1652 |
22 May 07 |
gregory |
270 |
as_TMPallAlliases = MyString.makeArrayOfString(s_aliasesFromFile, |
1652 |
22 May 07 |
gregory |
271 |
","); |
790 |
23 Oct 06 |
olle |
272 |
else |
1652 |
22 May 07 |
gregory |
273 |
as_TMPallAlliases = MyString.makeArrayOfString("", ","); |
790 |
23 Oct 06 |
olle |
274 |
|
1652 |
22 May 07 |
gregory |
// DF_databaseFile.destroy(); |
1652 |
22 May 07 |
gregory |
// DF_databaseFile=null; |
790 |
23 Oct 06 |
olle |
277 |
|
1652 |
22 May 07 |
gregory |
// FIX VARS |
741 |
10 Oct 06 |
olle |
279 |
fixPermissionVars(as_TMPallPermissions); |
741 |
10 Oct 06 |
olle |
280 |
fixAliasVars(as_TMPallAlliases); |
741 |
10 Oct 06 |
olle |
281 |
} |
741 |
10 Oct 06 |
olle |
282 |
|
790 |
23 Oct 06 |
olle |
283 |
/** |
1652 |
22 May 07 |
gregory |
* Convenience method, not part of the original Xerver code. Based on method |
1652 |
22 May 07 |
gregory |
* makeSlashAtEnd(String path) in class FTPNewConnection, but always uses a |
1652 |
22 May 07 |
gregory |
* slash "/" instead of File.separator, as the former is the standard used |
1652 |
22 May 07 |
gregory |
* for core files and directories. |
1652 |
22 May 07 |
gregory |
288 |
* |
1652 |
22 May 07 |
gregory |
* @param path |
1652 |
22 May 07 |
gregory |
* String with path |
1652 |
22 May 07 |
gregory |
* @return String path ending with slash |
1652 |
22 May 07 |
gregory |
292 |
*/ |
1652 |
22 May 07 |
gregory |
293 |
private String makeSlashAtEnd(String path) { |
790 |
23 Oct 06 |
olle |
294 |
if (path.endsWith("/")) |
790 |
23 Oct 06 |
olle |
295 |
return path; |
790 |
23 Oct 06 |
olle |
296 |
else |
1652 |
22 May 07 |
gregory |
297 |
return path + "/"; |
790 |
23 Oct 06 |
olle |
298 |
} |
790 |
23 Oct 06 |
olle |
299 |
|
1652 |
22 May 07 |
gregory |
300 |
private void fixPermissionVars(String[] as_allPermissions) { |
1652 |
22 May 07 |
gregory |
// ALL THESE ARE TEMPORARY VARIABLES (NO GLOBAL VARIABLES) |
1652 |
22 May 07 |
gregory |
302 |
int i_lengthAllPermissions = as_allPermissions.length; |
1652 |
22 May 07 |
gregory |
303 |
String[] tmpWritePermissionDirs = new String[i_lengthAllPermissions]; |
1652 |
22 May 07 |
gregory |
304 |
String[] tmpReadPermissionDirs = new String[i_lengthAllPermissions]; |
1652 |
22 May 07 |
gregory |
305 |
String[] tmpCreatePermissionDirs = new String[i_lengthAllPermissions]; |
1652 |
22 May 07 |
gregory |
306 |
String[] tmpListPermissionDirs = new String[i_lengthAllPermissions]; |
741 |
10 Oct 06 |
olle |
307 |
String attribute, path, tmpLine; |
1652 |
22 May 07 |
gregory |
308 |
int i_countWrite = 0, i_countRead = 0, i_countCreate = 0, i_countList = 0; |
741 |
10 Oct 06 |
olle |
309 |
int separatorIndexOf; |
741 |
10 Oct 06 |
olle |
310 |
|
1652 |
22 May 07 |
gregory |
// GET THE LENGTH OF as_XXXPermissionDirs AND SAVE THE PATHS IN |
1652 |
22 May 07 |
gregory |
// tmpXXXPermissionDirs |
1652 |
22 May 07 |
gregory |
313 |
for (int i = 0; i < i_lengthAllPermissions; i++) { |
1652 |
22 May 07 |
gregory |
314 |
tmpLine = as_allPermissions[i]; |
1652 |
22 May 07 |
gregory |
315 |
separatorIndexOf = tmpLine.lastIndexOf(';'); |
1652 |
22 May 07 |
gregory |
316 |
path = tmpLine.substring(0, separatorIndexOf); |
1652 |
22 May 07 |
gregory |
317 |
attribute = tmpLine.substring(separatorIndexOf + 1); |
741 |
10 Oct 06 |
olle |
318 |
|
1652 |
22 May 07 |
gregory |
319 |
if (attribute.indexOf('w') != -1) { |
741 |
10 Oct 06 |
olle |
320 |
i_countWrite++; |
1652 |
22 May 07 |
gregory |
321 |
tmpWritePermissionDirs[i] = path; |
741 |
10 Oct 06 |
olle |
322 |
} |
1652 |
22 May 07 |
gregory |
323 |
if (attribute.indexOf('r') != -1) { |
741 |
10 Oct 06 |
olle |
324 |
i_countRead++; |
1652 |
22 May 07 |
gregory |
325 |
tmpReadPermissionDirs[i] = path; |
741 |
10 Oct 06 |
olle |
326 |
} |
1652 |
22 May 07 |
gregory |
327 |
if (attribute.indexOf('c') != -1) { |
741 |
10 Oct 06 |
olle |
328 |
i_countCreate++; |
1652 |
22 May 07 |
gregory |
329 |
tmpCreatePermissionDirs[i] = path; |
741 |
10 Oct 06 |
olle |
330 |
} |
1652 |
22 May 07 |
gregory |
331 |
if (attribute.indexOf('l') != -1) { |
741 |
10 Oct 06 |
olle |
332 |
i_countList++; |
1652 |
22 May 07 |
gregory |
333 |
tmpListPermissionDirs[i] = path; |
741 |
10 Oct 06 |
olle |
334 |
} |
741 |
10 Oct 06 |
olle |
335 |
} |
741 |
10 Oct 06 |
olle |
336 |
|
1652 |
22 May 07 |
gregory |
// NOW WE KNOW THE SIZE OF THESE VARIABLES (as_XXXPermissionDirs) |
1652 |
22 May 07 |
gregory |
338 |
as_writePermissionDirs = new String[i_countWrite]; |
1652 |
22 May 07 |
gregory |
339 |
as_readPermissionDirs = new String[i_countRead]; |
1652 |
22 May 07 |
gregory |
340 |
as_createPermissionDirs = new String[i_countCreate]; |
1652 |
22 May 07 |
gregory |
341 |
as_listPermissionDirs = new String[i_countList]; |
741 |
10 Oct 06 |
olle |
342 |
|
1652 |
22 May 07 |
gregory |
// CREATE as_XXXPermissionDirs NOW (AND DESTROY VALUES OF i_countXXX, |
1652 |
22 May 07 |
gregory |
// BUT WE DON'T NEED THEM ANYMORE) |
1652 |
22 May 07 |
gregory |
345 |
for (int i = 0; i < i_lengthAllPermissions; i++) { |
1652 |
22 May 07 |
gregory |
346 |
if (tmpWritePermissionDirs[i] != null) |
1652 |
22 May 07 |
gregory |
347 |
as_writePermissionDirs[--i_countWrite] = tmpWritePermissionDirs[i]; |
1652 |
22 May 07 |
gregory |
348 |
if (tmpReadPermissionDirs[i] != null) |
1652 |
22 May 07 |
gregory |
349 |
as_readPermissionDirs[--i_countRead] = tmpReadPermissionDirs[i]; |
1652 |
22 May 07 |
gregory |
350 |
if (tmpCreatePermissionDirs[i] != null) |
1652 |
22 May 07 |
gregory |
351 |
as_createPermissionDirs[--i_countCreate] = tmpCreatePermissionDirs[i]; |
1652 |
22 May 07 |
gregory |
352 |
if (tmpListPermissionDirs[i] != null) |
1652 |
22 May 07 |
gregory |
353 |
as_listPermissionDirs[--i_countList] = tmpListPermissionDirs[i]; |
741 |
10 Oct 06 |
olle |
354 |
} |
741 |
10 Oct 06 |
olle |
355 |
} |
741 |
10 Oct 06 |
olle |
356 |
|
1652 |
22 May 07 |
gregory |
357 |
private void fixAliasVars(String[] as_allAlliases) { |
1652 |
22 May 07 |
gregory |
358 |
as_aliasesName = new String[as_allAlliases.length]; |
1652 |
22 May 07 |
gregory |
359 |
as_aliasesPath = new String[as_allAlliases.length]; |
741 |
10 Oct 06 |
olle |
360 |
|
741 |
10 Oct 06 |
olle |
361 |
String tmpLine; |
741 |
10 Oct 06 |
olle |
362 |
int separatorIndexOf; |
1652 |
22 May 07 |
gregory |
363 |
for (int i = 0; i < as_allAlliases.length; i++) { |
1652 |
22 May 07 |
gregory |
364 |
tmpLine = as_allAlliases[i]; |
1652 |
22 May 07 |
gregory |
365 |
separatorIndexOf = tmpLine.indexOf('='); // Note we will get an |
1652 |
22 May 07 |
gregory |
// error if the database |
1652 |
22 May 07 |
gregory |
// has wrong format. If |
1652 |
22 May 07 |
gregory |
// each alias-entry does |
1652 |
22 May 07 |
gregory |
// not have an "=" like |
1652 |
22 May 07 |
gregory |
// "alias=c:\" we will |
1652 |
22 May 07 |
gregory |
// return -1 here which |
1652 |
22 May 07 |
gregory |
// will give an error on |
1652 |
22 May 07 |
gregory |
// the following line |
1652 |
22 May 07 |
gregory |
// (in substring) |
1652 |
22 May 07 |
gregory |
375 |
as_aliasesName[i] = tmpLine.substring(0, separatorIndexOf); |
1652 |
22 May 07 |
gregory |
376 |
as_aliasesPath[i] = tmpLine.substring(separatorIndexOf + 1); |
741 |
10 Oct 06 |
olle |
377 |
} |
741 |
10 Oct 06 |
olle |
378 |
} |
741 |
10 Oct 06 |
olle |
379 |
|
741 |
10 Oct 06 |
olle |
380 |
/** |
1652 |
22 May 07 |
gregory |
* Returns a MyHashTable with all folders and permissions. Note that all * |
1652 |
22 May 07 |
gregory |
* has been removed from the folders name in the MyHashTable returned. |
1652 |
22 May 07 |
gregory |
383 |
*/ |
1652 |
22 May 07 |
gregory |
384 |
public MyHashTableWithPaths getAllPermissionDirs() { |
741 |
10 Oct 06 |
olle |
385 |
return MH_allPermissions; |
741 |
10 Oct 06 |
olle |
386 |
} |
741 |
10 Oct 06 |
olle |
387 |
|
1652 |
22 May 07 |
gregory |
388 |
public String[] getWritePermissionDirs() { |
741 |
10 Oct 06 |
olle |
389 |
return as_writePermissionDirs; |
741 |
10 Oct 06 |
olle |
390 |
} |
741 |
10 Oct 06 |
olle |
391 |
|
1652 |
22 May 07 |
gregory |
392 |
public String[] getReadPermissionDirs() { |
741 |
10 Oct 06 |
olle |
393 |
return as_readPermissionDirs; |
741 |
10 Oct 06 |
olle |
394 |
} |
741 |
10 Oct 06 |
olle |
395 |
|
1652 |
22 May 07 |
gregory |
396 |
public String[] getCreatePermissionDirs() { |
741 |
10 Oct 06 |
olle |
397 |
return as_createPermissionDirs; |
741 |
10 Oct 06 |
olle |
398 |
} |
741 |
10 Oct 06 |
olle |
399 |
|
1652 |
22 May 07 |
gregory |
400 |
public String[] getListPermissionDirs() { |
741 |
10 Oct 06 |
olle |
401 |
return as_listPermissionDirs; |
741 |
10 Oct 06 |
olle |
402 |
} |
741 |
10 Oct 06 |
olle |
403 |
|
1652 |
22 May 07 |
gregory |
404 |
public String[] getAliasesName() { |
741 |
10 Oct 06 |
olle |
405 |
return as_aliasesName; |
741 |
10 Oct 06 |
olle |
406 |
} |
741 |
10 Oct 06 |
olle |
407 |
|
1652 |
22 May 07 |
gregory |
408 |
public String[] getAliasesPath() { |
741 |
10 Oct 06 |
olle |
409 |
return as_aliasesPath; |
741 |
10 Oct 06 |
olle |
410 |
} |
741 |
10 Oct 06 |
olle |
411 |
|
1652 |
22 May 07 |
gregory |
412 |
public String getRoot() { |
741 |
10 Oct 06 |
olle |
413 |
return s_root; |
741 |
10 Oct 06 |
olle |
414 |
} |
741 |
10 Oct 06 |
olle |
415 |
|
1652 |
22 May 07 |
gregory |
416 |
public String getAliasString() { |
741 |
10 Oct 06 |
olle |
417 |
return s_aliasesFromFile; |
741 |
10 Oct 06 |
olle |
418 |
} |
741 |
10 Oct 06 |
olle |
419 |
|
1652 |
22 May 07 |
gregory |
420 |
public String getPermissionsString() { |
741 |
10 Oct 06 |
olle |
421 |
return s_permissionsFromFile; |
741 |
10 Oct 06 |
olle |
422 |
} |
741 |
10 Oct 06 |
olle |
423 |
|
2386 |
14 Nov 07 |
gregory |
424 |
@Override |
1652 |
22 May 07 |
gregory |
425 |
public int hashCode() { |
741 |
10 Oct 06 |
olle |
426 |
return s_username.hashCode(); |
741 |
10 Oct 06 |
olle |
427 |
} |
741 |
10 Oct 06 |
olle |
428 |
|
2386 |
14 Nov 07 |
gregory |
429 |
@Override |
1652 |
22 May 07 |
gregory |
430 |
public boolean equals(Object obj) { |
741 |
10 Oct 06 |
olle |
431 |
try { |
1652 |
22 May 07 |
gregory |
432 |
UserData userdata = (UserData) obj; |
741 |
10 Oct 06 |
olle |
433 |
return userdata.getUsername().equals(s_username); |
1652 |
22 May 07 |
gregory |
434 |
} catch (Exception e) { |
741 |
10 Oct 06 |
olle |
435 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
436 |
System.out.println("An error occured @ equals: " + e); |
741 |
10 Oct 06 |
olle |
437 |
} |
741 |
10 Oct 06 |
olle |
438 |
return false; |
741 |
10 Oct 06 |
olle |
439 |
} |
741 |
10 Oct 06 |
olle |
440 |
} |