client/ftpd/src/se/lu/thep/coreftpd/webserver/ShowSetupPages.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.webserver;
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 import java.io.DataOutputStream;
741 10 Oct 06 olle 60 import java.io.File;
741 10 Oct 06 olle 61 import java.text.DateFormat;
741 10 Oct 06 olle 62 import java.util.Arrays;
741 10 Oct 06 olle 63 import java.util.Date;
741 10 Oct 06 olle 64
741 10 Oct 06 olle 65 /**
1652 22 May 07 gregory 66  * 
1652 22 May 07 gregory 67  * <B>How to use (example):</B> <BR>
741 10 Oct 06 olle 68  * <CODE>ShowSetupPages.showSetupWizStep5(theOutput, s_runnableExtensions);</CODE>
741 10 Oct 06 olle 69  * <BR>
741 10 Oct 06 olle 70  * <BR>
1652 22 May 07 gregory 71  * This class contains only static members. <BR>
741 10 Oct 06 olle 72  * Members in this class are called from <CODE>SetupNewConnection</CODE>.
741 10 Oct 06 olle 73  * <BR>
1652 22 May 07 gregory 74  * After a HTML-setup page is read and showed a member in this class is called,
1652 22 May 07 gregory 75  * which write a piece of JavaScript to the bottom of the HTML-page. <BR>
1652 22 May 07 gregory 76  * The JavaScript shows which the current settings are (for example: when you
1652 22 May 07 gregory 77  * load the setup page where you choose port number, a piece of JavaScript
1652 22 May 07 gregory 78  * changes the value in the "port number"-field to the port number that is used
1652 22 May 07 gregory 79  * (for example 5080)). <BR>
1652 22 May 07 gregory 80  * This class also contains members that show the "Welcome to Xerver Setup"-page
1652 22 May 07 gregory 81  * and similar pages.
1652 22 May 07 gregory 82  * 
741 10 Oct 06 olle 83  * @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a>
741 10 Oct 06 olle 84  * @version 1.0
741 10 Oct 06 olle 85  */
741 10 Oct 06 olle 86
1652 22 May 07 gregory 87 final public class ShowSetupPages {
1652 22 May 07 gregory 88   private static final boolean b_showErrors = false;
741 10 Oct 06 olle 89
1652 22 May 07 gregory 90   static public void showWelcomePage(DataOutputStream os) {
1652 22 May 07 gregory 91     try {
1652 22 May 07 gregory 92       os.writeBytes("<HTML>");
1652 22 May 07 gregory 93       os.writeBytes("<HEAD>");
1652 22 May 07 gregory 94       os.writeBytes("<TITLE>Welcome to Xerver Setup!</TITLE>");
741 10 Oct 06 olle 95
1652 22 May 07 gregory 96       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 97       os.writeBytes("function openXerverSetup()");
1652 22 May 07 gregory 98       os.writeBytes("{");
1652 22 May 07 gregory 99       os
1652 22 May 07 gregory 100           .writeBytes("    addDirWindow=window.open(\"/action=wizardFrames\",\"XerverSetup\",\"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=630,height=465\");");
1652 22 May 07 gregory 101       os.writeBytes("    addDirWindow.focus();");
1652 22 May 07 gregory 102       os.writeBytes("}");
1652 22 May 07 gregory 103       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 104       os.writeBytes("</HEAD>");
1652 22 May 07 gregory 105       os.writeBytes("<BODY BGCOLOR=white TEXT=black>");
1652 22 May 07 gregory 106       os.writeBytes("<TABLE WIDTH='500' BORDER='0'>");
1652 22 May 07 gregory 107       os.writeBytes("<TR><TD>");
1652 22 May 07 gregory 108       os.writeBytes("<CENTER>");
1652 22 May 07 gregory 109       os.writeBytes("<A HREF=\"javascript:openXerverSetup()\">");
1652 22 May 07 gregory 110       os
1652 22 May 07 gregory 111           .writeBytes("<IMG SRC='?action=showLogo' BORDER=0 ALT=\"Xerver Logo\">");
1652 22 May 07 gregory 112       os.writeBytes("</A>");
1652 22 May 07 gregory 113       os.writeBytes("<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>");
1652 22 May 07 gregory 114       os.writeBytes("<TR><TD VALIGN=top>");
1652 22 May 07 gregory 115       os.writeBytes("<CENTER>");
1652 22 May 07 gregory 116       os
1652 22 May 07 gregory 117           .writeBytes("<A HREF=\"javascript:openXerverSetup()\" STYLE=\"text-decoration:none;\">");
1652 22 May 07 gregory 118       os
1652 22 May 07 gregory 119           .writeBytes("<FONT FACE='arial,verdana' SIZE='+2'><B>Start Setup</B></FONT>");
1652 22 May 07 gregory 120       os.writeBytes("</A>");
1652 22 May 07 gregory 121       os.writeBytes("</CENTER>");
1652 22 May 07 gregory 122       os.writeBytes("<BR><BR><BR>");
1652 22 May 07 gregory 123       os.writeBytes("<FONT FACE='arial,verdana' SIZE='-1'>");
1652 22 May 07 gregory 124       os.writeBytes("<B>");
1652 22 May 07 gregory 125       os.writeBytes("Xerver Wizard will guide you<BR>");
1652 22 May 07 gregory 126       os.writeBytes("through this setup program.<P>");
1652 22 May 07 gregory 127       os.writeBytes("</B>");
1652 22 May 07 gregory 128       os.writeBytes("</TD><TD>");
1652 22 May 07 gregory 129       os.writeBytes("<A HREF=\"javascript:openXerverSetup()\">");
1652 22 May 07 gregory 130       os
1652 22 May 07 gregory 131           .writeBytes("<IMG SRC=\"?action=showBigWizard\" BORDER=0 ALT=\"Xerver Wizard\">");
1652 22 May 07 gregory 132       os.writeBytes("</A>");
1652 22 May 07 gregory 133       os.writeBytes("</FONT>");
1652 22 May 07 gregory 134       os.writeBytes("</TD></TR>");
1652 22 May 07 gregory 135       os.writeBytes("</TABLE>");
1652 22 May 07 gregory 136       os.writeBytes("</CENTER>");
1652 22 May 07 gregory 137       os.writeBytes("</TD></TR>");
1652 22 May 07 gregory 138       os.writeBytes("</TABLE>");
1652 22 May 07 gregory 139       os.writeBytes("</BODY>");
1652 22 May 07 gregory 140       os.writeBytes("</HTML>");
1652 22 May 07 gregory 141     } catch (Exception e) {
1652 22 May 07 gregory 142       if (b_showErrors)
1652 22 May 07 gregory 143         System.out.println("An error has occured @ showWelcomePage:\n"
1652 22 May 07 gregory 144             + e.getMessage());
1652 22 May 07 gregory 145     }
741 10 Oct 06 olle 146   }
741 10 Oct 06 olle 147
1652 22 May 07 gregory 148   static public void setupDone(DataOutputStream os) {
1652 22 May 07 gregory 149     try {
1652 22 May 07 gregory 150       os.writeBytes("<HTML>");
1652 22 May 07 gregory 151       os.writeBytes("<HEAD>");
1652 22 May 07 gregory 152       os.writeBytes("<TITLE>Welcome to Xerver Setup!</TITLE>");
1652 22 May 07 gregory 153       os.writeBytes("</HEAD>");
1652 22 May 07 gregory 154       os.writeBytes("<BODY BGCOLOR=white TEXT=black>");
1652 22 May 07 gregory 155       os.writeBytes("<TABLE WIDTH='500' BORDER='0'>");
1652 22 May 07 gregory 156       os.writeBytes("<TR><TD>");
1652 22 May 07 gregory 157       os.writeBytes("<FONT FACE='arial,verdana' SIZE='-1'>");
1652 22 May 07 gregory 158       os.writeBytes("<P>");
1652 22 May 07 gregory 159       os.writeBytes("<CENTER>");
1652 22 May 07 gregory 160       os.writeBytes("<IMG SRC='?action=showLogo' BORDER=0>");
1652 22 May 07 gregory 161       os.writeBytes("<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>");
1652 22 May 07 gregory 162       os.writeBytes("<TR><TD>");
1652 22 May 07 gregory 163       os.writeBytes("<B>");
1652 22 May 07 gregory 164       os.writeBytes("<FONT FACE='arial,verdana' SIZE='-1'>");
1652 22 May 07 gregory 165       os.writeBytes("The setup is now finished.<BR>");
1652 22 May 07 gregory 166       os.writeBytes("Please enjoy Xerver!<BR>");
1652 22 May 07 gregory 167       os.writeBytes("<BR>");
1652 22 May 07 gregory 168       os.writeBytes("Xerver is a free<BR>");
1652 22 May 07 gregory 169       os.writeBytes("open source software.<BR>");
1652 22 May 07 gregory 170       os.writeBytes("Free support is available at:<BR>");
1652 22 May 07 gregory 171       os
1652 22 May 07 gregory 172           .writeBytes("<A HREF=\"http://www.JavaScript.nu/xerver/\" TARGET=\"_blank\">http://www.JavaScript.nu/xerver/</A><BR>");
1652 22 May 07 gregory 173       os.writeBytes("<P>");
1652 22 May 07 gregory 174       os.writeBytes("<BR>");
1652 22 May 07 gregory 175       os
1652 22 May 07 gregory 176           .writeBytes("<FONT COLOR=red>If Xerver is not already running,<BR>");
1652 22 May 07 gregory 177       os.writeBytes("Xerver will be started now...</FONT>");
1652 22 May 07 gregory 178       os.writeBytes("<P>");
741 10 Oct 06 olle 179
1652 22 May 07 gregory 180       if (File.separator.equals("\\")) // Is using windows
1652 22 May 07 gregory 181       {
1652 22 May 07 gregory 182         os.writeBytes("Next time you want to start Xerver, <BR>");
1652 22 May 07 gregory 183         os.writeBytes("just run \"StartXerver.exe\". <BR>");
1652 22 May 07 gregory 184         os
1652 22 May 07 gregory 185             .writeBytes("(You can also start Xerver from a prompt with \"java Start\".)");
1652 22 May 07 gregory 186       } else {
1652 22 May 07 gregory 187         os.writeBytes("Next time you want to start Xerver, <BR>");
1652 22 May 07 gregory 188         os
1652 22 May 07 gregory 189             .writeBytes("just open a prompt, locate yourself in the Xerver-folder and enter \"java Start\".");
1652 22 May 07 gregory 190       }
1652 22 May 07 gregory 191       os.writeBytes("</FONT>");
1652 22 May 07 gregory 192       os.writeBytes("</B>");
1652 22 May 07 gregory 193       os.writeBytes("<BR><BR><BR><BR><BR>");
1652 22 May 07 gregory 194       os.writeBytes("</TD><TD>");
1652 22 May 07 gregory 195       os.writeBytes("<IMG SRC='?action=showBigWizard' BORDER=0>");
1652 22 May 07 gregory 196       os.writeBytes("</TD></TR>");
1652 22 May 07 gregory 197       os.writeBytes("</TABLE>");
1652 22 May 07 gregory 198       os.writeBytes("</CENTER>");
1652 22 May 07 gregory 199       os.writeBytes("</FONT>");
1652 22 May 07 gregory 200       os.writeBytes("</TD></TR>");
1652 22 May 07 gregory 201       os.writeBytes("</TABLE>");
1652 22 May 07 gregory 202       os.writeBytes("</BODY>");
1652 22 May 07 gregory 203       os.writeBytes("</HTML>");
1652 22 May 07 gregory 204     } catch (Exception e) {
1652 22 May 07 gregory 205       if (b_showErrors)
1652 22 May 07 gregory 206         System.out.println("An error has occured @ setupDone:\n"
1652 22 May 07 gregory 207             + e.getMessage());
741 10 Oct 06 olle 208     }
741 10 Oct 06 olle 209   }
741 10 Oct 06 olle 210
1652 22 May 07 gregory 211   static public void showSetupWizStep1(DataOutputStream os, String portNr,
1652 22 May 07 gregory 212       String s_allowFolderListing, String s_shareHiddenFiles,
1652 22 May 07 gregory 213       String s_allowCGIScript) {
1652 22 May 07 gregory 214     try {
1652 22 May 07 gregory 215       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 216       os.writeBytes("document.myForm.portNr.value=\"" + portNr + "\";");
1652 22 May 07 gregory 217       os.writeBytes("document.myForm.allowFolderListing.selectedIndex="
1652 22 May 07 gregory 218           + s_allowFolderListing + ";");
1652 22 May 07 gregory 219       os.writeBytes("document.myForm.shareHiddenFiles.selectedIndex="
1652 22 May 07 gregory 220           + s_shareHiddenFiles + ";");
1652 22 May 07 gregory 221       os.writeBytes("document.myForm.allowCGIScript.selectedIndex="
1652 22 May 07 gregory 222           + s_allowCGIScript + ";");
1652 22 May 07 gregory 223       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 224     } catch (Exception e) {
1652 22 May 07 gregory 225       if (b_showErrors)
1652 22 May 07 gregory 226         System.out
1652 22 May 07 gregory 227             .println("An error has occured @ showSetupWizStep1:\n"
1652 22 May 07 gregory 228                 + e.getMessage());
1652 22 May 07 gregory 229     }
741 10 Oct 06 olle 230   }
741 10 Oct 06 olle 231
1652 22 May 07 gregory 232   static public void showSetupWizStep2(DataOutputStream os,
1652 22 May 07 gregory 233       String s_sharedPaths) {
1652 22 May 07 gregory 234     try {
1652 22 May 07 gregory 235       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 236       os.writeBytes("createFolderList(\""
1652 22 May 07 gregory 237           + makeJSFriendly(s_sharedPaths, "\"") + "\");");
1652 22 May 07 gregory 238       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 239     } catch (Exception e) {
1652 22 May 07 gregory 240       if (b_showErrors)
1652 22 May 07 gregory 241         System.out
1652 22 May 07 gregory 242             .println("An error has occured @ showSetupWizStep2:\n"
1652 22 May 07 gregory 243                 + e.getMessage());
1652 22 May 07 gregory 244     }
741 10 Oct 06 olle 245   }
741 10 Oct 06 olle 246
1652 22 May 07 gregory 247   static public void showSetupWizStep3(DataOutputStream os,
1652 22 May 07 gregory 248       String s_sharedPaths, String s_rootPath) {
1652 22 May 07 gregory 249     try {
1652 22 May 07 gregory 250       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 251       if (s_rootPath.equals(""))
1652 22 May 07 gregory 252         os.writeBytes("suggestRoot(\""
1652 22 May 07 gregory 253             + makeJSFriendly(s_sharedPaths, "\"") + "\");");
1652 22 May 07 gregory 254       else
1652 22 May 07 gregory 255         os.writeBytes("document.myForm.rootPath.value=\""
1652 22 May 07 gregory 256             + makeJSFriendly(s_rootPath, "\"") + "\";");
1652 22 May 07 gregory 257       os.writeBytes("");
1652 22 May 07 gregory 258       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 259     } catch (Exception e) {
1652 22 May 07 gregory 260       if (b_showErrors)
1652 22 May 07 gregory 261         System.out
1652 22 May 07 gregory 262             .println("An error has occured @ showSetupWizStep3:\n"
1652 22 May 07 gregory 263                 + e.getMessage());
1652 22 May 07 gregory 264     }
741 10 Oct 06 olle 265   }
741 10 Oct 06 olle 266
1652 22 May 07 gregory 267   static public void showSetupWizStep4(DataOutputStream os,
1652 22 May 07 gregory 268       String s_sharedPaths, String s_aliasNames) {
1652 22 May 07 gregory 269     try {
1652 22 May 07 gregory 270       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 271       os.writeBytes("createAliasList(\""
1652 22 May 07 gregory 272           + makeJSFriendly(s_sharedPaths, "\"") + "\",\""
1652 22 May 07 gregory 273           + makeJSFriendly(s_aliasNames, "\"") + "\");");
1652 22 May 07 gregory 274       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 275     } catch (Exception e) {
1652 22 May 07 gregory 276       if (b_showErrors)
1652 22 May 07 gregory 277         System.out
1652 22 May 07 gregory 278             .println("An error has occured @ showSetupWizStep4:\n"
1652 22 May 07 gregory 279                 + e.getMessage());
1652 22 May 07 gregory 280     }
741 10 Oct 06 olle 281   }
741 10 Oct 06 olle 282
1652 22 May 07 gregory 283   static public void showSetupWizStep5(DataOutputStream os,
1652 22 May 07 gregory 284       String s_runnableExtensions) {
1652 22 May 07 gregory 285     try {
1652 22 May 07 gregory 286       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 287       os.writeBytes("createRunnableExtList(\""
1652 22 May 07 gregory 288           + makeJSFriendly(s_runnableExtensions, "\"") + "\");");
1652 22 May 07 gregory 289       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 290     } catch (Exception e) {
1652 22 May 07 gregory 291       if (b_showErrors)
1652 22 May 07 gregory 292         System.out
1652 22 May 07 gregory 293             .println("An error has occured @ showSetupWizStep5:\n"
1652 22 May 07 gregory 294                 + e.getMessage());
1652 22 May 07 gregory 295     }
741 10 Oct 06 olle 296   }
741 10 Oct 06 olle 297
1652 22 May 07 gregory 298   static public void showSetupWizStep6(DataOutputStream os,
1652 22 May 07 gregory 299       String s_indexNames) {
1652 22 May 07 gregory 300     try {
1652 22 May 07 gregory 301       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 302       os.writeBytes("createIndexFileList(\""
1652 22 May 07 gregory 303           + makeJSFriendly(s_indexNames, "\"") + "\");");
1652 22 May 07 gregory 304       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 305     } catch (Exception e) {
1652 22 May 07 gregory 306       if (b_showErrors)
1652 22 May 07 gregory 307         System.out
1652 22 May 07 gregory 308             .println("An error has occured @ showSetupWizStep6:\n"
1652 22 May 07 gregory 309                 + e.getMessage());
1652 22 May 07 gregory 310     }
741 10 Oct 06 olle 311   }
741 10 Oct 06 olle 312
1652 22 May 07 gregory 313   static public void showSetupWizStep7(DataOutputStream os,
1652 22 May 07 gregory 314       String s_fileExtensions, String s_allowTheseFileExtensions) {
1652 22 May 07 gregory 315     try {
1652 22 May 07 gregory 316       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 317       os.writeBytes("createFileExtList(\""
1652 22 May 07 gregory 318           + makeJSFriendly(s_fileExtensions, "\"") + "\");");
1652 22 May 07 gregory 319       os
1652 22 May 07 gregory 320           .writeBytes("document.myForm.allowTheseFileExtensions.selectedIndex="
1652 22 May 07 gregory 321               + s_allowTheseFileExtensions + ";");
1652 22 May 07 gregory 322       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 323     } catch (Exception e) {
1652 22 May 07 gregory 324       if (b_showErrors)
1652 22 May 07 gregory 325         System.out
1652 22 May 07 gregory 326             .println("An error has occured @ showSetupWizStep7:\n"
1652 22 May 07 gregory 327                 + e.getMessage());
1652 22 May 07 gregory 328     }
741 10 Oct 06 olle 329   }
741 10 Oct 06 olle 330
1652 22 May 07 gregory 331   static public void showSetupWizStep8(DataOutputStream os,
1652 22 May 07 gregory 332       String s_sharedPaths, String s_protectedFolders) {
1652 22 May 07 gregory 333     try {
1652 22 May 07 gregory 334       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 335       os.writeBytes("createProtectedList(\""
1652 22 May 07 gregory 336           + makeJSFriendly(s_sharedPaths, "\"") + "\",\""
1652 22 May 07 gregory 337           + makeJSFriendly(s_protectedFolders, "\"") + "\");");
1652 22 May 07 gregory 338       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 339     } catch (Exception e) {
1652 22 May 07 gregory 340       if (b_showErrors)
1652 22 May 07 gregory 341         System.out
1652 22 May 07 gregory 342             .println("An error has occured @ showSetupWizStep8:\n"
1652 22 May 07 gregory 343                 + e.getMessage());
1652 22 May 07 gregory 344     }
741 10 Oct 06 olle 345   }
741 10 Oct 06 olle 346
1652 22 May 07 gregory 347   static public void showSetupWizStep9(DataOutputStream os,
1652 22 May 07 gregory 348       String s_startupWindowMode) {
1652 22 May 07 gregory 349     try {
1652 22 May 07 gregory 350       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
1652 22 May 07 gregory 351       os.writeBytes("selectCorrectRadio('" + s_startupWindowMode + "');");
1652 22 May 07 gregory 352       os.writeBytes("</SCRIPT>");
1652 22 May 07 gregory 353     } catch (Exception e) {
1652 22 May 07 gregory 354       if (b_showErrors)
1652 22 May 07 gregory 355         System.out
1652 22 May 07 gregory 356             .println("An error has occured @ showSetupWizStep9:\n"
1652 22 May 07 gregory 357                 + e.getMessage());
1652 22 May 07 gregory 358     }
741 10 Oct 06 olle 359   }
741 10 Oct 06 olle 360
1652 22 May 07 gregory 361   static public void show401NotAuthorizedIsNotAccepted(DataOutputStream os,
1652 22 May 07 gregory 362       String s_encryptedPasswordGiven, DateFormat df_dateFormat) {
1652 22 May 07 gregory 363     try {
1652 22 May 07 gregory 364       os.writeBytes("HTTP/1.1 401 Not Authorized \r\nDate: "
1652 22 May 07 gregory 365           + df_dateFormat.format(new Date()) + " \r\n"
1652 22 May 07 gregory 366           + "WWW-Authenticate: Basic realm=\"X"
1652 22 May 07 gregory 367           + System.currentTimeMillis() + "X\" \r\n" + "Server: "
1652 22 May 07 gregory 368           + XerverKernel.getXerverName()
1652 22 May 07 gregory 369           + " \r\nConnection: close \r\n"
1652 22 May 07 gregory 370           + "Pragma: no-cache \r\nCache-Control: no-cache \r\n"
1652 22 May 07 gregory 371           + "Location: / \r\n" +
1652 22 May 07 gregory 372           // "Set-Cookie: hej=12345;\r\n"+
1652 22 May 07 gregory 373           "Content-Type: text/html \r\n\r\n");
1652 22 May 07 gregory 374       os
1652 22 May 07 gregory 375           .writeBytes("<HTML><HEAD><TITLE>Please reload this site...</TITLE></HEAD><BODY BGCOLOR=white TEXT=black>");
1652 22 May 07 gregory 376       os
1652 22 May 07 gregory 377           .writeBytes("Please reload this site and enter a username and a password...");
741 10 Oct 06 olle 378       os.writeBytes("</BODY></HTML>");
1652 22 May 07 gregory 379     } catch (Exception e) {
1652 22 May 07 gregory 380       if (b_showErrors)
1652 22 May 07 gregory 381         System.out
1652 22 May 07 gregory 382             .println("An error has occured @ show401NotAuthorizedIsNotAccepted:\n"
1652 22 May 07 gregory 383                 + e.getMessage());
1652 22 May 07 gregory 384     }
741 10 Oct 06 olle 385   }
741 10 Oct 06 olle 386
1652 22 May 07 gregory 387   static public void show401NotAuthorizedIsAccepted(DataOutputStream os,
1652 22 May 07 gregory 388       String s_encryptedPasswordGiven, DateFormat df_dateFormat) {
1652 22 May 07 gregory 389     try {
1652 22 May 07 gregory 390       os.writeBytes("HTTP/1.1 200 OK \r\nDate: "
1652 22 May 07 gregory 391           + df_dateFormat.format(new Date()) + " \r\n" + "Server: "
1652 22 May 07 gregory 392           + XerverKernel.getXerverName()
1652 22 May 07 gregory 393           + " \r\nConnection: close \r\n"
1652 22 May 07 gregory 394           + "Pragma: no-cache \r\nCache-Control: no-cache \r\n" +
1652 22 May 07 gregory 395           // "Location: "+s_requestedFolderLocation+" \r\n"+
1652 22 May 07 gregory 396           "Content-Type: text/html \r\n\r\n");
1652 22 May 07 gregory 397       os
1652 22 May 07 gregory 398           .writeBytes("<HTML><HEAD><TITLE>Password Generated...</TITLE></HEAD><BODY BGCOLOR=white TEXT=black>");
741 10 Oct 06 olle 399       os.writeBytes("<SCRIPT LANGUAGE=javascript>");
741 10 Oct 06 olle 400       os.writeBytes("data=unescape(location.search);");
1652 22 May 07 gregory 401       os
1652 22 May 07 gregory 402           .writeBytes("passNr=data.substring(data.indexOf('passNr=')+'passNr='.length,data.indexOf('passNr=')+'passNr='.length+1);");
741 10 Oct 06 olle 403       os.writeBytes("if (passNr==1)");
741 10 Oct 06 olle 404       os.writeBytes("{");
1652 22 May 07 gregory 405       os
1652 22 May 07 gregory 406           .writeBytes("parent.content.document.addProtWinForm.pass1.value='"
1652 22 May 07 gregory 407               + s_encryptedPasswordGiven + "';");
741 10 Oct 06 olle 408       os.writeBytes("}");
741 10 Oct 06 olle 409       os.writeBytes("else");
741 10 Oct 06 olle 410       os.writeBytes("{");
1652 22 May 07 gregory 411       os
1652 22 May 07 gregory 412           .writeBytes("parent.content.document.addProtWinForm.pass2.value='"
1652 22 May 07 gregory 413               + s_encryptedPasswordGiven + "';");
741 10 Oct 06 olle 414       os.writeBytes("}");
741 10 Oct 06 olle 415       os.writeBytes("</SCRIPT>");
741 10 Oct 06 olle 416       os.writeBytes("</HTML>");
1652 22 May 07 gregory 417     } catch (Exception e) {
1652 22 May 07 gregory 418       if (b_showErrors)
1652 22 May 07 gregory 419         System.out
1652 22 May 07 gregory 420             .println("An error has occured @ show401NotAuthorizedIsAccepted:\n"
1652 22 May 07 gregory 421                 + e.getMessage());
1652 22 May 07 gregory 422     }
741 10 Oct 06 olle 423   }
741 10 Oct 06 olle 424
1652 22 May 07 gregory 425   static public void showChooseDirectory(DataOutputStream os, String argPath) {
1652 22 May 07 gregory 426     try {
1652 22 May 07 gregory 427       String s_path = argPath;
1652 22 May 07 gregory 428       PathInfo PI_path = new PathInfo(s_path);
1652 22 May 07 gregory 429       File f_currentFolder = PI_path.getCurrentFolder(); // This is null
1652 22 May 07 gregory 430                                 // if "argPath"
1652 22 May 07 gregory 431                                 // given to the
1652 22 May 07 gregory 432                                 // constructor
1652 22 May 07 gregory 433                                 // is (1) null,
1652 22 May 07 gregory 434                                 // (2) "", (3)
1652 22 May 07 gregory 435                                 // an invalid
1652 22 May 07 gregory 436                                 // path or (4)
1652 22 May 07 gregory 437                                 // an unreadable
1652 22 May 07 gregory 438                                 // path, such as
1652 22 May 07 gregory 439                                 // A: without a
1652 22 May 07 gregory 440                                 // floppy disk.
1652 22 May 07 gregory 441       File[] af_allFiles = PI_path.getAllFiles();
1652 22 May 07 gregory 442       boolean directoryIsValid = PI_path.getDirectoryIsValid();
741 10 Oct 06 olle 443
1652 22 May 07 gregory 444       os
1652 22 May 07 gregory 445           .writeBytes("<HTML><HEAD>"
1652 22 May 07 gregory 446               + "<TITLE>Choose directory!</TITLE>"
1652 22 May 07 gregory 447               + "<SCRIPT LANGUAGE=javascript>"
1652 22 May 07 gregory 448               + "function chooseDir(path)"
1652 22 May 07 gregory 449               + "{"
1652 22 May 07 gregory 450               + "  if (opener==null || opener==\"undefined\")"
1652 22 May 07 gregory 451               + "  {"
1652 22 May 07 gregory 452               + "    alert(\"An error has occured: Please close the \\\"Choose a directory\\\" window and re-open again before you can choose a directory.\");"
1652 22 May 07 gregory 453               + "  }"
1652 22 May 07 gregory 454               + "  else"
1652 22 May 07 gregory 455               + "  {"
1652 22 May 07 gregory 456               + "    if (path.substring(path.length-1,path.length)!=\"/\" && path.substring(path.length-1,path.length)!=\"\\\\\")"
1652 22 May 07 gregory 457               + // Path is a normal folder, not a root... //If
1652 22 May 07 gregory 458                 // path is a root path already has an / (or \)
1652 22 May 07 gregory 459                 // in the end, but if path is just a normal
1652 22 May 07 gregory 460                 // folder there is no / (or \) in path
1652 22 May 07 gregory 461               "    {"
1652 22 May 07 gregory 462               + "      path+=\"\\"
1652 22 May 07 gregory 463               + File.separator
1652 22 May 07 gregory 464               + "\";"
1652 22 May 07 gregory 465               + // Will result in: path+="\\"; or path+="\/";
1652 22 May 07 gregory 466               "    }" + "    opener.dirChoosen(path);"
1652 22 May 07 gregory 467               + "    top.close();" + "  }" + "}" + "</SCRIPT>"
1652 22 May 07 gregory 468               + "</HEAD><BODY BGCOLOR=white TEXT=black>"
1652 22 May 07 gregory 469               + "<FONT FACE=\"tahoma, arial, verdana\">"
1652 22 May 07 gregory 470               + "<H2>Choose a directory");
1652 22 May 07 gregory 471       if (f_currentFolder != null && directoryIsValid)
1652 22 May 07 gregory 472         os.writeBytes(" [ " + f_currentFolder.toString() + " ]");
1652 22 May 07 gregory 473       os.writeBytes("</H2>");
741 10 Oct 06 olle 474
1652 22 May 07 gregory 475       if (!directoryIsValid) {
1652 22 May 07 gregory 476         os.writeBytes("Xerver had problems try to find or read <B>"
1652 22 May 07 gregory 477             + s_path + "</B>." + "<BR>"
1652 22 May 07 gregory 478             + "Listing your roots instead!" + "<P>");
1652 22 May 07 gregory 479       }
1652 22 May 07 gregory 480       os.writeBytes("Choose a directory by pressing the Choose-button."
1652 22 May 07 gregory 481           + "<BR>"
1652 22 May 07 gregory 482           + "Browse a directory by pressing the directory name."
1652 22 May 07 gregory 483           + "</FONT>" + "<P>" + "<PRE>");
741 10 Oct 06 olle 484
1652 22 May 07 gregory 485       if (f_currentFolder != null) // If [All roots are NOT being
1652 22 May 07 gregory 486                       // listed]...
1652 22 May 07 gregory 487       {
1652 22 May 07 gregory 488         os
1652 22 May 07 gregory 489             .writeBytes("<B>[<A HREF=\"javascript:chooseDir(\'"
1652 22 May 07 gregory 490                 + makeJSFriendly(f_currentFolder.toString(),
1652 22 May 07 gregory 491                     "'")
1652 22 May 07 gregory 492                 + "\');\" STYLE=\"text-decoration: none;\">Choose this folder</A>]&nbsp;&nbsp;&nbsp;"
1652 22 May 07 gregory 493                 + f_currentFolder.toString() + "</B>\r\n");
1652 22 May 07 gregory 494         os.writeBytes("\r\n");
741 10 Oct 06 olle 495
1652 22 May 07 gregory 496         File f_oneLevelUp = f_currentFolder.getParentFile();
1652 22 May 07 gregory 497         /*
1652 22 May 07 gregory 498          * if (File.separatorChar=='\\')//Windows... {
1652 22 May 07 gregory 499          * s_oneLevelUp=s_oneLevelUp.substring(0,s_oneLevelUp.length()-1).substring(0,s_oneLevelUp.lastIndexOf('\\')+1);
1652 22 May 07 gregory 500          * //"c:\aaa\bbb\" ==> "c:\aaa\", or "c:\aaa\bbb" ==>
1652 22 May 07 gregory 501          * "c:\aaa\"). } else //UNIX etc... {
1652 22 May 07 gregory 502          * s_oneLevelUp=s_oneLevelUp.substring(0,s_oneLevelUp.length()-1).substring(0,s_oneLevelUp.lastIndexOf('/')+1);
1652 22 May 07 gregory 503          * //"c:\aaa\bbb\" ==> "c:\aaa\", or "c:\aaa\bbb" ==>
1652 22 May 07 gregory 504          * "c:\aaa\"). }
1652 22 May 07 gregory 505          */
1652 22 May 07 gregory 506         if (f_oneLevelUp != null) // This is NOT root level, so show a
1652 22 May 07 gregory 507                       // ".." link
1652 22 May 07 gregory 508           os
1652 22 May 07 gregory 509               .writeBytes("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF='/action=chooseDirectory&currentPath="
1652 22 May 07 gregory 510                   + f_oneLevelUp.toString()
1652 22 May 07 gregory 511                   + "' STYLE=\"text-decoration: none;\">../</A>\r\n");
1652 22 May 07 gregory 512         else
1652 22 May 07 gregory 513           // This is the root letter, press ".." to show all drives
1652 22 May 07 gregory 514           os
1652 22 May 07 gregory 515               .writeBytes("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF='/action=chooseDirectory' STYLE=\"text-decoration: none;\">../</A>\r\n");
1652 22 May 07 gregory 516       }
741 10 Oct 06 olle 517
1652 22 May 07 gregory 518       Arrays.sort(af_allFiles);
1652 22 May 07 gregory 519       boolean tmpFoldersShown = false;
1652 22 May 07 gregory 520       for (int i = 0, allFilesLength = af_allFiles.length; i < allFilesLength; i++) {
1652 22 May 07 gregory 521         File tmpFile = af_allFiles[i];
1652 22 May 07 gregory 522         if (f_currentFolder == null || tmpFile.isDirectory()) // If
1652 22 May 07 gregory 523                                     // [it's
1652 22 May 07 gregory 524                                     // a
1652 22 May 07 gregory 525                                     // directory]
1652 22 May 07 gregory 526                                     // OR
1652 22 May 07 gregory 527                                     // [All
1652 22 May 07 gregory 528                                     // roots
1652 22 May 07 gregory 529                                     // are
1652 22 May 07 gregory 530                                     // being
1652 22 May 07 gregory 531                                     // listed]...
1652 22 May 07 gregory 532         {
1652 22 May 07 gregory 533           tmpFoldersShown = true;
1652 22 May 07 gregory 534           os
1652 22 May 07 gregory 535               .writeBytes("[<A HREF=\"javascript:chooseDir(\'"
1652 22 May 07 gregory 536                   + makeJSFriendly(tmpFile.toString(), "'")
1652 22 May 07 gregory 537                   + "\');\" STYLE=\"text-decoration: none;\">Choose</A>]&nbsp;&nbsp;&nbsp;<A HREF=\"/action=chooseDirectory&currentPath="
1652 22 May 07 gregory 538                   + tmpFile.toString()
1652 22 May 07 gregory 539                   + "\" STYLE=\"text-decoration: none;\">"
1652 22 May 07 gregory 540                   + tmpFile + "</A>\r\n");
1652 22 May 07 gregory 541         }
741 10 Oct 06 olle 542       }
1652 22 May 07 gregory 543       if (!tmpFoldersShown) {
1652 22 May 07 gregory 544         os
1652 22 May 07 gregory 545             .writeBytes("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No folders exists in\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>"
1652 22 May 07 gregory 546                 + s_path + "</B>");
741 10 Oct 06 olle 547       }
1652 22 May 07 gregory 548       os.writeBytes("</PRE>");
1652 22 May 07 gregory 549       os.writeBytes("</BODY>");
1652 22 May 07 gregory 550       os.writeBytes("</HTML>");
1652 22 May 07 gregory 551     } catch (Exception e) {
1652 22 May 07 gregory 552       if (b_showErrors)
1652 22 May 07 gregory 553         System.out
1652 22 May 07 gregory 554             .println("An error has occured @ showChooseDirectory:\n"
1652 22 May 07 gregory 555                 + e.getMessage());
741 10 Oct 06 olle 556     }
741 10 Oct 06 olle 557   }
741 10 Oct 06 olle 558
1652 22 May 07 gregory 559   // terminator shall be " or ' depending on if the JS-string is 'string' or
1652 22 May 07 gregory 560   // "string"
1652 22 May 07 gregory 561   private static String makeJSFriendly(String s, String terminator) {
1652 22 May 07 gregory 562     s = MyString.searchAndReplace(s, "\\", "\\\\");
1652 22 May 07 gregory 563     s = MyString.searchAndReplace(s, terminator, "\\" + terminator);
741 10 Oct 06 olle 564     return s;
741 10 Oct 06 olle 565   }
741 10 Oct 06 olle 566 }