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.HostInfo; |
791 |
23 Oct 06 |
olle |
59 |
import se.lu.thep.coreftpd.common.MyHashTable; |
791 |
23 Oct 06 |
olle |
60 |
import se.lu.thep.coreftpd.common.MyString; |
791 |
23 Oct 06 |
olle |
61 |
import se.lu.thep.coreftpd.common.MyWindow; |
741 |
10 Oct 06 |
olle |
62 |
import java.awt.Color; |
741 |
10 Oct 06 |
olle |
63 |
import java.awt.Font; |
741 |
10 Oct 06 |
olle |
64 |
import java.io.BufferedReader; |
741 |
10 Oct 06 |
olle |
65 |
import java.io.File; |
741 |
10 Oct 06 |
olle |
66 |
import java.io.FileReader; |
741 |
10 Oct 06 |
olle |
67 |
import java.net.ServerSocket; |
741 |
10 Oct 06 |
olle |
68 |
import java.net.Socket; |
741 |
10 Oct 06 |
olle |
69 |
import java.util.Locale; |
741 |
10 Oct 06 |
olle |
70 |
|
741 |
10 Oct 06 |
olle |
71 |
/** |
1652 |
22 May 07 |
gregory |
72 |
* |
1652 |
22 May 07 |
gregory |
* <B>About this class:</B> <BR> |
1652 |
22 May 07 |
gregory |
* This is the kernel for <CODE>Xerver</CODE> (and it's a <CODE>Thread</CODE>). |
1652 |
22 May 07 |
gregory |
* This class creates all threads (<CODE>NewConnection</CODE>) that are used |
1652 |
22 May 07 |
gregory |
* when a request is sent to Xerver. Instead of starting this class, start |
1652 |
22 May 07 |
gregory |
* <CODE>Start.class</CODE>. |
1652 |
22 May 07 |
gregory |
78 |
* |
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 |
81 |
*/ |
741 |
10 Oct 06 |
olle |
82 |
|
1652 |
22 May 07 |
gregory |
83 |
final public class XerverKernel extends Thread { |
1652 |
22 May 07 |
gregory |
84 |
private static final double thisVersion = 4.20; |
741 |
10 Oct 06 |
olle |
85 |
|
1652 |
22 May 07 |
gregory |
86 |
private static final String thisVersionString = "4.20"; |
741 |
10 Oct 06 |
olle |
87 |
|
1652 |
22 May 07 |
gregory |
88 |
private static final String s_xerverName = "Xerver/" |
1652 |
22 May 07 |
gregory |
89 |
+ getThisVersionString(); |
741 |
10 Oct 06 |
olle |
90 |
|
1652 |
22 May 07 |
gregory |
91 |
private final boolean b_showErrors = false; |
1652 |
22 May 07 |
gregory |
92 |
|
1652 |
22 May 07 |
gregory |
93 |
private static final String hiddenFolder = "data" + File.separator; |
1652 |
22 May 07 |
gregory |
94 |
|
1652 |
22 May 07 |
gregory |
95 |
private static final String errorFilesFolder = "errorHTML" + File.separator; |
1652 |
22 May 07 |
gregory |
96 |
|
1652 |
22 May 07 |
gregory |
97 |
private static final String s_configFile = hiddenFolder + "Xerver.cfg"; |
1652 |
22 May 07 |
gregory |
98 |
|
1652 |
22 May 07 |
gregory |
99 |
private final static int i_soTimeoutAfterKeepAliveTransfer = 5000; |
1652 |
22 May 07 |
gregory |
100 |
|
1652 |
22 May 07 |
gregory |
101 |
private static final int i_maxNumberOfActiveConnections = 150; // Note: one |
1652 |
22 May 07 |
gregory |
// normal |
1652 |
22 May 07 |
gregory |
// browser |
1652 |
22 May 07 |
gregory |
// might |
1652 |
22 May 07 |
gregory |
// create |
1652 |
22 May 07 |
gregory |
// more than |
1652 |
22 May 07 |
gregory |
// one |
1652 |
22 May 07 |
gregory |
// connection. |
1652 |
22 May 07 |
gregory |
// A visitor |
1652 |
22 May 07 |
gregory |
// with a |
1652 |
22 May 07 |
gregory |
// *normal* |
1652 |
22 May 07 |
gregory |
// browser |
1652 |
22 May 07 |
gregory |
// might |
1652 |
22 May 07 |
gregory |
// create |
1652 |
22 May 07 |
gregory |
// 1-5 |
1652 |
22 May 07 |
gregory |
// connections |
1652 |
22 May 07 |
gregory |
// (depending |
1652 |
22 May 07 |
gregory |
// on how |
1652 |
22 May 07 |
gregory |
// well the |
1652 |
22 May 07 |
gregory |
// browser |
1652 |
22 May 07 |
gregory |
// uses the |
1652 |
22 May 07 |
gregory |
// "Keep-Alive" |
1652 |
22 May 07 |
gregory |
// connection |
1652 |
22 May 07 |
gregory |
// ability). |
1652 |
22 May 07 |
gregory |
// And yes, |
1652 |
22 May 07 |
gregory |
// this |
1652 |
22 May 07 |
gregory |
// means |
1652 |
22 May 07 |
gregory |
// that if |
1652 |
22 May 07 |
gregory |
// someone |
1652 |
22 May 07 |
gregory |
// creates |
1652 |
22 May 07 |
gregory |
// 150 |
1652 |
22 May 07 |
gregory |
// connections |
1652 |
22 May 07 |
gregory |
// to this |
1652 |
22 May 07 |
gregory |
// server, |
1652 |
22 May 07 |
gregory |
// no one |
1652 |
22 May 07 |
gregory |
// else will |
1652 |
22 May 07 |
gregory |
// be able |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// connect |
1652 |
22 May 07 |
gregory |
// to us |
1652 |
22 May 07 |
gregory |
// anymore. |
1652 |
22 May 07 |
gregory |
142 |
|
741 |
10 Oct 06 |
olle |
143 |
public static int i_portNr; |
741 |
10 Oct 06 |
olle |
144 |
|
1652 |
22 May 07 |
gregory |
145 |
public static boolean b_startupWindowMode; // If this is true, no window |
1652 |
22 May 07 |
gregory |
// will be opened. If this is |
1652 |
22 May 07 |
gregory |
// false, the awt-window will be |
1652 |
22 May 07 |
gregory |
// used. NOTE: When you start |
1652 |
22 May 07 |
gregory |
// this class from the Swing |
1652 |
22 May 07 |
gregory |
// interface, this will be set |
1652 |
22 May 07 |
gregory |
// to true so that the |
1652 |
22 May 07 |
gregory |
// AWT-window won't popup //When |
1652 |
22 May 07 |
gregory |
// you call the |
1652 |
22 May 07 |
gregory |
// XerverKernel()-constructor |
1652 |
22 May 07 |
gregory |
// this varaiable will be set to |
1652 |
22 May 07 |
gregory |
// true/false depending on what |
1652 |
22 May 07 |
gregory |
// you have choosed in the |
1652 |
22 May 07 |
gregory |
// setup-file: true=[0=you have |
1652 |
22 May 07 |
gregory |
// choosen to run with no |
1652 |
22 May 07 |
gregory |
// "window"]; false=[1 = you |
1652 |
22 May 07 |
gregory |
// have choosen to use a static |
1652 |
22 May 07 |
gregory |
// window (AWT); 2 = you have |
1652 |
22 May 07 |
gregory |
// choosen to use the most |
1652 |
22 May 07 |
gregory |
// advanced interface (with |
1652 |
22 May 07 |
gregory |
// logging) (Swing)] |
1652 |
22 May 07 |
gregory |
166 |
|
741 |
10 Oct 06 |
olle |
167 |
/* |
1652 |
22 May 07 |
gregory |
* public String [] as_indexNames; public String [] as_sharedPaths; public |
1652 |
22 May 07 |
gregory |
* String [] as_fileExtensions; public String s_rootPath; public MyHashTable |
1652 |
22 May 07 |
gregory |
* myHT_runnableExtensions; public MyHashTable myHT_allAliases; public |
1652 |
22 May 07 |
gregory |
* String [] as_xerverPasswd; public boolean b_allowFolderListing; public |
1652 |
22 May 07 |
gregory |
* boolean b_allowTheseFileExtensions; public boolean b_shareHiddenFiles; |
1652 |
22 May 07 |
gregory |
* public boolean b_allowExecuteScript; |
1652 |
22 May 07 |
gregory |
174 |
*/ |
741 |
10 Oct 06 |
olle |
175 |
|
741 |
10 Oct 06 |
olle |
176 |
public boolean xerverHasStarted; |
1652 |
22 May 07 |
gregory |
177 |
|
741 |
10 Oct 06 |
olle |
178 |
public static String s_egetIp; |
1652 |
22 May 07 |
gregory |
179 |
|
741 |
10 Oct 06 |
olle |
180 |
private MyWindow theWindow; |
741 |
10 Oct 06 |
olle |
181 |
|
1652 |
22 May 07 |
gregory |
182 |
public MenuOptions myMenuOptions = null; // This will remain null if, and |
1652 |
22 May 07 |
gregory |
// only if, you run Xerver |
1652 |
22 May 07 |
gregory |
// without the Swing interface. |
1652 |
22 May 07 |
gregory |
// However, if you start Xerver |
1652 |
22 May 07 |
gregory |
// from the swing interface this |
1652 |
22 May 07 |
gregory |
// will NOT be null. |
741 |
10 Oct 06 |
olle |
188 |
|
1652 |
22 May 07 |
gregory |
189 |
private ThreadGroup connectionsThreadGroup;// Make all connection-Threads |
1652 |
22 May 07 |
gregory |
// belong to this |
1652 |
22 May 07 |
gregory |
// connection-ThreadGroup. (now |
1652 |
22 May 07 |
gregory |
// we can easy keep track of how |
1652 |
22 May 07 |
gregory |
// many Threads we have alive) |
1652 |
22 May 07 |
gregory |
194 |
|
1652 |
22 May 07 |
gregory |
195 |
XerverKernel() // Run this only if you want the setup-file to decide if the |
1652 |
22 May 07 |
gregory |
// AWT window shall open or not |
1652 |
22 May 07 |
gregory |
197 |
{ // When you call the XerverKernel()-constructor "b_startupWindowMode" |
1652 |
22 May 07 |
gregory |
// will be set to true/false depending on what you have choosed in the |
1652 |
22 May 07 |
gregory |
// setup-file: true=[0=you have choosen to run with no "window"]; |
1652 |
22 May 07 |
gregory |
// false=[1 = you have choosen to use a static window (AWT); 2 = you |
1652 |
22 May 07 |
gregory |
// have choosen to use the most advanced interface (with logging) |
1652 |
22 May 07 |
gregory |
// (Swing)] |
1652 |
22 May 07 |
gregory |
203 |
Locale.setDefault(new Locale("en", "US")); // I "java.util.*" |
1652 |
22 May 07 |
gregory |
// setPriority(MAX_PRIORITY); |
741 |
10 Oct 06 |
olle |
205 |
initVariables(); |
741 |
10 Oct 06 |
olle |
206 |
getServerDefaults(); |
1652 |
22 May 07 |
gregory |
207 |
exchangeVariablesBetweenClasses(); // ALWAYS run this after running |
1652 |
22 May 07 |
gregory |
// "getServerDefaults()" |
1652 |
22 May 07 |
gregory |
// totalNumberOfHits=0; |
1652 |
22 May 07 |
gregory |
// totalNumberOfBytesDownloaded=0; |
741 |
10 Oct 06 |
olle |
211 |
startXerver(); |
741 |
10 Oct 06 |
olle |
212 |
} |
741 |
10 Oct 06 |
olle |
213 |
|
1652 |
22 May 07 |
gregory |
// If you call this constructor with null Xerver will start but without the |
1652 |
22 May 07 |
gregory |
// "Xerver is Running"-window. |
1652 |
22 May 07 |
gregory |
216 |
XerverKernel(MenuOptions argMenuOptions) { |
1652 |
22 May 07 |
gregory |
217 |
this(true, argMenuOptions); |
741 |
10 Oct 06 |
olle |
218 |
} |
741 |
10 Oct 06 |
olle |
219 |
|
1652 |
22 May 07 |
gregory |
// If you call this constructor with null Xerver will start but without the |
1652 |
22 May 07 |
gregory |
// "Xerver is Running"-window. |
1652 |
22 May 07 |
gregory |
// if argStartupWindowMode==true, no window will open. If |
1652 |
22 May 07 |
gregory |
// argStartupWindowMode==false an AWT window will popup |
1652 |
22 May 07 |
gregory |
224 |
XerverKernel(boolean argStartupWindowMode, MenuOptions argMenuOptions) { |
1652 |
22 May 07 |
gregory |
225 |
myMenuOptions = argMenuOptions; |
1652 |
22 May 07 |
gregory |
226 |
Locale.setDefault(new Locale("en", "US")); // I "java.util.*" |
741 |
10 Oct 06 |
olle |
227 |
initVariables(); |
741 |
10 Oct 06 |
olle |
228 |
getServerDefaults(); |
1652 |
22 May 07 |
gregory |
229 |
exchangeVariablesBetweenClasses(); // ALWAYS run this after running |
1652 |
22 May 07 |
gregory |
// "getServerDefaults()" |
1652 |
22 May 07 |
gregory |
231 |
b_startupWindowMode = argStartupWindowMode; // Also, this overwrites |
1652 |
22 May 07 |
gregory |
// what the Xerver.cfg says |
1652 |
22 May 07 |
gregory |
// about this variable |
1652 |
22 May 07 |
gregory |
// totalNumberOfHits=0; |
1652 |
22 May 07 |
gregory |
// totalNumberOfBytesDownloaded=0; |
741 |
10 Oct 06 |
olle |
236 |
startXerver(); |
741 |
10 Oct 06 |
olle |
237 |
} |
741 |
10 Oct 06 |
olle |
238 |
|
1652 |
22 May 07 |
gregory |
239 |
private void initVariables() { |
1652 |
22 May 07 |
gregory |
240 |
try { |
741 |
10 Oct 06 |
olle |
241 |
/* |
1652 |
22 May 07 |
gregory |
* s_egetIp=InetAddress.getLocalHost().toString(); // |
1652 |
22 May 07 |
gregory |
* "pii-450/213.114.143.48" |
1652 |
22 May 07 |
gregory |
* s_egetIp=s_egetIp.substring(s_egetIp.indexOf("/")+1); |
1652 |
22 May 07 |
gregory |
245 |
*/ |
1652 |
22 May 07 |
gregory |
246 |
connectionsThreadGroup = new ThreadGroup("Connections"); |
1652 |
22 May 07 |
gregory |
247 |
s_egetIp = HostInfo.getIPorLocalhost(); |
1652 |
22 May 07 |
gregory |
248 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
249 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
250 |
System.out |
1652 |
22 May 07 |
gregory |
251 |
.println("An error has occured @ initVariables\n" + e); |
741 |
10 Oct 06 |
olle |
252 |
} |
741 |
10 Oct 06 |
olle |
253 |
} |
741 |
10 Oct 06 |
olle |
254 |
|
2386 |
14 Nov 07 |
gregory |
255 |
@Override |
1652 |
22 May 07 |
gregory |
256 |
public void run() { |
1652 |
22 May 07 |
gregory |
257 |
try { |
1652 |
22 May 07 |
gregory |
258 |
ServerSocket myServerSocket = new ServerSocket(i_portNr); |
741 |
10 Oct 06 |
olle |
259 |
|
1652 |
22 May 07 |
gregory |
260 |
if (myMenuOptions == null) // If the user has no graphical |
1652 |
22 May 07 |
gregory |
// interface (is not using |
1652 |
22 May 07 |
gregory |
// ProgramWindow), then... |
1652 |
22 May 07 |
gregory |
263 |
{ |
1652 |
22 May 07 |
gregory |
264 |
writeManyChar("#", 70); |
1652 |
22 May 07 |
gregory |
265 |
writeNiceText( |
1652 |
22 May 07 |
gregory |
266 |
"Xerver, powered with Java Technology, is up and running!", |
1652 |
22 May 07 |
gregory |
267 |
64); |
1652 |
22 May 07 |
gregory |
268 |
writeNiceText("http://www.JavaScript.nu/xerver/", 64); |
1652 |
22 May 07 |
gregory |
269 |
writeManyChar("#", 70); |
1652 |
22 May 07 |
gregory |
270 |
writeNiceText("Xerver is currently scanning port " + i_portNr |
1652 |
22 May 07 |
gregory |
271 |
+ " for new connections.", 64); |
1652 |
22 May 07 |
gregory |
272 |
writeNiceText("You may change this in the setup. Enjoy!", 64); |
1652 |
22 May 07 |
gregory |
273 |
writeNiceText("To visit your website, surf to:", 64); |
1652 |
22 May 07 |
gregory |
274 |
if (i_portNr != 80) |
1652 |
22 May 07 |
gregory |
275 |
writeNiceText("http://" + s_egetIp + ":" + i_portNr + "/", |
1652 |
22 May 07 |
gregory |
276 |
64); |
1652 |
22 May 07 |
gregory |
277 |
else |
1652 |
22 May 07 |
gregory |
278 |
writeNiceText("http://" + s_egetIp + "/", 64); |
741 |
10 Oct 06 |
olle |
279 |
|
1652 |
22 May 07 |
gregory |
// InetAddress.getByName("localhost").toString() == |
1652 |
22 May 07 |
gregory |
// "localhost/127.0.0.1" |
741 |
10 Oct 06 |
olle |
282 |
|
1652 |
22 May 07 |
gregory |
283 |
writeNiceText( |
1652 |
22 May 07 |
gregory |
284 |
"Of course, also your friends can visit your website at this URL.", |
1652 |
22 May 07 |
gregory |
285 |
64); |
1652 |
22 May 07 |
gregory |
286 |
writeManyChar("#", 70); |
1652 |
22 May 07 |
gregory |
287 |
System.out.println(""); |
1652 |
22 May 07 |
gregory |
288 |
System.out.println(""); |
1652 |
22 May 07 |
gregory |
289 |
writeManyChar("#", 70); |
1652 |
22 May 07 |
gregory |
290 |
writeNiceText("IMPORTANT:", 64); |
1652 |
22 May 07 |
gregory |
291 |
writeNiceText( |
1652 |
22 May 07 |
gregory |
292 |
"If you close this window Xerver will be shut down!", |
1652 |
22 May 07 |
gregory |
293 |
64); |
1652 |
22 May 07 |
gregory |
294 |
writeManyChar("#", 70); |
1652 |
22 May 07 |
gregory |
295 |
} |
741 |
10 Oct 06 |
olle |
296 |
|
1652 |
22 May 07 |
gregory |
297 |
openWindow(); |
1652 |
22 May 07 |
gregory |
298 |
Socket so_userConnection;// create this ONCE outside the loop... |
1652 |
22 May 07 |
gregory |
// (it's faster...) |
1652 |
22 May 07 |
gregory |
300 |
while (true) // IMPORTANT!!! make sure this loop won't go around |
1652 |
22 May 07 |
gregory |
// too many times without doing anything or java |
1652 |
22 May 07 |
gregory |
// will use up to 100% CPU. Instead let the loop be |
1652 |
22 May 07 |
gregory |
// halted by for example an accept call which will |
1652 |
22 May 07 |
gregory |
// wait for a network connection to be |
1652 |
22 May 07 |
gregory |
// established... |
741 |
10 Oct 06 |
olle |
306 |
{ |
1652 |
22 May 07 |
gregory |
307 |
NewConnection myNewConnection; |
1652 |
22 May 07 |
gregory |
308 |
so_userConnection = myServerSocket.accept(); // Wait until a |
1652 |
22 May 07 |
gregory |
// request is |
1652 |
22 May 07 |
gregory |
// sent to the |
1652 |
22 May 07 |
gregory |
// server (with |
1652 |
22 May 07 |
gregory |
// "myServerSocket.setSoTimeout()" |
1652 |
22 May 07 |
gregory |
// we can limit |
1652 |
22 May 07 |
gregory |
// the time we |
1652 |
22 May 07 |
gregory |
// wait for |
1652 |
22 May 07 |
gregory |
// "accept") |
1652 |
22 May 07 |
gregory |
317 |
so_userConnection |
1652 |
22 May 07 |
gregory |
318 |
.setSoTimeout(i_soTimeoutAfterKeepAliveTransfer); // IMPORTANT: |
1652 |
22 May 07 |
gregory |
// This |
1652 |
22 May 07 |
gregory |
// must |
1652 |
22 May 07 |
gregory |
// be |
1652 |
22 May 07 |
gregory |
// long |
1652 |
22 May 07 |
gregory |
// enough |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// make |
1652 |
22 May 07 |
gregory |
// sure |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// Keep-Alive-functionality |
1652 |
22 May 07 |
gregory |
// will |
1652 |
22 May 07 |
gregory |
// work. |
1652 |
22 May 07 |
gregory |
// Lets |
1652 |
22 May 07 |
gregory |
// say |
1652 |
22 May 07 |
gregory |
// this |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// set |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// 5000 |
1652 |
22 May 07 |
gregory |
// (5 |
1652 |
22 May 07 |
gregory |
// sec), |
1652 |
22 May 07 |
gregory |
// and |
1652 |
22 May 07 |
gregory |
// a |
1652 |
22 May 07 |
gregory |
// browser |
1652 |
22 May 07 |
gregory |
// starts |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// download |
1652 |
22 May 07 |
gregory |
// a |
1652 |
22 May 07 |
gregory |
// file |
1652 |
22 May 07 |
gregory |
// which |
1652 |
22 May 07 |
gregory |
// might |
1652 |
22 May 07 |
gregory |
// take |
1652 |
22 May 07 |
gregory |
// 6 |
1652 |
22 May 07 |
gregory |
// sec. |
1652 |
22 May 07 |
gregory |
// After |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// download |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// completed |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// connection |
1652 |
22 May 07 |
gregory |
// will |
1652 |
22 May 07 |
gregory |
// be |
1652 |
22 May 07 |
gregory |
// closed, |
1652 |
22 May 07 |
gregory |
// which |
1652 |
22 May 07 |
gregory |
// means |
1652 |
22 May 07 |
gregory |
// we |
1652 |
22 May 07 |
gregory |
// don't |
1652 |
22 May 07 |
gregory |
// use |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// smart |
1652 |
22 May 07 |
gregory |
// "Keep-Alive" |
1652 |
22 May 07 |
gregory |
// features. |
1652 |
22 May 07 |
gregory |
// The |
1652 |
22 May 07 |
gregory |
// solution |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// to |
1652 |
22 May 07 |
gregory |
// set |
1652 |
22 May 07 |
gregory |
// this |
1652 |
22 May 07 |
gregory |
// to 0 |
1652 |
22 May 07 |
gregory |
// (infinity) |
1652 |
22 May 07 |
gregory |
// when |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// download |
1652 |
22 May 07 |
gregory |
// starts |
1652 |
22 May 07 |
gregory |
// and |
1652 |
22 May 07 |
gregory |
// set |
1652 |
22 May 07 |
gregory |
// this |
1652 |
22 May 07 |
gregory |
// back |
1652 |
22 May 07 |
gregory |
// to 5 |
1652 |
22 May 07 |
gregory |
// secs |
1652 |
22 May 07 |
gregory |
// when |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// file |
1652 |
22 May 07 |
gregory |
// download |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// finished. |
1652 |
22 May 07 |
gregory |
396 |
if (xerverHasStarted |
1652 |
22 May 07 |
gregory |
397 |
&& connectionsThreadGroup.activeCount() <= i_maxNumberOfActiveConnections) // IF |
1652 |
22 May 07 |
gregory |
// [The |
1652 |
22 May 07 |
gregory |
// browser |
1652 |
22 May 07 |
gregory |
// has |
1652 |
22 May 07 |
gregory |
// started] |
1652 |
22 May 07 |
gregory |
// AND |
1652 |
22 May 07 |
gregory |
// [the |
1652 |
22 May 07 |
gregory |
// maximum |
1652 |
22 May 07 |
gregory |
// number |
1652 |
22 May 07 |
gregory |
// of |
1652 |
22 May 07 |
gregory |
// connections |
1652 |
22 May 07 |
gregory |
// allowed |
1652 |
22 May 07 |
gregory |
// has |
1652 |
22 May 07 |
gregory |
// not |
1652 |
22 May 07 |
gregory |
// been |
1652 |
22 May 07 |
gregory |
// reached]... |
741 |
10 Oct 06 |
olle |
413 |
{ |
1652 |
22 May 07 |
gregory |
// i_numberOfUsersOnline++; |
1652 |
22 May 07 |
gregory |
415 |
myNewConnection = new NewConnection(so_userConnection, |
1652 |
22 May 07 |
gregory |
416 |
connectionsThreadGroup); |
1652 |
22 May 07 |
gregory |
417 |
try { |
1652 |
22 May 07 |
gregory |
418 |
myNewConnection.start(); |
1652 |
22 May 07 |
gregory |
419 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
420 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
421 |
System.out.println("An error has occured @ run\n" |
1652 |
22 May 07 |
gregory |
422 |
+ e); |
1652 |
22 May 07 |
gregory |
423 |
} |
1652 |
22 May 07 |
gregory |
424 |
} else { |
1652 |
22 May 07 |
gregory |
425 |
so_userConnection.close(); |
741 |
10 Oct 06 |
olle |
426 |
} |
741 |
10 Oct 06 |
olle |
427 |
} |
1652 |
22 May 07 |
gregory |
428 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
429 |
if (!b_startupWindowMode || myMenuOptions != null) // If [the user |
1652 |
22 May 07 |
gregory |
// shall see all |
1652 |
22 May 07 |
gregory |
// popup |
1652 |
22 May 07 |
gregory |
// windows] OR |
1652 |
22 May 07 |
gregory |
// [the user has |
1652 |
22 May 07 |
gregory |
// a graphical |
1652 |
22 May 07 |
gregory |
// interface (is |
1652 |
22 May 07 |
gregory |
// using |
1652 |
22 May 07 |
gregory |
// ProgramWindow)], |
1652 |
22 May 07 |
gregory |
// then... |
741 |
10 Oct 06 |
olle |
439 |
{ |
1652 |
22 May 07 |
gregory |
440 |
theWindow = new MyWindow(530, 200, "Xerver: An error occured"); |
1652 |
22 May 07 |
gregory |
441 |
System.out |
1652 |
22 May 07 |
gregory |
442 |
.println("An error occured:\nYou are probably already running Xerver.\nIf you're not running Xerver already you have another application using port " |
1652 |
22 May 07 |
gregory |
443 |
+ i_portNr |
1652 |
22 May 07 |
gregory |
444 |
+ ".\nPlease run the setup and change the port number you are using to another number."); |
1652 |
22 May 07 |
gregory |
445 |
theWindow.setBackground(new Color(212, 208, 200)); |
741 |
10 Oct 06 |
olle |
446 |
|
1652 |
22 May 07 |
gregory |
447 |
int deltaX = 0, deltaY = 0; // To make it easy to adjust there |
1652 |
22 May 07 |
gregory |
// is no specific origo |
1652 |
22 May 07 |
gregory |
449 |
theWindow.setFont(new Font("Arial, Verdana", Font.BOLD, 38)); |
741 |
10 Oct 06 |
olle |
450 |
|
1652 |
22 May 07 |
gregory |
451 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
452 |
theWindow.drawString("X", 22 + deltaX, 32 + deltaY); |
1652 |
22 May 07 |
gregory |
453 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
454 |
theWindow.drawString("erver", 46 + deltaX, 32 + deltaY); |
1652 |
22 May 07 |
gregory |
455 |
theWindow.setColor(Color.gray); |
1652 |
22 May 07 |
gregory |
456 |
theWindow.drawString("- an error occured", 152 + deltaX, |
1652 |
22 May 07 |
gregory |
457 |
32 + deltaY); |
741 |
10 Oct 06 |
olle |
458 |
|
1652 |
22 May 07 |
gregory |
459 |
theWindow.setColor(Color.red); |
1652 |
22 May 07 |
gregory |
460 |
theWindow.drawString("X", 20 + deltaX, 30 + deltaY); |
1652 |
22 May 07 |
gregory |
461 |
theWindow.setColor(Color.blue); |
1652 |
22 May 07 |
gregory |
462 |
theWindow.drawString("erver", 44 + deltaX, 30 + deltaY); |
1652 |
22 May 07 |
gregory |
463 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
464 |
theWindow.drawString("- an error occured", 150 + deltaX, |
1652 |
22 May 07 |
gregory |
465 |
30 + deltaY); |
741 |
10 Oct 06 |
olle |
466 |
|
1652 |
22 May 07 |
gregory |
467 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
468 |
theWindow.setFont(new Font("Courier", Font.PLAIN, 12)); |
741 |
10 Oct 06 |
olle |
469 |
|
1652 |
22 May 07 |
gregory |
470 |
int xKord = 5, yKord = 50, deltaYKord = 13; |
1652 |
22 May 07 |
gregory |
471 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
472 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
473 |
theWindow.drawString(returnNiceText("An error occured:", 64), |
1652 |
22 May 07 |
gregory |
474 |
xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
475 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
476 |
"You are probably already running Xerver.", 64), xKord, |
1652 |
22 May 07 |
gregory |
477 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
478 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
479 |
"If you're not running Xerver already you have", 64), |
1652 |
22 May 07 |
gregory |
480 |
xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
481 |
theWindow.drawString( |
1652 |
22 May 07 |
gregory |
482 |
returnNiceText("another application using port " |
1652 |
22 May 07 |
gregory |
483 |
+ i_portNr + ".", 64), xKord, |
1652 |
22 May 07 |
gregory |
484 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
485 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
486 |
"Please run the setup and change the port number", 64), |
1652 |
22 May 07 |
gregory |
487 |
xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
488 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
489 |
"you are using to another number.", 64), xKord, |
1652 |
22 May 07 |
gregory |
490 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
491 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
492 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
493 |
} else |
1652 |
22 May 07 |
gregory |
494 |
System.out |
1652 |
22 May 07 |
gregory |
495 |
.println("An error occured:\nYou are probably already running Xerver.\nIf you're not running Xerver already you have\nanother application using port " |
1652 |
22 May 07 |
gregory |
496 |
+ i_portNr |
1652 |
22 May 07 |
gregory |
497 |
+ ".\nPlease run the setup and change the port number\nyou are using to another number."); |
741 |
10 Oct 06 |
olle |
498 |
} |
741 |
10 Oct 06 |
olle |
499 |
} |
741 |
10 Oct 06 |
olle |
500 |
|
1652 |
22 May 07 |
gregory |
501 |
public void addVisitorToStat(HitStatistic hit) { |
1652 |
22 May 07 |
gregory |
502 |
if (myMenuOptions != null) |
741 |
10 Oct 06 |
olle |
503 |
myMenuOptions.addIPToList(hit); |
741 |
10 Oct 06 |
olle |
504 |
} |
741 |
10 Oct 06 |
olle |
505 |
|
1652 |
22 May 07 |
gregory |
506 |
public int getNumberOfActiveConnections() { |
741 |
10 Oct 06 |
olle |
507 |
return connectionsThreadGroup.activeCount(); |
741 |
10 Oct 06 |
olle |
508 |
} |
741 |
10 Oct 06 |
olle |
509 |
|
1652 |
22 May 07 |
gregory |
510 |
public void startXerver() { |
1652 |
22 May 07 |
gregory |
511 |
NewConnection.b_acceptConnections = true; |
1652 |
22 May 07 |
gregory |
512 |
xerverHasStarted = true; |
741 |
10 Oct 06 |
olle |
513 |
} |
741 |
10 Oct 06 |
olle |
514 |
|
1652 |
22 May 07 |
gregory |
515 |
public void stopXerver() { |
1652 |
22 May 07 |
gregory |
516 |
NewConnection.b_acceptConnections = false; |
1652 |
22 May 07 |
gregory |
517 |
xerverHasStarted = false; |
741 |
10 Oct 06 |
olle |
518 |
} |
741 |
10 Oct 06 |
olle |
519 |
|
1652 |
22 May 07 |
gregory |
520 |
private void openWindow() { |
1652 |
22 May 07 |
gregory |
521 |
if (!b_startupWindowMode) // If the user has no graphical interface |
1652 |
22 May 07 |
gregory |
// (is not using ProgramWindow), then... |
741 |
10 Oct 06 |
olle |
523 |
{ |
1652 |
22 May 07 |
gregory |
524 |
theWindow = new MyWindow(530, 350, "Xerver is running"); |
1652 |
22 May 07 |
gregory |
// theWindow.killProgramAtShutdown=true; //true is default |
741 |
10 Oct 06 |
olle |
526 |
|
741 |
10 Oct 06 |
olle |
527 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
528 |
theWindow.setBackground(new Color(212, 208, 200)); |
741 |
10 Oct 06 |
olle |
529 |
|
1652 |
22 May 07 |
gregory |
530 |
int deltaX = 45, deltaY = 0; // To make it easy to adjust there |
1652 |
22 May 07 |
gregory |
// is no specific origo |
741 |
10 Oct 06 |
olle |
532 |
theWindow.setFont(new Font("Arial, Verdana", Font.BOLD, 38)); |
741 |
10 Oct 06 |
olle |
533 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
534 |
theWindow.drawString("X", 22 + deltaX, 32 + deltaY); |
741 |
10 Oct 06 |
olle |
535 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
536 |
theWindow.drawString("erver", 46 + deltaX, 32 + deltaY); |
741 |
10 Oct 06 |
olle |
537 |
theWindow.setColor(Color.gray); |
1652 |
22 May 07 |
gregory |
538 |
theWindow.drawString("is running...", 152 + deltaX, 32 + deltaY); |
741 |
10 Oct 06 |
olle |
539 |
|
741 |
10 Oct 06 |
olle |
540 |
theWindow.setColor(Color.red); |
1652 |
22 May 07 |
gregory |
541 |
theWindow.drawString("X", 20 + deltaX, 30 + deltaY); |
741 |
10 Oct 06 |
olle |
542 |
theWindow.setColor(Color.blue); |
1652 |
22 May 07 |
gregory |
543 |
theWindow.drawString("erver", 44 + deltaX, 30 + deltaY); |
741 |
10 Oct 06 |
olle |
544 |
theWindow.setColor(Color.black); |
1652 |
22 May 07 |
gregory |
545 |
theWindow.drawString("is running...", 150 + deltaX, 30 + deltaY); |
741 |
10 Oct 06 |
olle |
546 |
|
741 |
10 Oct 06 |
olle |
547 |
theWindow.setColor(Color.black); |
741 |
10 Oct 06 |
olle |
548 |
theWindow.setFont(new Font("Courier", Font.PLAIN, 12)); |
741 |
10 Oct 06 |
olle |
549 |
|
1652 |
22 May 07 |
gregory |
550 |
int xKord = 5, yKord = 50, deltaYKord = 13; |
1652 |
22 May 07 |
gregory |
551 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
552 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
553 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
554 |
"Xerver, powered with Java Technology, is up and running!", |
1652 |
22 May 07 |
gregory |
555 |
64), xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
556 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
557 |
"http://www.JavaScript.nu/xerver/", 64), xKord, |
1652 |
22 May 07 |
gregory |
558 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
559 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
560 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
561 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
562 |
"Xerver is currently scanning port " + i_portNr |
1652 |
22 May 07 |
gregory |
563 |
+ " for new connections.", 64), xKord, |
1652 |
22 May 07 |
gregory |
564 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
565 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
566 |
"You may change this in the setup. Enjoy!", 64), xKord, |
1652 |
22 May 07 |
gregory |
567 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
568 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
569 |
"To visit your website, surf to:", 64), xKord, |
1652 |
22 May 07 |
gregory |
570 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
571 |
if (i_portNr != 80) |
1652 |
22 May 07 |
gregory |
572 |
theWindow.drawString(returnNiceText("http://" + s_egetIp + ":" |
1652 |
22 May 07 |
gregory |
573 |
+ i_portNr + "/", 64), xKord, yKord += deltaYKord); |
741 |
10 Oct 06 |
olle |
574 |
else |
1652 |
22 May 07 |
gregory |
575 |
theWindow.drawString(returnNiceText("http://" + s_egetIp + "/", |
1652 |
22 May 07 |
gregory |
576 |
64), xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
577 |
theWindow |
1652 |
22 May 07 |
gregory |
578 |
.drawString( |
1652 |
22 May 07 |
gregory |
579 |
returnNiceText( |
1652 |
22 May 07 |
gregory |
580 |
"Of course, also your friends can visit your website at this URL.", |
1652 |
22 May 07 |
gregory |
581 |
64), xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
582 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
583 |
yKord += deltaYKord); |
741 |
10 Oct 06 |
olle |
584 |
|
1652 |
22 May 07 |
gregory |
585 |
theWindow.drawString("", xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
586 |
theWindow.drawString("", xKord, yKord += deltaYKord); |
741 |
10 Oct 06 |
olle |
587 |
|
741 |
10 Oct 06 |
olle |
588 |
theWindow.setColor(Color.red); |
741 |
10 Oct 06 |
olle |
589 |
|
1652 |
22 May 07 |
gregory |
590 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
591 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
592 |
theWindow.drawString(returnNiceText("IMPORTANT:", 64), xKord, |
1652 |
22 May 07 |
gregory |
593 |
yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
594 |
theWindow.drawString(returnNiceText( |
1652 |
22 May 07 |
gregory |
595 |
"If you close this window Xerver will be shut down!", 64), |
1652 |
22 May 07 |
gregory |
596 |
xKord, yKord += deltaYKord); |
1652 |
22 May 07 |
gregory |
597 |
theWindow.drawString(returnManyChar("#", 70), xKord, |
1652 |
22 May 07 |
gregory |
598 |
yKord += deltaYKord); |
741 |
10 Oct 06 |
olle |
599 |
} |
741 |
10 Oct 06 |
olle |
600 |
} |
741 |
10 Oct 06 |
olle |
601 |
|
1652 |
22 May 07 |
gregory |
602 |
public void getServerDefaults() { |
1652 |
22 May 07 |
gregory |
// *********READ SETTINGS FROM FILE!******* |
1652 |
22 May 07 |
gregory |
604 |
try { |
1652 |
22 May 07 |
gregory |
605 |
BufferedReader f_setupFileData = new BufferedReader(new FileReader( |
1652 |
22 May 07 |
gregory |
606 |
s_configFile)); |
741 |
10 Oct 06 |
olle |
607 |
|
741 |
10 Oct 06 |
olle |
608 |
int tmp; |
1652 |
22 May 07 |
gregory |
609 |
NewConnection.i_portNr = Integer.parseInt(f_setupFileData |
1652 |
22 May 07 |
gregory |
610 |
.readLine()); |
1652 |
22 May 07 |
gregory |
611 |
NewConnection.as_indexNames = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
612 |
f_setupFileData.readLine(), ","); |
1652 |
22 May 07 |
gregory |
613 |
NewConnection.as_sharedPaths = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
614 |
f_setupFileData.readLine(), ","); |
1652 |
22 May 07 |
gregory |
615 |
String tmpStr = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
616 |
if (tmpStr != null) |
1652 |
22 May 07 |
gregory |
617 |
tmpStr = tmpStr.toLowerCase(); // File extensions shall be |
1652 |
22 May 07 |
gregory |
// lower case, there is no |
1652 |
22 May 07 |
gregory |
// difference between "html" and |
1652 |
22 May 07 |
gregory |
// "HTML"... |
1652 |
22 May 07 |
gregory |
621 |
NewConnection.as_fileExtensions = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
622 |
tmpStr, ","); // NOTE: always lower case... |
741 |
10 Oct 06 |
olle |
623 |
NewConnection.s_rootPath = f_setupFileData.readLine(); |
1652 |
22 May 07 |
gregory |
624 |
NewConnection.myHT_runnableExtensions = new MyHashTable( |
1652 |
22 May 07 |
gregory |
625 |
f_setupFileData.readLine()); |
1652 |
22 May 07 |
gregory |
626 |
NewConnection.myHT_allAliases = new MyHashTable(f_setupFileData |
1652 |
22 May 07 |
gregory |
627 |
.readLine()); |
1652 |
22 May 07 |
gregory |
628 |
NewConnection.as_xerverPasswd = MyString.makeArrayOfString( |
1652 |
22 May 07 |
gregory |
629 |
f_setupFileData.readLine(), "<<$>>"); |
741 |
10 Oct 06 |
olle |
630 |
|
741 |
10 Oct 06 |
olle |
631 |
tmp = Integer.parseInt(f_setupFileData.readLine()); |
1652 |
22 May 07 |
gregory |
632 |
if (tmp == 1) |
1652 |
22 May 07 |
gregory |
633 |
NewConnection.b_allowFolderListing = true; |
741 |
10 Oct 06 |
olle |
634 |
else |
1652 |
22 May 07 |
gregory |
635 |
NewConnection.b_allowFolderListing = false; |
741 |
10 Oct 06 |
olle |
636 |
|
741 |
10 Oct 06 |
olle |
637 |
tmp = Integer.parseInt(f_setupFileData.readLine()); |
1652 |
22 May 07 |
gregory |
638 |
if (tmp == 1) |
1652 |
22 May 07 |
gregory |
639 |
NewConnection.b_allowTheseFileExtensions = true; |
741 |
10 Oct 06 |
olle |
640 |
else |
1652 |
22 May 07 |
gregory |
641 |
NewConnection.b_allowTheseFileExtensions = false; |
741 |
10 Oct 06 |
olle |
642 |
|
741 |
10 Oct 06 |
olle |
643 |
tmp = Integer.parseInt(f_setupFileData.readLine()); |
1652 |
22 May 07 |
gregory |
644 |
if (tmp == 1) |
1652 |
22 May 07 |
gregory |
645 |
NewConnection.b_shareHiddenFiles = true; |
741 |
10 Oct 06 |
olle |
646 |
else |
1652 |
22 May 07 |
gregory |
647 |
NewConnection.b_shareHiddenFiles = false; |
741 |
10 Oct 06 |
olle |
648 |
|
1652 |
22 May 07 |
gregory |
649 |
tmp = Integer.parseInt(f_setupFileData.readLine()); // Note: today |
1652 |
22 May 07 |
gregory |
// it doesn't |
1652 |
22 May 07 |
gregory |
// matter what |
1652 |
22 May 07 |
gregory |
// we found |
1652 |
22 May 07 |
gregory |
// here, as the |
1652 |
22 May 07 |
gregory |
// XerverKernel()-constructor |
1652 |
22 May 07 |
gregory |
// is never |
1652 |
22 May 07 |
gregory |
// called. |
1652 |
22 May 07 |
gregory |
// However, if, |
1652 |
22 May 07 |
gregory |
// and only if, |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// XerverKernel()-constructor |
1652 |
22 May 07 |
gregory |
// is called, |
1652 |
22 May 07 |
gregory |
// the value of |
1652 |
22 May 07 |
gregory |
// startupWindowMode |
1652 |
22 May 07 |
gregory |
// will depend |
1652 |
22 May 07 |
gregory |
// on what is |
1652 |
22 May 07 |
gregory |
// found on this |
1652 |
22 May 07 |
gregory |
// line |
1652 |
22 May 07 |
gregory |
// (otherwise, |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// startupWindowMode |
1652 |
22 May 07 |
gregory |
// is |
1652 |
22 May 07 |
gregory |
// owerwritten |
1652 |
22 May 07 |
gregory |
// by an |
1652 |
22 May 07 |
gregory |
// argument that |
1652 |
22 May 07 |
gregory |
// is sent to |
1652 |
22 May 07 |
gregory |
// the |
1652 |
22 May 07 |
gregory |
// constructor |
1652 |
22 May 07 |
gregory |
// of |
1652 |
22 May 07 |
gregory |
// XerverKernel)) |
1652 |
22 May 07 |
gregory |
680 |
if (tmp == 0) // note ==0 |
1652 |
22 May 07 |
gregory |
681 |
NewConnection.b_startupWindowMode = true; |
741 |
10 Oct 06 |
olle |
682 |
else |
1652 |
22 May 07 |
gregory |
683 |
NewConnection.b_startupWindowMode = false; |
741 |
10 Oct 06 |
olle |
684 |
|
741 |
10 Oct 06 |
olle |
685 |
tmp = Integer.parseInt(f_setupFileData.readLine()); |
1652 |
22 May 07 |
gregory |
686 |
if (tmp == 1) |
1652 |
22 May 07 |
gregory |
687 |
NewConnection.b_allowExecuteScript = true; |
741 |
10 Oct 06 |
olle |
688 |
else |
1652 |
22 May 07 |
gregory |
689 |
NewConnection.b_allowExecuteScript = false; |
741 |
10 Oct 06 |
olle |
690 |
|
1652 |
22 May 07 |
gregory |
691 |
f_setupFileData.close(); |
1652 |
22 May 07 |
gregory |
692 |
} catch (Exception e) { |
1652 |
22 May 07 |
gregory |
693 |
System.out.println("An error occured!\nPlease make sure that " |
1652 |
22 May 07 |
gregory |
694 |
+ s_configFile |
1652 |
22 May 07 |
gregory |
695 |
+ " is in the data-directory (in your Xerver folder).\n" |
1652 |
22 May 07 |
gregory |
696 |
+ e); |
741 |
10 Oct 06 |
olle |
697 |
System.exit(0); |
741 |
10 Oct 06 |
olle |
698 |
} |
741 |
10 Oct 06 |
olle |
699 |
} |
741 |
10 Oct 06 |
olle |
700 |
|
1652 |
22 May 07 |
gregory |
701 |
public void exchangeVariablesBetweenClasses() { |
1652 |
22 May 07 |
gregory |
/* Don't only set to NewConnection but also to this class */ |
1652 |
22 May 07 |
gregory |
703 |
b_startupWindowMode = NewConnection.b_startupWindowMode; |
1652 |
22 May 07 |
gregory |
704 |
i_portNr = NewConnection.i_portNr; |
741 |
10 Oct 06 |
olle |
705 |
|
1652 |
22 May 07 |
gregory |
/* Don't only set to this class but also to NewConnection */ |
1652 |
22 May 07 |
gregory |
707 |
NewConnection.myMenuOptions = myMenuOptions; |
741 |
10 Oct 06 |
olle |
708 |
|
1652 |
22 May 07 |
gregory |
// Finally set this (which we don't actually read from the file)... |
1652 |
22 May 07 |
gregory |
710 |
NewConnection.s_defaultRootLocationWithoutSlashAtEnd = NewConnection.s_rootPath |
1652 |
22 May 07 |
gregory |
711 |
.substring(0, NewConnection.s_rootPath.length() - 1); |
741 |
10 Oct 06 |
olle |
712 |
} |
741 |
10 Oct 06 |
olle |
713 |
|
1652 |
22 May 07 |
gregory |
714 |
private static void writeNiceText(String txt, int lengthOfText) { |
1652 |
22 May 07 |
gregory |
715 |
StringBuffer strBuf = new StringBuffer("## " + txt); |
1652 |
22 May 07 |
gregory |
716 |
int forGoUntil = lengthOfText - txt.length(); // Optimization... |
1652 |
22 May 07 |
gregory |
717 |
for (int i = 0; i < forGoUntil; i++) |
741 |
10 Oct 06 |
olle |
718 |
strBuf.append(" "); |
741 |
10 Oct 06 |
olle |
719 |
strBuf.append(" ##"); |
741 |
10 Oct 06 |
olle |
720 |
System.out.println(strBuf.toString()); |
741 |
10 Oct 06 |
olle |
721 |
} |
741 |
10 Oct 06 |
olle |
722 |
|
1652 |
22 May 07 |
gregory |
723 |
private static void writeManyChar(String txt, int lengthOfText) { |
1652 |
22 May 07 |
gregory |
724 |
StringBuffer strBuf = new StringBuffer(txt); // Add the first txt |
1652 |
22 May 07 |
gregory |
// here.... |
1652 |
22 May 07 |
gregory |
// //Optimization... |
1652 |
22 May 07 |
gregory |
727 |
for (int i = 1; i < lengthOfText; i++) |
1652 |
22 May 07 |
gregory |
// And have "1" here (not "0") |
741 |
10 Oct 06 |
olle |
729 |
strBuf.append(txt); |
741 |
10 Oct 06 |
olle |
730 |
System.out.println(strBuf.toString()); |
741 |
10 Oct 06 |
olle |
731 |
} |
741 |
10 Oct 06 |
olle |
732 |
|
1652 |
22 May 07 |
gregory |
733 |
private static String returnNiceText(String txt, int lengthOfText) { |
1652 |
22 May 07 |
gregory |
734 |
StringBuffer strBuf = new StringBuffer("## " + txt); |
1652 |
22 May 07 |
gregory |
735 |
int forGoUntil = lengthOfText - txt.length(); // Optimization... |
1652 |
22 May 07 |
gregory |
736 |
for (int i = 0; i < forGoUntil; i++) |
741 |
10 Oct 06 |
olle |
737 |
strBuf.append(" "); |
741 |
10 Oct 06 |
olle |
738 |
strBuf.append(" ##"); |
741 |
10 Oct 06 |
olle |
739 |
return strBuf.toString(); |
741 |
10 Oct 06 |
olle |
740 |
} |
741 |
10 Oct 06 |
olle |
741 |
|
1652 |
22 May 07 |
gregory |
742 |
private static String returnManyChar(String txt, int lengthOfText) { |
1652 |
22 May 07 |
gregory |
743 |
StringBuffer strBuf = new StringBuffer(txt); // Add the first txt |
1652 |
22 May 07 |
gregory |
// here.... |
1652 |
22 May 07 |
gregory |
// //Optimization... |
1652 |
22 May 07 |
gregory |
746 |
for (int i = 1; i < lengthOfText; i++) |
1652 |
22 May 07 |
gregory |
// And have "1" here (not "0") |
741 |
10 Oct 06 |
olle |
748 |
strBuf.append(txt); |
741 |
10 Oct 06 |
olle |
749 |
|
741 |
10 Oct 06 |
olle |
750 |
return strBuf.toString(); |
741 |
10 Oct 06 |
olle |
751 |
} |
741 |
10 Oct 06 |
olle |
752 |
|
1652 |
22 May 07 |
gregory |
753 |
public static String getXerverName() { |
741 |
10 Oct 06 |
olle |
754 |
return s_xerverName; |
741 |
10 Oct 06 |
olle |
755 |
} |
741 |
10 Oct 06 |
olle |
756 |
|
1652 |
22 May 07 |
gregory |
757 |
public static double getThisVersion() { |
741 |
10 Oct 06 |
olle |
758 |
return thisVersion; |
741 |
10 Oct 06 |
olle |
759 |
} |
741 |
10 Oct 06 |
olle |
760 |
|
1652 |
22 May 07 |
gregory |
761 |
public static String getThisVersionString() { |
741 |
10 Oct 06 |
olle |
762 |
return thisVersionString; |
741 |
10 Oct 06 |
olle |
763 |
} |
741 |
10 Oct 06 |
olle |
764 |
} |