client/ftpd/src/se/lu/thep/coreftpd/ftp_server/FTPSetupConnection.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.DatabaseFile;
791 23 Oct 06 olle 59 import se.lu.thep.coreftpd.common.MyHashTable;
791 23 Oct 06 olle 60 import se.lu.thep.coreftpd.common.MyString;
791 23 Oct 06 olle 61 import se.lu.thep.coreftpd.webserver.XerverKernel;
741 10 Oct 06 olle 62 import java.io.BufferedOutputStream;
741 10 Oct 06 olle 63 import java.io.BufferedReader;
741 10 Oct 06 olle 64 import java.io.DataOutputStream;
741 10 Oct 06 olle 65 import java.io.File;
741 10 Oct 06 olle 66 import java.io.FileInputStream;
741 10 Oct 06 olle 67 import java.io.InputStreamReader;
741 10 Oct 06 olle 68 import java.net.Socket;
741 10 Oct 06 olle 69 import java.text.DateFormat;
741 10 Oct 06 olle 70 import java.util.Date;
741 10 Oct 06 olle 71
741 10 Oct 06 olle 72 /**
1652 22 May 07 gregory 73  * 
1652 22 May 07 gregory 74  * <B>About this class:</B> <BR>
1652 22 May 07 gregory 75  * For every connection that is made to the Xerver FTP Setup one <CODE>FTPSetupConnection</CODE>
1652 22 May 07 gregory 76  * is created.
1652 22 May 07 gregory 77  * 
741 10 Oct 06 olle 78  * @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a>
741 10 Oct 06 olle 79  * @version 1.0
741 10 Oct 06 olle 80  */
741 10 Oct 06 olle 81
1652 22 May 07 gregory 82 final public class FTPSetupConnection extends Thread {
1652 22 May 07 gregory 83   private final static String s_userFolder = FTPServerController.s_userFolder;
741 10 Oct 06 olle 84
1652 22 May 07 gregory 85   private final static String s_initFile = FTPServerController.s_initFile;
1652 22 May 07 gregory 86
1652 22 May 07 gregory 87   private final static String s_dataFolder = FTPServerController.s_dataFolder;
1652 22 May 07 gregory 88
1652 22 May 07 gregory 89   private final static String s_userDataExtension = FTPServerController.s_userDataExtension;
1652 22 May 07 gregory 90
1652 22 May 07 gregory 91   private final static boolean b_showErrors = false;
1652 22 May 07 gregory 92
741 10 Oct 06 olle 93   private Socket so_userConnection;
1652 22 May 07 gregory 94
1652 22 May 07 gregory 95   private DataOutputStream theOutput; // Everything written to this will be
1652 22 May 07 gregory 96                     // sent to the browser
1652 22 May 07 gregory 97
1652 22 May 07 gregory 98   private String s_allData, s_requestedFolderLocation, s_errorStatus,
1652 22 May 07 gregory 99       s_requestMethod, s_requestDocument;
1652 22 May 07 gregory 100
741 10 Oct 06 olle 101   private Date d_dateToday;
1652 22 May 07 gregory 102
741 10 Oct 06 olle 103   private DateFormat df_dateFormat;
1652 22 May 07 gregory 104
1652 22 May 07 gregory 105   private BufferedReader br_theInputWeGetFromBrowser; // Read the browsers
1652 22 May 07 gregory 106                             // header from this
1652 22 May 07 gregory 107
741 10 Oct 06 olle 108   private MyHashTable MyHT_allDataFromQuery;
1652 22 May 07 gregory 109
741 10 Oct 06 olle 110   private FTPSettings FTPS_settings;
1652 22 May 07 gregory 111
741 10 Oct 06 olle 112   private UserDatabase UD_userDatabase;
741 10 Oct 06 olle 113
791 23 Oct 06 olle 114   /**
791 23 Oct 06 olle 115    * Logger used. Used to log specific events.
791 23 Oct 06 olle 116    */
791 23 Oct 06 olle 117   private static final org.apache.log4j.Logger log = org.apache.log4j.LogManager
1652 22 May 07 gregory 118       .getLogger("se.lu.thep.coreftpd.ftp_server");
741 10 Oct 06 olle 119
1652 22 May 07 gregory 120   public FTPSetupConnection(Socket agrUserConnection) {
790 23 Oct 06 olle 121     // *** Debug Info
1652 22 May 07 gregory 122     log
1652 22 May 07 gregory 123         .info("FTPSetupConnection::FTPSetupConnections(): Start - agrUserConnection = \""
1652 22 May 07 gregory 124             + agrUserConnection.toString() + "\"");
741 10 Oct 06 olle 125     try {
1652 22 May 07 gregory 126       so_userConnection = agrUserConnection;
741 10 Oct 06 olle 127       d_dateToday = new Date();
1652 22 May 07 gregory 128       df_dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
1652 22 May 07 gregory 129           DateFormat.LONG);
1652 22 May 07 gregory 130       s_errorStatus = "200 OK";
741 10 Oct 06 olle 131
741 10 Oct 06 olle 132       getRequestInformation();
741 10 Oct 06 olle 133       createVariables();
741 10 Oct 06 olle 134
1652 22 May 07 gregory 135       theOutput = new DataOutputStream(new BufferedOutputStream(
1652 22 May 07 gregory 136           so_userConnection.getOutputStream())); // I "java.io.*"
741 10 Oct 06 olle 137
741 10 Oct 06 olle 138       chooseWhatToReturn();
1652 22 May 07 gregory 139     } catch (Exception e) {
1652 22 May 07 gregory 140       if (b_showErrors)
1652 22 May 07 gregory 141         System.out
1652 22 May 07 gregory 142             .println("An error occured @ getRequestInformation:\n"
1652 22 May 07 gregory 143                 + e.getMessage());
1652 22 May 07 gregory 144     }
741 10 Oct 06 olle 145   }
741 10 Oct 06 olle 146
1652 22 May 07 gregory 147   private void chooseWhatToReturn() {
741 10 Oct 06 olle 148     try {
1652 22 May 07 gregory 149       String s_actionValue = MyHT_allDataFromQuery
1652 22 May 07 gregory 150           .giveValueByIndex("action");
1652 22 May 07 gregory 151       String s_userValue = MyHT_allDataFromQuery
1652 22 May 07 gregory 152           .giveValueByIndex("username");
741 10 Oct 06 olle 153
1652 22 May 07 gregory 154       if (!ValidateInput.isValidUserName(s_userValue)) {
1652 22 May 07 gregory 155         s_userValue = null; // s_userValue shall either be null, or a
1652 22 May 07 gregory 156                   // valid user name...
741 10 Oct 06 olle 157       }
741 10 Oct 06 olle 158
1652 22 May 07 gregory 159       if (s_actionValue != null) // If there is an action given (there
1652 22 May 07 gregory 160                     // shall always be an action given, but
1652 22 May 07 gregory 161                     // not if you visit the "setup root"
1652 22 May 07 gregory 162                     // (="http://localhost:32123/")...
741 10 Oct 06 olle 163       {
1652 22 May 07 gregory 164         // ************** SAVE SETTINGS TO XERVER, NOT TO A USER
1652 22 May 07 gregory 165         // **************
1652 22 May 07 gregory 166         if (s_actionValue.equals("saveConfig")) {
1652 22 May 07 gregory 167           DatabaseFile DF_setupFile = new DatabaseFile(s_initFile);
1652 22 May 07 gregory 168           String s_portNr = MyHT_allDataFromQuery
1652 22 May 07 gregory 169               .giveValueByIndex("portNr");
2703 16 May 08 olle 170           String s_passiveRange = MyHT_allDataFromQuery
2703 16 May 08 olle 171               .giveValueByIndex("passiveRange");
1652 22 May 07 gregory 172           String s_showAllias = MyHT_allDataFromQuery
1652 22 May 07 gregory 173               .giveValueByIndex("showAlias");
1652 22 May 07 gregory 174           String s_guestAccount = MyHT_allDataFromQuery
1652 22 May 07 gregory 175               .giveValueByIndex("guestAccount");
1652 22 May 07 gregory 176           String s_maxTimeToIdle = MyHT_allDataFromQuery
1652 22 May 07 gregory 177               .giveValueByIndex("maxIdleTime");
1652 22 May 07 gregory 178           String s_maxNumberOfNOOP = MyHT_allDataFromQuery
1652 22 May 07 gregory 179               .giveValueByIndex("maxNOOPAllowed");
1652 22 May 07 gregory 180           String s_dataPortNr = MyHT_allDataFromQuery
1652 22 May 07 gregory 181               .giveValueByIndex("dataPortNr");
741 10 Oct 06 olle 182
1652 22 May 07 gregory 183           if (s_portNr != null)
1652 22 May 07 gregory 184             DF_setupFile.setValue("PORT_NR", s_portNr);
1652 22 May 07 gregory 185           if (s_showAllias != null)
1652 22 May 07 gregory 186             DF_setupFile.setValue("SHOW_ALLIAS", s_showAllias);
1652 22 May 07 gregory 187           if (s_guestAccount != null)
1652 22 May 07 gregory 188             DF_setupFile.setValue("GUEST_ACCOUNT", s_guestAccount);
1652 22 May 07 gregory 189           if (s_maxTimeToIdle != null)
1652 22 May 07 gregory 190             DF_setupFile.setValue("MAX_IDLE_TIME", s_maxTimeToIdle);
1652 22 May 07 gregory 191           if (s_maxNumberOfNOOP != null)
1652 22 May 07 gregory 192             DF_setupFile.setValue("MAX_NOOP_ALLOWED",
1652 22 May 07 gregory 193                 s_maxNumberOfNOOP);
2703 16 May 08 olle 194           if (s_passiveRange != null)
2703 16 May 08 olle 195             DF_setupFile.setValue("PASSIVE_PORT_RANGE", s_passiveRange);
1652 22 May 07 gregory 196           if (s_dataPortNr != null)
1652 22 May 07 gregory 197             DF_setupFile.setValue("DATA_PORT_NR", s_dataPortNr);
741 10 Oct 06 olle 198
1652 22 May 07 gregory 199           FTPServer FTPS_currentlyRunning = FTPServer.getFTPServer();
741 10 Oct 06 olle 200           FTPS_settings.updateData();
741 10 Oct 06 olle 201
1652 22 May 07 gregory 202           if (FTPS_currentlyRunning != null) // If server is running,
1652 22 May 07 gregory 203                             // make sure we update
1652 22 May 07 gregory 204                             // settings to the
1652 22 May 07 gregory 205                             // server that is
1652 22 May 07 gregory 206                             // already running.
741 10 Oct 06 olle 207           {
1652 22 May 07 gregory 208             FTPS_currentlyRunning.initSettings(); // Set the
1652 22 May 07 gregory 209                                 // port-variable...
1652 22 May 07 gregory 210             FTPS_currentlyRunning.listenForConnections();// ...Which
1652 22 May 07 gregory 211                                     // is
1652 22 May 07 gregory 212                                     // used
1652 22 May 07 gregory 213                                     // here
741 10 Oct 06 olle 214           }
741 10 Oct 06 olle 215
1652 22 May 07 gregory 216           returnThisPage(s_dataFolder + "WizUserFrames.html",
1652 22 May 07 gregory 217               "text/html");
741 10 Oct 06 olle 218
1652 22 May 07 gregory 219         } // ************** SAVE SETTINGS TO A USER **************
1652 22 May 07 gregory 220         else if (s_actionValue.equals("save")) {
1652 22 May 07 gregory 221           String s_typeValue = MyHT_allDataFromQuery
1652 22 May 07 gregory 222               .giveValueByIndex("type");
1652 22 May 07 gregory 223           String s_newValue = MyHT_allDataFromQuery
1652 22 May 07 gregory 224               .giveValueByIndex("newValue");
1652 22 May 07 gregory 225           if (s_userValue != null && s_typeValue != null) {
1652 22 May 07 gregory 226             DatabaseFile DF_user = new DatabaseFile(s_userFolder
1652 22 May 07 gregory 227                 + s_userValue + s_userDataExtension);
1652 22 May 07 gregory 228             if (s_typeValue.equals("root")) {
1652 22 May 07 gregory 229               s_newValue = ValidateInput
1652 22 May 07 gregory 230                   .makeValidPath(s_newValue); // Necessary??
741 10 Oct 06 olle 231
1652 22 May 07 gregory 232               if (s_newValue != null) {
1652 22 May 07 gregory 233                 DF_user.setValue("ROOT", s_newValue);
741 10 Oct 06 olle 234                 DF_user.destroy();
1652 22 May 07 gregory 235                 DF_user = null;
741 10 Oct 06 olle 236                 UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 237
1652 22 May 07 gregory 238                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 239                     + "WizDataSaved.html", "text/html");
1652 22 May 07 gregory 240               } else {
741 10 Oct 06 olle 241                 ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 242               }
1652 22 May 07 gregory 243             } else if (s_typeValue.equals("updatePermissions")) {
1652 22 May 07 gregory 244               if (s_newValue != null) {
1652 22 May 07 gregory 245                 DF_user.setValue("PERMISSIONS", s_newValue);
741 10 Oct 06 olle 246                 DF_user.destroy();
1652 22 May 07 gregory 247                 DF_user = null;
741 10 Oct 06 olle 248                 UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 249
1652 22 May 07 gregory 250                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 251                     + "WizSetPermissions.html", "text/html");
1652 22 May 07 gregory 252                 ShowFTPSetupPages.showPermissionsInfo(
1652 22 May 07 gregory 253                     theOutput, UD_userDatabase
1652 22 May 07 gregory 254                         .getUserData(s_userValue));
1652 22 May 07 gregory 255               } else {
741 10 Oct 06 olle 256                 ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 257               }
1652 22 May 07 gregory 258             } else if (s_typeValue.equals("addPermissions")) {
1652 22 May 07 gregory 259               UserData UD_user = UD_userDatabase
1652 22 May 07 gregory 260                   .getUserData(s_userValue);
1652 22 May 07 gregory 261               String newPermissionPath = ValidateInput
1652 22 May 07 gregory 262                   .makeValidPath(MyHT_allDataFromQuery
1652 22 May 07 gregory 263                       .giveValueByIndex("newPermissionPath"));
741 10 Oct 06 olle 264
1652 22 May 07 gregory 265               if (ValidateInput.isValidPath(newPermissionPath)) {
741 10 Oct 06 olle 266
1652 22 May 07 gregory 267                 // ******* START: FIND OUT IF PATH ALREADY
1652 22 May 07 gregory 268                 // EXISTS ************
1652 22 May 07 gregory 269                 String[] as_allPermissions = MyString
1652 22 May 07 gregory 270                     .makeArrayOfString(UD_user
1652 22 May 07 gregory 271                         .getPermissionsString(), ",");
741 10 Oct 06 olle 272
1652 22 May 07 gregory 273                 // ALL THESE ARE TEMPORARY VARIABLES (NO GLOBAL
1652 22 May 07 gregory 274                 // VARIABLES)
1652 22 May 07 gregory 275                 int i_lengthAllPermissions = as_allPermissions.length;
741 10 Oct 06 olle 276                 int separatorIndexOf;
1652 22 May 07 gregory 277                 String path, tmpLine /* , attribute */;
1652 22 May 07 gregory 278                 boolean b_pathAlreadyInList = false;
741 10 Oct 06 olle 279                 String attributes;
741 10 Oct 06 olle 280
1652 22 May 07 gregory 281                 for (int i = 0; i < i_lengthAllPermissions; i++) {
1652 22 May 07 gregory 282                   tmpLine = as_allPermissions[i];
1652 22 May 07 gregory 283                   separatorIndexOf = tmpLine.lastIndexOf(';');
1652 22 May 07 gregory 284                   path = tmpLine.substring(0,
1652 22 May 07 gregory 285                       separatorIndexOf);
1652 22 May 07 gregory 286                   // Don't need this here:
1652 22 May 07 gregory 287                   // attribute=tmpLine.substring(separatorIndexOf+1);
741 10 Oct 06 olle 288
1652 22 May 07 gregory 289                   if (path.endsWith("*")) {
1652 22 May 07 gregory 290                     if ((newPermissionPath + "*")
1652 22 May 07 gregory 291                         .equalsIgnoreCase(path)) {
1652 22 May 07 gregory 292                       b_pathAlreadyInList = true;
741 10 Oct 06 olle 293                       break;
741 10 Oct 06 olle 294                     }
1652 22 May 07 gregory 295                   } else {
1652 22 May 07 gregory 296                     if (newPermissionPath
1652 22 May 07 gregory 297                         .equalsIgnoreCase(path)) {
1652 22 May 07 gregory 298                       b_pathAlreadyInList = true;
741 10 Oct 06 olle 299                       break;
741 10 Oct 06 olle 300                     }
741 10 Oct 06 olle 301                   }
741 10 Oct 06 olle 302                 }
1652 22 May 07 gregory 303                 // ******* STOP: FIND OUT IF PATH ALREADY EXISTS
1652 22 May 07 gregory 304                 // ************
741 10 Oct 06 olle 305
1652 22 May 07 gregory 306                 if (!b_pathAlreadyInList) {
1652 22 May 07 gregory 307                   attributes = "";
1652 22 May 07 gregory 308                   if (MyHT_allDataFromQuery
1652 22 May 07 gregory 309                       .giveValueByIndex("thisRead") != null)
1652 22 May 07 gregory 310                     attributes += "r";
1652 22 May 07 gregory 311                   if (MyHT_allDataFromQuery
1652 22 May 07 gregory 312                       .giveValueByIndex("thisWrite") != null)
1652 22 May 07 gregory 313                     attributes += "w";
1652 22 May 07 gregory 314                   if (MyHT_allDataFromQuery
1652 22 May 07 gregory 315                       .giveValueByIndex("thisCreate") != null)
1652 22 May 07 gregory 316                     attributes += "c";
1652 22 May 07 gregory 317                   if (MyHT_allDataFromQuery
1652 22 May 07 gregory 318                       .giveValueByIndex("thisList") != null)
1652 22 May 07 gregory 319                     attributes += "l";
741 10 Oct 06 olle 320
1652 22 May 07 gregory 321                   if (MyHT_allDataFromQuery
1652 22 May 07 gregory 322                       .giveValueByIndex("thisSubdir") != null)
1652 22 May 07 gregory 323                     newPermissionPath += "*";
741 10 Oct 06 olle 324
1652 22 May 07 gregory 325                   if (i_lengthAllPermissions == 0) // If no
1652 22 May 07 gregory 326                                     // permissions
1652 22 May 07 gregory 327                                     // already
1652 22 May 07 gregory 328                                     // exists...
741 10 Oct 06 olle 329                   {
1652 22 May 07 gregory 330                     DF_user.setValue("PERMISSIONS",
1652 22 May 07 gregory 331                         newPermissionPath + ";"
1652 22 May 07 gregory 332                             + attributes);
1652 22 May 07 gregory 333                   } else // If permissions already exists and
1652 22 May 07 gregory 334                       // we shall append to the list
741 10 Oct 06 olle 335                   {
1652 22 May 07 gregory 336                     DF_user.setValue("PERMISSIONS", UD_user
1652 22 May 07 gregory 337                         .getPermissionsString()
1652 22 May 07 gregory 338                         + ","
1652 22 May 07 gregory 339                         + newPermissionPath
1652 22 May 07 gregory 340                         + ";"
1652 22 May 07 gregory 341                         + attributes);
741 10 Oct 06 olle 342                   }
741 10 Oct 06 olle 343                   DF_user.destroy();
1652 22 May 07 gregory 344                   DF_user = null;
741 10 Oct 06 olle 345                   UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 346
1652 22 May 07 gregory 347                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 348                       + "WizSetPermissions.html",
1652 22 May 07 gregory 349                       "text/html");
1652 22 May 07 gregory 350                   ShowFTPSetupPages.showPermissionsInfo(
1652 22 May 07 gregory 351                       theOutput, UD_userDatabase
1652 22 May 07 gregory 352                           .getUserData(s_userValue));
741 10 Oct 06 olle 353
1652 22 May 07 gregory 354                 } else {
1652 22 May 07 gregory 355                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 356                       + "WizSetPermissions.html",
1652 22 May 07 gregory 357                       "text/html");
1652 22 May 07 gregory 358                   ShowFTPSetupPages.showPermissionsInfo(
1652 22 May 07 gregory 359                       theOutput, UD_userDatabase
1652 22 May 07 gregory 360                           .getUserData(s_userValue));
1652 22 May 07 gregory 361                   ShowFTPSetupPages
1652 22 May 07 gregory 362                       .showAlertInfo(theOutput,
1652 22 May 07 gregory 363                           "You have already shared this directory and set permissions for it.");
741 10 Oct 06 olle 364                 }
1652 22 May 07 gregory 365               } else {
1652 22 May 07 gregory 366                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 367                     + "WizSetPermissions.html", "text/html");
1652 22 May 07 gregory 368                 ShowFTPSetupPages.showPermissionsInfo(
1652 22 May 07 gregory 369                     theOutput, UD_userDatabase
1652 22 May 07 gregory 370                         .getUserData(s_userValue));
1652 22 May 07 gregory 371                 ShowFTPSetupPages
1652 22 May 07 gregory 372                     .showAlertInfo(
1652 22 May 07 gregory 373                         theOutput,
1652 22 May 07 gregory 374                         "The directory was not shared.\\nThe directory path you have entered is not a path to a valid directory.");
741 10 Oct 06 olle 375               }
1652 22 May 07 gregory 376             } else if (s_typeValue.equals("addAlias")) {
1652 22 May 07 gregory 377               UserData UD_user = UD_userDatabase
1652 22 May 07 gregory 378                   .getUserData(s_userValue);
1652 22 May 07 gregory 379               String[] as_aliasesPath, as_aliasesName;
1652 22 May 07 gregory 380               as_aliasesName = UD_user.getAliasesName();
1652 22 May 07 gregory 381               as_aliasesPath = UD_user.getAliasesPath();
1652 22 May 07 gregory 382               String newAliasName = MyHT_allDataFromQuery
1652 22 May 07 gregory 383                   .giveValueByIndex("newAliasName");
1652 22 May 07 gregory 384               String newAliasPath = ValidateInput
1652 22 May 07 gregory 385                   .makeValidPath(MyHT_allDataFromQuery
1652 22 May 07 gregory 386                       .giveValueByIndex("newAliasPath"));
741 10 Oct 06 olle 387
1652 22 May 07 gregory 388               if (!MyString.stringExistInArrayIgnoreCase(
1652 22 May 07 gregory 389                   newAliasName, as_aliasesName)) {
1652 22 May 07 gregory 390                 if (ValidateInput
1652 22 May 07 gregory 391                     .isValidAliasName(newAliasName)) {
1652 22 May 07 gregory 392                   if (ValidateInput.isValidPath(newAliasPath)) {
1652 22 May 07 gregory 393                     if (as_aliasesName.length == 0) // If no
1652 22 May 07 gregory 394                                     // aliases
1652 22 May 07 gregory 395                                     // already
1652 22 May 07 gregory 396                                     // exists...
741 10 Oct 06 olle 397                     {
1652 22 May 07 gregory 398                       DF_user.setValue("ALIASES",
1652 22 May 07 gregory 399                           newAliasName + "="
1652 22 May 07 gregory 400                               + newAliasPath);
1652 22 May 07 gregory 401                     } else // If aliases already exists and
1652 22 May 07 gregory 402                         // we shall append to the list
741 10 Oct 06 olle 403                     {
1652 22 May 07 gregory 404                       DF_user.setValue("ALIASES", UD_user
1652 22 May 07 gregory 405                           .getAliasString()
1652 22 May 07 gregory 406                           + ","
1652 22 May 07 gregory 407                           + newAliasName
1652 22 May 07 gregory 408                           + "="
1652 22 May 07 gregory 409                           + newAliasPath);
741 10 Oct 06 olle 410                     }
741 10 Oct 06 olle 411                     DF_user.destroy();
1652 22 May 07 gregory 412                     DF_user = null;
741 10 Oct 06 olle 413                     UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 414
1652 22 May 07 gregory 415                     returnThisPage(s_dataFolder
1652 22 May 07 gregory 416                         + "WizSetAliases.html",
1652 22 May 07 gregory 417                         "text/html");
1652 22 May 07 gregory 418                     ShowFTPSetupPages
1652 22 May 07 gregory 419                         .showAliasesInfo(
1652 22 May 07 gregory 420                             theOutput,
1652 22 May 07 gregory 421                             UD_userDatabase
1652 22 May 07 gregory 422                                 .getUserData(s_userValue));
1652 22 May 07 gregory 423                   } else {
1652 22 May 07 gregory 424                     returnThisPage(s_dataFolder
1652 22 May 07 gregory 425                         + "WizSetAliases.html",
1652 22 May 07 gregory 426                         "text/html");
1652 22 May 07 gregory 427                     ShowFTPSetupPages
1652 22 May 07 gregory 428                         .showAliasesInfo(
1652 22 May 07 gregory 429                             theOutput,
1652 22 May 07 gregory 430                             UD_userDatabase
1652 22 May 07 gregory 431                                 .getUserData(s_userValue));
1652 22 May 07 gregory 432                     ShowFTPSetupPages
1652 22 May 07 gregory 433                         .showAlertInfo(
1652 22 May 07 gregory 434                             theOutput,
1652 22 May 07 gregory 435                             "The new alias was not created.\\nThe alias path you have entered is not a path to a valid directory.");
741 10 Oct 06 olle 436                   }
1652 22 May 07 gregory 437                 } else {
1652 22 May 07 gregory 438                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 439                       + "WizSetAliases.html", "text/html");
1652 22 May 07 gregory 440                   ShowFTPSetupPages.showAliasesInfo(
1652 22 May 07 gregory 441                       theOutput, UD_userDatabase
1652 22 May 07 gregory 442                           .getUserData(s_userValue));
1652 22 May 07 gregory 443                   ShowFTPSetupPages
1652 22 May 07 gregory 444                       .showAlertInfo(
1652 22 May 07 gregory 445                           theOutput,
1652 22 May 07 gregory 446                           "The new alias was not created because the alias name given was not a valid alias name.\\nAn alias name shall only contain letters, digits and underscores (_).");
741 10 Oct 06 olle 447                 }
1652 22 May 07 gregory 448               } else {
1652 22 May 07 gregory 449                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 450                     + "WizSetAliases.html", "text/html");
1652 22 May 07 gregory 451                 ShowFTPSetupPages.showAliasesInfo(theOutput,
1652 22 May 07 gregory 452                     UD_userDatabase
1652 22 May 07 gregory 453                         .getUserData(s_userValue));
1652 22 May 07 gregory 454                 ShowFTPSetupPages
1652 22 May 07 gregory 455                     .showAlertInfo(theOutput,
1652 22 May 07 gregory 456                         "The alias name given does already exists.\\nPlease choose another alias name.");
741 10 Oct 06 olle 457               }
1652 22 May 07 gregory 458             } else if (s_typeValue.equals("removeAlias")) {
1652 22 May 07 gregory 459               UserData UD_user = UD_userDatabase
1652 22 May 07 gregory 460                   .getUserData(s_userValue);
1652 22 May 07 gregory 461               String[] as_aliasesPath, as_aliasesName;
1652 22 May 07 gregory 462               as_aliasesName = UD_user.getAliasesName();
1652 22 May 07 gregory 463               as_aliasesPath = UD_user.getAliasesPath();
1652 22 May 07 gregory 464               String s_newAlias = "";
1652 22 May 07 gregory 465               String tmpRemoveThese = MyHT_allDataFromQuery
1652 22 May 07 gregory 466                   .giveValueByIndex("removeThese");
1652 22 May 07 gregory 467               String[] s_removeThese;
1652 22 May 07 gregory 468               if (tmpRemoveThese != null) {
1652 22 May 07 gregory 469                 s_removeThese = MyString.makeArrayOfString(
1652 22 May 07 gregory 470                     tmpRemoveThese, ",");
741 10 Oct 06 olle 471
1652 22 May 07 gregory 472                 for (int i = 0; i < as_aliasesName.length; i++) {
1652 22 May 07 gregory 473                   if (!MyString.stringExistInArrayIgnoreCase(
1652 22 May 07 gregory 474                       as_aliasesName[i], s_removeThese)) {
1652 22 May 07 gregory 475                     s_newAlias += as_aliasesName[i] + "="
1652 22 May 07 gregory 476                         + as_aliasesPath[i] + ",";
741 10 Oct 06 olle 477                   }
741 10 Oct 06 olle 478                 }
741 10 Oct 06 olle 479
1652 22 May 07 gregory 480                 if (!s_newAlias.equals("")) {
1652 22 May 07 gregory 481                   s_newAlias = s_newAlias.substring(0,
1652 22 May 07 gregory 482                       s_newAlias.length() - 1); // Remove
1652 22 May 07 gregory 483                                     // last
1652 22 May 07 gregory 484                                     // comma
1652 22 May 07 gregory 485                                     // (,)
741 10 Oct 06 olle 486                 }
741 10 Oct 06 olle 487
1652 22 May 07 gregory 488                 DF_user.setValue("ALIASES", s_newAlias);
741 10 Oct 06 olle 489                 DF_user.destroy();
1652 22 May 07 gregory 490                 DF_user = null;
741 10 Oct 06 olle 491                 UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 492
1652 22 May 07 gregory 493                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 494                     + "WizSetAliases.html", "text/html");
1652 22 May 07 gregory 495                 ShowFTPSetupPages.showAliasesInfo(theOutput,
1652 22 May 07 gregory 496                     UD_userDatabase
1652 22 May 07 gregory 497                         .getUserData(s_userValue));
1652 22 May 07 gregory 498               } else {
741 10 Oct 06 olle 499                 ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 500               }
1652 22 May 07 gregory 501             } else if (s_typeValue.equals("password")) {
1652 22 May 07 gregory 502               if (!s_userValue.equals("guest")
1652 22 May 07 gregory 503                   || s_newValue == null) {
1652 22 May 07 gregory 504                 if (s_newValue.equals(MyHT_allDataFromQuery
1652 22 May 07 gregory 505                     .giveValueByIndex("password2"))
1652 22 May 07 gregory 506                     && !s_newValue.equals("")) {
1652 22 May 07 gregory 507                   DF_user.setValue("PASSWORD", s_newValue);
741 10 Oct 06 olle 508                   DF_user.destroy();
1652 22 May 07 gregory 509                   DF_user = null;
741 10 Oct 06 olle 510                   UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 511
1652 22 May 07 gregory 512                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 513                       + "WizDataSaved.html", "text/html");
1652 22 May 07 gregory 514                 } else {
1652 22 May 07 gregory 515                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 516                       + "WizSetPassword.html",
1652 22 May 07 gregory 517                       "text/html");
1652 22 May 07 gregory 518                   ShowFTPSetupPages.showPasswordInfo(
1652 22 May 07 gregory 519                       theOutput, UD_userDatabase
1652 22 May 07 gregory 520                           .getUserData(s_userValue));
1652 22 May 07 gregory 521                   ShowFTPSetupPages
1652 22 May 07 gregory 522                       .showAlertInfo(theOutput,
1652 22 May 07 gregory 523                           "Passwords did not match or empty password given.\\nPassword was not saved!");
741 10 Oct 06 olle 524                 }
1652 22 May 07 gregory 525               } else // else guest can not be choosen
741 10 Oct 06 olle 526               {
741 10 Oct 06 olle 527                 ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 528               }
1652 22 May 07 gregory 529             } else if (s_typeValue.equals("copy")) {
1652 22 May 07 gregory 530               if (ValidateInput.isValidUserName(s_newValue)) // We
1652 22 May 07 gregory 531                                       // create
1652 22 May 07 gregory 532                                       // a
1652 22 May 07 gregory 533                                       // valid
1652 22 May 07 gregory 534                                       // account
1652 22 May 07 gregory 535                                       // name...
1652 22 May 07 gregory 536               {
1652 22 May 07 gregory 537                 boolean b_resultFromAction = DF_user
1652 22 May 07 gregory 538                     .copyFile(s_userFolder + s_newValue
1652 22 May 07 gregory 539                         + s_userDataExtension);
1652 22 May 07 gregory 540                 DF_user.destroy();
1652 22 May 07 gregory 541                 DF_user = null;
1652 22 May 07 gregory 542                 UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 543
1652 22 May 07 gregory 544                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 545                     + "WizChooseUser.html", "text/html");
1652 22 May 07 gregory 546                 ShowFTPSetupPages.showChooseUserScript(
1652 22 May 07 gregory 547                     theOutput, UD_userDatabase
1652 22 May 07 gregory 548                         .getAllUsers());
741 10 Oct 06 olle 549
1652 22 May 07 gregory 550                 if (!b_resultFromAction) {
1652 22 May 07 gregory 551                   ShowFTPSetupPages
1652 22 May 07 gregory 552                       .showAlertInfo(
1652 22 May 07 gregory 553                           theOutput,
1652 22 May 07 gregory 554                           "Could not create new account file.\\nThe reason might be that there already exists an account with the same account name.");
741 10 Oct 06 olle 555                 }
1652 22 May 07 gregory 556               } else // An invalid name has been choosen
741 10 Oct 06 olle 557               {
1652 22 May 07 gregory 558                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 559                     + "WizChooseUser.html", "text/html");
1652 22 May 07 gregory 560                 ShowFTPSetupPages.showChooseUserScript(
1652 22 May 07 gregory 561                     theOutput, UD_userDatabase
1652 22 May 07 gregory 562                         .getAllUsers());
1652 22 May 07 gregory 563                 ShowFTPSetupPages
1652 22 May 07 gregory 564                     .showAlertInfo(
1652 22 May 07 gregory 565                         theOutput,
1652 22 May 07 gregory 566                         "The new account was not created.\\nAn account name shall only contain letters, digits and underscores (_).");
1652 22 May 07 gregory 567               }
1652 22 May 07 gregory 568             } else if (s_typeValue.equals("rename")) {
1652 22 May 07 gregory 569               if (!s_userValue.equals("guest")) {
1652 22 May 07 gregory 570                 if (ValidateInput.isValidUserName(s_newValue)) // We
1652 22 May 07 gregory 571                                         // rename
1652 22 May 07 gregory 572                                         // to a
1652 22 May 07 gregory 573                                         // valid
1652 22 May 07 gregory 574                                         // name...
741 10 Oct 06 olle 575                 {
1652 22 May 07 gregory 576                   boolean b_resultFromAction = DF_user
1652 22 May 07 gregory 577                       .renameFile(s_userFolder
1652 22 May 07 gregory 578                           + s_newValue
1652 22 May 07 gregory 579                           + s_userDataExtension);
741 10 Oct 06 olle 580                   DF_user.destroy();
1652 22 May 07 gregory 581                   DF_user = null;
741 10 Oct 06 olle 582                   UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 583
1652 22 May 07 gregory 584                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 585                       + "WizChooseUser.html", "text/html");
1652 22 May 07 gregory 586                   ShowFTPSetupPages.showChooseUserScript(
1652 22 May 07 gregory 587                       theOutput, UD_userDatabase
1652 22 May 07 gregory 588                           .getAllUsers());
741 10 Oct 06 olle 589
1652 22 May 07 gregory 590                   if (!b_resultFromAction) {
1652 22 May 07 gregory 591                     ShowFTPSetupPages
1652 22 May 07 gregory 592                         .showAlertInfo(
1652 22 May 07 gregory 593                             theOutput,
1652 22 May 07 gregory 594                             "Could not rename account file.\\nThe reason might be that there already exists an account with the same name.");
741 10 Oct 06 olle 595                   }
1652 22 May 07 gregory 596                 } else // An invalid name has been choosen
741 10 Oct 06 olle 597                 {
1652 22 May 07 gregory 598                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 599                       + "WizChooseUser.html", "text/html");
1652 22 May 07 gregory 600                   ShowFTPSetupPages.showChooseUserScript(
1652 22 May 07 gregory 601                       theOutput, UD_userDatabase
1652 22 May 07 gregory 602                           .getAllUsers());
1652 22 May 07 gregory 603                   ShowFTPSetupPages
1652 22 May 07 gregory 604                       .showAlertInfo(
1652 22 May 07 gregory 605                           theOutput,
1652 22 May 07 gregory 606                           "The account name was not renamed.\\nAn account name shall only contain letters, digits and underscores (_).");
741 10 Oct 06 olle 607                 }
741 10 Oct 06 olle 608               }
1652 22 May 07 gregory 609             } else if (s_typeValue.equals("addUser")) {
1652 22 May 07 gregory 610               String s_root = ValidateInput
1652 22 May 07 gregory 611                   .makeValidPath(MyHT_allDataFromQuery
1652 22 May 07 gregory 612                       .giveValueByIndex("root"));
1652 22 May 07 gregory 613               String s_password1 = MyHT_allDataFromQuery
1652 22 May 07 gregory 614                   .giveValueByIndex("password1");
1652 22 May 07 gregory 615               String s_password2 = MyHT_allDataFromQuery
1652 22 May 07 gregory 616                   .giveValueByIndex("password2");
1652 22 May 07 gregory 617               if (ValidateInput.isValidPath(s_root)) {
1652 22 May 07 gregory 618                 if (s_password1 != null
1652 22 May 07 gregory 619                     && s_password1.equals(s_password2)
1652 22 May 07 gregory 620                     && !s_password1.equals("")) {
1652 22 May 07 gregory 621                   boolean b_fileAlreadyExists = DF_user
1652 22 May 07 gregory 622                       .fileExists();
1652 22 May 07 gregory 623                   boolean b_resultFromAction = DF_user
1652 22 May 07 gregory 624                       .createNewFile();
741 10 Oct 06 olle 625
1652 22 May 07 gregory 626                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 627                       + "WizAddNewUser.html", "text/html");
741 10 Oct 06 olle 628
1652 22 May 07 gregory 629                   if (b_fileAlreadyExists) {
1652 22 May 07 gregory 630                     ShowFTPSetupPages
1652 22 May 07 gregory 631                         .showAlertInfo(theOutput,
1652 22 May 07 gregory 632                             "This user already exists.\\nPlease choose another username.");
1652 22 May 07 gregory 633                   } else if (b_resultFromAction) {
741 10 Oct 06 olle 634                     DF_user.addNewLine();
741 10 Oct 06 olle 635                     DF_user.addNewLine();
741 10 Oct 06 olle 636                     DF_user.addNewComment("User password");
1652 22 May 07 gregory 637                     DF_user.addNewValue("PASSWORD",
1652 22 May 07 gregory 638                         s_password1);
741 10 Oct 06 olle 639                     DF_user.addNewLine();
741 10 Oct 06 olle 640                     DF_user.addNewLine();
741 10 Oct 06 olle 641                     DF_user.addNewComment("Your root");
1652 22 May 07 gregory 642                     DF_user.addNewValue("ROOT", s_root);
741 10 Oct 06 olle 643                     DF_user.addNewLine();
1652 22 May 07 gregory 644                     DF_user
1652 22 May 07 gregory 645                         .addNewComment("Your shared folders and with what permissions");
1652 22 May 07 gregory 646                     DF_user.addNewValue("PERMISSIONS", "");
741 10 Oct 06 olle 647                     DF_user.addNewLine();
741 10 Oct 06 olle 648                     DF_user.addNewComment("Your aliases");
1652 22 May 07 gregory 649                     DF_user.addNewValue("ALIASES", "");
741 10 Oct 06 olle 650                     DF_user.addNewLine();
741 10 Oct 06 olle 651                     DF_user.addNewLine();
741 10 Oct 06 olle 652
1652 22 May 07 gregory 653                     ShowFTPSetupPages
1652 22 May 07 gregory 654                         .showReloadUserFrame(theOutput);
1652 22 May 07 gregory 655                     ShowFTPSetupPages
1652 22 May 07 gregory 656                         .showAlertInfo(
1652 22 May 07 gregory 657                             theOutput,
1652 22 May 07 gregory 658                             "New account created!\\nFeel free to change settings for this account in the menu.");
1652 22 May 07 gregory 659                   } else {
1652 22 May 07 gregory 660                     ShowFTPSetupPages
1652 22 May 07 gregory 661                         .showAlertInfo(theOutput,
1652 22 May 07 gregory 662                             "Xerver could not create new account.\\nFile access denied.");
741 10 Oct 06 olle 663                   }
741 10 Oct 06 olle 664
741 10 Oct 06 olle 665                   DF_user.destroy();
1652 22 May 07 gregory 666                   DF_user = null;
741 10 Oct 06 olle 667                   UD_userDatabase.updateDatabase();
1652 22 May 07 gregory 668                 } else {
1652 22 May 07 gregory 669                   returnThisPage(s_dataFolder
1652 22 May 07 gregory 670                       + "WizAddNewUser.html", "text/html");
1652 22 May 07 gregory 671                   ShowFTPSetupPages
1652 22 May 07 gregory 672                       .showAlertInfo(
1652 22 May 07 gregory 673                           theOutput,
1652 22 May 07 gregory 674                           "The account was not created.\\nYou have entered two different passwords or an empty password.");
741 10 Oct 06 olle 675                 }
1652 22 May 07 gregory 676               } else {
1652 22 May 07 gregory 677                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 678                     + "WizAddNewUser.html", "text/html");
1652 22 May 07 gregory 679                 ShowFTPSetupPages
1652 22 May 07 gregory 680                     .showAlertInfo(
1652 22 May 07 gregory 681                         theOutput,
1652 22 May 07 gregory 682                         "The account was not created.\\nThe root you have entered is not a path to a valid directory.");
741 10 Oct 06 olle 683               }
1652 22 May 07 gregory 684             } else if (s_typeValue.equals("remove")) {
1652 22 May 07 gregory 685               if (!s_userValue.equals("guest")) {
1652 22 May 07 gregory 686                 boolean b_resultFromAction = DF_user
1652 22 May 07 gregory 687                     .deleteFile();
741 10 Oct 06 olle 688                 DF_user.destroy();
1652 22 May 07 gregory 689                 DF_user = null;
741 10 Oct 06 olle 690                 UD_userDatabase.updateDatabase();
741 10 Oct 06 olle 691
1652 22 May 07 gregory 692                 returnThisPage(s_dataFolder
1652 22 May 07 gregory 693                     + "WizChooseUser.html", "text/html");
1652 22 May 07 gregory 694                 ShowFTPSetupPages.showChooseUserScript(
1652 22 May 07 gregory 695                     theOutput, UD_userDatabase
1652 22 May 07 gregory 696                         .getAllUsers());
741 10 Oct 06 olle 697
1652 22 May 07 gregory 698                 if (!b_resultFromAction) {
1652 22 May 07 gregory 699                   ShowFTPSetupPages
1652 22 May 07 gregory 700                       .showAlertInfo(theOutput,
1652 22 May 07 gregory 701                           "Xerver could not remove account.\\nFile access denied.");
741 10 Oct 06 olle 702                 }
1652 22 May 07 gregory 703               } else // else guest can not be choosen
741 10 Oct 06 olle 704               {
741 10 Oct 06 olle 705                 ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 706               }
741 10 Oct 06 olle 707             }
1652 22 May 07 gregory 708           } else // An invalid request has been made...
741 10 Oct 06 olle 709           {
741 10 Oct 06 olle 710             ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 711           }
1652 22 May 07 gregory 712         } else if (s_actionValue.equals("chooseDirectory")) {
741 10 Oct 06 olle 713           showHeaderData("text/html");
1652 22 May 07 gregory 714           MyLS.showChooseDirectory(theOutput, MyHT_allDataFromQuery
1652 22 May 07 gregory 715               .giveValueByIndex("currentPath")); // Note:
1652 22 May 07 gregory 716                                 // "MyHT_allDataFromQuery.giveValueByIndex("currentPath")"
1652 22 May 07 gregory 717                                 // might be
1652 22 May 07 gregory 718                                 // null. If it's
1652 22 May 07 gregory 719                                 // null it means
1652 22 May 07 gregory 720                                 // the root
1652 22 May 07 gregory 721                                 // shall be
1652 22 May 07 gregory 722                                 // showed.
1652 22 May 07 gregory 723         } else if (s_actionValue.equals("wizardEmpty")) {
1652 22 May 07 gregory 724           returnThisPage(s_dataFolder + "WizEmpty.html", "text/html");
1652 22 May 07 gregory 725         } else if (s_actionValue.equals("wizardGeneralSettings")) {
1652 22 May 07 gregory 726           returnThisPage(s_dataFolder + "WizGeneralSettings.html",
1652 22 May 07 gregory 727               "text/html");
741 10 Oct 06 olle 728           ShowFTPSetupPages.showGeneralInfo(theOutput, FTPS_settings);
1652 22 May 07 gregory 729         } else if (s_actionValue.equals("wizardAdvancedSettings")) {
1652 22 May 07 gregory 730           returnThisPage(s_dataFolder + "WizAdvancedSettings.html",
1652 22 May 07 gregory 731               "text/html");
1652 22 May 07 gregory 732           ShowFTPSetupPages
1652 22 May 07 gregory 733               .showAdvancedInfo(theOutput, FTPS_settings);
1652 22 May 07 gregory 734         } else if (s_actionValue.equals("wizardAddUserIntro")) {
1652 22 May 07 gregory 735           returnThisPage(s_dataFolder + "WizAddUserIntro.html",
1652 22 May 07 gregory 736               "text/html");
1652 22 May 07 gregory 737         } else if (s_actionValue.equals("wizardAddNewUser")) {
1652 22 May 07 gregory 738           returnThisPage(s_dataFolder + "WizAddNewUser.html",
1652 22 May 07 gregory 739               "text/html");
1652 22 May 07 gregory 740         } else if (s_actionValue.equals("wizardChooseUser")) {
1652 22 May 07 gregory 741           returnThisPage(s_dataFolder + "WizChooseUser.html",
1652 22 May 07 gregory 742               "text/html");
1652 22 May 07 gregory 743           ShowFTPSetupPages.showChooseUserScript(theOutput,
1652 22 May 07 gregory 744               UD_userDatabase.getAllUsers());
1652 22 May 07 gregory 745         } else if (s_actionValue.equals("wizardSetRoot")) {
1652 22 May 07 gregory 746           returnThisPage(s_dataFolder + "WizSetRoot.html",
1652 22 May 07 gregory 747               "text/html");
1652 22 May 07 gregory 748           ShowFTPSetupPages.showRootInfo(theOutput, UD_userDatabase
1652 22 May 07 gregory 749               .getUserData(s_userValue));
1652 22 May 07 gregory 750         } else if (s_actionValue.equals("wizardSetAliases")) {
1652 22 May 07 gregory 751           returnThisPage(s_dataFolder + "WizSetAliases.html",
1652 22 May 07 gregory 752               "text/html");
1652 22 May 07 gregory 753           ShowFTPSetupPages.showAliasesInfo(theOutput,
1652 22 May 07 gregory 754               UD_userDatabase.getUserData(s_userValue));
1652 22 May 07 gregory 755         } else if (s_actionValue.equals("wizardSetPermissions")) {
1652 22 May 07 gregory 756           returnThisPage(s_dataFolder + "WizSetPermissions.html",
1652 22 May 07 gregory 757               "text/html");
1652 22 May 07 gregory 758           ShowFTPSetupPages.showPermissionsInfo(theOutput,
1652 22 May 07 gregory 759               UD_userDatabase.getUserData(s_userValue));
1652 22 May 07 gregory 760         } else if (s_actionValue.equals("wizardSetPassword")) {
1652 22 May 07 gregory 761           returnThisPage(s_dataFolder + "WizSetPassword.html",
1652 22 May 07 gregory 762               "text/html");
1652 22 May 07 gregory 763           ShowFTPSetupPages.showPasswordInfo(theOutput,
1652 22 May 07 gregory 764               UD_userDatabase.getUserData(s_userValue));
1652 22 May 07 gregory 765         } else if (s_actionValue.equals("wizardUserFrames")) {
1652 22 May 07 gregory 766           returnThisPage(s_dataFolder + "WizUserFrames.html",
1652 22 May 07 gregory 767               "text/html");
1652 22 May 07 gregory 768         } else if (s_actionValue.equals("wizardMenu")) {
1652 22 May 07 gregory 769           returnThisPage(s_dataFolder + "WizMenu.html", "text/html");
1652 22 May 07 gregory 770         } else if (s_actionValue.equals("wizardFrames")) {
1652 22 May 07 gregory 771           returnThisPage(s_dataFolder + "WizFrames.html", "text/html");
1652 22 May 07 gregory 772         } else if (s_actionValue.equals("showLogo")) {
1652 22 May 07 gregory 773           returnThisPage(s_dataFolder + "imagelogo.gif", "image/gif");
1652 22 May 07 gregory 774         } else if (s_actionValue.equals("showBigWizard")) {
1652 22 May 07 gregory 775           returnThisPage(s_dataFolder + "imagewizardbig.gif",
1652 22 May 07 gregory 776               "image/gif");
1652 22 May 07 gregory 777         } else if (s_actionValue.equals("showSmallWizard")) {
1652 22 May 07 gregory 778           returnThisPage(s_dataFolder + "imagewizardsmall.gif",
1652 22 May 07 gregory 779               "image/gif");
1652 22 May 07 gregory 780         } else if (s_actionValue.equals("showImageRecycleBin")) {
1652 22 May 07 gregory 781           returnThisPage(s_dataFolder + "imagerecyclebin.gif",
1652 22 May 07 gregory 782               "image/gif");
1652 22 May 07 gregory 783         } else if (s_actionValue.equals("showWizardHelp")) {
1652 22 May 07 gregory 784           returnThisPage(s_dataFolder + "WizardHelp.html",
1652 22 May 07 gregory 785               "text/html");
1652 22 May 07 gregory 786         } else if (s_actionValue.equals("showStyleSheets")) {
1652 22 May 07 gregory 787           returnThisPage(s_dataFolder + "style.css", "text/html");
1652 22 May 07 gregory 788         } else // else guest can not be choosen
741 10 Oct 06 olle 789         {
741 10 Oct 06 olle 790           ShowFTPSetupPages.showInvalidrequest(theOutput);
741 10 Oct 06 olle 791         }
1652 22 May 07 gregory 792       } else {
741 10 Oct 06 olle 793         showHeaderData("text/html");
1652 22 May 07 gregory 794         ShowFTPSetupPages.showWelcomePage(theOutput); // No "action"
1652 22 May 07 gregory 795                                 // has been set
741 10 Oct 06 olle 796       }
741 10 Oct 06 olle 797
741 10 Oct 06 olle 798       yield();
1652 22 May 07 gregory 799       sleep(125); // Be safe, don't close before all data has been sent
741 10 Oct 06 olle 800
741 10 Oct 06 olle 801       theOutput.flush();
741 10 Oct 06 olle 802       theOutput.close();
1652 22 May 07 gregory 803     } catch (Exception e) {
1652 22 May 07 gregory 804       if (b_showErrors)
1652 22 May 07 gregory 805         System.out
1652 22 May 07 gregory 806             .println("An error occured @ getRequestInformation:\n"
1652 22 May 07 gregory 807                 + e);
1652 22 May 07 gregory 808     }
741 10 Oct 06 olle 809   }
741 10 Oct 06 olle 810
741 10 Oct 06 olle 811   void getRequestInformation()// throws IOException
741 10 Oct 06 olle 812   {
741 10 Oct 06 olle 813     try {
1652 22 May 07 gregory 814       String[] firstLineIndata;
741 10 Oct 06 olle 815
1652 22 May 07 gregory 816       br_theInputWeGetFromBrowser = new BufferedReader(
1652 22 May 07 gregory 817           new InputStreamReader(so_userConnection.getInputStream()));
1652 22 May 07 gregory 818       firstLineIndata = MyString.makeArrayOfString(
1652 22 May 07 gregory 819           br_theInputWeGetFromBrowser.readLine(), " "); // Opera:
1652 22 May 07 gregory 820                                   // "GET
1652 22 May 07 gregory 821                                   // /mapp/fil.txt
1652 22 May 07 gregory 822                                   // HTTP/1.1"
1652 22 May 07 gregory 823       s_requestMethod = firstLineIndata[0]; // "GET" eller "GET/"
741 10 Oct 06 olle 824
1652 22 May 07 gregory 825       s_requestDocument = firstLineIndata[1];
741 10 Oct 06 olle 826
741 10 Oct 06 olle 827       if (s_requestDocument.startsWith("/?"))
1652 22 May 07 gregory 828         s_allData = s_requestDocument.substring(2); // Ignore the first
1652 22 May 07 gregory 829                               // /?, but get
1652 22 May 07 gregory 830                               // everything else
741 10 Oct 06 olle 831       else
1652 22 May 07 gregory 832         s_allData = s_requestDocument.substring(1); // Ignore the first
1652 22 May 07 gregory 833                               // /, but get
1652 22 May 07 gregory 834                               // everything else
741 10 Oct 06 olle 835
1652 22 May 07 gregory 836     } catch (Exception e) {
1652 22 May 07 gregory 837       if (b_showErrors)
1652 22 May 07 gregory 838         System.out
1652 22 May 07 gregory 839             .println("An error occured @ getRequestInformation:\n"
1652 22 May 07 gregory 840                 + e.getMessage());
1652 22 May 07 gregory 841     }
741 10 Oct 06 olle 842   }
741 10 Oct 06 olle 843
1652 22 May 07 gregory 844   private void createVariables() // Returns true if everything went OK
741 10 Oct 06 olle 845   {
1652 22 May 07 gregory 846     MyHT_allDataFromQuery = new MyHashTable(s_allData, "&", "=");
741 10 Oct 06 olle 847     MyHT_allDataFromQuery.unescapeMakePlusesIntoSpacesAllValues();
741 10 Oct 06 olle 848     getSettingsFromFile();
741 10 Oct 06 olle 849   }
741 10 Oct 06 olle 850
1652 22 May 07 gregory 851   private void getSettingsFromFile() {
741 10 Oct 06 olle 852     try {
1652 22 May 07 gregory 853       if (FTPS_settings == null)
1652 22 May 07 gregory 854         FTPS_settings = FTPServer.getFTPSettings();
741 10 Oct 06 olle 855
1652 22 May 07 gregory 856       UD_userDatabase = FileAccess.getDataBase();
1652 22 May 07 gregory 857       if (UD_userDatabase == null) {
741 10 Oct 06 olle 858         FileAccess.createDataBase();
1652 22 May 07 gregory 859         UD_userDatabase = FileAccess.getDataBase();
741 10 Oct 06 olle 860       }
1652 22 May 07 gregory 861     } catch (Exception e) {
1652 22 May 07 gregory 862       if (b_showErrors)
1652 22 May 07 gregory 863         System.out.println("An error occured @ getSettingsFromFile:\n"
1652 22 May 07 gregory 864             + e.getMessage());
1652 22 May 07 gregory 865     }
741 10 Oct 06 olle 866   }
741 10 Oct 06 olle 867
1652 22 May 07 gregory 868   private void showHeaderData(String contentType) {
1652 22 May 07 gregory 869     try {
1652 22 May 07 gregory 870       theOutput.writeBytes("HTTP/1.1 " + s_errorStatus + " \r\nDate: "
1652 22 May 07 gregory 871           + df_dateFormat.format(d_dateToday) + " \r\n" + "Server: "
1652 22 May 07 gregory 872           + XerverKernel.getXerverName()
1652 22 May 07 gregory 873           + " \r\nConnection: close \r\n"
1652 22 May 07 gregory 874           + "Pragma: no-cache \r\nCache-Control: no-cache \r\n"
1652 22 May 07 gregory 875           + "Location: / \r\n" + "Content-Type: " + contentType
1652 22 May 07 gregory 876           + " \r\n\r\n");
1652 22 May 07 gregory 877     } catch (Exception e) {
1652 22 May 07 gregory 878       if (b_showErrors)
1652 22 May 07 gregory 879         System.out.println("An error occured @ returnThisPage:\n"
1652 22 May 07 gregory 880             + e.getMessage());
1652 22 May 07 gregory 881     }
741 10 Oct 06 olle 882   }
741 10 Oct 06 olle 883
1652 22 May 07 gregory 884   private void returnThisPage(String documentToReturn, String contentType)// throws
1652 22 May 07 gregory 885                                       // IOException
741 10 Oct 06 olle 886   {
1652 22 May 07 gregory 887     FileInputStream fileStreamed = null;
741 10 Oct 06 olle 888
1652 22 May 07 gregory 889     try {
741 10 Oct 06 olle 890       showHeaderData(contentType);
1652 22 May 07 gregory 891       File theFile = new File(documentToReturn);
1652 22 May 07 gregory 892       fileStreamed = new FileInputStream(theFile);
741 10 Oct 06 olle 893
1652 22 May 07 gregory 894       byte[] myBuffer = new byte[8192];
741 10 Oct 06 olle 895       int n;
1652 22 May 07 gregory 896       while ((n = fileStreamed.read(myBuffer)) != -1)
1652 22 May 07 gregory 897         theOutput.write(myBuffer, 0, n);
741 10 Oct 06 olle 898
741 10 Oct 06 olle 899       yield();
1652 22 May 07 gregory 900       sleep(125); // Be safe, don't close before all data has been sent
741 10 Oct 06 olle 901
1652 22 May 07 gregory 902       // fileStreamed.close();
1652 22 May 07 gregory 903     } catch (Exception e) {
1652 22 May 07 gregory 904       if (b_showErrors)
1652 22 May 07 gregory 905         System.out.println("An error occured @ returnThisPage:\n"
1652 22 May 07 gregory 906             + e.getMessage());
1652 22 May 07 gregory 907     }
741 10 Oct 06 olle 908
1652 22 May 07 gregory 909     try {
1652 22 May 07 gregory 910       if (fileStreamed != null) // If fileStreamed "holds" a file
741 10 Oct 06 olle 911       {
1652 22 May 07 gregory 912         fileStreamed.close(); // Important: This must be reached no
1652 22 May 07 gregory 913                     // matter what! Even if an exception
1652 22 May 07 gregory 914                     // occurs in the try block, whis must be
1652 22 May 07 gregory 915                     // reached. Otherwise the file will be
1652 22 May 07 gregory 916                     // locked by Xerver (locked by Java.exe)
1652 22 May 07 gregory 917                     // until the garbage collector is runned
1652 22 May 07 gregory 918                     // (and you don't know when it will run)
1652 22 May 07 gregory 919                     // and detects that the file (the object
1652 22 May 07 gregory 920                     // "fileStreamed") is no longer
1652 22 May 07 gregory 921                     // referenced from anywhere else and it
1652 22 May 07 gregory 922                     // release the file by automatic. Until
1652 22 May 07 gregory 923                     // this happenes, no other application
1652 22 May 07 gregory 924                     // can write to or rename this file
1652 22 May 07 gregory 925                     // (however, this problem is solved with
1652 22 May 07 gregory 926                     // this line).
741 10 Oct 06 olle 927       }
1652 22 May 07 gregory 928     } catch (Exception e) {
741 10 Oct 06 olle 929       if (b_showErrors)
1652 22 May 07 gregory 930         System.out.println("An error occured @ writeFileToStream:\n"
1652 22 May 07 gregory 931             + e.getMessage());
741 10 Oct 06 olle 932     }
741 10 Oct 06 olle 933   }
741 10 Oct 06 olle 934 }