741 |
10 Oct 06 |
olle |
1 |
/* |
1652 |
22 May 07 |
gregory |
$Id$ |
741 |
10 Oct 06 |
olle |
3 |
|
1916 |
31 Aug 07 |
jari |
Copyright (C) 2006 Olle Mansson |
1916 |
31 Aug 07 |
jari |
Copyright (C) 2007 Gregory Vincic |
741 |
10 Oct 06 |
olle |
6 |
|
1652 |
22 May 07 |
gregory |
This file is part of Proteios. |
1652 |
22 May 07 |
gregory |
Available at http://www.proteios.org/ |
741 |
10 Oct 06 |
olle |
9 |
|
1652 |
22 May 07 |
gregory |
Proteios is free software; you can redistribute it and/or modify it |
1652 |
22 May 07 |
gregory |
under the terms of the GNU General Public License as published by |
1652 |
22 May 07 |
gregory |
the Free Software Foundation; either version 2 of the License, or |
1652 |
22 May 07 |
gregory |
(at your option) any later version. |
741 |
10 Oct 06 |
olle |
14 |
|
1652 |
22 May 07 |
gregory |
Proteios is distributed in the hope that it will be useful, but |
1652 |
22 May 07 |
gregory |
WITHOUT ANY WARRANTY; without even the implied warranty of |
1652 |
22 May 07 |
gregory |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1652 |
22 May 07 |
gregory |
General Public License for more details. |
741 |
10 Oct 06 |
olle |
19 |
|
1652 |
22 May 07 |
gregory |
You should have received a copy of the GNU General Public License |
1652 |
22 May 07 |
gregory |
along with this program; if not, write to the Free Software |
1652 |
22 May 07 |
gregory |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
1652 |
22 May 07 |
gregory |
02111-1307, USA. |
1652 |
22 May 07 |
gregory |
24 |
*/ |
741 |
10 Oct 06 |
olle |
25 |
|
741 |
10 Oct 06 |
olle |
// Xerver Free Web Server |
741 |
10 Oct 06 |
olle |
// Copyright (C) 2002-2005 Omid Rouhani |
741 |
10 Oct 06 |
olle |
28 |
// |
741 |
10 Oct 06 |
olle |
29 |
// |
741 |
10 Oct 06 |
olle |
// This program is free software; you can redistribute it and/or |
741 |
10 Oct 06 |
olle |
// modify it under the terms of the GNU General Public License |
741 |
10 Oct 06 |
olle |
// as published by the Free Software Foundation; either version 2 |
741 |
10 Oct 06 |
olle |
// of the License, or (at your option) any later version. |
741 |
10 Oct 06 |
olle |
34 |
// |
741 |
10 Oct 06 |
olle |
// This program is distributed in the hope that it will be useful, |
741 |
10 Oct 06 |
olle |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
741 |
10 Oct 06 |
olle |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
741 |
10 Oct 06 |
olle |
// GNU General Public License for more details. |
741 |
10 Oct 06 |
olle |
39 |
// |
741 |
10 Oct 06 |
olle |
// You should have received a copy of the GNU General Public License |
741 |
10 Oct 06 |
olle |
// along with this program; if not, write to the Free Software |
741 |
10 Oct 06 |
olle |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
741 |
10 Oct 06 |
olle |
43 |
// |
741 |
10 Oct 06 |
olle |
44 |
// |
741 |
10 Oct 06 |
olle |
45 |
// ############################################################# |
741 |
10 Oct 06 |
olle |
// ## YOU CAN CONTACT THE AUTHOR (OMID ROUHANI) AT: ## |
741 |
10 Oct 06 |
olle |
// ## HTTP://WWW.JAVASCRIPT.NU/XERVER/ ## |
741 |
10 Oct 06 |
olle |
48 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## IF YOUR SOFTWARE IS NOT RELEASED UNDER THE ## |
741 |
10 Oct 06 |
olle |
// ## GNU GENERAL PUBLIC LICENSE (GPL), ## |
741 |
10 Oct 06 |
olle |
// ## PLEASE DO NOT COPY ANYTHING FROM THIS SOURCE CODE!!! ## |
741 |
10 Oct 06 |
olle |
52 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## FOR FULL LICENSE, PLEASE READ "XERVER LICENSE". ## |
741 |
10 Oct 06 |
olle |
54 |
// ############################################################# |
741 |
10 Oct 06 |
olle |
55 |
|
1652 |
22 May 07 |
gregory |
56 |
package se.lu.thep.coreftpd.webserver; |
741 |
10 Oct 06 |
olle |
57 |
|
791 |
23 Oct 06 |
olle |
58 |
import se.lu.thep.coreftpd.common.MyHashTable; |
791 |
23 Oct 06 |
olle |
59 |
import se.lu.thep.coreftpd.common.MyString; |
741 |
10 Oct 06 |
olle |
60 |
import java.io.BufferedOutputStream; |
741 |
10 Oct 06 |
olle |
61 |
import java.io.BufferedReader; |
741 |
10 Oct 06 |
olle |
62 |
import java.io.DataOutputStream; |
741 |
10 Oct 06 |
olle |
63 |
import java.io.File; |
741 |
10 Oct 06 |
olle |
64 |
import java.io.FileInputStream; |
741 |
10 Oct 06 |
olle |
65 |
import java.io.FileOutputStream; |
741 |
10 Oct 06 |
olle |
66 |
import java.io.FileReader; |
741 |
10 Oct 06 |
olle |
67 |
import java.io.InputStreamReader; |
741 |
10 Oct 06 |
olle |
68 |
import java.io.PrintStream; |
741 |
10 Oct 06 |
olle |
69 |
import java.net.Socket; |
741 |
10 Oct 06 |
olle |
70 |
import java.text.DateFormat; |
741 |
10 Oct 06 |
olle |
71 |
import java.util.Date; |
741 |
10 Oct 06 |
olle |
72 |
|
741 |
10 Oct 06 |
olle |
73 |
/** |
1652 |
22 May 07 |
gregory |
74 |
* |
1652 |
22 May 07 |
gregory |
* <B>About this class:</B> <BR> |
1652 |
22 May 07 |
gregory |
* Every time a connection is established to Xervers setup program, a <CODE>SetupNewConnection</CODE> |
1652 |
22 May 07 |
gregory |
* is created. <CODE>SetupNewConnection</CODE> is a <CODE>Thread</CODE> and |
1652 |
22 May 07 |
gregory |
* reads what the user requested and gives the user an appropriate response to |
1652 |
22 May 07 |
gregory |
* his/her request. |
1652 |
22 May 07 |
gregory |
80 |
* |
741 |
10 Oct 06 |
olle |
* @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a> |
741 |
10 Oct 06 |
olle |
* @version 1.0 |
741 |
10 Oct 06 |
olle |
83 |
*/ |
741 |
10 Oct 06 |
olle |
84 |
|
1652 |
22 May 07 |
gregory |
// No run-method ==> only one request can be made at once ==> no problem will |
1652 |
22 May 07 |
gregory |
// occur when reading/writing to the config-file |
1652 |
22 May 07 |
gregory |
87 |
final public class SetupNewConnection extends Thread { |
1652 |
22 May 07 |
gregory |
88 |
private String hiddenFolder = "data" + File.separator; |
741 |
10 Oct 06 |
olle |
89 |
|
1652 |
22 May 07 |
gregory |
90 |
private String errorFilesFolder = "errorHTML" + File.separator; |
1652 |
22 May 07 |
gregory |
91 |
|
1652 |
22 May 07 |
gregory |
92 |
private final boolean b_showErrors = false; |
1652 |
22 May 07 |
gregory |
93 |
|
741 |
10 Oct 06 |
olle |
94 |
private Date d_dateToday; |
1652 |
22 May 07 |
gregory |
95 |
|
741 |
10 Oct 06 |
olle |
96 |
private DateFormat df_dateFormat; |
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 Socket so_userConnection; |
1652 |
22 May 07 |
gregory |
102 |
|
741 |
10 Oct 06 |
olle |
103 |
private String s_portNr; |
1652 |
22 May 07 |
gregory |
104 |
|
741 |
10 Oct 06 |
olle |
105 |
private String s_indexNames; |
1652 |
22 May 07 |
gregory |
106 |
|
741 |
10 Oct 06 |
olle |
107 |
private String s_sharedPaths; |
1652 |
22 May 07 |
gregory |
108 |
|
741 |
10 Oct 06 |
olle |
109 |
private String s_fileExtensions; |
1652 |
22 May 07 |
gregory |
110 |
|
741 |
10 Oct 06 |
olle |
111 |
private String s_rootPath; |
1652 |
22 May 07 |
gregory |
112 |
|
741 |
10 Oct 06 |
olle |
113 |
private String s_runnableExtensions; |
1652 |
22 May 07 |
gregory |
114 |
|
741 |
10 Oct 06 |
olle |
115 |
private String s_aliasNames; |
1652 |
22 May 07 |
gregory |
116 |
|
741 |
10 Oct 06 |
olle |
117 |
private String s_protectedFolders; |
1652 |
22 May 07 |
gregory |
118 |
|
741 |
10 Oct 06 |
olle |
119 |
private String s_allowFolderListing; |
1652 |
22 May 07 |
gregory |
120 |
|
741 |
10 Oct 06 |
olle |
121 |
private String s_allowTheseFileExtensions; |
1652 |
22 May 07 |
gregory |
122 |
|
741 |
10 Oct 06 |
olle |
123 |
private String s_shareHiddenFiles; |
1652 |
22 May 07 |
gregory |
124 |
|
741 |
10 Oct 06 |
olle |
125 |
private String s_startupWindowMode; |
1652 |
22 May 07 |
gregory |
126 |
|
741 |
10 Oct 06 |
olle |
127 |
private String s_allowCGIScript; |
1652 |
22 May 07 |
gregory |
128 |
|
1652 |
22 May 07 |
gregory |
129 |
private String s_configFile = hiddenFolder + "Xerver.cfg"; |
1652 |
22 May 07 |
gregory |
130 |
|
741 |
10 Oct 06 |
olle |
131 |
private SetupXerverKernel mySetupXerverKernel; |
1652 |
22 May 07 |
gregory |
132 |
|
741 |
10 Oct 06 |
olle |
133 |
private MyHashTable MyHT_allDataFromQuery; |
741 |
10 Oct 06 |
olle |
134 |
|
1652 |
22 May 07 |
gregory |
135 |
private DataOutputStream theOutput; // Everything written to this will be |
1652 |
22 May 07 |
gregory |
// sent to the browser |
741 |
10 Oct 06 |
olle |
137 |
|
1652 |
22 May 07 |
gregory |
138 |
private boolean b_environmentHasBeenSetUp = false; |
741 |
10 Oct 06 |
olle |
139 |
|
1652 |
22 May 07 |
gregory |
140 |
private BufferedReader br_theInputWeGetFromBrowser; // Read the browsers |
1652 |
22 May 07 |
gregory |
// header from this |
741 |
10 Oct 06 |
olle |
142 |
|
1652 |
22 May 07 |
gregory |
143 |
private String s_encryptedPasswordGiven; // This is set during the setup |
1652 |
22 May 07 |
gregory |
// when the user want create a |
1652 |
22 May 07 |
gregory |
// password protected folder |
741 |
10 Oct 06 |
olle |
146 |
|
1652 |
22 May 07 |
gregory |
147 |
private final int maxNumbersOfENVAccepted = 200; // Maximum number of |
1652 |
22 May 07 |
gregory |
// environment variables |
1652 |
22 May 07 |
gregory |
// the *browser can tell |
1652 |
22 May 07 |
gregory |
// us* to create. (Note: |
1652 |
22 May 07 |
gregory |
// We might have more |
1652 |
22 May 07 |
gregory |
// than 200 environment |
1652 |
22 May 07 |
gregory |
// variables; because we |
1652 |
22 May 07 |
gregory |
// don't only create |
1652 |
22 May 07 |
gregory |
// environment variables |
1652 |
22 May 07 |
gregory |
// that the browser tell |
1652 |
22 May 07 |
gregory |
// us to create). If a |
1652 |
22 May 07 |
gregory |
// browser gives more |
1652 |
22 May 07 |
gregory |
// than 200 environment |
1652 |
22 May 07 |
gregory |
// variables, we just |
1652 |
22 May 07 |
gregory |
// ignore the last |
1652 |
22 May 07 |
gregory |
// variables. |
741 |
10 Oct 06 |
olle |
163 |
|
1652 |
22 May 07 |
gregory |
164 |
private int i_valueOfHttpContentLength = 0; // This variable is currently |
1652 |
22 May 07 |
gregory |
// not in use, |
1652 |
22 May 07 |
gregory |
// getEnvironmentVariablesGivenByBrowser |
1652 |
22 May 07 |
gregory |
// uses it to read the POST-data |
1652 |
22 May 07 |
gregory |
// (which might be needed later) |
741 |
10 Oct 06 |
olle |
169 |
|
1652 |
22 May 07 |
gregory |
170 |
private String s_stdinDataForPOSTRequests = null; // This variable is |
1652 |
22 May 07 |
gregory |
// currently not in use, |
1652 |
22 May 07 |
gregory |
// getEnvironmentVariablesGivenByBrowser |
1652 |
22 May 07 |
gregory |
// uses it to read the |
1652 |
22 May 07 |
gregory |
// POST-data (which |
1652 |
22 May 07 |
gregory |
// might be needed |
1652 |
22 May 07 |
gregory |
// later) //Must be null |
1652 |
22 May 07 |
gregory |
// by default, which |
1652 |
22 May 07 |
gregory |
// means that no |
1652 |
22 May 07 |
gregory |
// POST-data has been |
1652 |
22 May 07 |
gregory |
// read. |
1652 |
22 May 07 |
gregory |
181 |
|
1652 |
22 May 07 |
gregory |
182 |
public SetupNewConnection(Socket agrUserConnection, |
1652 |
22 May 07 |
gregory |
183 |
SetupXerverKernel serverSetup)// throws IOException |
1652 |
22 May 07 |
gregory |
184 |
{ |
1652 |
22 May 07 |
gregory |
185 |
try { |
1652 |
22 May 07 |
gregory |
186 |
mySetupXerverKernel = serverSetup; |
1652 |
22 May 07 |
gregory |
187 |
so_userConnection = agrUserConnection; |
1652 |
22 May 07 |
gregory |
188 |
d_dateToday = new Date(); |
1652 |
22 May 07 |
gregory |
189 |
df_dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, |
1652 |
22 May 07 |
gregory |
190 |
DateFormat.LONG); |
1652 |
22 May 07 |
gregory |
191 |
s_errorStatus = "200 OK"; |
1652 |
22 May 07 |
gregory |
192 |
|
1652 |
22 May 07 |
gregory |
193 |
getRequestInformation(); |
1652 |
22 May 07 |
gregory |
194 |
createVariables(); |
1652 |
22 May 07 |
gregory |
195 |
|
1652 |
22 May 07 |
gregory |
196 |
theOutput = new DataOutputStream(new BufferedOutputStream( |
1652 |
22 May 07 |
gregory |
197 |
so_userConnection.getOutputStream())); // I "java.io.*" |
1652 |
22 May 07 |
gregory |
198 |
|
1652 |
22 May 07 |
gregory |
199 |
if (MyHT_allDataFromQuery.giveValueByIndex("save") != null) // If |
1652 |
22 May 07 |
gregory |
// there |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// anything |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// save... |
741 |
10 Oct 06 |
olle |
205 |
{ |
1652 |
22 May 07 |
gregory |
206 |
if (MyHT_allDataFromQuery.giveValueByIndex("portNr") != null) |
1652 |
22 May 07 |
gregory |
207 |
s_portNr = MyHT_allDataFromQuery.giveValueByIndex("portNr"); |
1652 |
22 May 07 |
gregory |
208 |
if (MyHT_allDataFromQuery.giveValueByIndex("indexNames") != null) |
1652 |
22 May 07 |
gregory |
209 |
s_indexNames = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
210 |
.giveValueByIndex("indexNames"); |
1652 |
22 May 07 |
gregory |
211 |
if (MyHT_allDataFromQuery.giveValueByIndex("sharedPaths") != null) |
1652 |
22 May 07 |
gregory |
212 |
s_sharedPaths = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
213 |
.giveValueByIndex("sharedPaths"); |
1652 |
22 May 07 |
gregory |
214 |
if (MyHT_allDataFromQuery.giveValueByIndex("fileExtensions") != null) |
1652 |
22 May 07 |
gregory |
215 |
s_fileExtensions = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
216 |
.giveValueByIndex("fileExtensions"); |
1652 |
22 May 07 |
gregory |
217 |
if (MyHT_allDataFromQuery.giveValueByIndex("rootPath") != null) |
1652 |
22 May 07 |
gregory |
218 |
s_rootPath = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
219 |
.giveValueByIndex("rootPath"); |
1652 |
22 May 07 |
gregory |
220 |
if (MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
221 |
.giveValueByIndex("runnableExtensions") != null) |
1652 |
22 May 07 |
gregory |
222 |
s_runnableExtensions = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
223 |
.giveValueByIndex("runnableExtensions"); |
1652 |
22 May 07 |
gregory |
224 |
if (MyHT_allDataFromQuery.giveValueByIndex("aliasNames") != null) |
1652 |
22 May 07 |
gregory |
225 |
s_aliasNames = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
226 |
.giveValueByIndex("aliasNames"); |
1652 |
22 May 07 |
gregory |
227 |
if (MyHT_allDataFromQuery.giveValueByIndex("protectedFolders") != null) |
1652 |
22 May 07 |
gregory |
228 |
s_protectedFolders = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
229 |
.giveValueByIndex("protectedFolders"); |
1652 |
22 May 07 |
gregory |
230 |
if (MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
231 |
.giveValueByIndex("allowFolderListing") != null) |
1652 |
22 May 07 |
gregory |
232 |
s_allowFolderListing = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
233 |
.giveValueByIndex("allowFolderListing"); |
1652 |
22 May 07 |
gregory |
234 |
if (MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
235 |
.giveValueByIndex("allowTheseFileExtensions") != null) |
1652 |
22 May 07 |
gregory |
236 |
s_allowTheseFileExtensions = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
237 |
.giveValueByIndex("allowTheseFileExtensions"); |
1652 |
22 May 07 |
gregory |
238 |
if (MyHT_allDataFromQuery.giveValueByIndex("shareHiddenFiles") != null) |
1652 |
22 May 07 |
gregory |
239 |
s_shareHiddenFiles = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
240 |
.giveValueByIndex("shareHiddenFiles"); |
1652 |
22 May 07 |
gregory |
241 |
if (MyHT_allDataFromQuery.giveValueByIndex("startupWindowMode") != null) |
1652 |
22 May 07 |
gregory |
242 |
s_startupWindowMode = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
243 |
.giveValueByIndex("startupWindowMode"); |
1652 |
22 May 07 |
gregory |
244 |
if (MyHT_allDataFromQuery.giveValueByIndex("allowCGIScript") != null) |
1652 |
22 May 07 |
gregory |
245 |
s_allowCGIScript = MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
246 |
.giveValueByIndex("allowCGIScript"); |
1652 |
22 May 07 |
gregory |
247 |
|
1652 |
22 May 07 |
gregory |
248 |
saveInformationToFile(); |
741 |
10 Oct 06 |
olle |
249 |
} |
1652 |
22 May 07 |
gregory |
250 |
|
1652 |
22 May 07 |
gregory |
251 |
if (MyHT_allDataFromQuery.giveValueByIndex("action") != null) // If |
1652 |
22 May 07 |
gregory |
// there |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// an |
1652 |
22 May 07 |
gregory |
// action |
1652 |
22 May 07 |
gregory |
// given |
1652 |
22 May 07 |
gregory |
// (there |
1652 |
22 May 07 |
gregory |
// shall |
1652 |
22 May 07 |
gregory |
// always |
1652 |
22 May 07 |
gregory |
// be |
1652 |
22 May 07 |
gregory |
// an |
1652 |
22 May 07 |
gregory |
// action |
1652 |
22 May 07 |
gregory |
// given, |
1652 |
22 May 07 |
gregory |
// but |
1652 |
22 May 07 |
gregory |
// not |
1652 |
22 May 07 |
gregory |
// if |
1652 |
22 May 07 |
gregory |
// you |
1652 |
22 May 07 |
gregory |
// visit |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// "setup |
1652 |
22 May 07 |
gregory |
// root" |
1652 |
22 May 07 |
gregory |
// (="http://localhost:32123/")... |
741 |
10 Oct 06 |
olle |
273 |
{ |
1652 |
22 May 07 |
gregory |
274 |
if (MyHT_allDataFromQuery.giveValueByIndex("action").equals( |
1652 |
22 May 07 |
gregory |
275 |
"wizardGeneralSettings")) { |
1652 |
22 May 07 |
gregory |
276 |
returnThisPage(hiddenFolder + "WizGeneralSettings.html", |
1652 |
22 May 07 |
gregory |
277 |
"text/html"); |
1652 |
22 May 07 |
gregory |
278 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
279 |
.equals("wizardMenu")) { |
1652 |
22 May 07 |
gregory |
280 |
returnThisPage(hiddenFolder + "WizMenu.html", "text/html"); |
1652 |
22 May 07 |
gregory |
281 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
282 |
.equals("wizardFrames")) { |
1652 |
22 May 07 |
gregory |
283 |
returnThisPage(hiddenFolder + "WizFrames.html", "text/html"); |
1652 |
22 May 07 |
gregory |
284 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
285 |
.equals("setupDone")) { |
1652 |
22 May 07 |
gregory |
286 |
showHeaderData("text/html"); |
1652 |
22 May 07 |
gregory |
287 |
ShowSetupPages.setupDone(theOutput); |
1652 |
22 May 07 |
gregory |
288 |
mySetupXerverKernel.setupIsDone(true); // Let the kernel |
1652 |
22 May 07 |
gregory |
// (mySetupXerverKernel) |
1652 |
22 May 07 |
gregory |
// know that the |
1652 |
22 May 07 |
gregory |
// settings have |
1652 |
22 May 07 |
gregory |
// been changed |
1652 |
22 May 07 |
gregory |
293 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
294 |
.equals("chooseDirectory")) { |
1652 |
22 May 07 |
gregory |
295 |
showHeaderData("text/html"); |
1652 |
22 May 07 |
gregory |
296 |
ShowSetupPages.showChooseDirectory(theOutput, |
1652 |
22 May 07 |
gregory |
297 |
MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
298 |
.giveValueByIndex("currentPath")); // Note: |
1652 |
22 May 07 |
gregory |
// "MyHT_allDataFromQuery.giveValueByIndex("currentPath")" |
1652 |
22 May 07 |
gregory |
// might |
1652 |
22 May 07 |
gregory |
// be |
1652 |
22 May 07 |
gregory |
// null. |
1652 |
22 May 07 |
gregory |
// If |
1652 |
22 May 07 |
gregory |
// it's |
1652 |
22 May 07 |
gregory |
// null |
1652 |
22 May 07 |
gregory |
// it |
1652 |
22 May 07 |
gregory |
// means |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// root |
1652 |
22 May 07 |
gregory |
// shall |
1652 |
22 May 07 |
gregory |
// be |
1652 |
22 May 07 |
gregory |
// showed. |
1652 |
22 May 07 |
gregory |
313 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
314 |
.equals("wizardStep1")) { |
1652 |
22 May 07 |
gregory |
315 |
returnThisPage(hiddenFolder + "WizStep1.html", "text/html"); |
1652 |
22 May 07 |
gregory |
316 |
ShowSetupPages.showSetupWizStep1(theOutput, s_portNr, |
1652 |
22 May 07 |
gregory |
317 |
s_allowFolderListing, s_shareHiddenFiles, |
1652 |
22 May 07 |
gregory |
318 |
s_allowCGIScript); |
1652 |
22 May 07 |
gregory |
319 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
320 |
.equals("wizardStep2")) { |
1652 |
22 May 07 |
gregory |
321 |
returnThisPage(hiddenFolder + "WizStep2.html", "text/html"); |
1652 |
22 May 07 |
gregory |
322 |
ShowSetupPages.showSetupWizStep2(theOutput, s_sharedPaths); |
1652 |
22 May 07 |
gregory |
323 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
324 |
.equals("wizardStep3")) { |
1652 |
22 May 07 |
gregory |
325 |
returnThisPage(hiddenFolder + "WizStep3.html", "text/html"); |
1652 |
22 May 07 |
gregory |
326 |
ShowSetupPages.showSetupWizStep3(theOutput, s_sharedPaths, |
1652 |
22 May 07 |
gregory |
327 |
s_rootPath); |
1652 |
22 May 07 |
gregory |
328 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
329 |
.equals("wizardStep4")) { |
1652 |
22 May 07 |
gregory |
330 |
returnThisPage(hiddenFolder + "WizStep4.html", "text/html"); |
1652 |
22 May 07 |
gregory |
331 |
ShowSetupPages.showSetupWizStep4(theOutput, s_sharedPaths, |
1652 |
22 May 07 |
gregory |
332 |
s_aliasNames); |
1652 |
22 May 07 |
gregory |
333 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
334 |
.equals("wizardStep5")) { |
1652 |
22 May 07 |
gregory |
335 |
if (s_allowCGIScript.equals("1") |
1652 |
22 May 07 |
gregory |
336 |
|| MyHT_allDataFromQuery |
1652 |
22 May 07 |
gregory |
337 |
.giveValueByIndex("direction") == null) // IF |
1652 |
22 May 07 |
gregory |
// [CGI-scripts |
1652 |
22 May 07 |
gregory |
// can |
1652 |
22 May 07 |
gregory |
// be |
1652 |
22 May 07 |
gregory |
// run] |
1652 |
22 May 07 |
gregory |
// OR |
1652 |
22 May 07 |
gregory |
// [not |
1652 |
22 May 07 |
gregory |
// coming |
1652 |
22 May 07 |
gregory |
// from |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// next- |
1652 |
22 May 07 |
gregory |
// or |
1652 |
22 May 07 |
gregory |
// back-button |
1652 |
22 May 07 |
gregory |
// (but |
1652 |
22 May 07 |
gregory |
// from |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// menu)].... |
741 |
10 Oct 06 |
olle |
354 |
{ |
1652 |
22 May 07 |
gregory |
355 |
returnThisPage(hiddenFolder + "WizStep5.html", |
1652 |
22 May 07 |
gregory |
356 |
"text/html"); |
1652 |
22 May 07 |
gregory |
357 |
ShowSetupPages.showSetupWizStep5(theOutput, |
1652 |
22 May 07 |
gregory |
358 |
s_runnableExtensions); |
1652 |
22 May 07 |
gregory |
359 |
} else // CGI-scripts can't be run.... (Don't ask which |
1652 |
22 May 07 |
gregory |
// file extensions shall be considered runnable |
1652 |
22 May 07 |
gregory |
// files) |
1652 |
22 May 07 |
gregory |
362 |
{ |
1652 |
22 May 07 |
gregory |
363 |
if (MyHT_allDataFromQuery.giveValueByIndex("direction") |
1652 |
22 May 07 |
gregory |
364 |
.equals("back")) // If we are pressing the |
1652 |
22 May 07 |
gregory |
// "back" button from Step6 |
1652 |
22 May 07 |
gregory |
366 |
{ |
1652 |
22 May 07 |
gregory |
367 |
returnThisPage(hiddenFolder + "WizStep4.html", |
1652 |
22 May 07 |
gregory |
368 |
"text/html"); |
1652 |
22 May 07 |
gregory |
369 |
ShowSetupPages.showSetupWizStep4(theOutput, |
1652 |
22 May 07 |
gregory |
370 |
s_sharedPaths, s_aliasNames); |
1652 |
22 May 07 |
gregory |
371 |
} else // If we are pressing the "next" button from |
1652 |
22 May 07 |
gregory |
// Step4 |
1652 |
22 May 07 |
gregory |
373 |
{ |
1652 |
22 May 07 |
gregory |
374 |
returnThisPage(hiddenFolder + "WizStep6.html", |
1652 |
22 May 07 |
gregory |
375 |
"text/html"); |
1652 |
22 May 07 |
gregory |
376 |
ShowSetupPages.showSetupWizStep6(theOutput, |
1652 |
22 May 07 |
gregory |
377 |
s_indexNames); |
1652 |
22 May 07 |
gregory |
378 |
} |
741 |
10 Oct 06 |
olle |
379 |
} |
1652 |
22 May 07 |
gregory |
380 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
381 |
.equals("wizardStep6")) { |
1652 |
22 May 07 |
gregory |
382 |
returnThisPage(hiddenFolder + "WizStep6.html", "text/html"); |
1652 |
22 May 07 |
gregory |
383 |
ShowSetupPages.showSetupWizStep6(theOutput, s_indexNames); |
1652 |
22 May 07 |
gregory |
384 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
385 |
.equals("wizardStep7")) { |
1652 |
22 May 07 |
gregory |
386 |
returnThisPage(hiddenFolder + "WizStep7.html", "text/html"); |
1652 |
22 May 07 |
gregory |
387 |
ShowSetupPages.showSetupWizStep7(theOutput, |
1652 |
22 May 07 |
gregory |
388 |
s_fileExtensions, s_allowTheseFileExtensions); |
1652 |
22 May 07 |
gregory |
389 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
390 |
.equals("wizardStep8")) { |
1652 |
22 May 07 |
gregory |
391 |
returnThisPage(hiddenFolder + "WizStep8.html", "text/html"); |
1652 |
22 May 07 |
gregory |
392 |
ShowSetupPages.showSetupWizStep8(theOutput, s_sharedPaths, |
1652 |
22 May 07 |
gregory |
393 |
s_protectedFolders); |
1652 |
22 May 07 |
gregory |
394 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
395 |
.equals("wizardStep9")) { |
1652 |
22 May 07 |
gregory |
396 |
returnThisPage(hiddenFolder + "WizStep9.html", "text/html"); |
1652 |
22 May 07 |
gregory |
397 |
ShowSetupPages.showSetupWizStep9(theOutput, |
1652 |
22 May 07 |
gregory |
398 |
s_startupWindowMode); |
1652 |
22 May 07 |
gregory |
399 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
400 |
.equals("showLogo")) { |
1652 |
22 May 07 |
gregory |
401 |
returnThisPage(hiddenFolder + "imagelogo.gif", "image/gif"); |
1652 |
22 May 07 |
gregory |
402 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
403 |
.equals("showBigWizard")) { |
1652 |
22 May 07 |
gregory |
404 |
returnThisPage(hiddenFolder + "imagewizardbig.gif", |
1652 |
22 May 07 |
gregory |
405 |
"image/gif"); |
1652 |
22 May 07 |
gregory |
406 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
407 |
.equals("showSmallWizard")) { |
1652 |
22 May 07 |
gregory |
408 |
returnThisPage(hiddenFolder + "imagewizardsmall.gif", |
1652 |
22 May 07 |
gregory |
409 |
"image/gif"); |
1652 |
22 May 07 |
gregory |
410 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
411 |
.equals("showWizardHelp")) { |
1652 |
22 May 07 |
gregory |
412 |
returnThisPage(hiddenFolder + "WizardHelp.html", |
1652 |
22 May 07 |
gregory |
413 |
"text/html"); |
1652 |
22 May 07 |
gregory |
414 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
415 |
.equals("showAddDirSetup")) { |
1652 |
22 May 07 |
gregory |
416 |
returnThisPage(hiddenFolder + "AddDirSetup.html", |
1652 |
22 May 07 |
gregory |
417 |
"text/html"); |
1652 |
22 May 07 |
gregory |
418 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
419 |
.equals("showAddAliasSetup")) { |
1652 |
22 May 07 |
gregory |
420 |
returnThisPage(hiddenFolder + "AddAliasSetup.html", |
1652 |
22 May 07 |
gregory |
421 |
"text/html"); |
1652 |
22 May 07 |
gregory |
422 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
423 |
.equals("showAddScriptExtSetup")) { |
1652 |
22 May 07 |
gregory |
424 |
returnThisPage(hiddenFolder + "AddScriptExtSetup.html", |
1652 |
22 May 07 |
gregory |
425 |
"text/html"); |
1652 |
22 May 07 |
gregory |
426 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
427 |
.equals("showAddIndSetup")) { |
1652 |
22 May 07 |
gregory |
428 |
returnThisPage(hiddenFolder + "AddIndSetup.html", |
1652 |
22 May 07 |
gregory |
429 |
"text/html"); |
1652 |
22 May 07 |
gregory |
430 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
431 |
.equals("showAddExtSetup")) { |
1652 |
22 May 07 |
gregory |
432 |
returnThisPage(hiddenFolder + "AddExtSetup.html", |
1652 |
22 May 07 |
gregory |
433 |
"text/html"); |
1652 |
22 May 07 |
gregory |
434 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
435 |
.equals("showAddProtFrameSetup")) { |
1652 |
22 May 07 |
gregory |
436 |
returnThisPage(hiddenFolder + "AddProtFrameSetup.html", |
1652 |
22 May 07 |
gregory |
437 |
"text/html"); |
1652 |
22 May 07 |
gregory |
438 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
439 |
.equals("showAddProtSetup")) { |
1652 |
22 May 07 |
gregory |
440 |
returnThisPage(hiddenFolder + "AddProtSetup.html", |
1652 |
22 May 07 |
gregory |
441 |
"text/html"); |
1652 |
22 May 07 |
gregory |
442 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
443 |
.equals("showAddProtDirSetup")) { |
1652 |
22 May 07 |
gregory |
444 |
returnThisPage(hiddenFolder + "AddProtDirSetup.html", |
1652 |
22 May 07 |
gregory |
445 |
"text/html"); |
1652 |
22 May 07 |
gregory |
446 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
447 |
.equals("showAddProtUserSetup")) { |
1652 |
22 May 07 |
gregory |
448 |
returnThisPage(hiddenFolder + "AddProtUserSetup.html", |
1652 |
22 May 07 |
gregory |
449 |
"text/html"); |
1652 |
22 May 07 |
gregory |
450 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
451 |
.equals("showEmptyPage")) { |
1652 |
22 May 07 |
gregory |
452 |
returnThisPage(hiddenFolder + "empty.html", "text/html"); |
1652 |
22 May 07 |
gregory |
453 |
} else if (MyHT_allDataFromQuery.giveValueByIndex("action") |
1652 |
22 May 07 |
gregory |
454 |
.equals("promptForPassword")) { |
1652 |
22 May 07 |
gregory |
455 |
createEnvironmentVariables(); |
1652 |
22 May 07 |
gregory |
// System.out.println(mySetupXerverKernel.b_show401NotAuthorized); |
1652 |
22 May 07 |
gregory |
457 |
if (mySetupXerverKernel.b_show401NotAuthorized |
1652 |
22 May 07 |
gregory |
458 |
|| s_encryptedPasswordGiven == null) // If |
1652 |
22 May 07 |
gregory |
// "s_encryptedPasswordGiven" |
1652 |
22 May 07 |
gregory |
// is null |
1652 |
22 May 07 |
gregory |
// ==> Show |
1652 |
22 May 07 |
gregory |
// 401-message. |
741 |
10 Oct 06 |
olle |
463 |
{ |
1652 |
22 May 07 |
gregory |
464 |
ShowSetupPages.show401NotAuthorizedIsNotAccepted( |
1652 |
22 May 07 |
gregory |
465 |
theOutput, s_encryptedPasswordGiven, |
1652 |
22 May 07 |
gregory |
466 |
df_dateFormat); |
1652 |
22 May 07 |
gregory |
467 |
mySetupXerverKernel.b_show401NotAuthorized = false; // don't |
1652 |
22 May 07 |
gregory |
// give |
1652 |
22 May 07 |
gregory |
// 401-message |
1652 |
22 May 07 |
gregory |
// next |
1652 |
22 May 07 |
gregory |
// time |
1652 |
22 May 07 |
gregory |
472 |
} else { |
1652 |
22 May 07 |
gregory |
473 |
ShowSetupPages.show401NotAuthorizedIsAccepted( |
1652 |
22 May 07 |
gregory |
474 |
theOutput, s_encryptedPasswordGiven, |
1652 |
22 May 07 |
gregory |
475 |
df_dateFormat); |
1652 |
22 May 07 |
gregory |
476 |
mySetupXerverKernel.b_show401NotAuthorized = true; // give |
1652 |
22 May 07 |
gregory |
// 401-message |
1652 |
22 May 07 |
gregory |
// next |
1652 |
22 May 07 |
gregory |
// time |
741 |
10 Oct 06 |
olle |
480 |
} |
1652 |
22 May 07 |
gregory |
481 |
} else { |
1652 |
22 May 07 |
gregory |
482 |
showHeaderData("text/html"); |
1652 |
22 May 07 |
gregory |
483 |
ShowSetupPages.showWelcomePage(theOutput); // An invalid |
1652 |
22 May 07 |
gregory |
// "action" has |
1652 |
22 May 07 |
gregory |
// been set |
741 |
10 Oct 06 |
olle |
486 |
} |
1652 |
22 May 07 |
gregory |
487 |
} else { |
741 |
10 Oct 06 |
olle |
488 |
showHeaderData("text/html"); |
1652 |
22 May 07 |
gregory |
489 |
ShowSetupPages.showWelcomePage(theOutput); // No "action" has |
1652 |
22 May 07 |
gregory |
// been set |
741 |
10 Oct 06 |
olle |
491 |
} |
741 |
10 Oct 06 |
olle |
492 |
|
1652 |
22 May 07 |
gregory |
493 |
yield(); |
1652 |
22 May 07 |
gregory |
494 |
sleep(125); // Be safe, don't close before all data has been sent |
741 |
10 Oct 06 |
olle |
495 |
|
1652 |
22 May 07 |
gregory |
496 |
theOutput.flush(); |
1652 |
22 May 07 |
gregory |
497 |
theOutput.close(); |
741 |
10 Oct 06 |
olle |
498 |
|
1652 |
22 May 07 |
gregory |
499 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
500 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
501 |
System.out.println("An error occured @ SetupNewConnection:\n" |
1652 |
22 May 07 |
gregory |
502 |
+ e.getMessage()); |
1652 |
22 May 07 |
gregory |
503 |
} |
741 |
10 Oct 06 |
olle |
504 |
} |
741 |
10 Oct 06 |
olle |
505 |
|
741 |
10 Oct 06 |
olle |
506 |
void getRequestInformation()// throws IOException |
741 |
10 Oct 06 |
olle |
507 |
{ |
1652 |
22 May 07 |
gregory |
508 |
try { |
1652 |
22 May 07 |
gregory |
509 |
String[] firstLineIndata; |
741 |
10 Oct 06 |
olle |
510 |
|
1652 |
22 May 07 |
gregory |
511 |
br_theInputWeGetFromBrowser = new BufferedReader( |
1652 |
22 May 07 |
gregory |
512 |
new InputStreamReader(so_userConnection.getInputStream())); |
1652 |
22 May 07 |
gregory |
513 |
firstLineIndata = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
514 |
br_theInputWeGetFromBrowser.readLine(), " "); // Opera: |
1652 |
22 May 07 |
gregory |
// "GET |
1652 |
22 May 07 |
gregory |
// /mapp/fil.txt |
1652 |
22 May 07 |
gregory |
// HTTP/1.1" |
1652 |
22 May 07 |
gregory |
518 |
s_requestMethod = firstLineIndata[0]; // "GET" eller "GET/" |
741 |
10 Oct 06 |
olle |
519 |
|
1652 |
22 May 07 |
gregory |
520 |
s_requestDocument = MyString.unescape(firstLineIndata[1]); // "kopia%20(2)%20av%20wwwboard.pl" |
1652 |
22 May 07 |
gregory |
521 |
// ==> |
1652 |
22 May 07 |
gregory |
// "kopia |
1652 |
22 May 07 |
gregory |
// (2) |
1652 |
22 May 07 |
gregory |
// av |
1652 |
22 May 07 |
gregory |
// wwwboard.pl" |
741 |
10 Oct 06 |
olle |
526 |
|
1652 |
22 May 07 |
gregory |
527 |
if (s_requestDocument.startsWith("/?")) |
1652 |
22 May 07 |
gregory |
528 |
s_allData = s_requestDocument.substring(2); // Ignore the first |
1652 |
22 May 07 |
gregory |
// /?, but get |
1652 |
22 May 07 |
gregory |
// everything else |
1652 |
22 May 07 |
gregory |
531 |
else |
1652 |
22 May 07 |
gregory |
532 |
s_allData = s_requestDocument.substring(1); // Ignore the first |
1652 |
22 May 07 |
gregory |
// /, but get |
1652 |
22 May 07 |
gregory |
// everything else |
741 |
10 Oct 06 |
olle |
535 |
|
1652 |
22 May 07 |
gregory |
536 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
537 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
538 |
System.out |
1652 |
22 May 07 |
gregory |
539 |
.println("An error occured @ getRequestInformation:\n" |
1652 |
22 May 07 |
gregory |
540 |
+ e.getMessage()); |
1652 |
22 May 07 |
gregory |
541 |
} |
741 |
10 Oct 06 |
olle |
542 |
} |
741 |
10 Oct 06 |
olle |
543 |
|
1652 |
22 May 07 |
gregory |
// From Opera: |
1652 |
22 May 07 |
gregory |
// GET /?y4errewfdpp HTTP/1.1 |
1652 |
22 May 07 |
gregory |
// User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.0 [sv] |
1652 |
22 May 07 |
gregory |
// Host: localhost:12345 |
1652 |
22 May 07 |
gregory |
// Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, */* |
1652 |
22 May 07 |
gregory |
// Accept-Language: sv |
1652 |
22 May 07 |
gregory |
// Accept-Charset: windows-1252;q=1.0, utf-8;q=1.0, utf-16;q=1.0, |
1652 |
22 May 07 |
gregory |
// iso-8859-1;q=0.6, *;q=0.1 |
1652 |
22 May 07 |
gregory |
// Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 |
1652 |
22 May 07 |
gregory |
// Cache-Control: no-cache |
1652 |
22 May 07 |
gregory |
// Connection: Keep-Alive, TE |
1652 |
22 May 07 |
gregory |
// TE: deflate, gzip, chunked, identity, trailers |
741 |
10 Oct 06 |
olle |
556 |
|
1652 |
22 May 07 |
gregory |
private void createVariables() // Returns true if everything went OK |
741 |
10 Oct 06 |
olle |
558 |
{ |
1652 |
22 May 07 |
gregory |
MyHT_allDataFromQuery = new MyHashTable(s_allData, "&", "="); |
741 |
10 Oct 06 |
olle |
getSettingsFromFile(); |
1652 |
22 May 07 |
gregory |
561 |
/* |
1652 |
22 May 07 |
gregory |
* if (allDataArray.length==13) { s_portNr=allDataArray[0]; |
1652 |
22 May 07 |
gregory |
* s_indexNames=allDataArray[1]; s_sharedPaths=allDataArray[2]; |
1652 |
22 May 07 |
gregory |
* s_fileExtensions=allDataArray[3]; s_rootPath=allDataArray[4]; |
1652 |
22 May 07 |
gregory |
* s_runnableExtensions=allDataArray[5]; s_aliasNames=allDataArray[6]; |
1652 |
22 May 07 |
gregory |
* s_protectedFolders=allDataArray[7]; |
1652 |
22 May 07 |
gregory |
* s_allowFolderListing=allDataArray[8]; |
1652 |
22 May 07 |
gregory |
* s_allowTheseFileExtensions=allDataArray[9]; |
1652 |
22 May 07 |
gregory |
* s_shareHiddenFiles=allDataArray[10]; |
1652 |
22 May 07 |
gregory |
* s_startupWindowMode=allDataArray[11]; |
1652 |
22 May 07 |
gregory |
* s_allowCGIScript=allDataArray[12]; return true; } else { |
1652 |
22 May 07 |
gregory |
* System.out.println("ERROR: Felaktig indata!"); return false; |
1652 |
22 May 07 |
gregory |
* //Invalid input to this script } |
1652 |
22 May 07 |
gregory |
574 |
*/ |
741 |
10 Oct 06 |
olle |
575 |
} |
741 |
10 Oct 06 |
olle |
576 |
|
1652 |
22 May 07 |
gregory |
577 |
private void saveInformationToFile() { |
1652 |
22 May 07 |
gregory |
578 |
try { |
741 |
10 Oct 06 |
olle |
579 |
PrintStream myPrintStream; |
1652 |
22 May 07 |
gregory |
580 |
File theFile = new File(s_configFile); |
1652 |
22 May 07 |
gregory |
581 |
FileOutputStream fileStreamed = new FileOutputStream(theFile); |
1652 |
22 May 07 |
gregory |
582 |
myPrintStream = new PrintStream(fileStreamed); |
741 |
10 Oct 06 |
olle |
583 |
myPrintStream.println(s_portNr); |
741 |
10 Oct 06 |
olle |
584 |
myPrintStream.println(s_indexNames); |
741 |
10 Oct 06 |
olle |
585 |
myPrintStream.println(s_sharedPaths); |
741 |
10 Oct 06 |
olle |
586 |
myPrintStream.println(s_fileExtensions); |
741 |
10 Oct 06 |
olle |
587 |
myPrintStream.println(s_rootPath); |
741 |
10 Oct 06 |
olle |
588 |
myPrintStream.println(s_runnableExtensions); |
741 |
10 Oct 06 |
olle |
589 |
myPrintStream.println(s_aliasNames); |
741 |
10 Oct 06 |
olle |
590 |
myPrintStream.println(s_protectedFolders); |
741 |
10 Oct 06 |
olle |
591 |
myPrintStream.println(s_allowFolderListing); |
741 |
10 Oct 06 |
olle |
592 |
myPrintStream.println(s_allowTheseFileExtensions); |
741 |
10 Oct 06 |
olle |
593 |
myPrintStream.println(s_shareHiddenFiles); |
741 |
10 Oct 06 |
olle |
594 |
myPrintStream.println(s_startupWindowMode); |
1652 |
22 May 07 |
gregory |
595 |
myPrintStream.print(s_allowCGIScript); // Last one is print, not |
1652 |
22 May 07 |
gregory |
// println |
741 |
10 Oct 06 |
olle |
597 |
yield(); |
1652 |
22 May 07 |
gregory |
598 |
sleep(50); // Be safe, don't close before all data has been sent |
741 |
10 Oct 06 |
olle |
599 |
myPrintStream.close(); |
741 |
10 Oct 06 |
olle |
600 |
fileStreamed.close(); |
741 |
10 Oct 06 |
olle |
601 |
|
1652 |
22 May 07 |
gregory |
602 |
mySetupXerverKernel.setupIsDone(false); // Let the kernel |
1652 |
22 May 07 |
gregory |
// (mySetupXerverKernel) |
1652 |
22 May 07 |
gregory |
// know that the settings |
1652 |
22 May 07 |
gregory |
// have been changed |
1652 |
22 May 07 |
gregory |
606 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
// if (b_showErrors) |
1652 |
22 May 07 |
gregory |
608 |
System.out |
1652 |
22 May 07 |
gregory |
609 |
.println("Could not write to " |
1652 |
22 May 07 |
gregory |
610 |
+ s_configFile |
1652 |
22 May 07 |
gregory |
611 |
+ ".\nMake sure the file is among the other files and that Xerver has write permissions to it.:" |
1652 |
22 May 07 |
gregory |
612 |
+ e); |
741 |
10 Oct 06 |
olle |
613 |
} |
741 |
10 Oct 06 |
olle |
614 |
} |
741 |
10 Oct 06 |
olle |
615 |
|
1652 |
22 May 07 |
gregory |
616 |
private void showHeaderData(String contentType) { |
1652 |
22 May 07 |
gregory |
617 |
try { |
1652 |
22 May 07 |
gregory |
618 |
theOutput.writeBytes("HTTP/1.1 " + s_errorStatus + " \r\nDate: " |
1652 |
22 May 07 |
gregory |
619 |
+ df_dateFormat.format(d_dateToday) + " \r\n" + "Server: " |
1652 |
22 May 07 |
gregory |
620 |
+ XerverKernel.getXerverName() |
1652 |
22 May 07 |
gregory |
621 |
+ " \r\nConnection: close \r\n" |
1652 |
22 May 07 |
gregory |
622 |
+ "Pragma: no-cache \r\nCache-Control: no-cache \r\n" |
1652 |
22 May 07 |
gregory |
623 |
+ "Location: / \r\n" + "Content-Type: " + contentType |
1652 |
22 May 07 |
gregory |
624 |
+ " \r\n\r\n"); |
1652 |
22 May 07 |
gregory |
625 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
626 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
627 |
System.out.println("An error occured @ showHeaderData:\n" |
1652 |
22 May 07 |
gregory |
628 |
+ e.getMessage()); |
1652 |
22 May 07 |
gregory |
629 |
} |
741 |
10 Oct 06 |
olle |
630 |
} |
741 |
10 Oct 06 |
olle |
631 |
|
1652 |
22 May 07 |
gregory |
632 |
private void returnThisPage(String documentToReturn, String contentType)// throws |
1652 |
22 May 07 |
gregory |
// IOException |
741 |
10 Oct 06 |
olle |
634 |
{ |
1652 |
22 May 07 |
gregory |
635 |
FileInputStream fileStreamed = null; |
741 |
10 Oct 06 |
olle |
636 |
|
1652 |
22 May 07 |
gregory |
637 |
try { |
1652 |
22 May 07 |
gregory |
// DataOutputStream theOutput =new |
1652 |
22 May 07 |
gregory |
// DataOutputStream(so_userConnection.getOutputStream()); //I |
1652 |
22 May 07 |
gregory |
// "java.io.*" |
1652 |
22 May 07 |
gregory |
641 |
showHeaderData(contentType); |
1652 |
22 May 07 |
gregory |
642 |
File theFile = new File(documentToReturn); |
1652 |
22 May 07 |
gregory |
643 |
fileStreamed = new FileInputStream(theFile); |
741 |
10 Oct 06 |
olle |
644 |
|
1652 |
22 May 07 |
gregory |
645 |
byte[] myBuffer = new byte[8192]; |
1652 |
22 May 07 |
gregory |
646 |
int n; |
1652 |
22 May 07 |
gregory |
647 |
while ((n = fileStreamed.read(myBuffer)) != -1) |
1652 |
22 May 07 |
gregory |
648 |
theOutput.write(myBuffer, 0, n); |
741 |
10 Oct 06 |
olle |
649 |
|
1652 |
22 May 07 |
gregory |
650 |
yield(); |
1652 |
22 May 07 |
gregory |
651 |
sleep(125); // Be safe, don't close before all data has been sent |
741 |
10 Oct 06 |
olle |
652 |
|
1652 |
22 May 07 |
gregory |
// fileStreamed.close(); |
1652 |
22 May 07 |
gregory |
654 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
655 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
656 |
System.out.println("An error occured @ returnThisPage:\n" |
1652 |
22 May 07 |
gregory |
657 |
+ e.getMessage()); |
1652 |
22 May 07 |
gregory |
658 |
} |
741 |
10 Oct 06 |
olle |
659 |
|
1652 |
22 May 07 |
gregory |
660 |
try { |
1652 |
22 May 07 |
gregory |
661 |
if (fileStreamed != null) // If fileStreamed "holds" a file |
741 |
10 Oct 06 |
olle |
662 |
{ |
1652 |
22 May 07 |
gregory |
663 |
fileStreamed.close(); // Important: This must be reached no |
1652 |
22 May 07 |
gregory |
// matter what! Even if an exception |
1652 |
22 May 07 |
gregory |
// occurs in the try block, whis must be |
1652 |
22 May 07 |
gregory |
// reached. Otherwise the file will be |
1652 |
22 May 07 |
gregory |
// locked by Xerver (locked by Java.exe) |
1652 |
22 May 07 |
gregory |
// until the garbage collector is runned |
1652 |
22 May 07 |
gregory |
// (and you don't know when it will run) |
1652 |
22 May 07 |
gregory |
// and detects that the file (the object |
1652 |
22 May 07 |
gregory |
// "fileStreamed") is no longer |
1652 |
22 May 07 |
gregory |
// referenced from anywhere else and it |
1652 |
22 May 07 |
gregory |
// release the file by automatic. Until |
1652 |
22 May 07 |
gregory |
// this happenes, no other application |
1652 |
22 May 07 |
gregory |
// can write to or rename this file |
1652 |
22 May 07 |
gregory |
// (however, this problem is solved with |
1652 |
22 May 07 |
gregory |
// this line). |
741 |
10 Oct 06 |
olle |
678 |
} |
1652 |
22 May 07 |
gregory |
679 |
} catch (Exception e) { |
741 |
10 Oct 06 |
olle |
680 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
681 |
System.out.println("An error occured @ writeFileToStream:\n" |
1652 |
22 May 07 |
gregory |
682 |
+ e.getMessage()); |
741 |
10 Oct 06 |
olle |
683 |
} |
741 |
10 Oct 06 |
olle |
684 |
} |
741 |
10 Oct 06 |
olle |
685 |
|
1652 |
22 May 07 |
gregory |
686 |
private void getSettingsFromFile() { |
1652 |
22 May 07 |
gregory |
687 |
try { |
1652 |
22 May 07 |
gregory |
688 |
BufferedReader f_setupFileData = new BufferedReader(new FileReader( |
1652 |
22 May 07 |
gregory |
689 |
s_configFile)); |
741 |
10 Oct 06 |
olle |
690 |
|
1652 |
22 May 07 |
gregory |
691 |
s_portNr = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
692 |
s_indexNames = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
693 |
s_sharedPaths = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
694 |
s_fileExtensions = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
695 |
s_rootPath = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
696 |
s_runnableExtensions = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
697 |
s_aliasNames = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
698 |
s_protectedFolders = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
699 |
s_allowFolderListing = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
700 |
s_allowTheseFileExtensions = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
701 |
s_shareHiddenFiles = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
702 |
s_startupWindowMode = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
703 |
s_allowCGIScript = f_setupFileData.readLine(); |
741 |
10 Oct 06 |
olle |
704 |
|
741 |
10 Oct 06 |
olle |
705 |
yield(); |
1652 |
22 May 07 |
gregory |
706 |
sleep(50); // Be safe, don't close before all data has been sent |
741 |
10 Oct 06 |
olle |
707 |
|
741 |
10 Oct 06 |
olle |
708 |
f_setupFileData.close(); |
1652 |
22 May 07 |
gregory |
709 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
710 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
711 |
System.out.println("An error occured @ getSettingsFromFile:\n" |
1652 |
22 May 07 |
gregory |
712 |
+ e.getMessage()); |
741 |
10 Oct 06 |
olle |
713 |
} |
741 |
10 Oct 06 |
olle |
714 |
} |
741 |
10 Oct 06 |
olle |
715 |
|
1652 |
22 May 07 |
gregory |
716 |
private void createEnvironmentVariables() { |
1652 |
22 May 07 |
gregory |
717 |
if (!b_environmentHasBeenSetUp) { |
1652 |
22 May 07 |
gregory |
718 |
b_environmentHasBeenSetUp = true; |
741 |
10 Oct 06 |
olle |
719 |
getEnvironmentVariablesGivenByBrowser(br_theInputWeGetFromBrowser); |
741 |
10 Oct 06 |
olle |
720 |
} |
741 |
10 Oct 06 |
olle |
721 |
} |
741 |
10 Oct 06 |
olle |
722 |
|
1652 |
22 May 07 |
gregory |
723 |
private String[] getEnvironmentVariablesGivenByBrowser( |
1652 |
22 May 07 |
gregory |
724 |
BufferedReader theInput) { |
1652 |
22 May 07 |
gregory |
725 |
String[] allENVVariablesTMP = new String[maxNumbersOfENVAccepted], allENVVariables = new String[0]; |
1652 |
22 May 07 |
gregory |
726 |
try { |
1652 |
22 May 07 |
gregory |
727 |
String tmp; |
1652 |
22 May 07 |
gregory |
728 |
int numberOfENVGivenByBrowser = 0; // This is the number of |
1652 |
22 May 07 |
gregory |
// ENV-variables we set after we |
1652 |
22 May 07 |
gregory |
// have read what the browser |
1652 |
22 May 07 |
gregory |
// has given us. For example |
1652 |
22 May 07 |
gregory |
// both CONTENT_TYPE and |
1652 |
22 May 07 |
gregory |
// HTTP_CONTENT_TYPE are set |
1652 |
22 May 07 |
gregory |
// when we have read |
1652 |
22 May 07 |
gregory |
// "CONTENT_TYPE". The number of |
1652 |
22 May 07 |
gregory |
// lines given to us from the |
1652 |
22 May 07 |
gregory |
// browser is not necessey (and |
1652 |
22 May 07 |
gregory |
// probably not) |
1652 |
22 May 07 |
gregory |
// ==numberOfENVGivenByBrowser |
741 |
10 Oct 06 |
olle |
740 |
|
1652 |
22 May 07 |
gregory |
741 |
String tmpStr = "_"; // Set this to any none-empty string (!="") |
1652 |
22 May 07 |
gregory |
// (don't set it to null) |
1652 |
22 May 07 |
gregory |
743 |
while (theInput.ready() |
1652 |
22 May 07 |
gregory |
744 |
&& numberOfENVGivenByBrowser < maxNumbersOfENVAccepted - 1) // (assume: |
1652 |
22 May 07 |
gregory |
// maxNumbersOfENVAccepted=200) |
1652 |
22 May 07 |
gregory |
// less |
1652 |
22 May 07 |
gregory |
// than |
1652 |
22 May 07 |
gregory |
// 199 |
1652 |
22 May 07 |
gregory |
// because |
1652 |
22 May 07 |
gregory |
// it |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// possible |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// run |
1652 |
22 May 07 |
gregory |
// "numberOfENVGivenByBrowser++" |
1652 |
22 May 07 |
gregory |
// twice |
1652 |
22 May 07 |
gregory |
// in |
1652 |
22 May 07 |
gregory |
// this |
1652 |
22 May 07 |
gregory |
// loop. |
1652 |
22 May 07 |
gregory |
// (If |
1652 |
22 May 07 |
gregory |
// we |
1652 |
22 May 07 |
gregory |
// start |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// loop |
1652 |
22 May 07 |
gregory |
// with |
1652 |
22 May 07 |
gregory |
// 199 |
1652 |
22 May 07 |
gregory |
// and |
1652 |
22 May 07 |
gregory |
// run |
1652 |
22 May 07 |
gregory |
// "numberOfENVGivenByBrowser++" |
1652 |
22 May 07 |
gregory |
// twice |
1652 |
22 May 07 |
gregory |
// we |
1652 |
22 May 07 |
gregory |
// will |
1652 |
22 May 07 |
gregory |
// try |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// write |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// index |
1652 |
22 May 07 |
gregory |
// 200 |
1652 |
22 May 07 |
gregory |
// (no, |
1652 |
22 May 07 |
gregory |
// not |
1652 |
22 May 07 |
gregory |
// 201; |
1652 |
22 May 07 |
gregory |
// reason: |
1652 |
22 May 07 |
gregory |
// we |
1652 |
22 May 07 |
gregory |
// don't |
1652 |
22 May 07 |
gregory |
// have |
1652 |
22 May 07 |
gregory |
// "++numberOfENVGivenByBrowser"), |
1652 |
22 May 07 |
gregory |
// but |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// last |
1652 |
22 May 07 |
gregory |
// index |
1652 |
22 May 07 |
gregory |
// of |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// array |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// 199 |
1652 |
22 May 07 |
gregory |
796 |
// ==> |
1652 |
22 May 07 |
gregory |
// exception |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// thrown!!!). |
741 |
10 Oct 06 |
olle |
800 |
{ |
1652 |
22 May 07 |
gregory |
// First I only had the |
1652 |
22 May 07 |
gregory |
// "tmpStr=br_theInputWeGetFromBrowser.readLine();" line here, |
1652 |
22 May 07 |
gregory |
// and it worked OK. But after a while I saw I sometimes got |
1652 |
22 May 07 |
gregory |
// problems: "tmpStr=br_theInputWeGetFromBrowser.readLine();" |
1652 |
22 May 07 |
gregory |
// did never quit, the Thread had stopped here. I don't know for |
1652 |
22 May 07 |
gregory |
// sure, but the reason might be that the browser never sends a |
1652 |
22 May 07 |
gregory |
// "\n" or "\r" at the end of the line, so it never becomes a |
1652 |
22 May 07 |
gregory |
// "line" (is the definition of a line "whatsoever\n"??; I don't |
1652 |
22 May 07 |
gregory |
// know...). However, now we instead read |
1652 |
22 May 07 |
gregory |
// "i_valueOfHttpContentLength" from the stream after we have |
1652 |
22 May 07 |
gregory |
// read one empty line (==""). This seems to work without any |
1652 |
22 May 07 |
gregory |
// problems. //(BTW: the problem occured after I had implemented |
1652 |
22 May 07 |
gregory |
// the "401 Not Authorized"-support (so the browser sends a |
1652 |
22 May 07 |
gregory |
// "AUTHORIZATION=Basic enctyptedPass" line now). Is it possible |
1652 |
22 May 07 |
gregory |
// this has anything to do with that the browser doesn't send an |
1652 |
22 May 07 |
gregory |
// \n after the POST-data? (Did the browser send a \n after the |
1652 |
22 May 07 |
gregory |
// POST-data before this?) I don't know... :/ ) |
1652 |
22 May 07 |
gregory |
818 |
if (!tmpStr.equals("")) // This is NOT the empty line before the |
1652 |
22 May 07 |
gregory |
// POST-line |
1652 |
22 May 07 |
gregory |
820 |
tmpStr = theInput.readLine(); |
1652 |
22 May 07 |
gregory |
821 |
else if (i_valueOfHttpContentLength != 0) // This is the empty |
1652 |
22 May 07 |
gregory |
// line before the |
1652 |
22 May 07 |
gregory |
// POST-line (there |
1652 |
22 May 07 |
gregory |
// are no other |
1652 |
22 May 07 |
gregory |
// empty lines) |
1652 |
22 May 07 |
gregory |
826 |
{ |
1652 |
22 May 07 |
gregory |
827 |
if (i_valueOfHttpContentLength > 500) // We are actually |
1652 |
22 May 07 |
gregory |
// not using POST |
1652 |
22 May 07 |
gregory |
// during the |
1652 |
22 May 07 |
gregory |
// setup-connection, |
1652 |
22 May 07 |
gregory |
// but we have |
1652 |
22 May 07 |
gregory |
// implemented this |
1652 |
22 May 07 |
gregory |
// anyway, in case |
1652 |
22 May 07 |
gregory |
// we want to use it |
1652 |
22 May 07 |
gregory |
// later. |
1652 |
22 May 07 |
gregory |
836 |
i_valueOfHttpContentLength = 500; // Don't allow |
1652 |
22 May 07 |
gregory |
// i_valueOfHttpContentLength |
1652 |
22 May 07 |
gregory |
// to be greater |
1652 |
22 May 07 |
gregory |
// than 500, or a |
1652 |
22 May 07 |
gregory |
// "hacker" would be |
1652 |
22 May 07 |
gregory |
// able to create |
1652 |
22 May 07 |
gregory |
// crash Xerver by |
1652 |
22 May 07 |
gregory |
// creating very |
1652 |
22 May 07 |
gregory |
// large |
1652 |
22 May 07 |
gregory |
// byte-arrays... |
741 |
10 Oct 06 |
olle |
846 |
|
1652 |
22 May 07 |
gregory |
847 |
char[] cbuf = new char[i_valueOfHttpContentLength]; |
1652 |
22 May 07 |
gregory |
848 |
theInput.read(cbuf, 0, i_valueOfHttpContentLength); |
1652 |
22 May 07 |
gregory |
849 |
s_stdinDataForPOSTRequests = new String(cbuf); |
1652 |
22 May 07 |
gregory |
850 |
break; // We have read everything we want to read |
1652 |
22 May 07 |
gregory |
851 |
} else |
1652 |
22 May 07 |
gregory |
// This happenes if there is no "CONTENT_LENGTH"-line in the |
1652 |
22 May 07 |
gregory |
// browser request. So this won't happen with a valid |
1652 |
22 May 07 |
gregory |
// browser... |
1652 |
22 May 07 |
gregory |
855 |
break; // We have read everything we want to read |
741 |
10 Oct 06 |
olle |
856 |
|
1652 |
22 May 07 |
gregory |
857 |
if (tmpStr != null) { |
1652 |
22 May 07 |
gregory |
858 |
if (tmpStr.indexOf(":") != -1) // If this really is a line |
1652 |
22 May 07 |
gregory |
// such as "HTTP_Connection: |
1652 |
22 May 07 |
gregory |
// Keep-Alive". Otherwise we |
1652 |
22 May 07 |
gregory |
// have come to the empty |
1652 |
22 May 07 |
gregory |
// line before the |
1652 |
22 May 07 |
gregory |
// POST-line. |
1652 |
22 May 07 |
gregory |
864 |
{ |
1652 |
22 May 07 |
gregory |
// "tmpStr" is using this format: "CONTENT_LENGTH=65" |
1652 |
22 May 07 |
gregory |
// (after the line below has been run) |
1652 |
22 May 07 |
gregory |
867 |
tmpStr = tmpStr.substring(0, tmpStr.indexOf(":")) |
1652 |
22 May 07 |
gregory |
868 |
.toUpperCase().replace('-', '_') |
1652 |
22 May 07 |
gregory |
869 |
+ "=" |
1652 |
22 May 07 |
gregory |
870 |
+ tmpStr.substring(tmpStr.indexOf(": ") + 2); |
1652 |
22 May 07 |
gregory |
871 |
allENVVariablesTMP[numberOfENVGivenByBrowser++] = "HTTP_" |
1652 |
22 May 07 |
gregory |
872 |
+ tmpStr; |
741 |
10 Oct 06 |
olle |
873 |
|
1652 |
22 May 07 |
gregory |
874 |
if (tmpStr.startsWith("CONTENT_LENGTH")) { |
1652 |
22 May 07 |
gregory |
875 |
allENVVariablesTMP[numberOfENVGivenByBrowser++] = tmpStr; |
1652 |
22 May 07 |
gregory |
876 |
i_valueOfHttpContentLength = Integer |
1652 |
22 May 07 |
gregory |
877 |
.parseInt(tmpStr.substring(tmpStr |
1652 |
22 May 07 |
gregory |
878 |
.indexOf("=") + 1)); // Save how |
1652 |
22 May 07 |
gregory |
// long the |
1652 |
22 May 07 |
gregory |
// POST-line |
1652 |
22 May 07 |
gregory |
// shall be |
1652 |
22 May 07 |
gregory |
882 |
} else if (tmpStr.startsWith("CONTENT_TYPE")) { |
1652 |
22 May 07 |
gregory |
883 |
allENVVariablesTMP[numberOfENVGivenByBrowser++] = tmpStr; |
1652 |
22 May 07 |
gregory |
884 |
} else if (tmpStr.startsWith("AUTHORIZATION")) { |
1652 |
22 May 07 |
gregory |
885 |
s_encryptedPasswordGiven = tmpStr.substring(tmpStr |
1652 |
22 May 07 |
gregory |
886 |
.indexOf("=Basic ") |
1652 |
22 May 07 |
gregory |
887 |
+ ("=Basic ".length())); // Format: |
1652 |
22 May 07 |
gregory |
// "encryptedPassword" |
1652 |
22 May 07 |
gregory |
// (actually, it |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// "user:pass" |
1652 |
22 May 07 |
gregory |
// encrypted) |
1652 |
22 May 07 |
gregory |
893 |
} |
1652 |
22 May 07 |
gregory |
// else if (tmpStr.startsWith("COOKIE=")) |
1652 |
22 May 07 |
gregory |
// s_cookiesFromBrowser=tmpStr.substring("COOKIE=".length()); |
1652 |
22 May 07 |
gregory |
// //We don't need this |
1652 |
22 May 07 |
gregory |
897 |
} else if (s_requestMethod.equals("POST") |
1652 |
22 May 07 |
gregory |
898 |
&& !tmpStr.equals("")) // If, and only if, a |
1652 |
22 May 07 |
gregory |
// POST-reques has been |
1652 |
22 May 07 |
gregory |
// made, then there is more |
1652 |
22 May 07 |
gregory |
// information that shall be |
1652 |
22 May 07 |
gregory |
// read... (if tmpStr is a |
1652 |
22 May 07 |
gregory |
// empty string we are at |
1652 |
22 May 07 |
gregory |
// the empty line before the |
1652 |
22 May 07 |
gregory |
// POST-data line) |
741 |
10 Oct 06 |
olle |
906 |
{ |
1652 |
22 May 07 |
gregory |
907 |
s_stdinDataForPOSTRequests = tmpStr.substring(0, |
1652 |
22 May 07 |
gregory |
908 |
i_valueOfHttpContentLength); // Guaranty that |
1652 |
22 May 07 |
gregory |
// "s_stdinDataForPOSTRequests" |
1652 |
22 May 07 |
gregory |
// doesn't |
1652 |
22 May 07 |
gregory |
// contain more |
1652 |
22 May 07 |
gregory |
// than |
1652 |
22 May 07 |
gregory |
// "i_valueOfHttpContentLength" |
1652 |
22 May 07 |
gregory |
// bytes |
1652 |
22 May 07 |
gregory |
915 |
|
1652 |
22 May 07 |
gregory |
916 |
break; // With a correct request, this is not necessey, |
1652 |
22 May 07 |
gregory |
// as the POST-lien data is the last one |
741 |
10 Oct 06 |
olle |
918 |
} |
741 |
10 Oct 06 |
olle |
919 |
} |
741 |
10 Oct 06 |
olle |
920 |
} |
741 |
10 Oct 06 |
olle |
921 |
|
1652 |
22 May 07 |
gregory |
922 |
allENVVariables = new String[numberOfENVGivenByBrowser]; |
1652 |
22 May 07 |
gregory |
923 |
for (int i = 0; i < numberOfENVGivenByBrowser; i++) |
1652 |
22 May 07 |
gregory |
924 |
allENVVariables[i] = allENVVariablesTMP[i]; |
741 |
10 Oct 06 |
olle |
925 |
|
1652 |
22 May 07 |
gregory |
// for (int i=0; i<numberOfENVGivenByBrowser; i++) |
1652 |
22 May 07 |
gregory |
// System.out.println("data "+allENVVariables[i]); |
741 |
10 Oct 06 |
olle |
928 |
|
1652 |
22 May 07 |
gregory |
// From Opera: |
1652 |
22 May 07 |
gregory |
// GET /?y4errewfdpp HTTP/1.1 |
1652 |
22 May 07 |
gregory |
// User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera |
1652 |
22 May 07 |
gregory |
// 6.0 [sv] |
1652 |
22 May 07 |
gregory |
// Host: localhost:12345 |
1652 |
22 May 07 |
gregory |
// Accept: text/html, image/png, image/jpeg, image/gif, |
1652 |
22 May 07 |
gregory |
// image/x-xbitmap, */* |
1652 |
22 May 07 |
gregory |
// Accept-Language: sv |
1652 |
22 May 07 |
gregory |
// Accept-Charset: windows-1252;q=1.0, utf-8;q=1.0, utf-16;q=1.0, |
1652 |
22 May 07 |
gregory |
// iso-8859-1;q=0.6, *;q=0.1 |
1652 |
22 May 07 |
gregory |
// Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 |
1652 |
22 May 07 |
gregory |
// Cache-Control: no-cache |
1652 |
22 May 07 |
gregory |
// Connection: Keep-Alive, TE |
1652 |
22 May 07 |
gregory |
// TE: deflate, gzip, chunked, identity, trailers |
741 |
10 Oct 06 |
olle |
943 |
|
1652 |
22 May 07 |
gregory |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
System.out |
1652 |
22 May 07 |
gregory |
.println("An error occured @ getEnvironmentVariablesGivenByBrowser:\n" |
1652 |
22 May 07 |
gregory |
+ e.getMessage()); |
1652 |
22 May 07 |
gregory |
949 |
} |
1652 |
22 May 07 |
gregory |
return allENVVariables; |
741 |
10 Oct 06 |
olle |
951 |
} |
741 |
10 Oct 06 |
olle |
952 |
} |