client/ftpd/src/se/lu/thep/coreftpd/ftp_server/UserData.java

Code
Comments
Other
Rev Date Author Line
741 10 Oct 06 olle 1 /*
1652 22 May 07 gregory 2  $Id$
741 10 Oct 06 olle 3
1916 31 Aug 07 jari 4  Copyright (C) 2006 Olle Mansson
1916 31 Aug 07 jari 5  Copyright (C) 2007 Gregory Vincic
741 10 Oct 06 olle 6
1652 22 May 07 gregory 7  This file is part of Proteios.
1652 22 May 07 gregory 8  Available at http://www.proteios.org/
741 10 Oct 06 olle 9
1652 22 May 07 gregory 10  Proteios is free software; you can redistribute it and/or modify it
1652 22 May 07 gregory 11  under the terms of the GNU General Public License as published by
1652 22 May 07 gregory 12  the Free Software Foundation; either version 2 of the License, or
1652 22 May 07 gregory 13  (at your option) any later version.
741 10 Oct 06 olle 14
1652 22 May 07 gregory 15  Proteios is distributed in the hope that it will be useful, but
1652 22 May 07 gregory 16  WITHOUT ANY WARRANTY; without even the implied warranty of
1652 22 May 07 gregory 17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1652 22 May 07 gregory 18  General Public License for more details.
741 10 Oct 06 olle 19
1652 22 May 07 gregory 20  You should have received a copy of the GNU General Public License
1652 22 May 07 gregory 21  along with this program; if not, write to the Free Software
1652 22 May 07 gregory 22  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1652 22 May 07 gregory 23  02111-1307, USA.
1652 22 May 07 gregory 24  */
741 10 Oct 06 olle 25
741 10 Oct 06 olle 26 //  Xerver Free Web Server
741 10 Oct 06 olle 27 //  Copyright (C) 2002-2005 Omid Rouhani
741 10 Oct 06 olle 28 //
741 10 Oct 06 olle 29 //
741 10 Oct 06 olle 30 //  This program is free software; you can redistribute it and/or
741 10 Oct 06 olle 31 //  modify it under the terms of the GNU General Public License
741 10 Oct 06 olle 32 //  as published by the Free Software Foundation; either version 2
741 10 Oct 06 olle 33 //  of the License, or (at your option) any later version.
741 10 Oct 06 olle 34 //
741 10 Oct 06 olle 35 //  This program is distributed in the hope that it will be useful,
741 10 Oct 06 olle 36 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
741 10 Oct 06 olle 37 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
741 10 Oct 06 olle 38 //  GNU General Public License for more details.
741 10 Oct 06 olle 39 //
741 10 Oct 06 olle 40 //  You should have received a copy of the GNU General Public License
741 10 Oct 06 olle 41 //  along with this program; if not, write to the Free Software
741 10 Oct 06 olle 42 //  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 46 //  ##  YOU CAN CONTACT THE AUTHOR (OMID ROUHANI) AT:          ##
741 10 Oct 06 olle 47 //  ##  HTTP://WWW.JAVASCRIPT.NU/XERVER/                       ##
741 10 Oct 06 olle 48 //  ##                                                         ##
741 10 Oct 06 olle 49 //  ##  IF YOUR SOFTWARE IS NOT RELEASED UNDER THE             ##
741 10 Oct 06 olle 50 //  ##  GNU GENERAL PUBLIC LICENSE (GPL),                      ##
741 10 Oct 06 olle 51 //  ##  PLEASE DO NOT COPY ANYTHING FROM THIS SOURCE CODE!!!   ##
741 10 Oct 06 olle 52 //  ##                                                         ##
741 10 Oct 06 olle 53 //  ##  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 62  * <B>About this class:</B> <BR>
1652 22 May 07 gregory 63  * This class represents an account containing what permissions he has, what
1652 22 May 07 gregory 64  * alliases he has etc.
1652 22 May 07 gregory 65  * 
741 10 Oct 06 olle 66  * @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a>
741 10 Oct 06 olle 67  * @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 73   // private final static String
1652 22 May 07 gregory 74   // s_userFolder=FTPServerController.s_userFolder;
1652 22 May 07 gregory 75   // private final static String
1652 22 May 07 gregory 76   // 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 102    * 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 108     // *** 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 124    * Update the information stored in this class from file (in case the user
1652 22 May 07 gregory 125    * 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 130     // *** Debug Info
790 23 Oct 06 olle 131     log.info("UserData::updateData(): Start");
1652 22 May 07 gregory 132     // DatabaseFile DF_databaseFile=new
1652 22 May 07 gregory 133     // DatabaseFile(s_userFolder+s_username+s_userDataExtension);
741 10 Oct 06 olle 134
1652 22 May 07 gregory 135     // READ EVERYTHING FROM "USERNAME.DAT"
741 10 Oct 06 olle 136
1652 22 May 07 gregory 137     // if ((tmpString=DF_databaseFile.getValue("PASSWORD"))!=null)
1652 22 May 07 gregory 138     // s_password=tmpString;
1652 22 May 07 gregory 139     // else
1652 22 May 07 gregory 140     // s_password="";
790 23 Oct 06 olle 141
1652 22 May 07 gregory 142     // if ((tmpString=DF_databaseFile.getValue("ROOT"))!=null)
1652 22 May 07 gregory 143     // s_root=tmpString;
1652 22 May 07 gregory 144     // else
1652 22 May 07 gregory 145     // s_root="";
790 23 Oct 06 olle 146
1652 22 May 07 gregory 147     // if
1652 22 May 07 gregory 148     // ((s_permissionsFromFile=DF_databaseFile.getValue("PERMISSIONS"))!=null)
1652 22 May 07 gregory 149     // {
1652 22 May 07 gregory 150     // MH_allPermissions=new
1652 22 May 07 gregory 151     // MyHashTableWithPaths(s_permissionsFromFile/*MyString.searchAndReplace(s_permissionsFromFile,"*;",";")*/,
1652 22 May 07 gregory 152     // ",", ";"); //Make sure that "c:\a\*" becomes "c:\a\"
1652 22 May 07 gregory 153     // as_TMPallPermissions=MyString.makeArrayOfString(s_permissionsFromFile,",");
1652 22 May 07 gregory 154     // }
1652 22 May 07 gregory 155     // else
1652 22 May 07 gregory 156     // {
1652 22 May 07 gregory 157     // MH_allPermissions=new MyHashTableWithPaths("", ",", ";");
1652 22 May 07 gregory 158     // as_TMPallPermissions=MyString.makeArrayOfString("",",");
1652 22 May 07 gregory 159     // }
790 23 Oct 06 olle 160
1652 22 May 07 gregory 161     // if ((s_aliasesFromFile=DF_databaseFile.getValue("ALIASES"))!=null)
1652 22 May 07 gregory 162     // as_TMPallAlliases=MyString.makeArrayOfString(s_aliasesFromFile,",");
1652 22 May 07 gregory 163     // else
1652 22 May 07 gregory 164     // as_TMPallAlliases=MyString.makeArrayOfString("",",");
790 23 Oct 06 olle 165
1652 22 May 07 gregory 166     // DF_databaseFile.destroy();
1652 22 May 07 gregory 167     // DF_databaseFile=null;
790 23 Oct 06 olle 168
1652 22 May 07 gregory 169     // PASSWORD=selena3
930 16 Nov 06 olle 170     tmpString = new String("selena3");
1652 22 May 07 gregory 171     // 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 177     // ROOT=/home/luna/
930 16 Nov 06 olle 178     tmpString = new String("/home/luna/");
1652 22 May 07 gregory 179     // 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 185     // PERMISSIONS=/home/luna/*;lrw
930 16 Nov 06 olle 186     s_permissionsFromFile = new String("/home/luna/*;lrw");
1652 22 May 07 gregory 187     // if
1652 22 May 07 gregory 188     // ((s_permissionsFromFile=DF_databaseFile.getValue("PERMISSIONS"))!=null)
1652 22 May 07 gregory 189     if (s_permissionsFromFile != null) {
1652 22 May 07 gregory 190       MH_allPermissions = new MyHashTableWithPaths(
1652 22 May 07 gregory 191           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 200     // ALIASES=
790 23 Oct 06 olle 201     s_aliasesFromFile = new String("");
1652 22 May 07 gregory 202     // 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 209     // DF_databaseFile.destroy();
1652 22 May 07 gregory 210     // DF_databaseFile=null;
741 10 Oct 06 olle 211
1652 22 May 07 gregory 212     // 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 218    * Root directory update method, not part of the original Xerver code.
1652 22 May 07 gregory 219    * Update the root direcory to correspond to the core home directory of the
1652 22 May 07 gregory 220    * logged-in user.
1652 22 May 07 gregory 221    * 
1652 22 May 07 gregory 222    * @param homeDirPath
1652 22 May 07 gregory 223    *            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 228     // *** 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 234      * Set FTP root directory path to core home directory of logged-in user
1652 22 May 07 gregory 235      * by appending slash "/" at end.
790 23 Oct 06 olle 236      */
1652 22 May 07 gregory 237     // ROOT=/home/luna/
1652 22 May 07 gregory 238     // tmpString = new String("/home/luna/");
790 23 Oct 06 olle 239     tmpString = makeSlashAtEnd(homeDirPath);
1652 22 May 07 gregory 240     // 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 247      * Set full permissions for List, Read, Write on files in FTP root
1652 22 May 07 gregory 248      * directory.
790 23 Oct 06 olle 249      */
1652 22 May 07 gregory 250     // PERMISSIONS=/home/luna/*;lrw
1652 22 May 07 gregory 251     // s_permissionsFromFile = new String("/home/luna/*;lrw");
1652 22 May 07 gregory 252     s_permissionsFromFile = new String(s_root + "*;lrw");
1652 22 May 07 gregory 253     // if
1652 22 May 07 gregory 254     // ((s_permissionsFromFile=DF_databaseFile.getValue("PERMISSIONS"))!=null)
1652 22 May 07 gregory 255     if (s_permissionsFromFile != null) {
1652 22 May 07 gregory 256       MH_allPermissions = new MyHashTableWithPaths(
1652 22 May 07 gregory 257           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 266     // ALIASES=
790 23 Oct 06 olle 267     s_aliasesFromFile = new String("");
1652 22 May 07 gregory 268     // 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 275     // DF_databaseFile.destroy();
1652 22 May 07 gregory 276     // DF_databaseFile=null;
790 23 Oct 06 olle 277
1652 22 May 07 gregory 278     // 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 284    * Convenience method, not part of the original Xerver code. Based on method
1652 22 May 07 gregory 285    * makeSlashAtEnd(String path) in class FTPNewConnection, but always uses a
1652 22 May 07 gregory 286    * slash "/" instead of File.separator, as the former is the standard used
1652 22 May 07 gregory 287    * for core files and directories.
1652 22 May 07 gregory 288    * 
1652 22 May 07 gregory 289    * @param path
1652 22 May 07 gregory 290    *            String with path
1652 22 May 07 gregory 291    * @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 301     // 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 311     // GET THE LENGTH OF as_XXXPermissionDirs AND SAVE THE PATHS IN
1652 22 May 07 gregory 312     // 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 337     // 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 343     // CREATE as_XXXPermissionDirs NOW (AND DESTROY VALUES OF i_countXXX,
1652 22 May 07 gregory 344     // 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 366                             // error if the database
1652 22 May 07 gregory 367                             // has wrong format. If
1652 22 May 07 gregory 368                             // each alias-entry does
1652 22 May 07 gregory 369                             // not have an "=" like
1652 22 May 07 gregory 370                             // "alias=c:\" we will
1652 22 May 07 gregory 371                             // return -1 here which
1652 22 May 07 gregory 372                             // will give an error on
1652 22 May 07 gregory 373                             // the following line
1652 22 May 07 gregory 374                             // (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 381    * Returns a MyHashTable with all folders and permissions. Note that all *
1652 22 May 07 gregory 382    * 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 }