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, Olle Mansson |
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 |
// Xerver Free Web Server |
741 |
10 Oct 06 |
olle |
// Copyright (C) 2002-2005 Omid Rouhani |
741 |
10 Oct 06 |
olle |
27 |
// |
741 |
10 Oct 06 |
olle |
28 |
// |
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 |
33 |
// |
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 |
38 |
// |
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 |
42 |
// |
741 |
10 Oct 06 |
olle |
43 |
// |
741 |
10 Oct 06 |
olle |
44 |
// ############################################################# |
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 |
47 |
// ## ## |
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 |
51 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## FOR FULL LICENSE, PLEASE READ "XERVER LICENSE". ## |
741 |
10 Oct 06 |
olle |
53 |
// ############################################################# |
1652 |
22 May 07 |
gregory |
54 |
package se.lu.thep.coreftpd.ftp_server; |
741 |
10 Oct 06 |
olle |
55 |
|
1216 |
18 Feb 07 |
gregory |
56 |
import org.proteios.core.DbControl; |
1216 |
18 Feb 07 |
gregory |
57 |
import org.proteios.core.Directory; |
931 |
16 Nov 06 |
olle |
58 |
import org.proteios.core.Include; |
1369 |
06 Mar 07 |
olle |
59 |
import org.proteios.core.InvalidPathException; |
1656 |
22 May 07 |
gregory |
60 |
import org.proteios.core.ItemFactory; |
795 |
24 Oct 06 |
olle |
61 |
import org.proteios.core.ItemQuery; |
795 |
24 Oct 06 |
olle |
62 |
import org.proteios.core.ItemResultList; |
1369 |
06 Mar 07 |
olle |
63 |
import org.proteios.core.Permission; |
1369 |
06 Mar 07 |
olle |
64 |
import org.proteios.core.PermissionDeniedException; |
1676 |
25 May 07 |
olle |
65 |
import org.proteios.core.SessionControl; |
790 |
23 Oct 06 |
olle |
66 |
import org.proteios.core.User; |
795 |
24 Oct 06 |
olle |
67 |
import org.proteios.core.Path.Type; |
1216 |
18 Feb 07 |
gregory |
68 |
import java.io.File; |
741 |
10 Oct 06 |
olle |
69 |
|
741 |
10 Oct 06 |
olle |
70 |
/** |
1652 |
22 May 07 |
gregory |
* <B>About this class:</B> <BR> |
1652 |
22 May 07 |
gregory |
* This class takes a user name and a password and then reads from a |
1652 |
22 May 07 |
gregory |
* UserDatabase to see what permissions this user have. |
1652 |
22 May 07 |
gregory |
74 |
* |
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 |
77 |
*/ |
1656 |
22 May 07 |
gregory |
78 |
final public class FileAccess |
1656 |
22 May 07 |
gregory |
79 |
{ |
1652 |
22 May 07 |
gregory |
80 |
static private UserDatabase udb_userDatabase = null; |
741 |
10 Oct 06 |
olle |
81 |
private UserData ud_user; |
1652 |
22 May 07 |
gregory |
82 |
boolean b_userAndPassOK = false; |
1652 |
22 May 07 |
gregory |
83 |
private String[] as_writePermissionDirs; |
1652 |
22 May 07 |
gregory |
84 |
private String[] as_readPermissionDirs; |
1652 |
22 May 07 |
gregory |
85 |
private String[] as_createPermissionDirs; |
1652 |
22 May 07 |
gregory |
86 |
private String[] as_listPermissionDirs; |
741 |
10 Oct 06 |
olle |
87 |
private MyHashTableWithPaths MH_allPermissions; |
1652 |
22 May 07 |
gregory |
88 |
private static boolean isWindows = File.separatorChar == '\\'; |
1652 |
22 May 07 |
gregory |
// private String s_root; |
1052 |
08 Dec 06 |
olle |
90 |
final static private char coreSeparatorChar = FTPNewConnection.coreSeparatorChar; |
1052 |
08 Dec 06 |
olle |
91 |
final static private String coreSeparator = FTPNewConnection.coreSeparator; |
1676 |
25 May 07 |
olle |
92 |
/* |
1676 |
25 May 07 |
olle |
* Instance variables not in original Xerver code. |
1676 |
25 May 07 |
olle |
94 |
*/ |
1676 |
25 May 07 |
olle |
95 |
private SessionControl sc = null; |
790 |
23 Oct 06 |
olle |
96 |
/** |
790 |
23 Oct 06 |
olle |
* Logger used. Used to log specific events. |
790 |
23 Oct 06 |
olle |
98 |
*/ |
790 |
23 Oct 06 |
olle |
99 |
private static final org.apache.log4j.Logger log = org.apache.log4j.LogManager |
1656 |
22 May 07 |
gregory |
100 |
.getLogger("se.lu.thep.coreftpd.ftp_server"); |
790 |
23 Oct 06 |
olle |
101 |
|
1656 |
22 May 07 |
gregory |
102 |
|
1676 |
25 May 07 |
olle |
103 |
/** |
1676 |
25 May 07 |
olle |
* Get the SessionControl object. |
1676 |
25 May 07 |
olle |
105 |
* |
1676 |
25 May 07 |
olle |
* @return the SessionControl object |
1676 |
25 May 07 |
olle |
107 |
*/ |
1676 |
25 May 07 |
olle |
108 |
public SessionControl getSessionControl() { |
1676 |
25 May 07 |
olle |
109 |
return this.sc; |
1676 |
25 May 07 |
olle |
110 |
} |
1676 |
25 May 07 |
olle |
111 |
|
1676 |
25 May 07 |
olle |
112 |
|
1676 |
25 May 07 |
olle |
113 |
/** |
1676 |
25 May 07 |
olle |
* Set the SessionControl object. |
1676 |
25 May 07 |
olle |
115 |
* |
1676 |
25 May 07 |
olle |
* @param sc the SessionControl object to set. |
1676 |
25 May 07 |
olle |
117 |
*/ |
1676 |
25 May 07 |
olle |
118 |
public void setSessionControl(SessionControl sc) { |
1676 |
25 May 07 |
olle |
119 |
this.sc = sc; |
1676 |
25 May 07 |
olle |
120 |
} |
1676 |
25 May 07 |
olle |
121 |
|
1676 |
25 May 07 |
olle |
122 |
|
1676 |
25 May 07 |
olle |
123 |
public FileAccess(String name, String password, SessionControl newSc) |
1656 |
22 May 07 |
gregory |
124 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
126 |
log |
1656 |
22 May 07 |
gregory |
127 |
.info("FileAccess::FileAccess(): Start - name = \"" + name + "\" password = \"<password>\""); |
1676 |
25 May 07 |
olle |
128 |
setSessionControl(newSc); |
1680 |
25 May 07 |
olle |
129 |
DbControl dc = getSessionControl().newDbControl(); |
1645 |
16 May 07 |
olle |
130 |
/* |
1652 |
22 May 07 |
gregory |
* User access control handled by Proteios database. Make sure that |
1652 |
22 May 07 |
gregory |
* udb_userDatabase will always be updated when a new login attempt is |
1652 |
22 May 07 |
gregory |
* made. |
1645 |
16 May 07 |
olle |
134 |
*/ |
1645 |
16 May 07 |
olle |
135 |
udb_userDatabase = null; |
1656 |
22 May 07 |
gregory |
136 |
if (udb_userDatabase == null) |
1656 |
22 May 07 |
gregory |
137 |
{ |
1652 |
22 May 07 |
gregory |
// createDataBase(); |
790 |
23 Oct 06 |
olle |
139 |
createDataBase(name); |
790 |
23 Oct 06 |
olle |
140 |
} |
1652 |
22 May 07 |
gregory |
141 |
ud_user = udb_userDatabase.getUserData(name); |
790 |
23 Oct 06 |
olle |
142 |
/* |
790 |
23 Oct 06 |
olle |
* Try to login to Proteios |
790 |
23 Oct 06 |
olle |
144 |
*/ |
1656 |
22 May 07 |
gregory |
145 |
try |
1656 |
22 May 07 |
gregory |
146 |
{ |
1676 |
25 May 07 |
olle |
147 |
getSessionControl().login(name, password, "", false); |
790 |
23 Oct 06 |
olle |
148 |
/* |
790 |
23 Oct 06 |
olle |
* If no exceptions, the login is OK |
790 |
23 Oct 06 |
olle |
150 |
*/ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
790 |
23 Oct 06 |
olle |
152 |
log.info("FileAccess::FileAccess(): Trying to login."); |
1652 |
22 May 07 |
gregory |
153 |
b_userAndPassOK = true; |
790 |
23 Oct 06 |
olle |
154 |
/* |
790 |
23 Oct 06 |
olle |
* Get logged-in user and home directory |
790 |
23 Oct 06 |
olle |
156 |
*/ |
1680 |
25 May 07 |
olle |
//DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
158 |
ItemFactory factory = new ItemFactory(dc); |
1652 |
22 May 07 |
gregory |
// User coreUser = User.getNew(dc, name, password); |
1676 |
25 May 07 |
olle |
160 |
int coreUserId = getSessionControl().getLoggedInUserId(); |
790 |
23 Oct 06 |
olle |
161 |
log.info("FileAccess::FileAccess(): coreUserId = " + coreUserId); |
790 |
23 Oct 06 |
olle |
162 |
User coreUser = User.getById(dc, coreUserId); |
1656 |
22 May 07 |
gregory |
163 |
log |
1656 |
22 May 07 |
gregory |
164 |
.info("FileAccess::FileAccess(): coreUser.getName() = \"" + coreUser |
1656 |
22 May 07 |
gregory |
165 |
.getName() + "\""); |
790 |
23 Oct 06 |
olle |
166 |
Directory homeDir = coreUser.getHomeDirectory(); |
1656 |
22 May 07 |
gregory |
167 |
if (homeDir == null) |
1656 |
22 May 07 |
gregory |
168 |
{ |
965 |
23 Nov 06 |
olle |
169 |
/* |
1652 |
22 May 07 |
gregory |
* Logged-in user has no special home directory. Use root |
1652 |
22 May 07 |
gregory |
* directory "/" as home directory. |
965 |
23 Nov 06 |
olle |
172 |
*/ |
965 |
23 Nov 06 |
olle |
173 |
String dirPath = new String("/"); |
1656 |
22 May 07 |
gregory |
174 |
try |
1656 |
22 May 07 |
gregory |
175 |
{ |
1652 |
22 May 07 |
gregory |
176 |
org.proteios.core.Path homeDirPath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
177 |
dirPath, Type.DIRECTORY); |
1656 |
22 May 07 |
gregory |
178 |
homeDir = factory.getByPath(homeDirPath); |
965 |
23 Nov 06 |
olle |
179 |
/* |
965 |
23 Nov 06 |
olle |
* If no exceptions, core directory may be valid. |
965 |
23 Nov 06 |
olle |
181 |
*/ |
1656 |
22 May 07 |
gregory |
182 |
} |
1656 |
22 May 07 |
gregory |
183 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
184 |
{ |
965 |
23 Nov 06 |
olle |
185 |
/* |
965 |
23 Nov 06 |
olle |
* Exception was thrown, path is not a valid core directory. |
965 |
23 Nov 06 |
olle |
187 |
*/ |
1652 |
22 May 07 |
gregory |
188 |
log |
1656 |
22 May 07 |
gregory |
189 |
.warn("FileAccess::FileAccess(): Could not create home directory \"/\"."); |
965 |
23 Nov 06 |
olle |
190 |
} |
965 |
23 Nov 06 |
olle |
191 |
} |
1652 |
22 May 07 |
gregory |
192 |
log |
1656 |
22 May 07 |
gregory |
193 |
.info("FileAccess::FileAccess(): homeDir.getName() = \"" + homeDir |
1656 |
22 May 07 |
gregory |
194 |
.getName() + "\""); |
1656 |
22 May 07 |
gregory |
195 |
log |
1656 |
22 May 07 |
gregory |
196 |
.info("FileAccess::FileAccess(): homeDir.getPath().toString() = \"" + homeDir |
1656 |
22 May 07 |
gregory |
197 |
.getPath().toString() + "\""); |
1656 |
22 May 07 |
gregory |
198 |
if (ud_user != null) |
1656 |
22 May 07 |
gregory |
199 |
{ |
790 |
23 Oct 06 |
olle |
200 |
log.info("FileAccess::FileAccess(): ud_user != null"); |
790 |
23 Oct 06 |
olle |
201 |
/* |
1652 |
22 May 07 |
gregory |
* Set FTP root directory to core home directory for logged-in |
1652 |
22 May 07 |
gregory |
* user. |
790 |
23 Oct 06 |
olle |
204 |
*/ |
790 |
23 Oct 06 |
olle |
205 |
ud_user.updateData(homeDir.getPath().toString()); |
790 |
23 Oct 06 |
olle |
206 |
/* |
790 |
23 Oct 06 |
olle |
* Get permissions |
790 |
23 Oct 06 |
olle |
208 |
*/ |
1652 |
22 May 07 |
gregory |
209 |
MH_allPermissions = ud_user.getAllPermissionDirs(); |
1652 |
22 May 07 |
gregory |
210 |
as_writePermissionDirs = ud_user.getWritePermissionDirs(); |
1652 |
22 May 07 |
gregory |
211 |
as_readPermissionDirs = ud_user.getReadPermissionDirs(); |
1652 |
22 May 07 |
gregory |
212 |
as_createPermissionDirs = ud_user.getCreatePermissionDirs(); |
1652 |
22 May 07 |
gregory |
213 |
as_listPermissionDirs = ud_user.getListPermissionDirs(); |
1656 |
22 May 07 |
gregory |
214 |
} |
1656 |
22 May 07 |
gregory |
215 |
else |
1656 |
22 May 07 |
gregory |
216 |
{ |
1652 |
22 May 07 |
gregory |
217 |
log.info("FileAccess::FileAccess(): ud_user == null"); |
790 |
23 Oct 06 |
olle |
218 |
} |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
220 |
if (as_writePermissionDirs != null) |
1656 |
22 May 07 |
gregory |
221 |
{ |
1652 |
22 May 07 |
gregory |
222 |
log |
1656 |
22 May 07 |
gregory |
223 |
.info("FileAccess::FileAccess(): as_writePermissionDirs.length = " + as_writePermissionDirs.length); |
1656 |
22 May 07 |
gregory |
224 |
if (as_writePermissionDirs.length > 0) |
1656 |
22 May 07 |
gregory |
225 |
{ |
1656 |
22 May 07 |
gregory |
226 |
for (int i = 0; i < as_writePermissionDirs.length; i++) |
1656 |
22 May 07 |
gregory |
227 |
{ |
1652 |
22 May 07 |
gregory |
228 |
log |
1656 |
22 May 07 |
gregory |
229 |
.info("FileAccess::FileAccess(): as_writePermissionDirs[" + i + "] = \"" + as_writePermissionDirs[i] + "\""); |
790 |
23 Oct 06 |
olle |
230 |
} |
790 |
23 Oct 06 |
olle |
231 |
} |
1656 |
22 May 07 |
gregory |
232 |
} |
1656 |
22 May 07 |
gregory |
233 |
else |
1656 |
22 May 07 |
gregory |
234 |
{ |
1652 |
22 May 07 |
gregory |
235 |
log |
1656 |
22 May 07 |
gregory |
236 |
.info("FileAccess::FileAccess(): as_writePermissionDirs == null"); |
790 |
23 Oct 06 |
olle |
237 |
} |
1656 |
22 May 07 |
gregory |
238 |
if (as_readPermissionDirs != null) |
1656 |
22 May 07 |
gregory |
239 |
{ |
1652 |
22 May 07 |
gregory |
240 |
log |
1656 |
22 May 07 |
gregory |
241 |
.info("FileAccess::FileAccess(): as_readPermissionDirs.length = " + as_readPermissionDirs.length); |
1656 |
22 May 07 |
gregory |
242 |
if (as_readPermissionDirs.length > 0) |
1656 |
22 May 07 |
gregory |
243 |
{ |
1656 |
22 May 07 |
gregory |
244 |
for (int i = 0; i < as_readPermissionDirs.length; i++) |
1656 |
22 May 07 |
gregory |
245 |
{ |
1652 |
22 May 07 |
gregory |
246 |
log |
1656 |
22 May 07 |
gregory |
247 |
.info("FileAccess::FileAccess(): as_readPermissionDirs[" + i + "] = \"" + as_readPermissionDirs[i] + "\""); |
790 |
23 Oct 06 |
olle |
248 |
} |
790 |
23 Oct 06 |
olle |
249 |
} |
1656 |
22 May 07 |
gregory |
250 |
} |
1656 |
22 May 07 |
gregory |
251 |
else |
1656 |
22 May 07 |
gregory |
252 |
{ |
1652 |
22 May 07 |
gregory |
253 |
log |
1656 |
22 May 07 |
gregory |
254 |
.info("FileAccess::FileAccess(): as_readPermissionDirs == null"); |
790 |
23 Oct 06 |
olle |
255 |
} |
1656 |
22 May 07 |
gregory |
256 |
if (as_createPermissionDirs != null) |
1656 |
22 May 07 |
gregory |
257 |
{ |
1652 |
22 May 07 |
gregory |
258 |
log |
1656 |
22 May 07 |
gregory |
259 |
.info("FileAccess::FileAccess(): as_createPermissionDirs.length = " + as_createPermissionDirs.length); |
1656 |
22 May 07 |
gregory |
260 |
if (as_createPermissionDirs.length > 0) |
1656 |
22 May 07 |
gregory |
261 |
{ |
1656 |
22 May 07 |
gregory |
262 |
for (int i = 0; i < as_createPermissionDirs.length; i++) |
1656 |
22 May 07 |
gregory |
263 |
{ |
1652 |
22 May 07 |
gregory |
264 |
log |
1656 |
22 May 07 |
gregory |
265 |
.info("FileAccess::FileAccess(): as_createPermissionDirs[" + i + "] = \"" + as_createPermissionDirs[i] + "\""); |
790 |
23 Oct 06 |
olle |
266 |
} |
790 |
23 Oct 06 |
olle |
267 |
} |
1656 |
22 May 07 |
gregory |
268 |
} |
1656 |
22 May 07 |
gregory |
269 |
else |
1656 |
22 May 07 |
gregory |
270 |
{ |
1652 |
22 May 07 |
gregory |
271 |
log |
1656 |
22 May 07 |
gregory |
272 |
.info("FileAccess::FileAccess(): as_createPermissionDirs == null"); |
790 |
23 Oct 06 |
olle |
273 |
} |
1656 |
22 May 07 |
gregory |
274 |
if (as_listPermissionDirs != null) |
1656 |
22 May 07 |
gregory |
275 |
{ |
1652 |
22 May 07 |
gregory |
276 |
log |
1656 |
22 May 07 |
gregory |
277 |
.info("FileAccess::FileAccess(): as_listPermissionDirs.length = " + as_listPermissionDirs.length); |
1656 |
22 May 07 |
gregory |
278 |
if (as_listPermissionDirs.length > 0) |
1656 |
22 May 07 |
gregory |
279 |
{ |
1656 |
22 May 07 |
gregory |
280 |
for (int i = 0; i < as_listPermissionDirs.length; i++) |
1656 |
22 May 07 |
gregory |
281 |
{ |
1652 |
22 May 07 |
gregory |
282 |
log |
1656 |
22 May 07 |
gregory |
283 |
.info("FileAccess::FileAccess(): as_listPermissionDirs[" + i + "] = \"" + as_listPermissionDirs[i] + "\""); |
790 |
23 Oct 06 |
olle |
284 |
} |
790 |
23 Oct 06 |
olle |
285 |
} |
1656 |
22 May 07 |
gregory |
286 |
} |
1656 |
22 May 07 |
gregory |
287 |
else |
1656 |
22 May 07 |
gregory |
288 |
{ |
1652 |
22 May 07 |
gregory |
289 |
log |
1656 |
22 May 07 |
gregory |
290 |
.info("FileAccess::FileAccess(): as_listPermissionDirs == null"); |
790 |
23 Oct 06 |
olle |
291 |
} |
790 |
23 Oct 06 |
olle |
292 |
/* |
790 |
23 Oct 06 |
olle |
* If no exceptions, the login is OK |
790 |
23 Oct 06 |
olle |
294 |
*/ |
1652 |
22 May 07 |
gregory |
295 |
log.info("FileAccess::FileAccess(): Login OK."); |
1656 |
22 May 07 |
gregory |
296 |
} |
1656 |
22 May 07 |
gregory |
297 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
298 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
300 |
log |
1656 |
22 May 07 |
gregory |
301 |
.info("FileAccess::FileAccess(): Login failed, e = \"" + e + "\""); |
1652 |
22 May 07 |
gregory |
302 |
b_userAndPassOK = false; |
790 |
23 Oct 06 |
olle |
303 |
} |
790 |
23 Oct 06 |
olle |
304 |
/* |
1652 |
22 May 07 |
gregory |
* if (udb_userDatabase==null) createDataBase(); |
1656 |
22 May 07 |
gregory |
* ud_user=udb_userDatabase.getUserData(name); if (ud_user!=null) { if |
1656 |
22 May 07 |
gregory |
* (password.equals(ud_user.getPassword())) //If [wrong password]... { |
1656 |
22 May 07 |
gregory |
* b_userAndPassOK=true; |
1652 |
22 May 07 |
gregory |
* MH_allPermissions=ud_user.getAllPermissionDirs(); |
1652 |
22 May 07 |
gregory |
* as_writePermissionDirs=ud_user.getWritePermissionDirs(); |
1652 |
22 May 07 |
gregory |
* as_readPermissionDirs=ud_user.getReadPermissionDirs(); |
1652 |
22 May 07 |
gregory |
* as_createPermissionDirs=ud_user.getCreatePermissionDirs(); |
1652 |
22 May 07 |
gregory |
* as_listPermissionDirs=ud_user.getListPermissionDirs(); } else { |
1652 |
22 May 07 |
gregory |
* ud_user=null; } } //else b_userAndPassOK=false; |
1652 |
22 May 07 |
gregory |
315 |
*/ |
1680 |
25 May 07 |
olle |
316 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
318 |
*/ |
1680 |
25 May 07 |
olle |
319 |
dc.close(); |
741 |
10 Oct 06 |
olle |
320 |
} |
741 |
10 Oct 06 |
olle |
321 |
|
1656 |
22 May 07 |
gregory |
322 |
|
1656 |
22 May 07 |
gregory |
323 |
public boolean userAndPassOK() |
1656 |
22 May 07 |
gregory |
324 |
{ |
741 |
10 Oct 06 |
olle |
325 |
return b_userAndPassOK; |
741 |
10 Oct 06 |
olle |
326 |
} |
741 |
10 Oct 06 |
olle |
327 |
|
1656 |
22 May 07 |
gregory |
328 |
|
1656 |
22 May 07 |
gregory |
329 |
public boolean writePermissionOK(String s_file) |
1656 |
22 May 07 |
gregory |
330 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
332 |
log |
1656 |
22 May 07 |
gregory |
333 |
.debug("FileAccess::writePermissionOK(): Start - s_file = \"" + s_file + "\""); |
790 |
23 Oct 06 |
olle |
334 |
/* |
1369 |
06 Mar 07 |
olle |
* Check file read permission on core file in database |
790 |
23 Oct 06 |
olle |
336 |
*/ |
790 |
23 Oct 06 |
olle |
337 |
int one = 1; |
1656 |
22 May 07 |
gregory |
338 |
if (one == 1) |
1656 |
22 May 07 |
gregory |
339 |
{ |
1652 |
22 May 07 |
gregory |
340 |
boolean permissionCheck = corePermissionOK(s_file, Permission.WRITE); |
1656 |
22 May 07 |
gregory |
341 |
log |
1656 |
22 May 07 |
gregory |
342 |
.debug("FileAccess::writePermissionOK(): permissionCheck = " + permissionCheck); |
1369 |
06 Mar 07 |
olle |
343 |
return permissionCheck; |
790 |
23 Oct 06 |
olle |
344 |
} |
1652 |
22 May 07 |
gregory |
345 |
if (s_file == null) |
741 |
10 Oct 06 |
olle |
346 |
return false; |
1652 |
22 May 07 |
gregory |
347 |
if (s_file.indexOf("..") != -1) // You have tried to reach a folder with |
1656 |
22 May 07 |
gregory |
// "http://www.sida.com/folder/../../secretfile.txt" |
741 |
10 Oct 06 |
olle |
349 |
return false; |
1652 |
22 May 07 |
gregory |
// First check if the OS will give access at all... |
1652 |
22 May 07 |
gregory |
351 |
File f_file = new File(s_file); |
1656 |
22 May 07 |
gregory |
352 |
log |
1656 |
22 May 07 |
gregory |
353 |
.debug("FileAccess::writePermissionOK(): f_file.exists() = " + f_file |
1656 |
22 May 07 |
gregory |
354 |
.exists()); |
741 |
10 Oct 06 |
olle |
355 |
if (!f_file.exists()) |
1652 |
22 May 07 |
gregory |
356 |
f_file = new File(f_file.getParent()); |
1656 |
22 May 07 |
gregory |
357 |
log |
1656 |
22 May 07 |
gregory |
358 |
.debug("FileAccess::writePermissionOK(): f_file.canWrite() = " + f_file |
1656 |
22 May 07 |
gregory |
359 |
.canWrite()); |
1656 |
22 May 07 |
gregory |
360 |
if (!f_file.canWrite()) |
1656 |
22 May 07 |
gregory |
361 |
{ |
741 |
10 Oct 06 |
olle |
362 |
return false; |
741 |
10 Oct 06 |
olle |
363 |
} |
1652 |
22 May 07 |
gregory |
// Stop OS check |
1652 |
22 May 07 |
gregory |
365 |
s_file = s_file |
1656 |
22 May 07 |
gregory |
366 |
.substring(0, s_file.lastIndexOf(File.separatorChar) + 1); |
1656 |
22 May 07 |
gregory |
367 |
log |
1656 |
22 May 07 |
gregory |
368 |
.debug("FileAccess::writePermissionOK(): (2) s_file = \"" + s_file + "\""); |
1652 |
22 May 07 |
gregory |
369 |
int i_longestMatchingPath = MH_allPermissions |
1656 |
22 May 07 |
gregory |
370 |
.giveBiggestKeySize(s_file); // The reason why we have this |
1656 |
22 May 07 |
gregory |
// is to make sure that if we |
1656 |
22 May 07 |
gregory |
// have "c:\*;w,c:\a\;r" and |
1656 |
22 May 07 |
gregory |
// someone visits "c:\a\" he |
1656 |
22 May 07 |
gregory |
// shall NOT have write |
1656 |
22 May 07 |
gregory |
// permissions (because |
1656 |
22 May 07 |
gregory |
// as_writePermissionDirs only |
1656 |
22 May 07 |
gregory |
// contains "c:\*", not "c:\a\". |
1656 |
22 May 07 |
gregory |
// With i_longestMatchingPath we |
1656 |
22 May 07 |
gregory |
// are not able to check that |
1656 |
22 May 07 |
gregory |
// "c:\a\" won't match "c\*" |
1656 |
22 May 07 |
gregory |
// when it comes to write |
1656 |
22 May 07 |
gregory |
// permissions). |
1652 |
22 May 07 |
gregory |
383 |
for (int i = 0, sharedPathsLength = as_writePermissionDirs.length; i < sharedPathsLength; i++) // Optimization... |
741 |
10 Oct 06 |
olle |
384 |
{ |
1652 |
22 May 07 |
gregory |
385 |
String tmpDir = as_writePermissionDirs[i];// .replace('\\','/'); |
1656 |
22 May 07 |
gregory |
386 |
log |
1656 |
22 May 07 |
gregory |
387 |
.debug("FileAccess::writePermissionOK(): tmpDir = \"" + tmpDir + "\""); |
1656 |
22 May 07 |
gregory |
388 |
if (tmpDir.endsWith("*") && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
389 |
.length()) // If you |
1656 |
22 May 07 |
gregory |
// are |
1656 |
22 May 07 |
gregory |
// allowed |
1656 |
22 May 07 |
gregory |
// to view |
1656 |
22 May 07 |
gregory |
// the |
1656 |
22 May 07 |
gregory |
// content |
1656 |
22 May 07 |
gregory |
// of |
1656 |
22 May 07 |
gregory |
// subfolders |
1656 |
22 May 07 |
gregory |
// as |
1656 |
22 May 07 |
gregory |
// well... |
1656 |
22 May 07 |
gregory |
// (if the |
1656 |
22 May 07 |
gregory |
// name ends |
1656 |
22 May 07 |
gregory |
// with an * |
1656 |
22 May 07 |
gregory |
// ("/mapp1/mapp2/*")) |
741 |
10 Oct 06 |
olle |
403 |
{ |
1652 |
22 May 07 |
gregory |
if (tmpDir.regionMatches(isWindows, 0, s_file, 0, tmpDir |
1656 |
22 May 07 |
gregory |
.length() - 1)) // If [the first "tmpDir.length()-1" |
1656 |
22 May 07 |
gregory |
// characters of the two strings are |
1656 |
22 May 07 |
gregory |
// equal (isWindows==true ==> case |
1656 |
22 May 07 |
gregory |
// insensitive)]... |
741 |
10 Oct 06 |
olle |
return true; |
1656 |
22 May 07 |
gregory |
410 |
} |
1656 |
22 May 07 |
gregory |
else if (pathEQ(tmpDir, s_file) && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
.length()) |
741 |
10 Oct 06 |
olle |
return true; |
741 |
10 Oct 06 |
olle |
414 |
} |
741 |
10 Oct 06 |
olle |
return false; |
741 |
10 Oct 06 |
olle |
416 |
} |
741 |
10 Oct 06 |
olle |
417 |
|
1656 |
22 May 07 |
gregory |
418 |
|
1656 |
22 May 07 |
gregory |
public boolean readPermissionOK(String s_file) |
1656 |
22 May 07 |
gregory |
420 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
log |
1656 |
22 May 07 |
gregory |
.debug("FileAccess::readPermissionOK(): Start - s_file = \"" + s_file + "\""); |
790 |
23 Oct 06 |
olle |
424 |
/* |
1369 |
06 Mar 07 |
olle |
* Check file read permission on core file in database |
790 |
23 Oct 06 |
olle |
426 |
*/ |
790 |
23 Oct 06 |
olle |
427 |
int one = 1; |
1656 |
22 May 07 |
gregory |
428 |
if (one == 1) |
1656 |
22 May 07 |
gregory |
429 |
{ |
1652 |
22 May 07 |
gregory |
430 |
boolean permissionCheck = corePermissionOK(s_file, Permission.READ); |
1656 |
22 May 07 |
gregory |
431 |
log |
1656 |
22 May 07 |
gregory |
432 |
.debug("FileAccess::readPermissionOK(): permissionCheck = " + permissionCheck); |
1369 |
06 Mar 07 |
olle |
433 |
return permissionCheck; |
790 |
23 Oct 06 |
olle |
434 |
} |
1652 |
22 May 07 |
gregory |
435 |
if (s_file == null) |
741 |
10 Oct 06 |
olle |
436 |
return false; |
1652 |
22 May 07 |
gregory |
437 |
if (s_file.indexOf("..") != -1) // You have tried to reach a folder with |
1656 |
22 May 07 |
gregory |
// "http://www.sida.com/folder/../../secretfile.txt" |
741 |
10 Oct 06 |
olle |
439 |
return false; |
1652 |
22 May 07 |
gregory |
// First check if the OS will give access at all... |
1652 |
22 May 07 |
gregory |
441 |
File f_file = new File(s_file); |
1656 |
22 May 07 |
gregory |
442 |
log.debug("FileAccess::readPermissionOK(): f_file.exists() = " + f_file |
1656 |
22 May 07 |
gregory |
443 |
.exists()); |
741 |
10 Oct 06 |
olle |
444 |
if (!f_file.exists()) |
1652 |
22 May 07 |
gregory |
445 |
f_file = new File(f_file.getParent()); |
1656 |
22 May 07 |
gregory |
446 |
log |
1656 |
22 May 07 |
gregory |
447 |
.debug("FileAccess::readPermissionOK(): f_file.canRead() = " + f_file |
1656 |
22 May 07 |
gregory |
448 |
.canRead()); |
1656 |
22 May 07 |
gregory |
449 |
if (!f_file.canRead()) |
1656 |
22 May 07 |
gregory |
450 |
{ |
741 |
10 Oct 06 |
olle |
451 |
return false; |
741 |
10 Oct 06 |
olle |
452 |
} |
1652 |
22 May 07 |
gregory |
// Stop OS check |
1652 |
22 May 07 |
gregory |
454 |
s_file = s_file |
1656 |
22 May 07 |
gregory |
455 |
.substring(0, s_file.lastIndexOf(File.separatorChar) + 1); |
1656 |
22 May 07 |
gregory |
456 |
log |
1656 |
22 May 07 |
gregory |
457 |
.debug("FileAccess::readPermissionOK(): (2) s_file = \"" + s_file + "\""); |
1652 |
22 May 07 |
gregory |
458 |
int i_longestMatchingPath = MH_allPermissions |
1656 |
22 May 07 |
gregory |
459 |
.giveBiggestKeySize(s_file); // The reason why we have this |
1656 |
22 May 07 |
gregory |
// is to make sure that if we |
1656 |
22 May 07 |
gregory |
// have "c:\*;w,c:\a\;r" and |
1656 |
22 May 07 |
gregory |
// someone visits "c:\a\" he |
1656 |
22 May 07 |
gregory |
// shall NOT have write |
1656 |
22 May 07 |
gregory |
// permissions (because |
1656 |
22 May 07 |
gregory |
// as_writePermissionDirs only |
1656 |
22 May 07 |
gregory |
// contains "c:\*", not "c:\a\". |
1656 |
22 May 07 |
gregory |
// With i_longestMatchingPath we |
1656 |
22 May 07 |
gregory |
// are not able to check that |
1656 |
22 May 07 |
gregory |
// "c:\a\" won't match "c\*" |
1656 |
22 May 07 |
gregory |
// when it comes to write |
1656 |
22 May 07 |
gregory |
// permissions). |
1656 |
22 May 07 |
gregory |
472 |
log |
1656 |
22 May 07 |
gregory |
473 |
.debug("FileAccess::readPermissionOK(): i_longestMatchingPath = " + i_longestMatchingPath); |
1652 |
22 May 07 |
gregory |
474 |
for (int i = 0, sharedPathsLength = as_readPermissionDirs.length; i < sharedPathsLength; i++) // Optimization... |
741 |
10 Oct 06 |
olle |
475 |
{ |
1652 |
22 May 07 |
gregory |
476 |
String tmpDir = as_readPermissionDirs[i];// .replace('\\','/'); |
1656 |
22 May 07 |
gregory |
477 |
log |
1656 |
22 May 07 |
gregory |
478 |
.debug("FileAccess::readPermissionOK(): tmpDir = \"" + tmpDir + "\""); |
1656 |
22 May 07 |
gregory |
479 |
if (tmpDir.endsWith("*") && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
480 |
.length()) // If you |
1656 |
22 May 07 |
gregory |
// are |
1656 |
22 May 07 |
gregory |
// allowed |
1656 |
22 May 07 |
gregory |
// to view |
1656 |
22 May 07 |
gregory |
// the |
1656 |
22 May 07 |
gregory |
// content |
1656 |
22 May 07 |
gregory |
// of |
1656 |
22 May 07 |
gregory |
// subfolders |
1656 |
22 May 07 |
gregory |
// as |
1656 |
22 May 07 |
gregory |
// well... |
1656 |
22 May 07 |
gregory |
// (if the |
1656 |
22 May 07 |
gregory |
// name ends |
1656 |
22 May 07 |
gregory |
// with an * |
1656 |
22 May 07 |
gregory |
// ("/mapp1/mapp2/*")) |
741 |
10 Oct 06 |
olle |
494 |
{ |
1652 |
22 May 07 |
gregory |
if (tmpDir.regionMatches(isWindows, 0, s_file, 0, tmpDir |
1656 |
22 May 07 |
gregory |
.length() - 1)) // If [the first "tmpDir.length()-1" |
1656 |
22 May 07 |
gregory |
// characters of the two strings are |
1656 |
22 May 07 |
gregory |
// equal (isWindows==true ==> case |
1656 |
22 May 07 |
gregory |
// insensitive)]... |
741 |
10 Oct 06 |
olle |
return true; |
1656 |
22 May 07 |
gregory |
501 |
} |
1656 |
22 May 07 |
gregory |
else if (pathEQ(tmpDir, s_file) && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
.length()) |
741 |
10 Oct 06 |
olle |
return true; |
741 |
10 Oct 06 |
olle |
505 |
} |
741 |
10 Oct 06 |
olle |
return false; |
741 |
10 Oct 06 |
olle |
507 |
} |
741 |
10 Oct 06 |
olle |
508 |
|
1656 |
22 May 07 |
gregory |
509 |
|
1656 |
22 May 07 |
gregory |
public boolean createPermissionOK(String s_file) |
1656 |
22 May 07 |
gregory |
511 |
{ |
1678 |
25 May 07 |
olle |
// *** Debug Info |
1678 |
25 May 07 |
olle |
log |
1678 |
25 May 07 |
olle |
.debug("FileAccess::createPermissionOK(): Start - s_file = \"" + s_file + "\""); |
1678 |
25 May 07 |
olle |
515 |
/* |
1678 |
25 May 07 |
olle |
* Check file create permission on core file in database |
1678 |
25 May 07 |
olle |
517 |
*/ |
1678 |
25 May 07 |
olle |
518 |
int one = 1; |
1678 |
25 May 07 |
olle |
519 |
if (one == 1) |
1678 |
25 May 07 |
olle |
520 |
{ |
1678 |
25 May 07 |
olle |
521 |
boolean permissionCheck = corePermissionOK(s_file, Permission.CREATE); |
1678 |
25 May 07 |
olle |
522 |
log |
1678 |
25 May 07 |
olle |
523 |
.debug("FileAccess::createPermissionOK(): permissionCheck = " + permissionCheck); |
1678 |
25 May 07 |
olle |
524 |
return permissionCheck; |
1678 |
25 May 07 |
olle |
525 |
} |
1652 |
22 May 07 |
gregory |
526 |
if (s_file == null) |
741 |
10 Oct 06 |
olle |
527 |
return false; |
1652 |
22 May 07 |
gregory |
528 |
if (s_file.indexOf("..") != -1) // You have tried to reach a folder with |
1656 |
22 May 07 |
gregory |
// "http://www.sida.com/folder/../../secretfile.txt" |
741 |
10 Oct 06 |
olle |
530 |
return false; |
1652 |
22 May 07 |
gregory |
// First check if the OS will give access at all... |
1652 |
22 May 07 |
gregory |
532 |
File f_file = new File(s_file); |
741 |
10 Oct 06 |
olle |
533 |
if (!f_file.exists()) |
1652 |
22 May 07 |
gregory |
534 |
f_file = new File(f_file.getParent()); |
1656 |
22 May 07 |
gregory |
535 |
if (!f_file.canWrite()) |
1656 |
22 May 07 |
gregory |
536 |
{ |
741 |
10 Oct 06 |
olle |
537 |
return false; |
741 |
10 Oct 06 |
olle |
538 |
} |
1652 |
22 May 07 |
gregory |
// Stop OS check |
1652 |
22 May 07 |
gregory |
540 |
s_file = s_file |
1656 |
22 May 07 |
gregory |
541 |
.substring(0, s_file.lastIndexOf(File.separatorChar) + 1); |
1652 |
22 May 07 |
gregory |
542 |
int i_longestMatchingPath = MH_allPermissions |
1656 |
22 May 07 |
gregory |
543 |
.giveBiggestKeySize(s_file); // The reason why we have this |
1656 |
22 May 07 |
gregory |
// is to make sure that if we |
1656 |
22 May 07 |
gregory |
// have "c:\*;w,c:\a\;r" and |
1656 |
22 May 07 |
gregory |
// someone visits "c:\a\" he |
1656 |
22 May 07 |
gregory |
// shall NOT have write |
1656 |
22 May 07 |
gregory |
// permissions (because |
1656 |
22 May 07 |
gregory |
// as_writePermissionDirs only |
1656 |
22 May 07 |
gregory |
// contains "c:\*", not "c:\a\". |
1656 |
22 May 07 |
gregory |
// With i_longestMatchingPath we |
1656 |
22 May 07 |
gregory |
// are not able to check that |
1656 |
22 May 07 |
gregory |
// "c:\a\" won't match "c\*" |
1656 |
22 May 07 |
gregory |
// when it comes to write |
1656 |
22 May 07 |
gregory |
// permissions). |
1652 |
22 May 07 |
gregory |
556 |
for (int i = 0, sharedPathsLength = as_createPermissionDirs.length; i < sharedPathsLength; i++) // Optimization... |
741 |
10 Oct 06 |
olle |
557 |
{ |
1652 |
22 May 07 |
gregory |
558 |
String tmpDir = as_createPermissionDirs[i];// .replace('\\','/'); |
1656 |
22 May 07 |
gregory |
559 |
if (tmpDir.endsWith("*") && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
560 |
.length()) // If you |
1656 |
22 May 07 |
gregory |
// are |
1656 |
22 May 07 |
gregory |
// allowed |
1656 |
22 May 07 |
gregory |
// to view |
1656 |
22 May 07 |
gregory |
// the |
1656 |
22 May 07 |
gregory |
// content |
1656 |
22 May 07 |
gregory |
// of |
1656 |
22 May 07 |
gregory |
// subfolders |
1656 |
22 May 07 |
gregory |
// as |
1656 |
22 May 07 |
gregory |
// well... |
1656 |
22 May 07 |
gregory |
// (if the |
1656 |
22 May 07 |
gregory |
// name ends |
1656 |
22 May 07 |
gregory |
// with an * |
1656 |
22 May 07 |
gregory |
// ("/mapp1/mapp2/*")) |
741 |
10 Oct 06 |
olle |
574 |
{ |
1652 |
22 May 07 |
gregory |
if (tmpDir.regionMatches(isWindows, 0, s_file, 0, tmpDir |
1656 |
22 May 07 |
gregory |
.length() - 1)) // If [the first "tmpDir.length()-1" |
1656 |
22 May 07 |
gregory |
// characters of the two strings are |
1656 |
22 May 07 |
gregory |
// equal (isWindows==true ==> case |
1656 |
22 May 07 |
gregory |
// insensitive)]... |
741 |
10 Oct 06 |
olle |
return true; |
1656 |
22 May 07 |
gregory |
581 |
} |
1656 |
22 May 07 |
gregory |
else if (pathEQ(tmpDir, s_file) && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
.length()) |
741 |
10 Oct 06 |
olle |
return true; |
741 |
10 Oct 06 |
olle |
585 |
} |
741 |
10 Oct 06 |
olle |
return false; |
741 |
10 Oct 06 |
olle |
587 |
} |
741 |
10 Oct 06 |
olle |
588 |
|
1656 |
22 May 07 |
gregory |
589 |
|
1656 |
22 May 07 |
gregory |
public boolean listPermissionOK(String s_file) |
1656 |
22 May 07 |
gregory |
591 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
log |
1656 |
22 May 07 |
gregory |
.debug("FileAccess::listPermissionOK(): Start - s_file = \"" + s_file + "\""); |
790 |
23 Oct 06 |
olle |
595 |
/* |
1369 |
06 Mar 07 |
olle |
* Check list permission for core file |
790 |
23 Oct 06 |
olle |
597 |
*/ |
790 |
23 Oct 06 |
olle |
598 |
int one = 1; |
1656 |
22 May 07 |
gregory |
599 |
if (one == 1) |
1656 |
22 May 07 |
gregory |
600 |
{ |
1652 |
22 May 07 |
gregory |
601 |
boolean permissionCheck = corePermissionOK(s_file, Permission.READ); |
1656 |
22 May 07 |
gregory |
602 |
log |
1656 |
22 May 07 |
gregory |
603 |
.debug("FileAccess::listPermissionOK(): permissionCheck = " + permissionCheck); |
1369 |
06 Mar 07 |
olle |
604 |
return permissionCheck; |
790 |
23 Oct 06 |
olle |
605 |
} |
1652 |
22 May 07 |
gregory |
606 |
if (s_file == null) |
741 |
10 Oct 06 |
olle |
607 |
return false; |
1652 |
22 May 07 |
gregory |
608 |
if (s_file.indexOf("..") != -1) // You have tried to reach a folder with |
1656 |
22 May 07 |
gregory |
// "http://www.sida.com/folder/../../secretfile.txt" |
741 |
10 Oct 06 |
olle |
610 |
return false; |
1652 |
22 May 07 |
gregory |
// First check if the OS will give access at all... |
1652 |
22 May 07 |
gregory |
612 |
File f_file = new File(s_file); |
741 |
10 Oct 06 |
olle |
613 |
if (!f_file.exists()) |
1652 |
22 May 07 |
gregory |
614 |
f_file = new File(f_file.getParent()); |
741 |
10 Oct 06 |
olle |
615 |
if (!f_file.canRead()) |
741 |
10 Oct 06 |
olle |
616 |
return false; |
1652 |
22 May 07 |
gregory |
// Stop OS check |
1652 |
22 May 07 |
gregory |
618 |
s_file = s_file |
1656 |
22 May 07 |
gregory |
619 |
.substring(0, s_file.lastIndexOf(File.separatorChar) + 1); |
1652 |
22 May 07 |
gregory |
620 |
int i_longestMatchingPath = MH_allPermissions |
1656 |
22 May 07 |
gregory |
621 |
.giveBiggestKeySize(s_file); // The reason why we have this |
1656 |
22 May 07 |
gregory |
// is to make sure that if we |
1656 |
22 May 07 |
gregory |
// have "c:\*;w,c:\a\;r" and |
1656 |
22 May 07 |
gregory |
// someone visits "c:\a\" he |
1656 |
22 May 07 |
gregory |
// shall NOT have write |
1656 |
22 May 07 |
gregory |
// permissions (because |
1656 |
22 May 07 |
gregory |
// as_writePermissionDirs only |
1656 |
22 May 07 |
gregory |
// contains "c:\*", not "c:\a\". |
1656 |
22 May 07 |
gregory |
// With i_longestMatchingPath we |
1656 |
22 May 07 |
gregory |
// are not able to check that |
1656 |
22 May 07 |
gregory |
// "c:\a\" won't match "c\*" |
1656 |
22 May 07 |
gregory |
// when it comes to write |
1656 |
22 May 07 |
gregory |
// permissions). |
1652 |
22 May 07 |
gregory |
634 |
for (int i = 0, sharedPathsLength = as_listPermissionDirs.length; i < sharedPathsLength; i++) // Optimization... |
741 |
10 Oct 06 |
olle |
635 |
{ |
1652 |
22 May 07 |
gregory |
636 |
String tmpDir = as_listPermissionDirs[i];// .replace('\\','/'); |
1656 |
22 May 07 |
gregory |
637 |
if (tmpDir.endsWith("*") && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
638 |
.length()) // If you |
1656 |
22 May 07 |
gregory |
// are |
1656 |
22 May 07 |
gregory |
// allowed |
1656 |
22 May 07 |
gregory |
// to view |
1656 |
22 May 07 |
gregory |
// the |
1656 |
22 May 07 |
gregory |
// content |
1656 |
22 May 07 |
gregory |
// of |
1656 |
22 May 07 |
gregory |
// subfolders |
1656 |
22 May 07 |
gregory |
// as |
1656 |
22 May 07 |
gregory |
// well... |
1656 |
22 May 07 |
gregory |
// (if the |
1656 |
22 May 07 |
gregory |
// name ends |
1656 |
22 May 07 |
gregory |
// with an * |
1656 |
22 May 07 |
gregory |
// ("/mapp1/mapp2/*")) |
741 |
10 Oct 06 |
olle |
652 |
{ |
1652 |
22 May 07 |
gregory |
if (tmpDir.regionMatches(isWindows, 0, s_file, 0, tmpDir |
1656 |
22 May 07 |
gregory |
.length() - 1)) // If [the first "tmpDir.length()-1" |
1656 |
22 May 07 |
gregory |
// characters of the two strings are |
1656 |
22 May 07 |
gregory |
// equal (isWindows==true ==> case |
1656 |
22 May 07 |
gregory |
// insensitive)]... |
741 |
10 Oct 06 |
olle |
return true; |
1656 |
22 May 07 |
gregory |
659 |
} |
1656 |
22 May 07 |
gregory |
else if (pathEQ(tmpDir, s_file) && i_longestMatchingPath <= tmpDir |
1656 |
22 May 07 |
gregory |
.length()) |
741 |
10 Oct 06 |
olle |
return true; |
741 |
10 Oct 06 |
olle |
663 |
} |
741 |
10 Oct 06 |
olle |
return false; |
741 |
10 Oct 06 |
olle |
665 |
} |
741 |
10 Oct 06 |
olle |
666 |
|
1656 |
22 May 07 |
gregory |
667 |
|
1369 |
06 Mar 07 |
olle |
668 |
/** |
1369 |
06 Mar 07 |
olle |
* Checks permissions for core items. |
1369 |
06 Mar 07 |
olle |
670 |
* |
1656 |
22 May 07 |
gregory |
* @param s_file Path to core file or directory to check permission for, or |
1656 |
22 May 07 |
gregory |
* null if irrelevant. |
1656 |
22 May 07 |
gregory |
* @param permission Permission type to check |
1369 |
06 Mar 07 |
olle |
* @return boolean |
1369 |
06 Mar 07 |
olle |
675 |
*/ |
1656 |
22 May 07 |
gregory |
676 |
public boolean corePermissionOK(String s_file, Permission permission) |
1656 |
22 May 07 |
gregory |
677 |
{ |
1369 |
06 Mar 07 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
679 |
log |
1678 |
25 May 07 |
olle |
680 |
.debug("FileAccess::corePermissionOK(): Start - s_file = \"" + s_file + "\" permission = " + permission.name()); |
1369 |
06 Mar 07 |
olle |
681 |
/* |
1369 |
06 Mar 07 |
olle |
* Check permission for core item. |
1369 |
06 Mar 07 |
olle |
683 |
*/ |
1676 |
25 May 07 |
olle |
684 |
DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
685 |
ItemFactory factory = new ItemFactory(dc); |
1369 |
06 Mar 07 |
olle |
686 |
org.proteios.core.Path corePath = null; |
1656 |
22 May 07 |
gregory |
687 |
if (permission == Permission.CREATE) |
1656 |
22 May 07 |
gregory |
688 |
{ |
1369 |
06 Mar 07 |
olle |
689 |
/* |
1652 |
22 May 07 |
gregory |
* The check for Permission.CREATE is handled separately, as the |
1652 |
22 May 07 |
gregory |
* path does not have to correspond to an existing item. |
1369 |
06 Mar 07 |
olle |
692 |
*/ |
1656 |
22 May 07 |
gregory |
693 |
try |
1656 |
22 May 07 |
gregory |
694 |
{ |
1369 |
06 Mar 07 |
olle |
695 |
/* |
1369 |
06 Mar 07 |
olle |
* Check if path corresponds to core directory. |
1369 |
06 Mar 07 |
olle |
697 |
*/ |
1369 |
06 Mar 07 |
olle |
698 |
corePath = new org.proteios.core.Path(s_file, Type.DIRECTORY); |
1369 |
06 Mar 07 |
olle |
699 |
/* |
1652 |
22 May 07 |
gregory |
* If no InvalidPathException, core directory path is valid, but |
1652 |
22 May 07 |
gregory |
* the core directory does not necessarily exist. |
1369 |
06 Mar 07 |
olle |
702 |
*/ |
1656 |
22 May 07 |
gregory |
703 |
} |
1656 |
22 May 07 |
gregory |
704 |
catch (InvalidPathException e) |
1656 |
22 May 07 |
gregory |
705 |
{ |
1369 |
06 Mar 07 |
olle |
706 |
/* |
1369 |
06 Mar 07 |
olle |
* Path does not correspond to valid directory. |
1369 |
06 Mar 07 |
olle |
708 |
*/ |
1656 |
22 May 07 |
gregory |
709 |
try |
1656 |
22 May 07 |
gregory |
710 |
{ |
1369 |
06 Mar 07 |
olle |
711 |
/* |
1369 |
06 Mar 07 |
olle |
* Check if path corresponds to core file. |
1369 |
06 Mar 07 |
olle |
713 |
*/ |
1369 |
06 Mar 07 |
olle |
714 |
corePath = new org.proteios.core.Path(s_file, Type.FILE); |
1369 |
06 Mar 07 |
olle |
715 |
/* |
1652 |
22 May 07 |
gregory |
* If no InvalidPathException, core file path is valid, but |
1652 |
22 May 07 |
gregory |
* the core file does not necessarily exist. |
1369 |
06 Mar 07 |
olle |
718 |
*/ |
1656 |
22 May 07 |
gregory |
719 |
} |
1656 |
22 May 07 |
gregory |
720 |
catch (InvalidPathException e2) |
1656 |
22 May 07 |
gregory |
721 |
{ |
1369 |
06 Mar 07 |
olle |
722 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
724 |
*/ |
1680 |
25 May 07 |
olle |
725 |
dc.close(); |
1680 |
25 May 07 |
olle |
726 |
/* |
1652 |
22 May 07 |
gregory |
* Path corresponds to neither core directory or core file. |
1369 |
06 Mar 07 |
olle |
728 |
*/ |
1678 |
25 May 07 |
olle |
729 |
log.debug("FileAccess::corePermissionOK(): return false"); |
1369 |
06 Mar 07 |
olle |
730 |
return false; |
1369 |
06 Mar 07 |
olle |
731 |
} |
1369 |
06 Mar 07 |
olle |
732 |
} |
1678 |
25 May 07 |
olle |
733 |
log.debug("FileAccess::corePermissionOK(): corePath = " + corePath); |
1678 |
25 May 07 |
olle |
734 |
log.debug("FileAccess::corePermissionOK(): corePath.getType() = " + corePath.getType()); |
1369 |
06 Mar 07 |
olle |
735 |
/* |
1652 |
22 May 07 |
gregory |
* Get path for core directory (testCoreDirPath), that a new item |
1652 |
22 May 07 |
gregory |
* should be created in. |
1369 |
06 Mar 07 |
olle |
738 |
*/ |
1369 |
06 Mar 07 |
olle |
739 |
org.proteios.core.Path testCoreDirPath = null; |
1369 |
06 Mar 07 |
olle |
740 |
String testCoreDirPathStr = new String(); |
1369 |
06 Mar 07 |
olle |
741 |
int nCoreDirs = corePath.getDirectoryCount(); |
1678 |
25 May 07 |
olle |
742 |
log.debug("FileAccess::corePermissionOK(): nCoreDirs = " + nCoreDirs); |
1656 |
22 May 07 |
gregory |
743 |
if (nCoreDirs > 1) |
1656 |
22 May 07 |
gregory |
744 |
{ |
1678 |
25 May 07 |
olle |
//testCoreDirPathStr = corePath.getDirectory(nCoreDirs - 2); |
1678 |
25 May 07 |
olle |
746 |
for (int i = 0; i < (nCoreDirs - 1); i++) |
1678 |
25 May 07 |
olle |
747 |
{ |
1678 |
25 May 07 |
olle |
748 |
testCoreDirPathStr = testCoreDirPathStr + coreSeparator + corePath.getDirectory(i); |
1678 |
25 May 07 |
olle |
749 |
} |
1656 |
22 May 07 |
gregory |
750 |
} |
1656 |
22 May 07 |
gregory |
751 |
else |
1656 |
22 May 07 |
gregory |
752 |
{ |
1678 |
25 May 07 |
olle |
//testCoreDirPathStr = corePath.getDirectory(0); |
1678 |
25 May 07 |
olle |
754 |
testCoreDirPathStr = coreSeparator + corePath.getDirectory(0); |
1369 |
06 Mar 07 |
olle |
755 |
} |
1678 |
25 May 07 |
olle |
756 |
log.debug("FileAccess::corePermissionOK(): testCoreDirPathStr = \"" + testCoreDirPathStr + "\""); |
1652 |
22 May 07 |
gregory |
757 |
testCoreDirPath = new org.proteios.core.Path(testCoreDirPathStr, |
1656 |
22 May 07 |
gregory |
758 |
Type.DIRECTORY); |
1678 |
25 May 07 |
olle |
759 |
log.debug("FileAccess::corePermissionOK(): testCoreDirPath = " + testCoreDirPath); |
1369 |
06 Mar 07 |
olle |
760 |
/* |
1652 |
22 May 07 |
gregory |
* We have path for core directory (testCoreDirPath), that a new |
1652 |
22 May 07 |
gregory |
* item should be created in. For create permission to be ok, this |
1652 |
22 May 07 |
gregory |
* core directory must exist, and permission to create new items in |
1652 |
22 May 07 |
gregory |
* it must be granted. |
1369 |
06 Mar 07 |
olle |
765 |
*/ |
1656 |
22 May 07 |
gregory |
766 |
try |
1656 |
22 May 07 |
gregory |
767 |
{ |
1656 |
22 May 07 |
gregory |
768 |
Directory testCoreDir = factory.getByPath(testCoreDirPath); |
1678 |
25 May 07 |
olle |
769 |
log.debug("FileAccess::corePermissionOK(): testCoreDir = " + testCoreDir); |
1369 |
06 Mar 07 |
olle |
770 |
testCoreDir.checkPermission(permission); |
1369 |
06 Mar 07 |
olle |
771 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
773 |
*/ |
1680 |
25 May 07 |
olle |
774 |
dc.close(); |
1680 |
25 May 07 |
olle |
775 |
/* |
1652 |
22 May 07 |
gregory |
* If no PermissionDeniedException, permission is granted. |
1369 |
06 Mar 07 |
olle |
777 |
*/ |
1678 |
25 May 07 |
olle |
778 |
log.debug("FileAccess::corePermissionOK(): return true"); |
1369 |
06 Mar 07 |
olle |
779 |
return true; |
1656 |
22 May 07 |
gregory |
780 |
} |
1656 |
22 May 07 |
gregory |
781 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
782 |
{ |
1369 |
06 Mar 07 |
olle |
783 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
785 |
*/ |
1680 |
25 May 07 |
olle |
786 |
dc.close(); |
1680 |
25 May 07 |
olle |
787 |
/* |
1652 |
22 May 07 |
gregory |
* Parent core directory does not exist, or the user is not |
1652 |
22 May 07 |
gregory |
* permitted to read it. Either way permission to create new |
1652 |
22 May 07 |
gregory |
* items in this core directory is denied. |
1369 |
06 Mar 07 |
olle |
791 |
*/ |
1678 |
25 May 07 |
olle |
792 |
log.debug("FileAccess::corePermissionOK(): return false"); |
1369 |
06 Mar 07 |
olle |
793 |
return false; |
1369 |
06 Mar 07 |
olle |
794 |
} |
1656 |
22 May 07 |
gregory |
795 |
} |
1656 |
22 May 07 |
gregory |
796 |
else |
1656 |
22 May 07 |
gregory |
797 |
{ |
1369 |
06 Mar 07 |
olle |
798 |
/* |
1678 |
25 May 07 |
olle |
* Other type of permission check than Permission.CREATE. The path |
1652 |
22 May 07 |
gregory |
* should correspond to an existing item. |
1369 |
06 Mar 07 |
olle |
801 |
*/ |
1656 |
22 May 07 |
gregory |
802 |
try |
1656 |
22 May 07 |
gregory |
803 |
{ |
1656 |
22 May 07 |
gregory |
804 |
if (coreDirExists(s_file)) |
1656 |
22 May 07 |
gregory |
805 |
{ |
1369 |
06 Mar 07 |
olle |
806 |
/* |
1369 |
06 Mar 07 |
olle |
* Get core directory corresponding to path. |
1369 |
06 Mar 07 |
olle |
808 |
*/ |
1652 |
22 May 07 |
gregory |
809 |
corePath = new org.proteios.core.Path(s_file, |
1656 |
22 May 07 |
gregory |
810 |
Type.DIRECTORY); |
1656 |
22 May 07 |
gregory |
811 |
org.proteios.core.Directory tmpCoreDir = factory |
1656 |
22 May 07 |
gregory |
812 |
.getByPath(corePath); |
1369 |
06 Mar 07 |
olle |
813 |
/* |
1369 |
06 Mar 07 |
olle |
* Check permission. |
1369 |
06 Mar 07 |
olle |
815 |
*/ |
1369 |
06 Mar 07 |
olle |
816 |
tmpCoreDir.checkPermission(permission); |
1369 |
06 Mar 07 |
olle |
817 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
819 |
*/ |
1680 |
25 May 07 |
olle |
820 |
dc.close(); |
1680 |
25 May 07 |
olle |
821 |
/* |
1652 |
22 May 07 |
gregory |
* If no PermissionDeniedException, permission is granted. |
1369 |
06 Mar 07 |
olle |
823 |
*/ |
1678 |
25 May 07 |
olle |
824 |
log.debug("FileAccess::corePermissionOK(): return true"); |
1369 |
06 Mar 07 |
olle |
825 |
return true; |
1656 |
22 May 07 |
gregory |
826 |
} |
1656 |
22 May 07 |
gregory |
827 |
else if (coreFileExists(s_file)) |
1656 |
22 May 07 |
gregory |
828 |
{ |
1369 |
06 Mar 07 |
olle |
829 |
/* |
1369 |
06 Mar 07 |
olle |
* Get core file corresponding to path. |
1369 |
06 Mar 07 |
olle |
831 |
*/ |
1369 |
06 Mar 07 |
olle |
832 |
corePath = new org.proteios.core.Path(s_file, Type.FILE); |
1656 |
22 May 07 |
gregory |
833 |
org.proteios.core.File tmpCoreFile = factory.getByPath( |
1656 |
22 May 07 |
gregory |
834 |
corePath, false); |
1369 |
06 Mar 07 |
olle |
835 |
/* |
1369 |
06 Mar 07 |
olle |
* Check permission. |
1369 |
06 Mar 07 |
olle |
837 |
*/ |
1369 |
06 Mar 07 |
olle |
838 |
tmpCoreFile.checkPermission(permission); |
1369 |
06 Mar 07 |
olle |
839 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
841 |
*/ |
1680 |
25 May 07 |
olle |
842 |
dc.close(); |
1680 |
25 May 07 |
olle |
843 |
/* |
1652 |
22 May 07 |
gregory |
* If no PermissionDeniedException, permission is granted. |
1369 |
06 Mar 07 |
olle |
845 |
*/ |
1678 |
25 May 07 |
olle |
846 |
log.debug("FileAccess::corePermissionOK(): return true"); |
1369 |
06 Mar 07 |
olle |
847 |
return true; |
1656 |
22 May 07 |
gregory |
848 |
} |
1656 |
22 May 07 |
gregory |
849 |
else |
1656 |
22 May 07 |
gregory |
850 |
{ |
1369 |
06 Mar 07 |
olle |
851 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
853 |
*/ |
1680 |
25 May 07 |
olle |
854 |
dc.close(); |
1680 |
25 May 07 |
olle |
855 |
/* |
1369 |
06 Mar 07 |
olle |
* Core item does not exist. |
1369 |
06 Mar 07 |
olle |
857 |
*/ |
1678 |
25 May 07 |
olle |
858 |
log.debug("FileAccess::corePermissionOK(): return false"); |
1369 |
06 Mar 07 |
olle |
859 |
return false; |
1369 |
06 Mar 07 |
olle |
860 |
} |
1656 |
22 May 07 |
gregory |
861 |
} |
1656 |
22 May 07 |
gregory |
862 |
catch (PermissionDeniedException e) |
1656 |
22 May 07 |
gregory |
863 |
{ |
1369 |
06 Mar 07 |
olle |
864 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
866 |
*/ |
1680 |
25 May 07 |
olle |
867 |
dc.close(); |
1680 |
25 May 07 |
olle |
868 |
/* |
1369 |
06 Mar 07 |
olle |
* Permission not granted. |
1369 |
06 Mar 07 |
olle |
870 |
*/ |
1678 |
25 May 07 |
olle |
871 |
log.debug("FileAccess::corePermissionOK(): return false"); |
1369 |
06 Mar 07 |
olle |
872 |
return false; |
1369 |
06 Mar 07 |
olle |
873 |
} |
1369 |
06 Mar 07 |
olle |
874 |
} |
1369 |
06 Mar 07 |
olle |
875 |
} |
1369 |
06 Mar 07 |
olle |
876 |
|
1656 |
22 May 07 |
gregory |
877 |
|
1656 |
22 May 07 |
gregory |
878 |
private static boolean pathEQ(String p1, String p2) |
1656 |
22 May 07 |
gregory |
879 |
{ |
1652 |
22 May 07 |
gregory |
880 |
if (isWindows) // If Windows... |
741 |
10 Oct 06 |
olle |
881 |
{ |
741 |
10 Oct 06 |
olle |
882 |
return p1.equalsIgnoreCase(p2); |
1656 |
22 May 07 |
gregory |
883 |
} |
1656 |
22 May 07 |
gregory |
884 |
else |
1656 |
22 May 07 |
gregory |
885 |
{ |
741 |
10 Oct 06 |
olle |
886 |
return p1.equals(p2); |
741 |
10 Oct 06 |
olle |
887 |
} |
741 |
10 Oct 06 |
olle |
888 |
} |
741 |
10 Oct 06 |
olle |
889 |
|
1656 |
22 May 07 |
gregory |
890 |
|
1656 |
22 May 07 |
gregory |
891 |
public boolean fileExists(String s_file) |
1656 |
22 May 07 |
gregory |
892 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
894 |
log |
1656 |
22 May 07 |
gregory |
895 |
.debug("FileAccess::fileExists(): Start - s_file = \"" + s_file + "\""); |
795 |
24 Oct 06 |
olle |
896 |
/* |
1652 |
22 May 07 |
gregory |
* Argument s_file is absolute path. Get parent directory path and the |
1652 |
22 May 07 |
gregory |
* parent core directory. Check if file or directory already exists, |
795 |
24 Oct 06 |
olle |
899 |
*/ |
795 |
24 Oct 06 |
olle |
900 |
String parentDirPath = new String(""); |
795 |
24 Oct 06 |
olle |
901 |
String newFileOrDirName = new String(""); |
1652 |
22 May 07 |
gregory |
// if (!s_file.equals(File.separator)) |
1656 |
22 May 07 |
gregory |
903 |
if (!s_file.equals(coreSeparator)) |
1656 |
22 May 07 |
gregory |
904 |
{ |
1652 |
22 May 07 |
gregory |
// parentDirPath = |
1652 |
22 May 07 |
gregory |
// s_file.substring(0,s_file.lastIndexOf(File.separatorChar, |
1652 |
22 May 07 |
gregory |
// s_file.length()-2)+1); |
1652 |
22 May 07 |
gregory |
// newFileOrDirName = |
1652 |
22 May 07 |
gregory |
// s_file.substring(s_file.lastIndexOf(File.separatorChar, |
1652 |
22 May 07 |
gregory |
// s_file.length()-2)+1); |
1652 |
22 May 07 |
gregory |
911 |
parentDirPath = s_file.substring(0, s_file.lastIndexOf( |
1656 |
22 May 07 |
gregory |
912 |
coreSeparatorChar, s_file.length() - 2) + 1); |
1652 |
22 May 07 |
gregory |
913 |
newFileOrDirName = s_file.substring(s_file.lastIndexOf( |
1656 |
22 May 07 |
gregory |
914 |
coreSeparatorChar, s_file.length() - 2) + 1); |
795 |
24 Oct 06 |
olle |
915 |
/* |
795 |
24 Oct 06 |
olle |
* Remove possible slash from end of name. |
795 |
24 Oct 06 |
olle |
917 |
*/ |
1652 |
22 May 07 |
gregory |
// if (newFileOrDirName.lastIndexOf(File.separator) == |
1652 |
22 May 07 |
gregory |
// (newFileOrDirName.length()-1)) |
1652 |
22 May 07 |
gregory |
920 |
if (newFileOrDirName.lastIndexOf(coreSeparatorChar) == (newFileOrDirName |
1656 |
22 May 07 |
gregory |
921 |
.length() - 1)) |
1656 |
22 May 07 |
gregory |
922 |
{ |
1652 |
22 May 07 |
gregory |
923 |
newFileOrDirName = newFileOrDirName.substring(0, |
1656 |
22 May 07 |
gregory |
924 |
newFileOrDirName.length() - 1); |
795 |
24 Oct 06 |
olle |
925 |
} |
1656 |
22 May 07 |
gregory |
926 |
} |
1656 |
22 May 07 |
gregory |
927 |
else |
1656 |
22 May 07 |
gregory |
928 |
{ |
1652 |
22 May 07 |
gregory |
// parentDirPath = File.separator; |
1052 |
08 Dec 06 |
olle |
930 |
parentDirPath = coreSeparator; |
795 |
24 Oct 06 |
olle |
931 |
} |
1656 |
22 May 07 |
gregory |
932 |
log |
1656 |
22 May 07 |
gregory |
933 |
.debug("FileAccess::fileExists(): parentDirPath = \"" + parentDirPath + "\""); |
1656 |
22 May 07 |
gregory |
934 |
log |
1656 |
22 May 07 |
gregory |
935 |
.debug("FileAccess::fileExists(): newFileOrDirName = \"" + newFileOrDirName + "\""); |
1656 |
22 May 07 |
gregory |
936 |
log |
1656 |
22 May 07 |
gregory |
937 |
.debug("FileAccess::fileExists(): parentDirPath = \"" + parentDirPath + "\""); |
795 |
24 Oct 06 |
olle |
938 |
boolean dirExists = false; |
795 |
24 Oct 06 |
olle |
939 |
boolean fileExists = false; |
1652 |
22 May 07 |
gregory |
940 |
org.proteios.core.Path coreDirPath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
941 |
parentDirPath, Type.DIRECTORY); |
1676 |
25 May 07 |
olle |
942 |
DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
943 |
ItemFactory factory = new ItemFactory(dc); |
795 |
24 Oct 06 |
olle |
944 |
Directory coreDir = null; |
1656 |
22 May 07 |
gregory |
945 |
try |
1656 |
22 May 07 |
gregory |
946 |
{ |
1656 |
22 May 07 |
gregory |
947 |
coreDir = factory.getByPath(coreDirPath); |
795 |
24 Oct 06 |
olle |
948 |
dirExists = Directory.exists(dc, coreDir, newFileOrDirName); |
1652 |
22 May 07 |
gregory |
949 |
log |
1656 |
22 May 07 |
gregory |
950 |
.debug("FileAccess::fileExists(): Directory.exists(dc, coreDir, " + newFileOrDirName + ") = " + dirExists); |
1656 |
22 May 07 |
gregory |
951 |
} |
1656 |
22 May 07 |
gregory |
952 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
953 |
{ |
1680 |
25 May 07 |
olle |
954 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
956 |
*/ |
1680 |
25 May 07 |
olle |
957 |
dc.close(); |
1652 |
22 May 07 |
gregory |
958 |
log |
1656 |
22 May 07 |
gregory |
959 |
.debug("FileAccess::fileExists(): Could not get parent core directory, return false."); |
795 |
24 Oct 06 |
olle |
960 |
return false; |
795 |
24 Oct 06 |
olle |
961 |
} |
795 |
24 Oct 06 |
olle |
962 |
dirExists = Directory.exists(dc, coreDir, newFileOrDirName); |
1652 |
22 May 07 |
gregory |
963 |
log |
1656 |
22 May 07 |
gregory |
964 |
.debug("FileAccess::fileExists(): Directory.exists(dc, coreDir, " + newFileOrDirName + ") = " + dirExists); |
1656 |
22 May 07 |
gregory |
965 |
log |
1656 |
22 May 07 |
gregory |
966 |
.debug("FileAccess::fileExists(): After directory check: dirExists = " + dirExists); |
795 |
24 Oct 06 |
olle |
967 |
/* |
1652 |
22 May 07 |
gregory |
* If a subdirectory with the specified name already exists, we are |
1652 |
22 May 07 |
gregory |
* finished. Otherwise, check if a file with the specified name exists. |
795 |
24 Oct 06 |
olle |
970 |
*/ |
1656 |
22 May 07 |
gregory |
971 |
if (!dirExists) |
1656 |
22 May 07 |
gregory |
972 |
{ |
795 |
24 Oct 06 |
olle |
973 |
/* |
795 |
24 Oct 06 |
olle |
* Get ItemQuery for core files in core directory |
795 |
24 Oct 06 |
olle |
975 |
*/ |
795 |
24 Oct 06 |
olle |
976 |
ItemQuery fileQuery = coreDir.getFileQuery(); |
795 |
24 Oct 06 |
olle |
977 |
int nFiles = fileQuery.count(dc); |
1656 |
22 May 07 |
gregory |
978 |
log |
1656 |
22 May 07 |
gregory |
979 |
.debug("FileAccess::fileExists(): fileQuery.count(dc) = " + nFiles); |
931 |
16 Nov 06 |
olle |
980 |
/* |
931 |
16 Nov 06 |
olle |
* The ItemResultList may exclude some items. |
931 |
16 Nov 06 |
olle |
982 |
*/ |
795 |
24 Oct 06 |
olle |
983 |
ItemResultList fileList = fileQuery.list(dc); |
1656 |
22 May 07 |
gregory |
984 |
log.debug("FileAccess::fileExists(): fileList.size() = " + fileList |
1656 |
22 May 07 |
gregory |
985 |
.size()); |
931 |
16 Nov 06 |
olle |
986 |
nFiles = fileList.size(); |
1656 |
22 May 07 |
gregory |
987 |
for (int i = 0; i < nFiles; i++) |
1656 |
22 May 07 |
gregory |
988 |
{ |
1652 |
22 May 07 |
gregory |
989 |
org.proteios.core.File tmpCoreFile = (org.proteios.core.File) fileList |
1656 |
22 May 07 |
gregory |
990 |
.get(i); |
1691 |
29 May 07 |
olle |
//log |
1691 |
29 May 07 |
olle |
// .debug("FileAccess::fileExists(): fileList.get(" + i + ").getName() = \"" + tmpCoreFile |
1691 |
29 May 07 |
olle |
// .getName() + "\""); |
1656 |
22 May 07 |
gregory |
994 |
if (tmpCoreFile.getName().equals(newFileOrDirName)) |
1656 |
22 May 07 |
gregory |
995 |
{ |
795 |
24 Oct 06 |
olle |
996 |
fileExists = true; |
795 |
24 Oct 06 |
olle |
997 |
} |
795 |
24 Oct 06 |
olle |
998 |
} |
795 |
24 Oct 06 |
olle |
999 |
} |
1656 |
22 May 07 |
gregory |
1000 |
log |
1656 |
22 May 07 |
gregory |
1001 |
.debug("FileAccess::fileExists(): dirExists = " + dirExists + " fileExists = " + fileExists); |
1656 |
22 May 07 |
gregory |
1002 |
if (dirExists || fileExists) |
1656 |
22 May 07 |
gregory |
1003 |
{ |
1680 |
25 May 07 |
olle |
1004 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1006 |
*/ |
1680 |
25 May 07 |
olle |
1007 |
dc.close(); |
1646 |
16 May 07 |
olle |
1008 |
log.debug("FileAccess::fileExists(): return true"); |
795 |
24 Oct 06 |
olle |
1009 |
return true; |
1656 |
22 May 07 |
gregory |
1010 |
} |
1656 |
22 May 07 |
gregory |
1011 |
else |
1656 |
22 May 07 |
gregory |
1012 |
{ |
1680 |
25 May 07 |
olle |
1013 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1015 |
*/ |
1680 |
25 May 07 |
olle |
1016 |
dc.close(); |
1646 |
16 May 07 |
olle |
1017 |
log.debug("FileAccess::fileExists(): return false"); |
795 |
24 Oct 06 |
olle |
1018 |
return false; |
795 |
24 Oct 06 |
olle |
1019 |
} |
799 |
24 Oct 06 |
olle |
1020 |
} |
790 |
23 Oct 06 |
olle |
1021 |
|
1656 |
22 May 07 |
gregory |
1022 |
|
799 |
24 Oct 06 |
olle |
1023 |
/** |
1652 |
22 May 07 |
gregory |
* Checks if a core directory with the specified path exists. Convenience |
1652 |
22 May 07 |
gregory |
* method not part of original Xerver code. |
799 |
24 Oct 06 |
olle |
1026 |
* |
1656 |
22 May 07 |
gregory |
* @param s_file String path to check if it represents an existing core |
1656 |
22 May 07 |
gregory |
* directory. |
1652 |
22 May 07 |
gregory |
* @return boolean true if path represents an existing core directory, else |
1652 |
22 May 07 |
gregory |
* false. |
799 |
24 Oct 06 |
olle |
1031 |
*/ |
1656 |
22 May 07 |
gregory |
1032 |
public boolean coreDirExists(String s_file) |
1656 |
22 May 07 |
gregory |
1033 |
{ |
799 |
24 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
1035 |
log |
1656 |
22 May 07 |
gregory |
1036 |
.debug("FileAccess::coreDirExists(): Start - s_file = \"" + s_file + "\""); |
790 |
23 Oct 06 |
olle |
1037 |
/* |
1652 |
22 May 07 |
gregory |
* Argument s_file is absolute path. Get parent directory path and the |
1652 |
22 May 07 |
gregory |
* parent core directory. Check if file or directory already exists, |
790 |
23 Oct 06 |
olle |
1040 |
*/ |
799 |
24 Oct 06 |
olle |
1041 |
String parentDirPath = new String(""); |
799 |
24 Oct 06 |
olle |
1042 |
String newFileOrDirName = new String(""); |
1652 |
22 May 07 |
gregory |
// if (!s_file.equals(File.separator)) |
1656 |
22 May 07 |
gregory |
1044 |
if (!s_file.equals(coreSeparator)) |
1656 |
22 May 07 |
gregory |
1045 |
{ |
1652 |
22 May 07 |
gregory |
// parentDirPath = |
1652 |
22 May 07 |
gregory |
// s_file.substring(0,s_file.lastIndexOf(File.separatorChar, |
1652 |
22 May 07 |
gregory |
// s_file.length()-2)+1); |
1652 |
22 May 07 |
gregory |
// newFileOrDirName = |
1652 |
22 May 07 |
gregory |
// s_file.substring(s_file.lastIndexOf(File.separatorChar, |
1652 |
22 May 07 |
gregory |
// s_file.length()-2)+1); |
1652 |
22 May 07 |
gregory |
1052 |
parentDirPath = s_file.substring(0, s_file.lastIndexOf( |
1656 |
22 May 07 |
gregory |
1053 |
coreSeparatorChar, s_file.length() - 2) + 1); |
1652 |
22 May 07 |
gregory |
1054 |
newFileOrDirName = s_file.substring(s_file.lastIndexOf( |
1656 |
22 May 07 |
gregory |
1055 |
coreSeparatorChar, s_file.length() - 2) + 1); |
799 |
24 Oct 06 |
olle |
1056 |
/* |
799 |
24 Oct 06 |
olle |
* Remove possible slash from end of name. |
799 |
24 Oct 06 |
olle |
1058 |
*/ |
1652 |
22 May 07 |
gregory |
// if (newFileOrDirName.lastIndexOf(File.separator) == |
1652 |
22 May 07 |
gregory |
// (newFileOrDirName.length()-1)) |
1652 |
22 May 07 |
gregory |
1061 |
if (newFileOrDirName.lastIndexOf(coreSeparator) == (newFileOrDirName |
1656 |
22 May 07 |
gregory |
1062 |
.length() - 1)) |
1656 |
22 May 07 |
gregory |
1063 |
{ |
1652 |
22 May 07 |
gregory |
1064 |
newFileOrDirName = newFileOrDirName.substring(0, |
1656 |
22 May 07 |
gregory |
1065 |
newFileOrDirName.length() - 1); |
799 |
24 Oct 06 |
olle |
1066 |
} |
1656 |
22 May 07 |
gregory |
1067 |
} |
1656 |
22 May 07 |
gregory |
1068 |
else |
1656 |
22 May 07 |
gregory |
1069 |
{ |
1652 |
22 May 07 |
gregory |
// parentDirPath = File.separator; |
1052 |
08 Dec 06 |
olle |
1071 |
parentDirPath = coreSeparator; |
799 |
24 Oct 06 |
olle |
1072 |
} |
1656 |
22 May 07 |
gregory |
1073 |
log |
1656 |
22 May 07 |
gregory |
1074 |
.debug("FileAccess::coreDirExists(): parentDirPath = \"" + parentDirPath + "\""); |
1656 |
22 May 07 |
gregory |
1075 |
log |
1656 |
22 May 07 |
gregory |
1076 |
.debug("FileAccess::coreDirExists(): newFileOrDirName = \"" + newFileOrDirName + "\""); |
799 |
24 Oct 06 |
olle |
1077 |
boolean dirExists = false; |
1652 |
22 May 07 |
gregory |
1078 |
org.proteios.core.Path coreDirPath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
1079 |
parentDirPath, Type.DIRECTORY); |
1676 |
25 May 07 |
olle |
1080 |
DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
1081 |
ItemFactory factory = new ItemFactory(dc); |
799 |
24 Oct 06 |
olle |
1082 |
Directory coreDir = null; |
1656 |
22 May 07 |
gregory |
1083 |
try |
1656 |
22 May 07 |
gregory |
1084 |
{ |
1656 |
22 May 07 |
gregory |
1085 |
coreDir = factory.getByPath(coreDirPath); |
799 |
24 Oct 06 |
olle |
1086 |
dirExists = Directory.exists(dc, coreDir, newFileOrDirName); |
1652 |
22 May 07 |
gregory |
1087 |
log |
1656 |
22 May 07 |
gregory |
1088 |
.debug("FileAccess::coreDirExists(): Directory.exists(dc, coreDir, " + newFileOrDirName + ") = " + dirExists); |
1656 |
22 May 07 |
gregory |
1089 |
} |
1656 |
22 May 07 |
gregory |
1090 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
1091 |
{ |
1680 |
25 May 07 |
olle |
1092 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1094 |
*/ |
1680 |
25 May 07 |
olle |
1095 |
dc.close(); |
1652 |
22 May 07 |
gregory |
1096 |
log |
1656 |
22 May 07 |
gregory |
1097 |
.debug("FileAccess::coreDirExists(): Could not get parent core directory, return false."); |
799 |
24 Oct 06 |
olle |
1098 |
return false; |
799 |
24 Oct 06 |
olle |
1099 |
} |
799 |
24 Oct 06 |
olle |
1100 |
dirExists = Directory.exists(dc, coreDir, newFileOrDirName); |
1680 |
25 May 07 |
olle |
1101 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1103 |
*/ |
1680 |
25 May 07 |
olle |
1104 |
dc.close(); |
1652 |
22 May 07 |
gregory |
1105 |
log |
1656 |
22 May 07 |
gregory |
1106 |
.debug("FileAccess::coreDirExists(): Directory.exists(dc, coreDir, " + newFileOrDirName + ") = " + dirExists); |
1656 |
22 May 07 |
gregory |
1107 |
log |
1656 |
22 May 07 |
gregory |
1108 |
.debug("FileAccess::coreDirExists(): After directory check: dirExists = " + dirExists); |
799 |
24 Oct 06 |
olle |
1109 |
return dirExists; |
741 |
10 Oct 06 |
olle |
1110 |
} |
741 |
10 Oct 06 |
olle |
1111 |
|
1656 |
22 May 07 |
gregory |
1112 |
|
799 |
24 Oct 06 |
olle |
1113 |
/** |
1652 |
22 May 07 |
gregory |
* Checks if a core file with the specified path exists. Convenience method |
1652 |
22 May 07 |
gregory |
* not part of original Xerver code. Does not include removed core files. |
799 |
24 Oct 06 |
olle |
1116 |
* |
1656 |
22 May 07 |
gregory |
* @param s_file String path to check if it represents an existing core |
1656 |
22 May 07 |
gregory |
* file. |
1652 |
22 May 07 |
gregory |
* @return boolean true if path represents an existing core file, else |
1652 |
22 May 07 |
gregory |
* false. |
799 |
24 Oct 06 |
olle |
1121 |
*/ |
1656 |
22 May 07 |
gregory |
1122 |
public boolean coreFileExists(String s_file) |
1656 |
22 May 07 |
gregory |
1123 |
{ |
799 |
24 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
1125 |
log |
1656 |
22 May 07 |
gregory |
1126 |
.debug("FileAccess::coreFileExists(): Start - s_file = \"" + s_file + "\""); |
931 |
16 Nov 06 |
olle |
1127 |
boolean includeRemoved = false; |
931 |
16 Nov 06 |
olle |
1128 |
return coreFileExists(s_file, includeRemoved); |
931 |
16 Nov 06 |
olle |
1129 |
} |
931 |
16 Nov 06 |
olle |
1130 |
|
1656 |
22 May 07 |
gregory |
1131 |
|
931 |
16 Nov 06 |
olle |
1132 |
/** |
1652 |
22 May 07 |
gregory |
* Checks if a core file with the specified path exists. Convenience method |
1652 |
22 May 07 |
gregory |
* not part of original Xerver code. |
931 |
16 Nov 06 |
olle |
1135 |
* |
1656 |
22 May 07 |
gregory |
* @param s_file String path to check if it represents an existing core |
1656 |
22 May 07 |
gregory |
* file. |
1656 |
22 May 07 |
gregory |
* @param includeRemoved boolean flag indicating if removed files should be |
1656 |
22 May 07 |
gregory |
* included. |
1652 |
22 May 07 |
gregory |
* @return boolean true if path represents an existing core file, else |
1652 |
22 May 07 |
gregory |
* false. |
931 |
16 Nov 06 |
olle |
1142 |
*/ |
1656 |
22 May 07 |
gregory |
1143 |
public boolean coreFileExists(String s_file, boolean includeRemoved) |
1656 |
22 May 07 |
gregory |
1144 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
1146 |
log |
1656 |
22 May 07 |
gregory |
1147 |
.debug("FileAccess::coreFileExists(): Start - s_file = \"" + s_file + "\" includeRemoved = " + includeRemoved); |
799 |
24 Oct 06 |
olle |
1148 |
/* |
1652 |
22 May 07 |
gregory |
* Argument s_file is absolute path. Get parent directory path and the |
1652 |
22 May 07 |
gregory |
* parent core directory. Check if file or directory already exists, |
799 |
24 Oct 06 |
olle |
1151 |
*/ |
799 |
24 Oct 06 |
olle |
1152 |
String parentDirPath = new String(""); |
799 |
24 Oct 06 |
olle |
1153 |
String newFileOrDirName = new String(""); |
1652 |
22 May 07 |
gregory |
// if (!s_file.equals(File.separator)) |
1656 |
22 May 07 |
gregory |
1155 |
if (!s_file.equals(coreSeparator)) |
1656 |
22 May 07 |
gregory |
1156 |
{ |
1652 |
22 May 07 |
gregory |
// parentDirPath = |
1652 |
22 May 07 |
gregory |
// s_file.substring(0,s_file.lastIndexOf(File.separatorChar, |
1652 |
22 May 07 |
gregory |
// s_file.length()-2)+1); |
1652 |
22 May 07 |
gregory |
// newFileOrDirName = |
1652 |
22 May 07 |
gregory |
// s_file.substring(s_file.lastIndexOf(File.separatorChar, |
1652 |
22 May 07 |
gregory |
// s_file.length()-2)+1); |
1652 |
22 May 07 |
gregory |
1163 |
parentDirPath = s_file.substring(0, s_file.lastIndexOf( |
1656 |
22 May 07 |
gregory |
1164 |
coreSeparatorChar, s_file.length() - 2) + 1); |
1652 |
22 May 07 |
gregory |
1165 |
newFileOrDirName = s_file.substring(s_file.lastIndexOf( |
1656 |
22 May 07 |
gregory |
1166 |
coreSeparatorChar, s_file.length() - 2) + 1); |
799 |
24 Oct 06 |
olle |
1167 |
/* |
799 |
24 Oct 06 |
olle |
* Remove possible slash from end of name. |
799 |
24 Oct 06 |
olle |
1169 |
*/ |
1652 |
22 May 07 |
gregory |
// if (newFileOrDirName.lastIndexOf(File.separator) == |
1652 |
22 May 07 |
gregory |
// (newFileOrDirName.length()-1)) |
1652 |
22 May 07 |
gregory |
1172 |
if (newFileOrDirName.lastIndexOf(coreSeparator) == (newFileOrDirName |
1656 |
22 May 07 |
gregory |
1173 |
.length() - 1)) |
1656 |
22 May 07 |
gregory |
1174 |
{ |
1652 |
22 May 07 |
gregory |
1175 |
newFileOrDirName = newFileOrDirName.substring(0, |
1656 |
22 May 07 |
gregory |
1176 |
newFileOrDirName.length() - 1); |
799 |
24 Oct 06 |
olle |
1177 |
} |
1656 |
22 May 07 |
gregory |
1178 |
} |
1656 |
22 May 07 |
gregory |
1179 |
else |
1656 |
22 May 07 |
gregory |
1180 |
{ |
1652 |
22 May 07 |
gregory |
// parentDirPath = File.separator; |
1052 |
08 Dec 06 |
olle |
1182 |
parentDirPath = coreSeparator; |
799 |
24 Oct 06 |
olle |
1183 |
} |
1656 |
22 May 07 |
gregory |
1184 |
log |
1656 |
22 May 07 |
gregory |
1185 |
.debug("FileAccess::coreFileExists(): parentDirPath = \"" + parentDirPath + "\""); |
1656 |
22 May 07 |
gregory |
1186 |
log |
1656 |
22 May 07 |
gregory |
1187 |
.debug("FileAccess::coreFileExists(): newFileOrDirName = \"" + newFileOrDirName + "\""); |
799 |
24 Oct 06 |
olle |
1188 |
boolean fileExists = false; |
1652 |
22 May 07 |
gregory |
1189 |
org.proteios.core.Path coreDirPath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
1190 |
parentDirPath, Type.DIRECTORY); |
1676 |
25 May 07 |
olle |
1191 |
DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
1192 |
ItemFactory factory = new ItemFactory(dc); |
799 |
24 Oct 06 |
olle |
1193 |
Directory coreDir = null; |
1656 |
22 May 07 |
gregory |
1194 |
try |
1656 |
22 May 07 |
gregory |
1195 |
{ |
1656 |
22 May 07 |
gregory |
1196 |
coreDir = factory.getByPath(coreDirPath); |
1656 |
22 May 07 |
gregory |
1197 |
} |
1656 |
22 May 07 |
gregory |
1198 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
1199 |
{ |
1680 |
25 May 07 |
olle |
1200 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1202 |
*/ |
1680 |
25 May 07 |
olle |
1203 |
dc.close(); |
1652 |
22 May 07 |
gregory |
1204 |
log |
1656 |
22 May 07 |
gregory |
1205 |
.debug("FileAccess::coreFileExists(): Could not get parent core directory, return false."); |
799 |
24 Oct 06 |
olle |
1206 |
return false; |
799 |
24 Oct 06 |
olle |
1207 |
} |
799 |
24 Oct 06 |
olle |
1208 |
/* |
799 |
24 Oct 06 |
olle |
* Check if a file with the specified name exists. |
799 |
24 Oct 06 |
olle |
1210 |
*/ |
799 |
24 Oct 06 |
olle |
1211 |
/* |
799 |
24 Oct 06 |
olle |
* Get ItemQuery for core files in core directory |
799 |
24 Oct 06 |
olle |
1213 |
*/ |
799 |
24 Oct 06 |
olle |
1214 |
ItemQuery fileQuery = coreDir.getFileQuery(); |
1656 |
22 May 07 |
gregory |
1215 |
if (includeRemoved) |
1656 |
22 May 07 |
gregory |
1216 |
{ |
931 |
16 Nov 06 |
olle |
1217 |
fileQuery.include(Include.REMOVED, Include.NOT_REMOVED); |
931 |
16 Nov 06 |
olle |
1218 |
} |
799 |
24 Oct 06 |
olle |
1219 |
int nFiles = fileQuery.count(dc); |
1656 |
22 May 07 |
gregory |
1220 |
log |
1656 |
22 May 07 |
gregory |
1221 |
.debug("FileAccess::coreFileExists(): fileQuery.count(dc) = " + nFiles); |
931 |
16 Nov 06 |
olle |
1222 |
/* |
931 |
16 Nov 06 |
olle |
* The ItemResultList may exclude some items. |
931 |
16 Nov 06 |
olle |
1224 |
*/ |
799 |
24 Oct 06 |
olle |
1225 |
ItemResultList fileList = fileQuery.list(dc); |
1656 |
22 May 07 |
gregory |
1226 |
log.debug("FileAccess::coreFileExists(): fileList.size() = " + fileList |
1656 |
22 May 07 |
gregory |
1227 |
.size()); |
931 |
16 Nov 06 |
olle |
1228 |
nFiles = fileList.size(); |
1656 |
22 May 07 |
gregory |
1229 |
for (int i = 0; i < nFiles; i++) |
1656 |
22 May 07 |
gregory |
1230 |
{ |
1652 |
22 May 07 |
gregory |
1231 |
org.proteios.core.File tmpCoreFile = (org.proteios.core.File) fileList |
1656 |
22 May 07 |
gregory |
1232 |
.get(i); |
1695 |
29 May 07 |
olle |
//log |
1695 |
29 May 07 |
olle |
// .debug("FileAccess::coreFileExists(): fileList.get(" + i + ").getName() = \"" + tmpCoreFile |
1695 |
29 May 07 |
olle |
// .getName() + "\""); |
1656 |
22 May 07 |
gregory |
1236 |
if (tmpCoreFile.getName().equals(newFileOrDirName)) |
1656 |
22 May 07 |
gregory |
1237 |
{ |
799 |
24 Oct 06 |
olle |
1238 |
fileExists = true; |
799 |
24 Oct 06 |
olle |
1239 |
} |
799 |
24 Oct 06 |
olle |
1240 |
} |
1680 |
25 May 07 |
olle |
1241 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1243 |
*/ |
1680 |
25 May 07 |
olle |
1244 |
dc.close(); |
1646 |
16 May 07 |
olle |
1245 |
log.debug("FileAccess::coreFileExists(): fileExists = " + fileExists); |
799 |
24 Oct 06 |
olle |
1246 |
return fileExists; |
799 |
24 Oct 06 |
olle |
1247 |
} |
799 |
24 Oct 06 |
olle |
1248 |
|
1656 |
22 May 07 |
gregory |
1249 |
|
1656 |
22 May 07 |
gregory |
1250 |
public boolean fileExists(File f_file) |
1656 |
22 May 07 |
gregory |
1251 |
{ |
741 |
10 Oct 06 |
olle |
1252 |
return f_file.exists(); |
741 |
10 Oct 06 |
olle |
1253 |
} |
741 |
10 Oct 06 |
olle |
1254 |
|
1656 |
22 May 07 |
gregory |
1255 |
|
1656 |
22 May 07 |
gregory |
1256 |
public UserData getUserData() |
1656 |
22 May 07 |
gregory |
1257 |
{ |
741 |
10 Oct 06 |
olle |
1258 |
return ud_user; |
741 |
10 Oct 06 |
olle |
1259 |
} |
741 |
10 Oct 06 |
olle |
1260 |
|
1656 |
22 May 07 |
gregory |
1261 |
|
1656 |
22 May 07 |
gregory |
1262 |
public boolean isNotAllowedToCreateNewFile(String s_file) |
1656 |
22 May 07 |
gregory |
1263 |
{ |
1652 |
22 May 07 |
gregory |
1264 |
return !createPermissionOK(s_file) || fileExists(s_file); // If [We |
1656 |
22 May 07 |
gregory |
// are NOT |
1656 |
22 May 07 |
gregory |
// allowed |
1656 |
22 May 07 |
gregory |
// to create |
1656 |
22 May 07 |
gregory |
// new |
1656 |
22 May 07 |
gregory |
// files] OR |
1656 |
22 May 07 |
gregory |
// [This |
1656 |
22 May 07 |
gregory |
// file name |
1656 |
22 May 07 |
gregory |
// does |
1656 |
22 May 07 |
gregory |
// exists]... |
1656 |
22 May 07 |
gregory |
// (then we |
1656 |
22 May 07 |
gregory |
// are not |
1656 |
22 May 07 |
gregory |
// allowed |
1656 |
22 May 07 |
gregory |
// to create |
1656 |
22 May 07 |
gregory |
// a new |
1656 |
22 May 07 |
gregory |
// file) |
741 |
10 Oct 06 |
olle |
1280 |
} |
741 |
10 Oct 06 |
olle |
1281 |
|
1656 |
22 May 07 |
gregory |
1282 |
|
1656 |
22 May 07 |
gregory |
1283 |
public static UserDatabase getDataBase() |
1656 |
22 May 07 |
gregory |
1284 |
{ |
741 |
10 Oct 06 |
olle |
1285 |
return udb_userDatabase; |
741 |
10 Oct 06 |
olle |
1286 |
} |
741 |
10 Oct 06 |
olle |
1287 |
|
1656 |
22 May 07 |
gregory |
1288 |
|
1656 |
22 May 07 |
gregory |
1289 |
public static void createDataBase() |
1656 |
22 May 07 |
gregory |
1290 |
{ |
1652 |
22 May 07 |
gregory |
1291 |
if (udb_userDatabase == null) |
1652 |
22 May 07 |
gregory |
1292 |
udb_userDatabase = new UserDatabase(); |
741 |
10 Oct 06 |
olle |
1293 |
} |
790 |
23 Oct 06 |
olle |
1294 |
|
1656 |
22 May 07 |
gregory |
1295 |
|
790 |
23 Oct 06 |
olle |
1296 |
/** |
1652 |
22 May 07 |
gregory |
* Alternative method that sets the user login name. Not part of the |
1652 |
22 May 07 |
gregory |
* original Xerver code. |
790 |
23 Oct 06 |
olle |
1299 |
* |
1656 |
22 May 07 |
gregory |
* @param userLogin String the user login name to add to the FTP database. |
790 |
23 Oct 06 |
olle |
1301 |
*/ |
1656 |
22 May 07 |
gregory |
1302 |
public static void createDataBase(String userLogin) |
1656 |
22 May 07 |
gregory |
1303 |
{ |
1652 |
22 May 07 |
gregory |
1304 |
if (udb_userDatabase == null) |
1652 |
22 May 07 |
gregory |
1305 |
udb_userDatabase = new UserDatabase(userLogin); |
790 |
23 Oct 06 |
olle |
1306 |
} |
741 |
10 Oct 06 |
olle |
1307 |
} |