r111544 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r111543‎ | r111544 | r111545 >
Date:15:05, 15 February 2012
Author:demon
Status:ok
Tags:
Comment:
Another abandoned project -> ATTIC
Modified paths:
  • /trunk/ATTIC/wikiSDK (added) (history)
  • /trunk/wikiSDK (deleted) (history)

Diff [purge]

Index: trunk/ATTIC/wikiSDK/Xerver4/License.txt
@@ -0,0 +1,379 @@
 2+Xerver Free Web Server
 3+Copyright (C) 2002-2007 Omid Rouhani
 4+
 5+This program is free software; you can redistribute it and/or
 6+modify it under the terms of the GNU General Public License
 7+as published by the Free Software Foundation; either version 2
 8+of the License, or (at your option) any later version.
 9+
 10+This program is distributed in the hope that it will be useful,
 11+but WITHOUT ANY WARRANTY; without even the implied warranty of
 12+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 13+GNU General Public License for more details.
 14+
 15+You should have received a copy of the GNU General Public License
 16+along with this program; if not, write to the Free Software
 17+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 18+
 19+
 20+###############################################################
 21+## YOU CAN CONTACT THE AUTHOR (OMID ROUHANI) AT: ##
 22+## HTTP://WWW.JAVASCRIPT.NU/XERVER/ ##
 23+## ##
 24+## THE SOURCE FILES CAN BE FOUND AT THIS OFFICIAL WEBSITE. ##
 25+## ##
 26+## TO USE THE SOURCE CODE USED IN XERVER, ##
 27+## YOU MUST RELEASE YOUR SOFTWARE UNDER THE ##
 28+## GNU GENERAL PUBLIC LICENSE (GPL)! ##
 29+## ##
 30+## FOR FULL LICENSE, PLEASE READ "XERVER LICENSE". ##
 31+###############################################################
 32+
 33+
 34+
 35+###############################################################
 36+ XERVER LICENSE
 37+###############################################################
 38+
 39+
 40+
 41+ GNU GENERAL PUBLIC LICENSE
 42+ Version 2, June 1991
 43+
 44+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 45+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 46+ Everyone is permitted to copy and distribute verbatim copies
 47+ of this license document, but changing it is not allowed.
 48+
 49+ Preamble
 50+
 51+ The licenses for most software are designed to take away your
 52+freedom to share and change it. By contrast, the GNU General Public
 53+License is intended to guarantee your freedom to share and change free
 54+software--to make sure the software is free for all its users. This
 55+General Public License applies to most of the Free Software
 56+Foundation's software and to any other program whose authors commit to
 57+using it. (Some other Free Software Foundation software is covered by
 58+the GNU Library General Public License instead.) You can apply it to
 59+your programs, too.
 60+
 61+ When we speak of free software, we are referring to freedom, not
 62+price. Our General Public Licenses are designed to make sure that you
 63+have the freedom to distribute copies of free software (and charge for
 64+this service if you wish), that you receive source code or can get it
 65+if you want it, that you can change the software or use pieces of it
 66+in new free programs; and that you know you can do these things.
 67+
 68+ To protect your rights, we need to make restrictions that forbid
 69+anyone to deny you these rights or to ask you to surrender the rights.
 70+These restrictions translate to certain responsibilities for you if you
 71+distribute copies of the software, or if you modify it.
 72+
 73+ For example, if you distribute copies of such a program, whether
 74+gratis or for a fee, you must give the recipients all the rights that
 75+you have. You must make sure that they, too, receive or can get the
 76+source code. And you must show them these terms so they know their
 77+rights.
 78+
 79+ We protect your rights with two steps: (1) copyright the software, and
 80+(2) offer you this license which gives you legal permission to copy,
 81+distribute and/or modify the software.
 82+
 83+ Also, for each author's protection and ours, we want to make certain
 84+that everyone understands that there is no warranty for this free
 85+software. If the software is modified by someone else and passed on, we
 86+want its recipients to know that what they have is not the original, so
 87+that any problems introduced by others will not reflect on the original
 88+authors' reputations.
 89+
 90+ Finally, any free program is threatened constantly by software
 91+patents. We wish to avoid the danger that redistributors of a free
 92+program will individually obtain patent licenses, in effect making the
 93+program proprietary. To prevent this, we have made it clear that any
 94+patent must be licensed for everyone's free use or not licensed at all.
 95+
 96+ The precise terms and conditions for copying, distribution and
 97+modification follow.
 98+
 99+ GNU GENERAL PUBLIC LICENSE
 100+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 101+
 102+ 0. This License applies to any program or other work which contains
 103+a notice placed by the copyright holder saying it may be distributed
 104+under the terms of this General Public License. The "Program", below,
 105+refers to any such program or work, and a "work based on the Program"
 106+means either the Program or any derivative work under copyright law:
 107+that is to say, a work containing the Program or a portion of it,
 108+either verbatim or with modifications and/or translated into another
 109+language. (Hereinafter, translation is included without limitation in
 110+the term "modification".) Each licensee is addressed as "you".
 111+
 112+Activities other than copying, distribution and modification are not
 113+covered by this License; they are outside its scope. The act of
 114+running the Program is not restricted, and the output from the Program
 115+is covered only if its contents constitute a work based on the
 116+Program (independent of having been made by running the Program).
 117+Whether that is true depends on what the Program does.
 118+
 119+ 1. You may copy and distribute verbatim copies of the Program's
 120+source code as you receive it, in any medium, provided that you
 121+conspicuously and appropriately publish on each copy an appropriate
 122+copyright notice and disclaimer of warranty; keep intact all the
 123+notices that refer to this License and to the absence of any warranty;
 124+and give any other recipients of the Program a copy of this License
 125+along with the Program.
 126+
 127+You may charge a fee for the physical act of transferring a copy, and
 128+you may at your option offer warranty protection in exchange for a fee.
 129+
 130+ 2. You may modify your copy or copies of the Program or any portion
 131+of it, thus forming a work based on the Program, and copy and
 132+distribute such modifications or work under the terms of Section 1
 133+above, provided that you also meet all of these conditions:
 134+
 135+ a) You must cause the modified files to carry prominent notices
 136+ stating that you changed the files and the date of any change.
 137+
 138+ b) You must cause any work that you distribute or publish, that in
 139+ whole or in part contains or is derived from the Program or any
 140+ part thereof, to be licensed as a whole at no charge to all third
 141+ parties under the terms of this License.
 142+
 143+ c) If the modified program normally reads commands interactively
 144+ when run, you must cause it, when started running for such
 145+ interactive use in the most ordinary way, to print or display an
 146+ announcement including an appropriate copyright notice and a
 147+ notice that there is no warranty (or else, saying that you provide
 148+ a warranty) and that users may redistribute the program under
 149+ these conditions, and telling the user how to view a copy of this
 150+ License. (Exception: if the Program itself is interactive but
 151+ does not normally print such an announcement, your work based on
 152+ the Program is not required to print an announcement.)
 153+
 154+These requirements apply to the modified work as a whole. If
 155+identifiable sections of that work are not derived from the Program,
 156+and can be reasonably considered independent and separate works in
 157+themselves, then this License, and its terms, do not apply to those
 158+sections when you distribute them as separate works. But when you
 159+distribute the same sections as part of a whole which is a work based
 160+on the Program, the distribution of the whole must be on the terms of
 161+this License, whose permissions for other licensees extend to the
 162+entire whole, and thus to each and every part regardless of who wrote it.
 163+
 164+Thus, it is not the intent of this section to claim rights or contest
 165+your rights to work written entirely by you; rather, the intent is to
 166+exercise the right to control the distribution of derivative or
 167+collective works based on the Program.
 168+
 169+In addition, mere aggregation of another work not based on the Program
 170+with the Program (or with a work based on the Program) on a volume of
 171+a storage or distribution medium does not bring the other work under
 172+the scope of this License.
 173+
 174+ 3. You may copy and distribute the Program (or a work based on it,
 175+under Section 2) in object code or executable form under the terms of
 176+Sections 1 and 2 above provided that you also do one of the following:
 177+
 178+ a) Accompany it with the complete corresponding machine-readable
 179+ source code, which must be distributed under the terms of Sections
 180+ 1 and 2 above on a medium customarily used for software interchange; or,
 181+
 182+ b) Accompany it with a written offer, valid for at least three
 183+ years, to give any third party, for a charge no more than your
 184+ cost of physically performing source distribution, a complete
 185+ machine-readable copy of the corresponding source code, to be
 186+ distributed under the terms of Sections 1 and 2 above on a medium
 187+ customarily used for software interchange; or,
 188+
 189+ c) Accompany it with the information you received as to the offer
 190+ to distribute corresponding source code. (This alternative is
 191+ allowed only for noncommercial distribution and only if you
 192+ received the program in object code or executable form with such
 193+ an offer, in accord with Subsection b above.)
 194+
 195+The source code for a work means the preferred form of the work for
 196+making modifications to it. For an executable work, complete source
 197+code means all the source code for all modules it contains, plus any
 198+associated interface definition files, plus the scripts used to
 199+control compilation and installation of the executable. However, as a
 200+special exception, the source code distributed need not include
 201+anything that is normally distributed (in either source or binary
 202+form) with the major components (compiler, kernel, and so on) of the
 203+operating system on which the executable runs, unless that component
 204+itself accompanies the executable.
 205+
 206+If distribution of executable or object code is made by offering
 207+access to copy from a designated place, then offering equivalent
 208+access to copy the source code from the same place counts as
 209+distribution of the source code, even though third parties are not
 210+compelled to copy the source along with the object code.
 211+
 212+ 4. You may not copy, modify, sublicense, or distribute the Program
 213+except as expressly provided under this License. Any attempt
 214+otherwise to copy, modify, sublicense or distribute the Program is
 215+void, and will automatically terminate your rights under this License.
 216+However, parties who have received copies, or rights, from you under
 217+this License will not have their licenses terminated so long as such
 218+parties remain in full compliance.
 219+
 220+ 5. You are not required to accept this License, since you have not
 221+signed it. However, nothing else grants you permission to modify or
 222+distribute the Program or its derivative works. These actions are
 223+prohibited by law if you do not accept this License. Therefore, by
 224+modifying or distributing the Program (or any work based on the
 225+Program), you indicate your acceptance of this License to do so, and
 226+all its terms and conditions for copying, distributing or modifying
 227+the Program or works based on it.
 228+
 229+ 6. Each time you redistribute the Program (or any work based on the
 230+Program), the recipient automatically receives a license from the
 231+original licensor to copy, distribute or modify the Program subject to
 232+these terms and conditions. You may not impose any further
 233+restrictions on the recipients' exercise of the rights granted herein.
 234+You are not responsible for enforcing compliance by third parties to
 235+this License.
 236+
 237+ 7. If, as a consequence of a court judgment or allegation of patent
 238+infringement or for any other reason (not limited to patent issues),
 239+conditions are imposed on you (whether by court order, agreement or
 240+otherwise) that contradict the conditions of this License, they do not
 241+excuse you from the conditions of this License. If you cannot
 242+distribute so as to satisfy simultaneously your obligations under this
 243+License and any other pertinent obligations, then as a consequence you
 244+may not distribute the Program at all. For example, if a patent
 245+license would not permit royalty-free redistribution of the Program by
 246+all those who receive copies directly or indirectly through you, then
 247+the only way you could satisfy both it and this License would be to
 248+refrain entirely from distribution of the Program.
 249+
 250+If any portion of this section is held invalid or unenforceable under
 251+any particular circumstance, the balance of the section is intended to
 252+apply and the section as a whole is intended to apply in other
 253+circumstances.
 254+
 255+It is not the purpose of this section to induce you to infringe any
 256+patents or other property right claims or to contest validity of any
 257+such claims; this section has the sole purpose of protecting the
 258+integrity of the free software distribution system, which is
 259+implemented by public license practices. Many people have made
 260+generous contributions to the wide range of software distributed
 261+through that system in reliance on consistent application of that
 262+system; it is up to the author/donor to decide if he or she is willing
 263+to distribute software through any other system and a licensee cannot
 264+impose that choice.
 265+
 266+This section is intended to make thoroughly clear what is believed to
 267+be a consequence of the rest of this License.
 268+
 269+ 8. If the distribution and/or use of the Program is restricted in
 270+certain countries either by patents or by copyrighted interfaces, the
 271+original copyright holder who places the Program under this License
 272+may add an explicit geographical distribution limitation excluding
 273+those countries, so that distribution is permitted only in or among
 274+countries not thus excluded. In such case, this License incorporates
 275+the limitation as if written in the body of this License.
 276+
 277+ 9. The Free Software Foundation may publish revised and/or new versions
 278+of the General Public License from time to time. Such new versions will
 279+be similar in spirit to the present version, but may differ in detail to
 280+address new problems or concerns.
 281+
 282+Each version is given a distinguishing version number. If the Program
 283+specifies a version number of this License which applies to it and "any
 284+later version", you have the option of following the terms and conditions
 285+either of that version or of any later version published by the Free
 286+Software Foundation. If the Program does not specify a version number of
 287+this License, you may choose any version ever published by the Free Software
 288+Foundation.
 289+
 290+ 10. If you wish to incorporate parts of the Program into other free
 291+programs whose distribution conditions are different, write to the author
 292+to ask for permission. For software which is copyrighted by the Free
 293+Software Foundation, write to the Free Software Foundation; we sometimes
 294+make exceptions for this. Our decision will be guided by the two goals
 295+of preserving the free status of all derivatives of our free software and
 296+of promoting the sharing and reuse of software generally.
 297+
 298+ NO WARRANTY
 299+
 300+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 301+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
 302+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 303+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 304+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 305+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
 306+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
 307+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 308+REPAIR OR CORRECTION.
 309+
 310+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 311+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 312+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 313+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 314+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 315+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 316+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 317+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 318+POSSIBILITY OF SUCH DAMAGES.
 319+
 320+ END OF TERMS AND CONDITIONS
 321+
 322+ How to Apply These Terms to Your New Programs
 323+
 324+ If you develop a new program, and you want it to be of the greatest
 325+possible use to the public, the best way to achieve this is to make it
 326+free software which everyone can redistribute and change under these terms.
 327+
 328+ To do so, attach the following notices to the program. It is safest
 329+to attach them to the start of each source file to most effectively
 330+convey the exclusion of warranty; and each file should have at least
 331+the "copyright" line and a pointer to where the full notice is found.
 332+
 333+ <one line to give the program's name and a brief idea of what it does.>
 334+ Copyright (C) <year> <name of author>
 335+
 336+ This program is free software; you can redistribute it and/or modify
 337+ it under the terms of the GNU General Public License as published by
 338+ the Free Software Foundation; either version 2 of the License, or
 339+ (at your option) any later version.
 340+
 341+ This program is distributed in the hope that it will be useful,
 342+ but WITHOUT ANY WARRANTY; without even the implied warranty of
 343+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 344+ GNU General Public License for more details.
 345+
 346+ You should have received a copy of the GNU General Public License
 347+ along with this program; if not, write to the Free Software
 348+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 349+
 350+
 351+Also add information on how to contact you by electronic and paper mail.
 352+
 353+If the program is interactive, make it output a short notice like this
 354+when it starts in an interactive mode:
 355+
 356+ Gnomovision version 69, Copyright (C) year name of author
 357+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 358+ This is free software, and you are welcome to redistribute it
 359+ under certain conditions; type `show c' for details.
 360+
 361+The hypothetical commands `show w' and `show c' should show the appropriate
 362+parts of the General Public License. Of course, the commands you use may
 363+be called something other than `show w' and `show c'; they could even be
 364+mouse-clicks or menu items--whatever suits your program.
 365+
 366+You should also get your employer (if you work as a programmer) or your
 367+school, if any, to sign a "copyright disclaimer" for the program, if
 368+necessary. Here is a sample; alter the names:
 369+
 370+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
 371+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
 372+
 373+ <signature of Ty Coon>, 1 April 1989
 374+ Ty Coon, President of Vice
 375+
 376+This General Public License does not permit incorporating your program into
 377+proprietary programs. If your program is a subroutine library, you may
 378+consider it more useful to permit linking proprietary applications with the
 379+library. If this is what you want to do, use the GNU Library General
 380+Public License instead of this License.
Index: trunk/ATTIC/wikiSDK/Xerver4/users/guest.dat
@@ -0,0 +1,4 @@
 2+PASSWORD=
 3+ROOT=/
 4+PERMISSIONS=/;l
 5+ALIASES=
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizAdvancedSettings.html
@@ -0,0 +1,325 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function showXerverHelp(helpTxt,titleTxt)
 9+{
 10+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 11+ titleTxt="Xerver Wizard Help";
 12+
 13+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 14+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 15+
 16+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 17+ addDirWindow.focus();
 18+}
 19+
 20+function showAlertXerverHelp(helpTxt)
 21+{
 22+ showXerverHelp(helpTxt,"");
 23+}
 24+
 25+function submitForm()
 26+{
 27+ nyAddress="action=wizardStep2&direction=forward&save=yes";
 28+
 29+ nyAddress+="&portNr="+document.myForm.portNr.value;
 30+ nyAddress+="&allowFolderListing="+document.myForm.allowFolderListing.options[document.myForm.allowFolderListing.selectedIndex].value;
 31+ nyAddress+="&shareHiddenFiles="+document.myForm.shareHiddenFiles.options[document.myForm.shareHiddenFiles.selectedIndex].value;
 32+ nyAddress+="&allowCGIScript="+document.myForm.allowCGIScript.options[document.myForm.allowCGIScript.selectedIndex].value;
 33+
 34+// alert(nyAddress)
 35+ self.location.replace("/"+escape(nyAddress));
 36+ return true;
 37+}
 38+
 39+
 40+function setMaxIdleTime(nr)
 41+{
 42+ document.myForm.maxIdleTime.value=nr;
 43+}
 44+
 45+function setMaxNOOPAllowed(nr)
 46+{
 47+ document.myForm.maxNOOPAllowed.value=nr;
 48+}
 49+
 50+function setDataPortNr(nr)
 51+{
 52+ document.myForm.dataPortNr.value=nr;
 53+}
 54+
 55+function setPassiveRange(range)
 56+{
 57+ document.myForm.passiveRange.value=range;
 58+
 59+ firstComma = range.indexOf(",");
 60+ if (firstComma != -1)
 61+ {
 62+ document.myForm.passiveRangeMin.value=range.substring(0,firstComma);
 63+ document.myForm.passiveRangeMax.value=range.substring(firstComma + 1);
 64+ }
 65+}
 66+
 67+function setLocalIP(localIP)
 68+{
 69+ document.myForm.localIP.value=localIP;
 70+}
 71+
 72+function setOuterIP(outerIP)
 73+{
 74+ document.myForm.outerIP.value=outerIP;
 75+}
 76+
 77+function sendForm()
 78+{
 79+ dataPortNr=document.myForm.dataPortNr.value;
 80+
 81+ if (dataPortNr!=parseInt(dataPortNr))
 82+ {
 83+ showAlertXerverHelp("The port number must be a number.");
 84+ return false;
 85+ }
 86+
 87+ if (dataPortNr>65535 || dataPortNr<1)
 88+ {
 89+ showAlertXerverHelp("The port number shall not be larger than 65535 and it shall indeed not be less than 1.");
 90+ return false;
 91+ }
 92+
 93+ if (dataPortNr=='32123' || dataPortNr=='32124')
 94+ {
 95+ document.myForm.dataPortNr.value="20";
 96+ showAlertXerverHelp("Please don't use the ports 32123 or 32124.\nIt's reserved for Xervers Setup tools.\nFeel free to use anything but 32123 and 32124.");
 97+ return false;
 98+ }
 99+
 100+ if ((dataPortNr>=49151 || dataPortNr<=1024) && dataPortNr!=20)
 101+ {
 102+ if (dataPortNr>=49151)
 103+ reason="The port number you have choosen ("+dataPortNr+") is greater than 49151.";
 104+ else // (dataPortNr<=1024)
 105+ reason="The port number you have choosen ("+dataPortNr+") is less than 1024.";
 106+
 107+ if (!confirm(reason+"\nTo avoid future problems you are recommended to change port number to 20.\n\nIf port 20 doesn't work, use another port between 1024 and 49151.\n\nPress OK to use "+dataPortNr+" as port number anyway.\nPress Cancel to change port number to something else."))
 108+ {
 109+ return false;
 110+ }
 111+ }
 112+
 113+
 114+ maxIdleTime=document.myForm.maxIdleTime.value;
 115+ if (maxIdleTime!=parseInt(maxIdleTime) || maxIdleTime<0)
 116+ {
 117+ showAlertXerverHelp(maxIdleTime+' is not a positive integer value.\nPlease change the value.');
 118+ document.myForm.maxIdleTime.value=parseInt(maxIdleTime);
 119+ return false;
 120+ }
 121+
 122+
 123+ maxNOOPAllowed=document.myForm.maxNOOPAllowed.value;
 124+ if (maxNOOPAllowed!=parseInt(maxNOOPAllowed) || maxNOOPAllowed<0)
 125+ {
 126+ showAlertXerverHelp(maxNOOPAllowed+' is not a positive integer value.\nPlease change the value.');
 127+ document.myForm.maxNOOPAllowed.value=parseInt(maxNOOPAllowed);
 128+ return false;
 129+ }
 130+
 131+ passiveRangeMin = document.myForm.passiveRangeMin.value;
 132+ passiveRangeMax = document.myForm.passiveRangeMax.value;
 133+ if (passiveRangeMin == "" && passiveRangeMax == "")
 134+ {
 135+ document.myForm.passiveRange.value = "";
 136+ }
 137+ else if ( passiveRangeMin == parseInt(passiveRangeMin) &&
 138+ passiveRangeMax == parseInt(passiveRangeMax) &&
 139+ passiveRangeMin != "" &&
 140+ passiveRangeMax != "" &&
 141+ 0 <= passiveRangeMin &&
 142+ passiveRangeMin <= passiveRangeMax &&
 143+ passiveRangeMax <= 65535)
 144+ {
 145+ document.myForm.passiveRange.value = passiveRangeMin + "," + passiveRangeMax;
 146+ }
 147+ else
 148+ {
 149+ //Invalid format
 150+ showAlertXerverHelp('The passiveRange does not have a correct format. You should either leave both fields empty or you should enter two integer values. The first integer value must be less than or equal to the second integer value and both values must be in the range 0 to 65535.\n\nValid examples are for example:\n2000 and 2500\n20000 and 20100');
 151+ return false;
 152+ }
 153+
 154+ localIP=document.myForm.localIP.value;
 155+ localIPParts = localIP.split(".");
 156+ if (localIP == "")
 157+ {
 158+ //Not specify IP is ok.
 159+ }
 160+ else if ( localIPParts.length == 4 &&
 161+ localIPParts[0] == parseInt(localIPParts[0]) &&
 162+ localIPParts[1] == parseInt(localIPParts[1]) &&
 163+ localIPParts[2] == parseInt(localIPParts[2]) &&
 164+ localIPParts[3] == parseInt(localIPParts[3]) &&
 165+ 0 <= localIPParts[0] &&
 166+ localIPParts[0] <= 255 &&
 167+ 0 <= localIPParts[1] &&
 168+ localIPParts[1] <= 255 &&
 169+ 0 <= localIPParts[2] &&
 170+ localIPParts[2] <= 255 &&
 171+ 0 <= localIPParts[3] &&
 172+ localIPParts[3] <= 255)
 173+ {
 174+ //Valid IP is ok
 175+ }
 176+ else
 177+ {
 178+ showAlertXerverHelp('The local IP that you have specified does not have a correct format. The field should either be left blank or a correct IP address should be specified.\n\nExamples of valid IP addresses:\n1.2.3.4\n192.168.1.100');
 179+ document.myForm.localIP.focus();
 180+ return false;
 181+ }
 182+
 183+
 184+ outerIP=document.myForm.outerIP.value;
 185+ outerIPParts = outerIP.split(".");
 186+ if (outerIP == "")
 187+ {
 188+ //Not specify IP is ok.
 189+ }
 190+ else if ( outerIPParts.length == 4 &&
 191+ outerIPParts[0] == parseInt(outerIPParts[0]) &&
 192+ outerIPParts[1] == parseInt(outerIPParts[1]) &&
 193+ outerIPParts[2] == parseInt(outerIPParts[2]) &&
 194+ outerIPParts[3] == parseInt(outerIPParts[3]) &&
 195+ 0 <= outerIPParts[0] &&
 196+ outerIPParts[0] <= 255 &&
 197+ 0 <= outerIPParts[1] &&
 198+ outerIPParts[1] <= 255 &&
 199+ 0 <= outerIPParts[2] &&
 200+ outerIPParts[2] <= 255 &&
 201+ 0 <= outerIPParts[3] &&
 202+ outerIPParts[3] <= 255)
 203+ {
 204+ //Valid IP is ok
 205+ }
 206+ else
 207+ {
 208+ showAlertXerverHelp('The outer IP that you have specified does not have a correct format. The field should either be left blank or a correct IP address should be specified.\n\nExamples of valid IP addresses:\n1.2.3.4\n192.168.1.100');
 209+ document.myForm.outerIP.focus();
 210+ return false;
 211+ }
 212+
 213+
 214+//else if ((this.value>=49151 || this.value<=1024) && this.value!=21){this.value='21';
 215+//showAlertXerverHelp('Please don\'t use that port number.\nYou must pick a port between 1024 and 49151 (or port 21, which is the default FTP port).');}
 216+
 217+ return true;
 218+}
 219+//-->
 220+</SCRIPT>
 221+
 222+
 223+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 224+
 225+
 226+</HEAD>
 227+<BODY BGCOLOR="white" TEXT="black">
 228+<TABLE WIDTH='400' BORDER='0'>
 229+<TR><TD>
 230+
 231+<CENTER>
 232+<H3>Xerver FTP Setup</H3>
 233+</CENTER>
 234+
 235+<P>
 236+
 237+
 238+<FORM NAME="myForm" ACTION="/" METHOD=get ONSUBMIT="return sendForm()">
 239+<INPUT TYPE="hidden" NAME="action" VALUE="saveConfig">
 240+
 241+
 242+
 243+<B>Data port:</B> <INPUT TYPE="text" NAME="dataPortNr" VALUE="" SIZE=5 MAXLENGTH=5 onChange="if (this.value=='32123' || this.value=='32124'){this.value='20';showAlertXerverHelp('Please don\'t use the ports 32123 or 32124.\nIt\'s reserved for Xervers Setup tools.\nFeel free to use anything but 32123 and 32124.');}else if (this.value!=parseInt(this.value) || this.value<0){alert(this.value+' is not a positive integer value.\nPlease change the value.');this.value='';this.focus();} else if (this.value!=20){if (!confirm('Are you really sure you want change the data port?\n\nIf you are not sure what you are doing, you better let the data port remain 20.\n\nOK = I want change data port to '+this.value+'.\nCancel = Let the data port be 20 (recommended).')){this.value=20}}">
 244+<INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick="showXerverHelp('If you don\'t know what this is, let it be 20, which is the default data port.\n\nHowever, in case you are in a network where port 20 is blocked or already in use, you might feel free to change the port here.\n\nIf you don\'t want use port 20, you are strongly recommended to pick a port between 1024 and 49151.\n\nThis is not the port clients shall connect to (which normally is set to 21)!\n\nThe data port is used when the server connects to the client after a PORT request is recieved from the client.\n')">
 245+
 246+<BR>
 247+This is not the port clients shall connect to (which normally is set to 21)!
 248+<BR>
 249+The data port is used when the server connects to the client after a PORT request is recieved from the client.
 250+
 251+<P>
 252+<BR>
 253+
 254+
 255+<B>Maximum idle time</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('This is the maximum time a user can be connected to the server without sending any commands.\nIf the user don\'t do anything for this period of time, the user will be disconnected.\nThe user can reconnect again after being disconnected.\n\nTo disable this feature, set the value to 0.\n')">
 256+<BR>
 257+<INPUT TYPE="text" NAME="maxIdleTime" VALUE="" SIZE=6 MAXLENGTH=6 onChange="if (this.value!=parseInt(this.value) || this.value<0){alert(this.value+' is not a positive integer value.\nPlease change the value.');this.value='';this.focus();}"> seconds
 258+<BR>
 259+To disable this feature, set the value to 0.
 260+<P>
 261+<BR>
 262+
 263+
 264+<B>Maxmimum number of NOOPs</B>
 265+<INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('Here you decide how many NOOP-commands the user is allowed to send in a row without sending any other commands.\nThis is to make sure that a user will not be idle too long and only send a lot of NOOP commands.\n\nAfter that the user has sent this many NOOPs in a row the client will be disconnected.\nThe user can reconnect again after being disconnected.\n\nTo disable this feature, set the value to 0.\n');">
 266+<BR>
 267+<INPUT TYPE="text" NAME="maxNOOPAllowed" VALUE="" SIZE=6 MAXLENGTH=6 onChange="if (this.value!=parseInt(this.value) || this.value<0){alert(this.value+' is not a positive integer value.\nPlease change the value.');this.value='';this.focus();}">
 268+<BR>
 269+To disable this feature, set the value to 0.
 270+<P>
 271+<BR>
 272+
 273+
 274+<B>Passive port range:</B>
 275+<BR>
 276+<B>Min port:</B> <INPUT TYPE="text" NAME="passiveRangeMin" VALUE="" SIZE=5 maxlength=5 onChange="if (this.value!=parseInt(this.value) || this.value<0){alert(this.value+' is not a positive integer value.\nPlease change the value.');this.value='';this.focus();}">
 277+<BR>
 278+<B>Max port:</B> <INPUT TYPE="text" NAME="passiveRangeMax" VALUE="" SIZE=5 maxlength=5 onChange="if (this.value!=parseInt(this.value) || this.value<0){alert(this.value+' is not a positive integer value.\nPlease change the value.');this.value='';this.focus();}">
 279+
 280+<INPUT TYPE="hidden" NAME="passiveRange" VALUE="" SIZE=5>
 281+<INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick="showXerverHelp('If you don\'t know what this is, leave the field empty.\n\nWhen an FTP client connects to the FTP server it can request the server to open a port number in order for the client to connect to this port number. By default Xerver will open a randomly selected port for the client to connect to. However, the problem is that if Xerver is running behind a routers or firewall that is blocking all ports that have not manually been opened the client will not be able to connect to Xerver unless the router/firewall is configured to redirect all ports to the server that runs Xerver. This is seldom desired. Instead it\'s more wise to configure the router/firewall to redirect a specific range of ports to the server running Xerver (say ports from 20000 to 21000). With this setting you can then force Xerver to try to open a port in this specific range. Xerver would then look for a free port in this range. When the FTP client tries to connect to the port number (which now is in the correct range) the connection would be passed on from the router to the server running Xerver.\n\nIf no open ports are available in the range you specify, Xerver will try to open another random port number (possibly outside the port range).')">
 282+<BR>
 283+Your firewall or router configuration may allow only a select range of ports to
 284+accept incoming connections. You can limit the ports that the FTP server will use
 285+by entering a range of ports. To allow the server to use
 286+any available port, leave both fields blank.
 287+You should either specify both a "min port" and "max port" value, or not specify any values at all.
 288+<p>
 289+<BR>
 290+
 291+
 292+
 293+<B>Local IP:</B>
 294+<INPUT TYPE="text" NAME="localIP" VALUE="" SIZE=10 maxlength=15>
 295+<BR>
 296+<B>Outer (external) IP:</B> <INPUT TYPE="text" NAME="outerIP" VALUE="" SIZE=10 maxlength=15>
 297+<INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick="showXerverHelp('Xerver will by default determine your local and outer IP address, but you are here given the option to force Xerver to use a manually entered IP address. You can choose if you want to specify both the local and outer IP address, or just one of them, or no IP address at all.\n\nThe outer IP address is the IP address your ISP (internet service provider) has assigned to you and if you have a router it is likely that this IP goes to the router.\nThe local IP should be the IP address your computer is known by in your own local network.')">
 298+<BR>
 299+Xerver can automatically determine what local IP and outer IP you have.
 300+Most users should leave these fields blank and let Xerver automatically
 301+determine what IP addresses your computer has. However, if you want manually
 302+force Xerver to use a certain local IP address and/or outer IP address,
 303+enter the IP addresses you want to use here.
 304+<p>
 305+<BR>
 306+
 307+
 308+
 309+
 310+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 311+<TR><TD>
 312+<!-- INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/action=wizardGeneralSettings&direction=back')" -->
 313+</TD><TD ALIGN="right">
 314+<P ALIGN="right">
 315+<INPUT TYPE="submit" VALUE="Save and Next Step --&gt;">
 316+</P>
 317+</TD></TR>
 318+</TABLE>
 319+
 320+
 321+</FORM>
 322+
 323+
 324+</TD></TR>
 325+</TABLE>
 326+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizSetPermissions.html
@@ -0,0 +1,366 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function showXerverHelp(helpTxt,titleTxt)
 9+{
 10+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 11+ titleTxt="Xerver Wizard Help";
 12+
 13+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 14+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 15+
 16+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 17+ addDirWindow.focus();
 18+}
 19+
 20+
 21+
 22+function userNameIs(user)
 23+{
 24+ document.myForm.userName.value=user;
 25+ document.write("<HR>Current user: <B>"+user+"</B>");
 26+}
 27+
 28+/*
 29+function addAliasToList(name,path)
 30+{
 31+ lastElement=document.myForm.aliasList.length++;
 32+ document.myForm.aliasList[lastElement].value=name+"="+path;
 33+ document.myForm.aliasList[lastElement].text=name+"="+path;
 34+}
 35+*/
 36+
 37+
 38+
 39+function removeAliases()
 40+{
 41+ removeThese="";
 42+ nr=document.myForm.aliasCheckbox.length;
 43+//alert(nr)
 44+ if (nr+""=="undefined") //There is only one checkbox
 45+ {
 46+//alert(document.myForm.aliasCheckbox.checked)
 47+ if (document.myForm.aliasCheckbox.checked)
 48+ {
 49+ removeThese=document.myForm.aliasCheckbox.value;
 50+ }
 51+ }
 52+ else //There is more than one checkbox
 53+ {
 54+ for (i=0; i<nr; i++)
 55+ {
 56+// alert(document.myForm.aliasCheckbox[i].checked)
 57+ if (document.myForm.aliasCheckbox[i].checked)
 58+ {
 59+ removeThese+=document.myForm.aliasCheckbox[i].value+",";
 60+ }
 61+ }
 62+ removeThese=removeThese.substring(0,removeThese.length-1);
 63+ }
 64+
 65+
 66+ if (removeThese=="")
 67+ alert("You have not checked which aliases you want to remove.")
 68+ else if (confirm("Are you sure you want to remove these aliases from the list?"))
 69+ location.replace("/?action=save&userName="+document.myForm.userName.value+"&type=removeAlias&removeThese="+removeThese);
 70+}
 71+
 72+
 73+
 74+
 75+function sendForm()
 76+{
 77+ if (document.myForm.newPermissionPath.value=="")
 78+ {
 79+ alert("Please select a directory you want that "+document.myForm.userName.value+" shall have access to.")
 80+ return false;
 81+ }
 82+
 83+ if (document.myForm.userName.value=="guest" &&
 84+ (document.myForm.thisCreate.checked || document.myForm.thisWrite.checked))
 85+ {
 86+ if (!confirm("WARNING!\nYou are giving the guest user permission to write files to your harddrive!\nThis means that anyone can upload files, including viruses or files with illegal content, to your harddrive.\nThe files can of course not be executed by the guest user, but they will be stored on your hardrive.\n\nAre you sure you want to continue?\n\nPress OK if you want give the guest user these permissions.\nPress Cancel if you want to abort."))
 87+ {
 88+ return false;
 89+ }
 90+ }
 91+
 92+/*****************
 93+ checkBoxData="";
 94+ if (document.myForm.thisSubdir.checked)
 95+ {
 96+ checkBoxData="&thisSubdir=on";
 97+ }
 98+ if (document.myForm.thisRead.checked)
 99+ {
 100+ checkBoxData="&thisRead=on";
 101+ }
 102+ if (document.myForm.thisWrite.checked)
 103+ {
 104+ checkBoxData="&thisWrite=on";
 105+ }
 106+ if (document.myForm.thisCreate.checked)
 107+ {
 108+ checkBoxData="&thisCreate=on";
 109+ }
 110+ if (document.myForm.thisList.checked)
 111+ {
 112+ checkBoxData="&thisList=on";
 113+ }
 114+
 115+ location.replace("/action=save&type=addPermissions&userName="+document.myForm.userName.value+"&newPermissionPath="+document.myForm.newPermissionPath.value+checkBoxData);
 116+************************/
 117+ return true;
 118+}
 119+
 120+
 121+
 122+function updatePermissions()
 123+{
 124+ OKToSave=true;
 125+ if (document.myForm.userName.value=="guest")
 126+ {
 127+ isGuestUser=true;
 128+ hasShowedVarning=false; //No matter what...
 129+ }
 130+ else
 131+ {
 132+ isGuestUser=false;
 133+ hasShowedVarning=false; //No matter what...
 134+ }
 135+
 136+
 137+ newPermissionStr="";
 138+ nr=document.myForm.write.length;
 139+ if (nr+""=="undefined") //There is only one checkbox
 140+ {
 141+ newPermissionStr+=replace(escape(document.myForm.path0.value),'+','%2B');
 142+ if (document.myForm.subdir.checked)
 143+ {
 144+ newPermissionStr+="*";
 145+ }
 146+ newPermissionStr+=";";
 147+ if (document.myForm.write.checked)
 148+ {
 149+ if (isGuestUser && !hasShowedVarning)
 150+ {
 151+ OKToSave=confirm("WARNING!\nYou are giving the guest user permission to write files to your harddrive!\nThis means that anyone can upload files, including viruses or files with illegal content, to your harddrive.\nThe files can of course not be executed by the guest user, but they will be stored on your hardrive.\n\nAre you sure you want to continue?\n\nPress OK if you want give the guest user these permissions.\nPress Cancel if you want to abort.")
 152+ hasShowedVarning=true;
 153+ }
 154+ newPermissionStr+="w";
 155+ }
 156+ if (document.myForm.read.checked)
 157+ {
 158+ newPermissionStr+="r";
 159+ }
 160+ if (document.myForm.create.checked)
 161+ {
 162+ if (isGuestUser && !hasShowedVarning)
 163+ {
 164+ OKToSave=confirm("WARNING!\nYou are giving the guest user permission to write files to your harddrive!\nThis means that anyone can upload files, including viruses or files with illegal content, to your harddrive.\nThe files can of course not be executed by the guest user, but they will be stored on your hardrive.\n\nAre you sure you want to continue?\n\nPress OK if you want give the guest user these permissions.\nPress Cancel if you want to abort.")
 165+ hasShowedVarning=true;
 166+ }
 167+ newPermissionStr+="c";
 168+ }
 169+ if (document.myForm.list.checked)
 170+ {
 171+ newPermissionStr+="l";
 172+ }
 173+ }
 174+ else //There is more than one checkbox
 175+ {
 176+ for (i=0; i<nr; i++)
 177+ {
 178+ newPermissionStr+=replace(escape(eval("document.myForm.path"+i+".value")),'+','%2B');
 179+;
 180+ if (document.myForm.subdir[i].checked)
 181+ {
 182+ newPermissionStr+="*";
 183+ }
 184+ newPermissionStr+=";";
 185+ if (document.myForm.write[i].checked)
 186+ {
 187+ if (isGuestUser && !hasShowedVarning)
 188+ {
 189+ OKToSave=confirm("WARNING!\nYou are giving the guest user permission to write files to your harddrive!\nThis means that anyone can upload files, including viruses or files with illegal content, to your harddrive.\nThe files can of course not be executed by the guest user, but they will be stored on your hardrive.\n\nAre you sure you want to continue?\n\nPress OK if you want give the guest user these permissions.\nPress Cancel if you want to abort.")
 190+ hasShowedVarning=true;
 191+ }
 192+ newPermissionStr+="w";
 193+ }
 194+ if (document.myForm.read[i].checked)
 195+ {
 196+ newPermissionStr+="r";
 197+ }
 198+ if (document.myForm.create[i].checked)
 199+ {
 200+ if (isGuestUser && !hasShowedVarning)
 201+ {
 202+ OKToSave=confirm("WARNING!\nYou are giving the guest user permission to write files to your harddrive!\nThis means that anyone can upload files, including viruses or files with illegal content, to your harddrive.\nThe files can of course not be executed by the guest user, but they will be stored on your hardrive.\n\nAre you sure you want to continue?\n\nPress OK if you want give the guest user these permissions.\nPress Cancel if you want to abort.")
 203+ hasShowedVarning=true;
 204+ }
 205+ newPermissionStr+="c";
 206+ }
 207+ if (document.myForm.list[i].checked)
 208+ {
 209+ newPermissionStr+="l";
 210+ }
 211+ newPermissionStr+=",";
 212+ }
 213+ newPermissionStr=newPermissionStr.substring(0,newPermissionStr.length-1);
 214+ }
 215+
 216+ if (OKToSave && (hasShowedVarning || confirm("Are you sure you want to change settings?")))
 217+ location.replace("/?action=save&userName="+document.myForm.userName.value+"&type=updatePermissions&newValue="+newPermissionStr);
 218+}
 219+
 220+
 221+
 222+
 223+function removePermissions(removeThisIndex)
 224+{
 225+ newPermissionStr="";
 226+ nr=document.myForm.write.length;
 227+ if (nr+""=="undefined") //There is only one checkbox
 228+ {
 229+ newPermissionStr="";
 230+ }
 231+ else //There is more than one checkbox
 232+ {
 233+ for (i=0; i<nr; i++)
 234+ {
 235+ if (i!=removeThisIndex)
 236+ {
 237+ newPermissionStr+=replace(escape(eval("document.myForm.path"+i+".value")),'+','%2B');
 238+ if (document.myForm.subdir[i].checked)
 239+ {
 240+ newPermissionStr+="*";
 241+ }
 242+ newPermissionStr+=";";
 243+ if (document.myForm.write[i].checked)
 244+ {
 245+ newPermissionStr+="w";
 246+ }
 247+ if (document.myForm.read[i].checked)
 248+ {
 249+ newPermissionStr+="r";
 250+ }
 251+ if (document.myForm.create[i].checked)
 252+ {
 253+ newPermissionStr+="c";
 254+ }
 255+ if (document.myForm.list[i].checked)
 256+ {
 257+ newPermissionStr+="l";
 258+ }
 259+ newPermissionStr+=",";
 260+ }
 261+ }
 262+ newPermissionStr=newPermissionStr.substring(0,newPermissionStr.length-1);
 263+ }
 264+
 265+ if (confirm("Are you sure you want to unshare\n"+eval("document.myForm.path"+removeThisIndex+".value")+"?"))
 266+ location.replace("/?action=save&userName="+document.myForm.userName.value+"&type=updatePermissions&newValue="+newPermissionStr);
 267+
 268+}
 269+
 270+
 271+function replace(str,oldChar,newChar)
 272+{
 273+ for (ii=0;ii<str.length; ii++)
 274+ {
 275+ if (str.substring(ii,ii+1)==oldChar)
 276+ str=str.substring(0,ii)+newChar+str.substring(ii+1,str.length);
 277+ }
 278+
 279+ return str;
 280+}
 281+
 282+
 283+
 284+function dirChoosen(path)
 285+{
 286+ document.myForm.newPermissionPath.value=path;
 287+}
 288+function browseFolders()
 289+{
 290+ browseWindow=window.open('/?action=chooseDirectory&currentPath='+replace(escape(document.myForm.newPermissionPath.value),'+','%2B'),'browse','width=500,height=400,scrollbars=yes')
 291+ browseWindow.focus();
 292+}
 293+//-->
 294+</SCRIPT>
 295+
 296+
 297+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 298+
 299+
 300+</HEAD>
 301+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0">
 302+
 303+
 304+
 305+<FORM NAME="myForm" ACTION="/" METHOD=get ONSUBMIT="return sendForm()">
 306+
 307+<TABLE WIDTH="100%" CELLPADDING=0 CELLSPACING=8 BGCOLOR=lightgreen>
 308+<TR><TD>
 309+<U><B>Set permissions for shared directories</B></U>
 310+</TD></TR>
 311+</TABLE>
 312+<BR>
 313+
 314+
 315+<B>Share folder</B>
 316+<INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick="showXerverHelp('Here you can choose which folders this user shall be allowed to browse.\nYou shall also decide what permissions this user shall have for each specific folder.\n')">
 317+
 318+<BR>
 319+
 320+<BR>
 321+
 322+<TABLE WIDTH="100%" BGCOLOR="lightblue" BORDER=2 BORDERCOLORDARK=black BORDERCOLORLIGHT=black BORDERCOLOR=black CELLPADDING=5 CELLSPACING=0>
 323+<TR><TD>
 324+
 325+Choose folder:
 326+<BR>
 327+<INPUT TYPE="text" NAME="newPermissionPath" SIZE=40><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse...">
 328+<P>
 329+
 330+Permissions for this folder:
 331+
 332+<TABLE BGCOLOR="#cccccc" BORDER=2 BORDERCOLORDARK=black BORDERCOLORLIGHT=black BORDERCOLOR=black CELLPADDING=2 CELLSPACING=0>
 333+<TR>
 334+<TH CLASS=smallheader><A HREF="javascript:alert('Write permissions:\nUser can delete, overwrite and create files/folders in this folder.')" TITLE="">Write</A></TH>
 335+<TH CLASS=smallheader><A HREF="javascript:alert('Read permissions:\nUser can read and download files in this folder.')" TITLE="User can read and download files in this folder.">Read</A></TH>
 336+<TH CLASS=smallheader><A HREF="javascript:alert('Create new files:\nUser can can create new files/folders, but can not delete or overwrite existing files.')" TITLE="User can can create new files/folders, but might not delete or overwrite existing files.">Create</A></TH>
 337+<TH CLASS=smallheader><A HREF="javascript:alert('List directories:\nUser can see the what files/folders are stored in this directory.')" TITLE="User can see the what files/folders are stored in this directory.">List</A></TH>
 338+<TH CLASS=smallheader><A HREF="javascript:alert('Subdirectories:\nAll permissions for this folder shall also apply for subdirectories.')" TITLE="All permissions for this folder shall also apply for subdirectories.">Subdir.</A></TH>
 339+<TD ROWSPAN=2 BGCOLOR="#eeeeee">
 340+Below you can find explainations
 341+<BR>
 342+for what the different
 343+<BR>
 344+permissions means.</TD></TR>
 345+<TR BGCOLOR="#eeeeee"><TD><INPUT TYPE=checkbox NAME=thisWrite></TD><TD><INPUT TYPE=checkbox NAME=thisRead></TD><TD><INPUT TYPE=checkbox NAME=thisCreate></TD><TD><INPUT TYPE=checkbox NAME=thisList CHECKED></TD><TD><INPUT TYPE=checkbox NAME=thisSubdir CHECKED></TD></TR>
 346+</TABLE>
 347+
 348+<P ALIGN="right">
 349+<INPUT TYPE="submit" VALUE="Share folder">
 350+</P>
 351+</TD></TR>
 352+</TABLE>
 353+
 354+
 355+<INPUT TYPE="hidden" NAME="userName">
 356+<INPUT TYPE="hidden" NAME="action" VALUE="save">
 357+<INPUT TYPE="hidden" NAME="type" VALUE="addPermissions">
 358+<P>
 359+<BR>
 360+
 361+
 362+
 363+
 364+
 365+
 366+
 367+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/derby.log
@@ -0,0 +1,11 @@
 2+Server is ready to accept connections on port 1527.
 3+----------------------------------------------------------------
 4+2008-05-25 00:47:55.474 GMT:
 5+ Booting Derby version The Apache Software Foundation - Apache Derby - 10.1.3.1 - (417277): instance c013800d-011a-1d8b-854d-0000056d71b8
 6+on database directory C:\Documents and Settings\Daniel\My Documents\Eclipse\MediaWiki\wikiSDK\Xerver4\ftp_data\aptanaDB
 7+
 8+Database Class Loader started - derby.database.classpath=''
 9+
 10+2008-05-25 01:18:41.021 GMT:
 11+Shutting down instance c013800d-011a-1d8b-854d-0000056d71b8
 12+----------------------------------------------------------------
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagerecyclebin.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagerecyclebin.gif
___________________________________________________________________
Added: svn:mime-type
113 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/style.css
@@ -0,0 +1,10 @@
 2+
 3+
 4+TD {font-family:arial,verdana; font-size:13px;}
 5+TH {font-family:arial,verdana; font-size:13px;}
 6+BODY {font-family:arial,verdana; font-size:13px;}
 7+H3 {font-family:verdana,arial; font-size:20px;}
 8+.small {font-family:arial,verdana; font-size:10px; color:red;}
 9+.smallheader {font-family:arial,verdana; font-size:10px; color:black;}
 10+
 11+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagewizardbig.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagewizardbig.gif
___________________________________________________________________
Added: svn:mime-type
112 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizDataSaved.html
@@ -0,0 +1,18 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+
 7+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 8+
 9+
 10+
 11+</HEAD>
 12+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange">
 13+
 14+
 15+
 16+Changes have been saved!
 17+
 18+
 19+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizSetAliases.html
@@ -0,0 +1,169 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+
 9+function userNameIs(user)
 10+{
 11+ document.myForm.userName.value=user;
 12+ document.write("<HR>Current user: <B>"+user+"</B>");
 13+}
 14+
 15+/*
 16+function addAliasToList(name,path)
 17+{
 18+ lastElement=document.myForm.aliasList.length++;
 19+ document.myForm.aliasList[lastElement].value=name+"="+path;
 20+ document.myForm.aliasList[lastElement].text=name+"="+path;
 21+}
 22+*/
 23+
 24+
 25+
 26+function removeAliases()
 27+{
 28+ removeThese="";
 29+ nr=document.myForm.aliasCheckbox.length;
 30+ if (nr+""=="undefined") //There is only one checkbox
 31+ {
 32+ if (document.myForm.aliasCheckbox.checked)
 33+ {
 34+ removeThese=document.myForm.aliasCheckbox.value;
 35+ }
 36+ }
 37+ else //There is more than one checkbox
 38+ {
 39+ for (i=0; i<nr; i++)
 40+ {
 41+ if (document.myForm.aliasCheckbox[i].checked)
 42+ {
 43+ removeThese+=document.myForm.aliasCheckbox[i].value+",";
 44+ }
 45+ }
 46+ removeThese=removeThese.substring(0,removeThese.length-1);
 47+ }
 48+
 49+
 50+ if (removeThese=="")
 51+ alert("You have not checked which aliases you want to remove.")
 52+ else if (confirm("Are you sure you want to remove these aliases from the list?"))
 53+ location.replace("/?action=save&userName="+document.myForm.userName.value+"&type=removeAlias&removeThese="+removeThese);
 54+}
 55+
 56+
 57+function aliasNameIsOK()
 58+{
 59+ allowedList="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
 60+
 61+ aliasName=document.myForm.newAliasName.value;
 62+
 63+ if (aliasName=="")
 64+ {
 65+ return false;
 66+ }
 67+
 68+ for (i=0;i<aliasName.length; i++)
 69+ {
 70+ if (allowedList.indexOf(aliasName.charAt(i))==-1)
 71+ return false;
 72+ }
 73+
 74+ return true;
 75+}
 76+
 77+
 78+function sendForm()
 79+{
 80+ if (document.myForm.newAliasName.value=="")
 81+ {
 82+ alert("Please enter an alias name.")
 83+ return false;
 84+ }
 85+
 86+ if (!aliasNameIsOK())
 87+ {
 88+ alert("An alias name shall only contain letters (a-z), digits (0-9) and underscores (_).")
 89+ return false;
 90+ }
 91+
 92+ if (document.myForm.newAliasPath.value=="")
 93+ {
 94+ alert("Please select a path to which the alias shall point to.")
 95+ return false;
 96+ }
 97+
 98+ return true;
 99+}
 100+
 101+
 102+
 103+
 104+
 105+
 106+function replace(str,oldChar,newChar)
 107+{
 108+ for (i=0;i<str.length; i++)
 109+ {
 110+ if (str.substring(i,i+1)==oldChar)
 111+ str=str.substring(0,i)+newChar+str.substring(i+1,str.length);
 112+ }
 113+
 114+ return str;
 115+}
 116+
 117+
 118+
 119+
 120+function dirChoosen(path)
 121+{
 122+ document.myForm.newAliasPath.value=path;
 123+}
 124+function browseFolders()
 125+{
 126+ browseWindow=window.open('/action=chooseDirectory&currentPath='+replace(escape(document.myForm.newAliasPath.value),'+','%2B'),'browse','width=500,height=400,scrollbars=yes')
 127+ browseWindow.focus();
 128+}
 129+//-->
 130+</SCRIPT>
 131+
 132+
 133+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 134+
 135+
 136+</HEAD>
 137+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0">
 138+
 139+
 140+
 141+<FORM NAME="myForm" ACTION="/" METHOD=get onSubmit="return sendForm()">
 142+
 143+<TABLE WIDTH="100%" CELLPADDING=0 CELLSPACING=8 BGCOLOR=lightgreen>
 144+<TR><TD>
 145+<U><B>Set aliases</B></U>
 146+</TD></TR>
 147+</TABLE>
 148+<BR>
 149+
 150+
 151+<TABLE BORDER=0 CELLPADDING=4>
 152+<TR><TD>Alias name:<BR><SPAN CLASS="small">For example "music"</SPAN></TD><TD><INPUT TYPE="text" NAME="newAliasName"></TD></TR>
 153+<TR><TD>Alias path:<BR><SPAN CLASS="small">For example "c:\mymusic\"</SPAN></TD><TD><INPUT TYPE="text" NAME="newAliasPath"><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse..."></TD></TR>
 154+<TR><TD COLSPAN=2><INPUT TYPE="submit" VALUE="Add new alias"></TD></TR>
 155+</TABLE>
 156+
 157+
 158+<INPUT TYPE="hidden" NAME="userName">
 159+<INPUT TYPE="hidden" NAME="action" VALUE="save">
 160+<INPUT TYPE="hidden" NAME="type" VALUE="addAlias">
 161+<P>
 162+<BR>
 163+
 164+
 165+
 166+
 167+
 168+
 169+
 170+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizEmpty.html
@@ -0,0 +1,9 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+
 8+
 9+</BODY>
 10+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizGeneralSettings.html
@@ -0,0 +1,195 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function showXerverHelp(helpTxt,titleTxt)
 9+{
 10+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 11+ titleTxt="Xerver Wizard Help";
 12+
 13+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 14+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 15+
 16+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 17+ addDirWindow.focus();
 18+}
 19+
 20+function showAlertXerverHelp(helpTxt)
 21+{
 22+ showXerverHelp(helpTxt,"");
 23+}
 24+
 25+function submitForm()
 26+{
 27+ nyAddress="action=wizardStep2&direction=forward&save=yes";
 28+
 29+ nyAddress+="&portNr="+document.myForm.portNr.value;
 30+ nyAddress+="&allowFolderListing="+document.myForm.allowFolderListing.options[document.myForm.allowFolderListing.selectedIndex].value;
 31+ nyAddress+="&shareHiddenFiles="+document.myForm.shareHiddenFiles.options[document.myForm.shareHiddenFiles.selectedIndex].value;
 32+ nyAddress+="&allowCGIScript="+document.myForm.allowCGIScript.options[document.myForm.allowCGIScript.selectedIndex].value;
 33+
 34+// alert(nyAddress)
 35+ self.location.replace("/"+escape(nyAddress));
 36+ return true;
 37+}
 38+
 39+
 40+function setPortNr(nr)
 41+{
 42+ document.myForm.portNr.value=nr;
 43+}
 44+
 45+function setShowAlias(nr)
 46+{
 47+ if (nr==0 ||nr==1 || nr==2)
 48+ document.myForm.showAlias.selectedIndex=nr;
 49+}
 50+
 51+function setGuestAccount(nr)
 52+{
 53+ if (nr==0 ||nr==1)
 54+ document.myForm.guestAccount.selectedIndex=nr;
 55+}
 56+
 57+function setLogFile(logFile)
 58+{
 59+ document.myForm.logFile.value=logFile;
 60+}
 61+
 62+
 63+function sendForm()
 64+{
 65+ portNr=document.myForm.portNr.value;
 66+
 67+ if (portNr!=parseInt(portNr))
 68+ {
 69+ showAlertXerverHelp("The port number must be a number.");
 70+ return false;
 71+ }
 72+
 73+ if (portNr>65535 || portNr<1)
 74+ {
 75+ showAlertXerverHelp("The port number shall not be larger than 65535 and it shall indeed not be less than 1.");
 76+ return false;
 77+ }
 78+
 79+ if (portNr=='32123' || portNr=='32124')
 80+ {
 81+ document.myForm.portNr.value="21";
 82+ showAlertXerverHelp("Please don't use the ports 32123 or 32124.\nIt's reserved for Xervers Setup tools.\nFeel free to use anything but 32123 and 32124.");
 83+ return false;
 84+ }
 85+
 86+ if ((portNr>=49151 || portNr<=1024) && portNr!=21)
 87+ {
 88+ if (portNr>=49151)
 89+ reason="The port number you have choosen ("+portNr+") is greater than 49151.";
 90+ else // (portNr<=1024)
 91+ reason="The port number you have choosen ("+portNr+") is less than 1024.";
 92+
 93+ if (!confirm(reason+"\nTo avoid future problems you are recommended to change port number to 21 or something between 1024 and 49151.\n\nPress OK to use "+portNr+" as port number anyway.\nPress Cancel to change port number to something else."))
 94+ {
 95+ return false;
 96+ }
 97+ }
 98+
 99+//else if ((this.value>=49151 || this.value<=1024) && this.value!=21){this.value='21';
 100+//showAlertXerverHelp('Please don\'t use that port number.\nYou must pick a port between 1024 and 49151 (or port 21, which is the default FTP port).');}
 101+
 102+ return true;
 103+}
 104+//-->
 105+</SCRIPT>
 106+
 107+
 108+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 109+
 110+
 111+</HEAD>
 112+<BODY BGCOLOR="white" TEXT="black">
 113+<TABLE WIDTH='400' BORDER='0'>
 114+<TR><TD>
 115+
 116+<CENTER>
 117+<H3>Xerver FTP Setup</H3>
 118+</CENTER>
 119+
 120+<P>
 121+
 122+
 123+<FORM NAME="myForm" ACTION="/" METHOD=get ONSUBMIT="return sendForm()">
 124+<INPUT TYPE="hidden" NAME="action" VALUE="saveConfig">
 125+
 126+
 127+
 128+<B>Port:</B> <INPUT TYPE="text" NAME="portNr" VALUE="" SIZE=5 onChange="if (this.value=='32123' || this.value=='32124'){this.value='21';showAlertXerverHelp('Please don\'t use the ports 32123 or 32124.\nIt\'s reserved for Xervers Setup tools.\nFeel free to use anything but 32123 and 32124.');}">
 129+<INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick="showXerverHelp('If you don\'t know what this is, enter 21 in this field.\n\nIf you choose something else than 21, you must tell your FTP client what port you have choosen here.\n\nExample: If you enter 5021 in this field, you must change settings in your FTP client so that it will connect to port 5021.\n')">
 130+
 131+<BR>
 132+Please choose which port you want to use. We recommend port "21",
 133+which is the standard port for FTP servers. If you are already using port 21
 134+(or if port 21 doesn't work for you), you might want to use port 5021.
 135+If you don't want use port 21, you are strongly recommended to pick a port between 1024 and 49151.
 136+<P>
 137+<BR>
 138+
 139+
 140+<B>When a user lists the content of / (root), what shall the user see?</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('If you don\'t understand this, choose to list everything (and hide nothing).\n\nWhen a user makes a directory listing for / (his root), you can choose if he shall see his aliases (if you have created any aliases for his account) or if he shall see the directories in his root or if he shall see both aliases and directories.')">
 141+<BR>
 142+<SELECT NAME="showAlias">
 143+ <OPTION VALUE="0">List aliases. Hide files and folders.</OPTION>
 144+ <OPTION VALUE="1">List files and folders. Hide aliases.</OPTION>
 145+ <OPTION VALUE="2" SELECTED>List files, folders and aliases. (RECOMMENDED)</OPTION>
 146+</SELECT>
 147+<P>
 148+<BR>
 149+
 150+<B>Allow anonymous login?</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('Choose yes if you want everyone on internet to be able to connect to your FTP server.\n\nChoose no if you want to create accounts for everyone that shall be able to connect to your server.');">
 151+<BR>
 152+<SELECT NAME="guestAccount">
 153+ <OPTION VALUE="0" SELECTED>No</OPTION>
 154+ <OPTION VALUE="1">Yes</OPTION>
 155+</SELECT>
 156+<BR>
 157+If you choose to allow anonymous login everyone can login to your server with your guest account (called "guest").
 158+<BR>
 159+You can set the permissions for this "guest" account under the "account" tabs.
 160+<P>
 161+<BR>
 162+
 163+
 164+<B>Log file name</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('This is a traditional log file showing detailed information about all commands that are sent to and from the server.\n\nIf you prefer not to have a log file, leave this field blank.')">
 165+<BR>
 166+<INPUT TYPE="text" NAME="logFile" VALUE="">
 167+<BR>
 168+For example <I>XerverFTP.log</I> or <I>c:\logs\xerverFTP.log</I>.
 169+<BR>
 170+Unless an absolute path is specified, the log file is created in the Xerver directory.
 171+<P>
 172+<BR>
 173+
 174+
 175+
 176+
 177+
 178+
 179+
 180+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 181+<TR><TD>
 182+<!-- INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/action=wizardGeneralSettings&direction=back')">
 183+</TD><TD ALIGN="right">
 184+<P ALIGN="right">
 185+<INPUT TYPE="submit" VALUE="Save and Next Step --&gt;">
 186+</P>
 187+</TD></TR>
 188+</TABLE>
 189+
 190+
 191+</FORM>
 192+
 193+
 194+</TD></TR>
 195+</TABLE>
 196+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizSetRoot.html
@@ -0,0 +1,90 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+
 9+function userNameIs(user)
 10+{
 11+ document.myForm.userName.value=user;
 12+ document.write("<HR>Current user: <B>"+user+"</B>");
 13+}
 14+
 15+function rootIs(root)
 16+{
 17+ document.myForm.newValue.value=root;
 18+}
 19+
 20+
 21+function sendForm()
 22+{
 23+ if (document.myForm.newValue.value=="")
 24+ {
 25+ alert("Please choose a root to share.");
 26+ return false;
 27+ }
 28+
 29+ //location="/action=save&type=root&userName="+document.myForm.userName.value+"&newValue="+document.myForm.newValue.value;
 30+ return true;
 31+}
 32+
 33+
 34+
 35+function replace(str,oldChar,newChar)
 36+{
 37+ for (i=0;i<str.length; i++)
 38+ {
 39+ if (str.substring(i,i+1)==oldChar)
 40+ str=str.substring(0,i)+newChar+str.substring(i+1,str.length);
 41+ }
 42+
 43+ return str;
 44+}
 45+
 46+
 47+function dirChoosen(path)
 48+{
 49+ document.myForm.newValue.value=path;
 50+}
 51+function browseFolders()
 52+{
 53+ browseWindow=window.open('/?action=chooseDirectory&currentPath='+replace(escape(document.myForm.newValue.value),'+','%2B'),'browse','width=500,height=400,scrollbars=yes')
 54+ browseWindow.focus();
 55+}
 56+//-->
 57+</SCRIPT>
 58+
 59+
 60+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 61+
 62+
 63+</HEAD>
 64+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0">
 65+
 66+
 67+
 68+<FORM NAME="myForm" ACTION="/" METHOD=get ONSUBMIT="sendForm()">
 69+
 70+<TABLE WIDTH="100%" CELLPADDING=0 CELLSPACING=8 BGCOLOR=lightgreen>
 71+<TR><TD>
 72+<U><B>Set root</B></U>
 73+</TD></TR>
 74+</TABLE>
 75+<BR>
 76+
 77+
 78+Set root:
 79+<INPUT TYPE="text" NAME="newValue" SIZE=40><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse...">
 80+<INPUT TYPE="hidden" NAME="userName">
 81+<INPUT TYPE="hidden" NAME="action" VALUE="save">
 82+<INPUT TYPE="hidden" NAME="type" VALUE="root">
 83+
 84+<P>
 85+<INPUT TYPE="submit" VALUE="Save Root">
 86+
 87+
 88+</FORM>
 89+<BR>
 90+
 91+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizAddNewUser.html
@@ -0,0 +1,130 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+
 9+function userNameIs(user)
 10+{
 11+ document.myForm.userName.value=user;
 12+ document.write("<HR>Current user: <B>"+user+"</B>");
 13+}
 14+
 15+function rootIs(root)
 16+{
 17+ document.myForm.newValue.value=root;
 18+}
 19+
 20+
 21+
 22+function dirChoosen(path)
 23+{
 24+ document.myForm.root.value=path;
 25+}
 26+function browseFolders()
 27+{
 28+ browseWindow=window.open('/action=chooseDirectory&currentPath='+document.myForm.root.value,'browse','width=500,height=400,scrollbars=yes')
 29+ browseWindow.focus();
 30+}
 31+
 32+
 33+function usernameIsOK()
 34+{
 35+ allowedList="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
 36+
 37+ username=document.myForm.userName.value;
 38+
 39+ if (username=="")
 40+ {
 41+ return false;
 42+ }
 43+
 44+ for (i=0;i<username.length; i++)
 45+ {
 46+ if (allowedList.indexOf(username.charAt(i))==-1)
 47+ return false;
 48+ }
 49+
 50+ return true;
 51+}
 52+
 53+
 54+function sendForm()
 55+{
 56+ if (document.myForm.userName.value=="")
 57+ {
 58+ alert("Please enter an account name.")
 59+ return false;
 60+ }
 61+
 62+ if (!usernameIsOK())
 63+ {
 64+ alert("An account name shall only contain letters, digits and underscores (_).")
 65+ return false;
 66+ }
 67+
 68+ if (document.myForm.root.value=="")
 69+ {
 70+ alert("Please select a root for this user.")
 71+ return false;
 72+ }
 73+
 74+ if (document.myForm.password1.value!=document.myForm.password2.value)
 75+ {
 76+ alert("Your passwords does not match.")
 77+ return false;
 78+ }
 79+
 80+ if (document.myForm.password1.value=="")
 81+ {
 82+ alert("For security reasons you can not create users with empty passwords.\nYou must enter a password for all accounts.\nYou can use the guest account if you want an account without password.")
 83+ return false;
 84+ }
 85+
 86+ return true;
 87+}
 88+//-->
 89+</SCRIPT>
 90+
 91+
 92+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 93+
 94+
 95+</HEAD>
 96+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0">
 97+
 98+
 99+
 100+<FORM NAME="myForm" ACTION="/" METHOD="get" ONSUBMIT="return sendForm()">
 101+
 102+<TABLE WIDTH="100%" CELLPADDING=0 CELLSPACING=8 BGCOLOR=lightgreen>
 103+<TR><TD>
 104+<U><B>Create a new account</B></U>
 105+</TD></TR>
 106+</TABLE>
 107+<BR>
 108+
 109+<TABLE BORDER=0 CELLPADDING=4>
 110+<TR><TD>New account name:<BR><SPAN CLASS="small">For example "john"</SPAN></TD><TD><INPUT TYPE="text" NAME="userName"></TD></TR>
 111+<TR><TD>Set root:<BR><SPAN CLASS="small">For example "c:\john\files\"</SPAN></TD><TD><INPUT TYPE="text" NAME="root"><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse..."></TR>
 112+<TR><TD>Set password:</TD><TD><INPUT TYPE="password" NAME="password1"></TD></TR>
 113+<TR><TD>Re-enter password:</TD><TD><INPUT TYPE="password" NAME="password2"></TD></TR>
 114+</TABLE>
 115+<P>
 116+
 117+
 118+
 119+
 120+
 121+<INPUT TYPE="hidden" NAME="action" VALUE="save">
 122+<INPUT TYPE="hidden" NAME="type" VALUE="addUser">
 123+
 124+
 125+<INPUT TYPE="submit" VALUE="Create new account">
 126+
 127+
 128+</FORM>
 129+
 130+
 131+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagewizardsmall.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagewizardsmall.gif
___________________________________________________________________
Added: svn:mime-type
1132 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizAddUserIntro.html
@@ -0,0 +1,33 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+
 7+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 8+
 9+
 10+</HEAD>
 11+<BODY BGCOLOR="white" TEXT="black">
 12+
 13+<TABLE BORDER=0>
 14+<TR><TD VALIGN="_top">
 15+<IMG SRC="/action=showSmallWizard" BORDER=0 ALT="Xerver Wizard">
 16+</TD><TD VALIGN="_top">
 17+
 18+<B>Add accounts</B>
 19+<BR>
 20+To your left you have a menu where you can create new accounts and
 21+change permissions for the accounts.
 22+<BR>
 23+Note that there is an account called "guest".
 24+If you have allowed anonymous logins, anonymous users will
 25+get the permissions you have given to the guest account.
 26+<BR>
 27+You can not delete or rename the guest account,
 28+but you can of course disable anonymous logins.
 29+
 30+</TD></TR>
 31+</TABLE>
 32+
 33+</BODY>
 34+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizMenu.html
@@ -0,0 +1,44 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+
 9+function oldBrowser() //True iff browser is not IE 4+, Netscape 7 or Opera
 10+{
 11+ return !(navigator.appVersion.indexOf("MSIE")!=-1) && //is not IE
 12+ !(navigator.userAgent.indexOf("Mozilla/5")!=-1); //Is not NN6, NN7 or Mozilla
 13+}
 14+//-->
 15+</SCRIPT>
 16+
 17+</HEAD>
 18+<BODY BGCOLOR="#cccccc" LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 19+<FONT FACE="verdana,arial" SIZE="-1">
 20+
 21+<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0 HEIGHT="100%" WIDTH="100%">
 22+<TR>
 23+<TH VALIGN=top onCLick="parent.mainsetup.location.href='/action=wizardGeneralSettings';"
 24+ onMouseOver="this.style.backgroundColor='#aaaaaa';"
 25+ onMouseOut="this.style.backgroundColor='';"><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/action=wizardGeneralSettings" TARGET="mainsetup">General settings</A></FONT></TH>
 26+<TH><FONT FACE="verdana,arial" SIZE="-1">&nbsp;&nbsp;&nbsp;&nbsp;</FONT></TH>
 27+<TH VALIGN=top onCLick="parent.mainsetup.location.href='/action=wizardUserFrames';"
 28+ onMouseOver="this.style.backgroundColor='#aaaaaa';"
 29+ onMouseOut="this.style.backgroundColor='';"><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/action=wizardUserFrames" TARGET="mainsetup">User accounts</A></FONT></TH>
 30+<TH><FONT FACE="verdana,arial" SIZE="-1">&nbsp;&nbsp;&nbsp;&nbsp;</FONT></TH>
 31+<TH VALIGN=top onCLick="parent.mainsetup.location.href='/action=wizardAdvancedSettings';"
 32+ onMouseOver="this.style.backgroundColor='#aaaaaa';"
 33+ onMouseOut="this.style.backgroundColor='';"><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/action=wizardAdvancedSettings" TARGET="mainsetup">Advanced settings</A></FONT></TH>
 34+<TH><FONT FACE="verdana,arial" SIZE="-1">&nbsp;&nbsp;&nbsp;&nbsp;</FONT></TH>
 35+<TH VALIGN=top onCLick="window.open('http://www.javascript.nu/xerver/','newWindow')"
 36+ onMouseOver="this.style.backgroundColor='#aaaaaa';"
 37+ onMouseOut="this.style.backgroundColor='';"><FONT FACE="verdana,arial" SIZE="-1"><A HREF="javascript:if(oldBrowser())void(window.open('http://www.javascript.nu/xerver/','newWindow'))">Xerver Homepage</A></FONT></TH>
 38+</TR>
 39+</TABLE>
 40+
 41+
 42+
 43+</FONT>
 44+</BODY>
 45+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/IndexPage.html
@@ -0,0 +1,72 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE=javascript>
 7+function openXerverSetup()
 8+{
 9+ addDirWindow=window.open("/action=wizardFrames","XerverSetup","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=630,height=465");
 10+ addDirWindow.focus();
 11+}
 12+</SCRIPT>
 13+
 14+</HEAD>
 15+<BODY BGCOLOR=white TEXT=black>
 16+
 17+
 18+ <TABLE WIDTH='500' BORDER='0' CELLPADDING=0 CELLSPACING=0>
 19+ <TR>
 20+ <TD>
 21+ <CENTER>
 22+ <A HREF="javascript:openXerverSetup()">
 23+ <IMG SRC='?action=showLogo' BORDER=0 ALT="Xerver Logo">
 24+ </A>
 25+
 26+ <TABLE WIDTH='500' BORDER=0 CELLPADDING=0 CELLSPACING=0>
 27+ <TR>
 28+ <TD VALIGN=top WIDTH=339>
 29+
 30+ <CENTER>
 31+ <A HREF="javascript:openXerverSetup()" STYLE="text-decoration:none;">
 32+ <FONT FACE='arial,verdana' SIZE='+2'>
 33+ <B>
 34+ Start FTP Setup</B>
 35+ </FONT>
 36+ </A>
 37+ </CENTER>
 38+
 39+ <BR>
 40+ <BR>
 41+ <BR>
 42+
 43+ <B>
 44+ <FONT FACE='arial,verdana' SIZE='-1'>
 45+ Xerver Wizard will guide you
 46+ <BR>
 47+ through this setup program.
 48+ </FONT>
 49+ <P>
 50+
 51+ <FONT FACE='arial,verdana' SIZE='-2'>
 52+ This is the setup for the FTP server only.
 53+ <BR>
 54+ The HTTP server setup is running at
 55+ <A HREF="http://127.0.0.1:32123/">port 32123</A>.
 56+ </FONT>
 57+
 58+ </B>
 59+
 60+ </TD><TD WIDTH=261>
 61+
 62+ <A HREF="javascript:openXerverSetup()"><IMG SRC="?action=showBigWizard" BORDER=0 WIDTH=261 HEIGHT=326 ALT="Xerver Wizard"></A>
 63+
 64+ </TD></TR>
 65+ </TABLE>
 66+ </CENTER>
 67+
 68+ </TD></TR>
 69+ </TABLE>
 70+
 71+</BODY>
 72+</HTML>
 73+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagelogo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/imagelogo.gif
___________________________________________________________________
Added: svn:mime-type
174 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizUserFrames.html
@@ -0,0 +1,9 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+</HEAD>
 6+<FRAMESET COLS="150,*" BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>
 7+ <FRAME SRC="/action=wizardChooseUser" NAME="usermenu">
 8+ <FRAME SRC="/action=wizardAddUserIntro" NAME="usercontent">
 9+</FRAMESET>
 10+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/FTP2.cfg
@@ -0,0 +1,98 @@
 2+; Note: Make sure you don't enter invalid data as values.
 3+; For example. If the value can be 0 or 1,
 4+; the server might not start if you enter 2 as value.
 5+
 6+
 7+
 8+; Choose which port-number that shall be used.
 9+; Clients shall connect to this port when connection to the server.
 10+
 11+PORT_NR = 21
 12+
 13+
 14+
 15+; Shall aliases be shown as directories when listing root?
 16+; Set this to 0, 1 or 2:
 17+; 0 = Show only aliases when listing root ( / )
 18+; 1 = Don't show aliases at all! Hide the aliases in the listing.
 19+; 2 = When listing root, both show a correct listing of the root, but also add the aliases to the listing.
 20+
 21+SHOW_ALIAS = 2
 22+
 23+
 24+
 25+; Shall anonymous users be able to login?
 26+; 1 = Yes, use guest (anonymous) account
 27+; 0 = No, no anonymous logins shall be allowed.
 28+
 29+GUEST_ACCOUNT = 0
 30+
 31+
 32+
 33+; This is the maximum time (in seconds) a user can be connected to the server without sending
 34+; any commands. After this time the user will be disconnected.
 35+; The user can reconnect again after being disconnected.
 36+; This shall be a positive integer value.
 37+;
 38+; To disable this feature, set the value to 0.
 39+
 40+MAX_IDLE_TIME = 90
 41+
 42+
 43+
 44+; Here you decide how many NOOP-commands the user is allowed
 45+; to send in a row without sending any other commands.
 46+; This is to make sure that a user will not be idle too long
 47+; and only send a lot of NOOP commands.
 48+;
 49+; After that the user has sent MAX_NOOP_ALLOWED NOOPs
 50+; in a row the client will be disconnected.
 51+; The user can reconnect again after being disconnected.
 52+; This shall be an positive integer value.
 53+;
 54+; To disable this feature, set the value to 0.
 55+
 56+MAX_NOOP_ALLOWED = 50
 57+
 58+
 59+
 60+; Choose which data port-number that shall be used
 61+; This is NOT the port the clients are conencting to!
 62+; The default data port-number in the FTP-protocol is 20.
 63+; If you are not allowed to use port 20, use another port.
 64+
 65+DATA_PORT_NR = 20
 66+
 67+
 68+
 69+; Your firewall or router configuration may allow only a select range of ports
 70+; to accept incoming connections. You can limit the ports that the FTP server
 71+; will use by entering a range of ports. To allow the server to use any available port,
 72+; don't specify any value. You specify the range like this: "x,y" where x is the
 73+; minimum port value and y is the maximum port value. For example "2000,2500".
 74+
 75+PASSIVE_PORT_RANGE =
 76+
 77+
 78+
 79+; Xerver can automatically determine your local IP and your outer IP.
 80+; However, if you prefer to force Xerver to use another local IP or
 81+; outer IP you can set the IP here.
 82+; Do not set any values here unless you know what you are doing!
 83+; Only manually enter values here if the server does not work properly
 84+; and you know what you are doing.
 85+; You can choose if you want to specify both a local and an outer
 86+; IP address, or if you only want to specify one of them, or none.
 87+
 88+LOCAL_IP =
 89+OUTER_IP =
 90+
 91+
 92+
 93+; The log file we shall write to.
 94+; You can either use an absolute path or relative path.
 95+; If you just enter a file name the file is created in the Xerver directory.
 96+; Leave this empty if you don't want any log file.
 97+
 98+LOG_FILE = XerverFTP.log
 99+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizFrames.html
@@ -0,0 +1,10 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+</HEAD>
 6+<FRAMESET ROWS="30,*" BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>
 7+ <FRAME SRC="/action=wizardMenu" NAME="menu">
 8+ <FRAME SRC="/action=wizardGeneralSettings" NAME="mainsetup">
 9+</FRAMESET>
 10+</HTML>
 11+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/log/logmirror.ctrl
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/log/logmirror.ctrl
___________________________________________________________________
Added: svn:mime-type
112 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/log/log.ctrl
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/log/log.ctrl
___________________________________________________________________
Added: svn:mime-type
213 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/log/log1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/log/log1.dat
___________________________________________________________________
Added: svn:mime-type
314 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/service.properties
@@ -0,0 +1,22 @@
 2+#C:\Documents and Settings\Daniel\My Documents\Eclipse\MediaWiki\wikiSDK\Xerver4\ftp_data\aptanaDB
 3+# ********************************************************************
 4+# *** Please do NOT edit this file. ***
 5+# *** CHANGING THE CONTENT OF THIS FILE MAY CAUSE DATA CORRUPTION. ***
 6+# ********************************************************************
 7+#Sat May 24 17:48:07 PDT 2008
 8+SysschemasIndex2Identifier=225
 9+SyscolumnsIdentifier=144
 10+SysconglomeratesIndex1Identifier=49
 11+SysconglomeratesIdentifier=32
 12+SyscolumnsIndex2Identifier=177
 13+SysschemasIndex1Identifier=209
 14+SysconglomeratesIndex3Identifier=81
 15+SystablesIndex2Identifier=129
 16+SyscolumnsIndex1Identifier=161
 17+derby.serviceProtocol=org.apache.derby.database.Database
 18+SysschemasIdentifier=192
 19+derby.storage.propertiesId=16
 20+SysconglomeratesIndex2Identifier=65
 21+derby.serviceLocale=en_CA
 22+SystablesIdentifier=96
 23+SystablesIndex1Identifier=113
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c150.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c150.dat
___________________________________________________________________
Added: svn:mime-type
124 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cf0.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cf0.dat
___________________________________________________________________
Added: svn:mime-type
225 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c251.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c251.dat
___________________________________________________________________
Added: svn:mime-type
326 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c171.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c171.dat
___________________________________________________________________
Added: svn:mime-type
427 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c271.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c271.dat
___________________________________________________________________
Added: svn:mime-type
528 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c290.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c290.dat
___________________________________________________________________
Added: svn:mime-type
629 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c191.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c191.dat
___________________________________________________________________
Added: svn:mime-type
730 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c20.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c20.dat
___________________________________________________________________
Added: svn:mime-type
831 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1b1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1b1.dat
___________________________________________________________________
Added: svn:mime-type
932 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2b1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2b1.dat
___________________________________________________________________
Added: svn:mime-type
1033 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c41.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c41.dat
___________________________________________________________________
Added: svn:mime-type
1134 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2d0.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2d0.dat
___________________________________________________________________
Added: svn:mime-type
1235 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1d1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1d1.dat
___________________________________________________________________
Added: svn:mime-type
1336 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c60.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c60.dat
___________________________________________________________________
Added: svn:mime-type
1437 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1f1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1f1.dat
___________________________________________________________________
Added: svn:mime-type
1538 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2f0.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2f0.dat
___________________________________________________________________
Added: svn:mime-type
1639 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c81.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c81.dat
___________________________________________________________________
Added: svn:mime-type
1740 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/ca1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/ca1.dat
___________________________________________________________________
Added: svn:mime-type
1841 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c101.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c101.dat
___________________________________________________________________
Added: svn:mime-type
1942 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c200.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c200.dat
___________________________________________________________________
Added: svn:mime-type
2043 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cc0.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cc0.dat
___________________________________________________________________
Added: svn:mime-type
2144 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c300.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c300.dat
___________________________________________________________________
Added: svn:mime-type
2245 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c121.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c121.dat
___________________________________________________________________
Added: svn:mime-type
2346 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c221.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c221.dat
___________________________________________________________________
Added: svn:mime-type
2447 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/ce1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/ce1.dat
___________________________________________________________________
Added: svn:mime-type
2548 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c141.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c141.dat
___________________________________________________________________
Added: svn:mime-type
2649 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c241.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c241.dat
___________________________________________________________________
Added: svn:mime-type
2750 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c161.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c161.dat
___________________________________________________________________
Added: svn:mime-type
2851 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c260.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c260.dat
___________________________________________________________________
Added: svn:mime-type
2952 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c180.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c180.dat
___________________________________________________________________
Added: svn:mime-type
3053 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c281.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c281.dat
___________________________________________________________________
Added: svn:mime-type
3154 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c10.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c10.dat
___________________________________________________________________
Added: svn:mime-type
3255 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1a1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1a1.dat
___________________________________________________________________
Added: svn:mime-type
3356 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2a1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2a1.dat
___________________________________________________________________
Added: svn:mime-type
3457 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1c0.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1c0.dat
___________________________________________________________________
Added: svn:mime-type
3558 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c31.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c31.dat
___________________________________________________________________
Added: svn:mime-type
3659 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2c1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2c1.dat
___________________________________________________________________
Added: svn:mime-type
3760 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1e0.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c1e0.dat
___________________________________________________________________
Added: svn:mime-type
3861 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c51.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c51.dat
___________________________________________________________________
Added: svn:mime-type
3962 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2e1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c2e1.dat
___________________________________________________________________
Added: svn:mime-type
4063 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c71.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c71.dat
___________________________________________________________________
Added: svn:mime-type
4164 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c90.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c90.dat
___________________________________________________________________
Added: svn:mime-type
4265 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c111.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c111.dat
___________________________________________________________________
Added: svn:mime-type
4366 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cb1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cb1.dat
___________________________________________________________________
Added: svn:mime-type
4467 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c211.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c211.dat
___________________________________________________________________
Added: svn:mime-type
4568 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c130.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c130.dat
___________________________________________________________________
Added: svn:mime-type
4669 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c230.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/c230.dat
___________________________________________________________________
Added: svn:mime-type
4770 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cd1.dat
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/aptanaDB/seg0/cd1.dat
___________________________________________________________________
Added: svn:mime-type
4871 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizSetPassword.html
@@ -0,0 +1,88 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function userNameIs(user)
 9+{
 10+ document.myForm.userName.value=user;
 11+ document.write("<HR>Current user: <B>"+user+"</B>");
 12+}
 13+
 14+function passwordIs(password)
 15+{
 16+ document.myForm.newValue.value=password;
 17+}
 18+
 19+function sendForm()
 20+{
 21+ if (document.myForm.newValue.value!=document.myForm.password2.value)
 22+ {
 23+ alert("Your passwords does not match.")
 24+ return false;
 25+ }
 26+
 27+ if (document.myForm.newValue.value=="")
 28+ {
 29+ alert("For security reasons you can not create users with empty passwords.\nYou must enter a password for all accounts.\nYou can use the guest account if you want an account without password.")
 30+ return false;
 31+ }
 32+
 33+ //*** DO NOT DELETE!!! ***
 34+ //*** USE THIS IF WE SHALL BE ABLE TO USE ���, BUT NOT # AND &: ***
 35+ //(make submit-button to normal button with onclick to sendForm() )
 36+ //
 37+ //if ( document.myForm.newValue.value.indexOf("#")!=-1 ||
 38+ // document.myForm.newValue.value.indexOf("&")!=-1)
 39+ //{
 40+ // alert("Your password can not contain the following characters:\n# &")
 41+ // return false;
 42+ //}
 43+ //location="action=save&type=password&userName="+document.myForm.userName.value+"&newValue="+escape(document.myForm.newValue.value)+"&password2="+escape(document.myForm.password2.value);
 44+
 45+ return true;
 46+}
 47+//-->
 48+</SCRIPT>
 49+
 50+
 51+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 52+
 53+
 54+</HEAD>
 55+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0">
 56+
 57+
 58+
 59+<FORM NAME="myForm" ACTION="/" METHOD=get onSubmit="return sendForm()">
 60+
 61+<TABLE WIDTH="100%" CELLPADDING=0 CELLSPACING=8 BGCOLOR=lightgreen>
 62+<TR><TD>
 63+<U><B>Set password</B></U>
 64+</TD></TR>
 65+</TABLE>
 66+<BR>
 67+
 68+
 69+<TABLE>
 70+<TR><TD>Set password:</TD><TD><INPUT TYPE="password" NAME="newValue"></TD></TR>
 71+<TR><TD>Re-enter password:</TD><TD><INPUT TYPE="password" NAME="password2"></TD></TR>
 72+</TABLE>
 73+
 74+
 75+<INPUT TYPE="hidden" NAME="userName">
 76+<INPUT TYPE="hidden" NAME="action" VALUE="save">
 77+<INPUT TYPE="hidden" NAME="type" VALUE="password">
 78+
 79+<BR>
 80+<INPUT TYPE="submit" VALUE="Save New Password">
 81+
 82+<P>
 83+<BR>
 84+<FONT COLOR="red"><I>For security reasons, you can't see what the current password is.</I></FONT>
 85+
 86+</FORM>
 87+<BR>
 88+
 89+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizChooseUser.html
@@ -0,0 +1,310 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver FTP Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+
 9+
 10+
 11+function addUserToList(user)
 12+{
 13+// usersArray=argUsers.split(",");
 14+// for (i=0; i<usersArray.length; i++)
 15+// {
 16+ lastElement=document.myForm.userList.length++;
 17+ document.myForm.userList[lastElement].value=user;//usersArray[i];
 18+ if (user=="guest")
 19+ document.myForm.userList[lastElement].text="*"+user+"*";//usersArray[i];
 20+ else
 21+ document.myForm.userList[lastElement].text=user;//usersArray[i];
 22+// }
 23+}
 24+
 25+
 26+
 27+
 28+function copyUser()
 29+{
 30+ //We must choose a user, and not the first option "[Accounts]"
 31+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 32+ {
 33+ alert("Please choose an account.");
 34+ return false;
 35+ }
 36+
 37+ oldUsername=document.myForm.userList[document.myForm.userList.selectedIndex].value;
 38+ newUsername=prompt("All settings for the account "+oldUsername+" will be copied to a new account called:",oldUsername);
 39+ if (newUsername!=null && newUsername!="" && newUsername!="undefined" && newUsername!=oldUsername)
 40+ {
 41+ if (usernameIsOK(newUsername))
 42+ {
 43+ location.replace("/action=save&type=copy&username="+oldUsername+"&newValue="+newUsername+"&currentlyVisiting="+document.myForm.currentlyVisiting.value);
 44+// parent.usercontent.location.replace("/action=wizardEmpty");
 45+ return true;
 46+ }
 47+ else
 48+ {
 49+ alert("An account name shall only contain letters, digits and underscores (_).")
 50+ return false;
 51+ }
 52+ }
 53+ else
 54+ {
 55+ return false;
 56+ }
 57+}
 58+
 59+
 60+
 61+
 62+
 63+function changeUserName()
 64+{
 65+ //We must choose a user, and not the first option "[Accounts]"
 66+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 67+ {
 68+ alert("Please choose an account.");
 69+ return false;
 70+ }
 71+
 72+ oldUsername=document.myForm.userList[document.myForm.userList.selectedIndex].value;
 73+
 74+ if (oldUsername=="guest")
 75+ {
 76+ alert("The guest account is a default account that can not be renamed or removed.\n\nIf you don't want a guest account, feel free to disable anonymous logins in the setup.");
 77+ return false;
 78+ }
 79+
 80+ newUsername=prompt("New account name:",oldUsername);
 81+ if (newUsername!=null && newUsername!="" && newUsername!="undefined" && newUsername!=oldUsername)
 82+ {
 83+ if (usernameIsOK(newUsername))
 84+ {
 85+ location.replace("/action=save&type=rename&username="+oldUsername+"&newValue="+newUsername+"&currentlyVisiting="+document.myForm.currentlyVisiting.value);
 86+// parent.usercontent.location.replace("/action=wizardEmpty");
 87+ return true;
 88+ }
 89+ else
 90+ {
 91+ alert("An account name shall only contain letters, digits and underscores (_).")
 92+ return false;
 93+ }
 94+ }
 95+ else
 96+ {
 97+ return false;
 98+ }
 99+}
 100+
 101+
 102+
 103+function usernameIsOK(username)
 104+{
 105+ allowedList="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
 106+
 107+ if (username=="")
 108+ {
 109+ return false;
 110+ }
 111+
 112+ for (i=0;i<username.length; i++)
 113+ {
 114+ if (allowedList.indexOf(username.charAt(i))==-1)
 115+ return false;
 116+ }
 117+
 118+ return true;
 119+}
 120+
 121+
 122+
 123+
 124+function removeUser()
 125+{
 126+ //We must choose a user, and not the first option "[Accounts]"
 127+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 128+ {
 129+ alert("Please choose an account.");
 130+ return false;
 131+ }
 132+
 133+ oldUsername=document.myForm.userList[document.myForm.userList.selectedIndex].value;
 134+
 135+ if (oldUsername=="guest")
 136+ {
 137+ alert("The guest account is a default account that can not be renamed or removed.\n\nIf you don't want a guest account, feel free to disable anonymous logins in the setup.");
 138+ return false;
 139+ }
 140+
 141+ if (confirm("Are you sure you want to remove account "+oldUsername+"?\n\nYou can not undo this!"))
 142+ {
 143+ location.replace("/action=save&type=remove&username="+oldUsername+"&currentlyVisiting="+document.myForm.currentlyVisiting.value);
 144+// parent.usercontent.location.replace("/action=wizardEmpty");
 145+ return true;
 146+ }
 147+ else
 148+ {
 149+ alert("Account "+oldUsername+" was not removed.")
 150+ return false;
 151+ }
 152+}
 153+
 154+function setPassword()
 155+{
 156+ document.myForm.currentlyVisiting.value="password";
 157+
 158+ //We must choose a user, and not the first option "[Accounts]"
 159+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 160+ {
 161+ alert("Please choose an account.");
 162+ return false;
 163+ }
 164+
 165+ oldUsername=document.myForm.userList[document.myForm.userList.selectedIndex].value;
 166+
 167+ if (oldUsername=="guest")
 168+ {
 169+ alert("You can't set a password for the guest account. Any password given by a client will be accepted as a valid password.\n\nIf you don't want a guest account, feel free to disable anonymous logins in the setup.");
 170+ return false;
 171+ }
 172+
 173+ parent.usercontent.location.replace("/action=wizardSetPassword&username="+document.myForm.userList[document.myForm.userList.selectedIndex].value);
 174+ return true;
 175+}
 176+
 177+
 178+function setRoot()
 179+{
 180+ document.myForm.currentlyVisiting.value="root";
 181+
 182+ //We must choose a user, and not the first option "[Accounts]"
 183+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 184+ {
 185+ alert("Please choose an account.");
 186+ return false;
 187+ }
 188+
 189+ parent.usercontent.location.replace("/action=wizardSetRoot&username="+document.myForm.userList[document.myForm.userList.selectedIndex].value);
 190+ return true;
 191+}
 192+
 193+
 194+function setAliases()
 195+{
 196+ document.myForm.currentlyVisiting.value="aliases";
 197+
 198+ //We must choose a user, and not the first option "[Accounts]"
 199+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 200+ {
 201+ alert("Please choose an account.");
 202+ return false;
 203+ }
 204+
 205+ parent.usercontent.location.replace("/action=wizardSetAliases&username="+document.myForm.userList[document.myForm.userList.selectedIndex].value);
 206+ return true;
 207+}
 208+
 209+function setPermissions()
 210+{
 211+ document.myForm.currentlyVisiting.value="permissions";
 212+
 213+ //We must choose a user, and not the first option "[Accounts]"
 214+ if (document.myForm.userList.selectedIndex==0 || document.myForm.userList.selectedIndex==-1)
 215+ {
 216+ alert("Please choose an account.");
 217+ return false;
 218+ }
 219+
 220+ parent.usercontent.location.replace("/action=wizardSetPermissions&username="+document.myForm.userList[document.myForm.userList.selectedIndex].value);
 221+ return true;
 222+}
 223+
 224+function setVisiting(page)
 225+{
 226+ document.myForm.currentlyVisiting.value=page;
 227+}
 228+
 229+function goToVisiting()
 230+{
 231+visiting=document.myForm.currentlyVisiting.value;
 232+ if(visiting=="password" && "guest"!=document.myForm.userList[document.myForm.userList.selectedIndex].value)
 233+ setPassword();
 234+ if(visiting=="root")
 235+ setRoot();
 236+ if(visiting=="permissions")
 237+ setPermissions();
 238+ if(visiting=="aliases")
 239+ setAliases();
 240+}
 241+
 242+
 243+function oldBrowser() //True iff browser is not IE 4+, Netscape 7 or Opera
 244+{
 245+ return !(navigator.appVersion.indexOf("MSIE")!=-1) && //is not IE
 246+ !(navigator.userAgent.indexOf("Mozilla/5")!=-1); //Is not NN6, NN7 or Mozilla
 247+}
 248+//-->
 249+</SCRIPT>
 250+
 251+
 252+<LINK REL=STYLESHEET HREF="/?action=showStyleSheets" TYPE="TEXT/CSS">
 253+
 254+
 255+</HEAD>
 256+<BODY BGCOLOR="#cccccc" LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="2" MARGINWIDTH="2">
 257+
 258+
 259+
 260+<FORM NAME="myForm" ACTION="/" METHOD=get>
 261+<INPUT TYPE="hidden" VALUE="" NAME="currentlyVisiting">
 262+
 263+
 264+<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0 WIDTH="100%">
 265+<TR><TD><SELECT NAME="userList" ONCHANGE="if (document.myForm.userList.selectedIndex!=0){goToVisiting();}">
 266+<OPTION>[Accounts]
 267+</SELECT></TD>
 268+<TR onCLick="parent.usercontent.location.href='/action=wizardAddNewUser';"
 269+ onMouseOver="this.style.backgroundColor='orange';"
 270+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-2"><A HREF="/action=wizardAddNewUser" TARGET="usercontent">Create a new account</A></FONT></TD></TR>
 271+<TR><TD><FONT FACE="verdana,arial" SIZE="-1">&nbsp;</FONT></TD></TR>
 272+<TR onClick="setPassword()"
 273+ onMouseOver="this.style.backgroundColor='orange';"
 274+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(setPassword())">Change password</A></FONT></TD></TR>
 275+<TR onClick="setRoot()"
 276+ onMouseOver="this.style.backgroundColor='orange';"
 277+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(setRoot())">Set root</A></FONT></TD></TR>
 278+<TR onClick="setPermissions()"
 279+ onMouseOver="this.style.backgroundColor='orange';"
 280+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(setPermissions())">Shared directories</A></FONT></TD></TR>
 281+<TR onClick="setAliases()"
 282+ onMouseOver="this.style.backgroundColor='orange';"
 283+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(setAliases())">Set aliases</A></FONT></TD></TR>
 284+<TR><TD><FONT FACE="verdana,arial" SIZE="-1">&nbsp;</FONT></TD></TR>
 285+<TR onClick="changeUserName()"
 286+ onMouseOver="this.style.backgroundColor='orange';"
 287+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(changeUserName())">Rename account</A></FONT></TD></TR>
 288+<TR onClick="removeUser()"
 289+ onMouseOver="this.style.backgroundColor='orange';"
 290+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(removeUser())">Remove account</A></FONT></TD></TR>
 291+<TR onClick="copyUser()"
 292+ onMouseOver="this.style.backgroundColor='orange';"
 293+ onMouseOut="this.style.backgroundColor='';"><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="#" onClick="if(oldBrowser())void(copyUser())">Copy account</A></FONT></TD></TR>
 294+</TABLE>
 295+
 296+</FORM>
 297+
 298+<SCRIPT LANGUAGE="javascript">
 299+<!--
 300+ currentlyVisiting=location.href
 301+ currentlyVisiting=currentlyVisiting.substring(currentlyVisiting.indexOf("currentlyVisiting"))
 302+ if (currentlyVisiting.indexOf("&")!=-1) //"currentlyVisiting=abc&..." ==> "currentlyVisiting=abc"
 303+ currentlyVisiting=currentlyVisiting.substring(0,currentlyVisiting.indexOf("&"))
 304+ //else //We have already "currentlyVisiting=abc"
 305+
 306+ currentlyVisiting=currentlyVisiting.substring(currentlyVisiting.indexOf("=")+1)
 307+ document.myForm.currentlyVisiting.value=currentlyVisiting;
 308+//-->
 309+</SCRIPT>
 310+
 311+
Index: trunk/ATTIC/wikiSDK/Xerver4/ftp_data/WizardHelp.html
@@ -0,0 +1,97 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Wizard Help</TITLE>
 5+
 6+
 7+<STYLE TYPE="text/css">
 8+<!--
 9+TABLE {font-family:verdana,arial; font-size: 10px;}
 10+TR {font-family:verdana,arial; font-size: 10px;}
 11+TD {font-family:verdana,arial; font-size: 10px; font-weight:bold;}
 12+//-->
 13+</STYLE>
 14+
 15+
 16+<SCRIPT LANGUAGE="javascript">
 17+<!--
 18+function getQueryLine(name)
 19+{
 20+ query=location.search.substring(1,location.search.length).split("&");
 21+ for (i=0; i<query.length; i++)
 22+ {
 23+ tmp=query[i].split("=");
 24+ thisName=unescape(tmp[0]);
 25+ thisValue=unescape(tmp[1]);
 26+ if (name==thisName)
 27+ return thisValue;
 28+ }
 29+
 30+ return "";
 31+}
 32+
 33+
 34+
 35+function sokOchErsatt(bigString, gammalStr, nyStr) //S�k "bigString" efter "gammalStr" och ers�tt med "NyStr"
 36+{
 37+ storStrang=bigString;
 38+ for (i=0; i<=storStrang.length-gammalStr.length; i++)
 39+ {
 40+ if (storStrang.substring(i,i+gammalStr.length)==(gammalStr))
 41+ {
 42+ storStrang=storStrang.substring(0,i)+nyStr+storStrang.substring(i+gammalStr.length);
 43+ i+=nyStr.length-1; //Utan detta s� g�r loopen f�r all evighet om man t.ex. har str�ngen "ab/cd" och ers�tter "/" med "//"
 44+ }
 45+ }
 46+ return storStrang;
 47+}
 48+
 49+//-->
 50+</SCRIPT>
 51+
 52+</HEAD>
 53+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 54+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 55+<TR><TD>
 56+<IMG SRC="/action=showSmallWizard">
 57+</TD><TD>
 58+<FONT FACE="verdana,arial" SIZE="-1">
 59+<B>
 60+<SCRIPT LANGUAGE="javascript">
 61+<!--
 62+document.write(sokOchErsatt(getQueryLine("titleText"),"\n","<BR>"));
 63+//-->
 64+</SCRIPT>
 65+</B>
 66+</FONT>
 67+<P>
 68+
 69+<FONT FACE="verdana,arial" SIZE="-2">
 70+<B>
 71+<SCRIPT LANGUAGE="javascript">
 72+<!--
 73+document.write(sokOchErsatt(getQueryLine("helpText"),"\n","<BR>"));
 74+//-->
 75+</SCRIPT>
 76+</B>
 77+
 78+
 79+<BR><BR>
 80+</FONT>
 81+</TD></TR>
 82+</TABLE>
 83+
 84+
 85+
 86+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 87+<TR><TD>
 88+</TD><TD ALIGN="right">
 89+<FORM>
 90+<P ALIGN="right">
 91+<INPUT TYPE="button" VALUE="Close" onCLick="top.close()">
 92+</P>
 93+</FORM>
 94+</TD></TR>
 95+</TABLE>
 96+
 97+</BODY>
 98+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/xerver.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/xerver.jar
___________________________________________________________________
Added: svn:mime-type
199 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall2.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall2.jpg
___________________________________________________________________
Added: svn:mime-type
2100 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpproblemwithscripts.html
@@ -0,0 +1,80 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+<B>Problems when running scripts</B>
 26+<P>
 27+If you (1) are using Windows and (2) have perl-scripts and (3)
 28+you are used to start Xerver with "StartXerver.exe" you might notice that everytime
 29+someone runs a perl-script with your webserver a dos-prompt will popup
 30+and then close down (very quickly).
 31+<BR>
 32+If you have this problem, the solution is to:
 33+<OL>
 34+<LI> Create an empty text file in your Xerver directory (call it "StartXerverShortcut.txt").
 35+<LI> Open the text file, write "java Start" and save the file.
 36+<LI> Now rename the file to "StartXerverShortcut.bat".
 37+<LI> Done! Run "StartXerverShortcut.bat" every time you want to start Xerver. (When you run "StartXerverShortcut.bat" a dos-prompt will open, don't close it until you want to shut down Xerver).
 38+
 39+<!--
 40+<LI> Create a shortcut (open Windows Explorer, go to your Xerver directory, right click on a empty area, choose to create a shortcut).
 41+<LI> Don't click the browse button, just enter "java Start" (without the ") (IMPORTANT: It's cAsE SeNsItIvE).
 42+<LI> Press "Next".
 43+<LI> Enter "Start Xerver Shortcut".
 44+<LI> Press "Done"
 45+<LI> Now, right click your shortcut.
 46+<LI> Choose properties
 47+<LI> If there is anything in "Start from", remove the text and enter a dot (.) in this field.
 48+<LI> Press OK.
 49+<LI> Done! Start Xerver by clicking on "Start Xerver Shortcut" next time you want to start Xerver. The perl popup window will be gone.
 50+-->
 51+</OL>
 52+
 53+
 54+
 55+
 56+
 57+
 58+
 59+
 60+
 61+
 62+<P>
 63+<HR>
 64+<CENTER>
 65+<FONT SIZE="-1" FACE="arial,verdana">
 66+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 67+</FONT>
 68+</CENTER>
 69+
 70+
 71+
 72+
 73+</TD></TR>
 74+</TABLE>
 75+
 76+
 77+
 78+
 79+
 80+</BODY>
 81+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall3.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall3.jpg
___________________________________________________________________
Added: svn:mime-type
182 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall4.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall4.jpg
___________________________________________________________________
Added: svn:mime-type
283 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall5.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall5.jpg
___________________________________________________________________
Added: svn:mime-type
384 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall6.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall6.jpg
___________________________________________________________________
Added: svn:mime-type
485 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall7.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall7.jpg
___________________________________________________________________
Added: svn:mime-type
586 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpuninstall.html
@@ -0,0 +1,60 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>How do I uninstall Xerver?</B>
 28+<P>
 29+ Windows users:
 30+ <BR>
 31+ Just run Uninstall.exe and all Xerver related files will be removed.
 32+ <P>
 33+ Non Windows users:
 34+ <BR>
 35+ Delete the Xerver directory and all Xerver related files will be removed.
 36+
 37+
 38+
 39+
 40+
 41+
 42+<P>
 43+<HR>
 44+<CENTER>
 45+<FONT SIZE="-1" FACE="arial,verdana">
 46+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 47+</FONT>
 48+</CENTER>
 49+
 50+
 51+
 52+
 53+</TD></TR>
 54+</TABLE>
 55+
 56+
 57+
 58+
 59+
 60+</BODY>
 61+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpisxerverfree.html
@@ -0,0 +1,59 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+
 28+<B>Is Xerver free?</B>
 29+<P>
 30+ Yes, Xerver is open source and can be distributed under the GNU General Public License (GPL).
 31+ <BR>
 32+ This means, in other words, that you do have the right to copy and distribute
 33+ Xerver as long as all files remain intact.
 34+ <P>
 35+ For full license, read the Xerver License.
 36+
 37+
 38+
 39+
 40+
 41+<P>
 42+<HR>
 43+<CENTER>
 44+<FONT SIZE="-1" FACE="arial,verdana">
 45+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 46+</FONT>
 47+</CENTER>
 48+
 49+
 50+
 51+
 52+</TD></TR>
 53+</TABLE>
 54+
 55+
 56+
 57+
 58+
 59+</BODY>
 60+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall8.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall8.jpg
___________________________________________________________________
Added: svn:mime-type
161 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall9.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall9.jpg
___________________________________________________________________
Added: svn:mime-type
262 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/main.html
@@ -0,0 +1,57 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+Xerver is an open source project that is well documentated.
 26+If you have problems with Xerver, the solution is probably
 27+in this online help.
 28+<P>
 29+
 30+If you can't solve your problem anyway, visit Xerver official
 31+website and mail your question and you will get an reply as soon as possible:
 32+<BR>
 33+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 34+
 35+
 36+
 37+
 38+
 39+<P>
 40+<HR>
 41+<CENTER>
 42+<FONT SIZE="-1" FACE="arial,verdana">
 43+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 44+</FONT>
 45+</CENTER>
 46+
 47+
 48+
 49+
 50+</TD></TR>
 51+</TABLE>
 52+
 53+
 54+
 55+
 56+
 57+</BODY>
 58+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helprunotherscripts.html
@@ -0,0 +1,64 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+You can both run scripts (such as Perl and PHP)
 25+and runnable files (such as .exe files).
 26+<P>
 27+
 28+Actually, you can run any script type that you can run on your computer.
 29+During the setup you can enable CGI-scripts and choose which script types
 30+you want allow.
 31+<P>
 32+
 33+In the setup, you enter which file extension shall be run with which
 34+command. "script.pl" shall, for example, be run with the command "perl".
 35+<BR>
 36+When someone visits [ http://yourdomain.com/script.pl ],
 37+"perl /your/root/script.pl" will be executed
 38+and the output will be forwarded to the visitor.
 39+
 40+
 41+
 42+
 43+
 44+
 45+
 46+<P>
 47+<HR>
 48+<CENTER>
 49+<FONT SIZE="-1" FACE="arial,verdana">
 50+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 51+</FONT>
 52+</CENTER>
 53+
 54+
 55+
 56+
 57+</TD></TR>
 58+</TABLE>
 59+
 60+
 61+
 62+
 63+
 64+</BODY>
 65+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpbackgroundprocess.html
@@ -0,0 +1,97 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+<B>How do I start Xerver as a background process?</B>
 26+<P>
 27+(Related help page: <A HREF="helpwindowsstartup.html">How do I start Xerver when Windows starts?</A>)
 28+<P>
 29+
 30+Follow these steps to start Xerver <B>Web Server</B> as a background server:
 31+<OL>
 32+<LI> Copy <I>XerverMinimumResources.exe</I> from the folder <I>otherStartupFiles</I> to the Xerver directory
 33+(where xerver.jar is located).
 34+<LI> Next time you start Xerver Web Server, use <I>XerverMinimumResources.exe</I> instead of StartXerver.exe.
 35+</OL>
 36+<P>
 37+<BR>
 38+
 39+Follow these steps to start Xerver <B>FTP Server</B> as a background server:
 40+<OL>
 41+<LI> Copy <I>FTPServer.exe</I> from the folder <I>otherStartupFiles</I> to the Xerver directory
 42+(where xerver.jar is located).
 43+<LI> Next time you start Xerver FTP Server, use <I>FTPServer.exe</I> instead of StartXerver.exe.
 44+</OL>
 45+<P>
 46+<BR>
 47+
 48+Follow these steps to start Xerver <B>FTP Local Setup</B> (only your IP can access setup) as a background server:
 49+<OL>
 50+<LI> Copy <I>FTPServerLocalSetup.exe</I> from the folder <I>otherStartupFiles</I> to the Xerver directory
 51+(where xerver.jar is located).
 52+<LI> Next time you want change settings to Xerver FTP Server, use <I>FTPServerLocalSetup.exe</I> instead of StartXerver.exe.
 53+<LI> You can now change settings to Xerver FTP Server at http://localhost:32124/ (only accessable to your computer locally).
 54+ If you already have an instance of Xerver FTP Server running, don't forget to restart the server for changes to take effect.
 55+</OL>
 56+<P>
 57+<BR>
 58+
 59+Follow these steps to start Xerver <B>FTP Remote Setup</B> (all IP addresses can access setup) as a background server:
 60+<OL>
 61+<LI> Copy <I>FTPServerRemoteSetup.exe</I> from the folder <I>otherStartupFiles</I> to the Xerver directory
 62+(where xerver.jar is located).
 63+<LI> Next time you want change settings to Xerver FTP Server, use <I>FTPServerRemoteSetup.exe</I> instead of StartXerver.exe.
 64+<LI> You can now change settings to Xerver FTP Server at http://localhost:32124/ (accessable from any computer).
 65+ If you already have an instance of Xerver FTP Server running, don't forget to restart the server for changes to take effect.
 66+</OL>
 67+<P>
 68+<BR>
 69+
 70+
 71+Note that Xerver will start and run without a window (GUI).
 72+If you want to close Xerver, just press CTRL + ALT + DEL and delete "javaw.exe".
 73+
 74+
 75+
 76+
 77+
 78+
 79+<P>
 80+<HR>
 81+<CENTER>
 82+<FONT SIZE="-1" FACE="arial,verdana">
 83+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 84+</FONT>
 85+</CENTER>
 86+
 87+
 88+
 89+
 90+</TD></TR>
 91+</TABLE>
 92+
 93+
 94+
 95+
 96+
 97+</BODY>
 98+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helprouter.html
@@ -0,0 +1,152 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>I have a router. Can I use Xerver?</B>
 28+<P>
 29+ This is actually not a web server issue, but a network issue.
 30+ <BR>
 31+ You must configure your router to forward the incoming connections
 32+ to your server computer.
 33+ <BR>
 34+ However, how you do this depends on how your network is built up.
 35+ An excellent website that will describe this in great detail is:
 36+ <BR>
 37+ <A HREF="http://www.dslwebserver.com/main/router.html" TARGET="_blank">http://www.dslwebserver.com/main/router.html</A>
 38+ <P>
 39+ Hopefully, after reading the website above you should know:
 40+ <UL>
 41+ <LI> The difference between a local IP (your Local Area Network IP (LAN))
 42+ and your outer IP (your Wide Area Network IP (WAN))
 43+ <LI> The difference between having static internal (LAN) IP addresses
 44+ and having dynamic internal (LAN) IP addresses.
 45+ Also, you must understand that your server computer (the one
 46+ running Xerver) must have a static internal (LAN) IP address.
 47+ <LI> You must understand that you should configure the router to redirect
 48+ connections from a certain port (in your case port 80 as you want to
 49+ use a web server) to the server computer using the server computers
 50+ internal (LAN) IP address.
 51+ </UL>
 52+ <P>
 53+ Hopefully you shall now be able to configure your network so
 54+ that you can run Xerver on a server computer even if it's behind a router.
 55+
 56+<P>
 57+
 58+<B>How do I configure my router?</B>
 59+<P>
 60+
 61+How you configure your router depends on what router you have, but with most
 62+routers you can find your router's setup page by visiting:
 63+<BR>
 64+<A HREF="http://192.168.0.1/" TARGET="_blank">http://192.168.0.1/</A>
 65+<P>
 66+If you don't have a router the above link will most likely not work for you.
 67+<P>
 68+
 69+If you are not sure how to enable port forwarding on your router,
 70+an excellent website that shows how you can configure your router is:
 71+<BR>
 72+<A HREF="http://www.portforward.com/routers.htm" TARGET="_blank">http://www.portforward.com/routers.htm</A>
 73+<BR>
 74+You will tell the website what router you have (brand and model) and it
 75+will show you step by step screen shots of how you can enable port forwarding
 76+with your particular router.
 77+<P>
 78+
 79+Visit the above address to configure your router so that it forwards a certain port
 80+(any port of your choice) to that port on your computer that you have told
 81+Xerver to listen to.
 82+<BR>
 83+<B>Example:</B>
 84+<BR>
 85+Let us say that you want to use both
 86+Xerver Web Server and Xerver FTP Server. You want to run these servers
 87+on your computer on port 5080 for the web server and 4321 for the FTP server.
 88+However, you want that your users shall not use these ports, but instead
 89+you want them to use the default ports (which for a web server is 80 and
 90+for a FTP server is 21). Now you must configure your router so that it
 91+forwards all incoming connections at port 80 to 5080 and all incoming
 92+connections at port 21 to port 4321 to your server computer (the one running Xerver).
 93+Your users won't know that you run the servers on port 5080 and 4321,
 94+since they will use port 80 and 21 on the router and this is what they see.
 95+<P>
 96+Remember that when you configure your router you must tell it to which computer
 97+the incoming connections shall be redirected to (since you might have several different
 98+computers behind your router and it needs to know which of these computers shall
 99+get the incoming connections (which is the computer that runs Xerver)).
 100+<BR>
 101+<B>Example:</B>
 102+<BR>
 103+You might have 2 computers and 1 router. Your router's (outer) IP that it gets from
 104+your ISP might for example be 66.249.64.256 (this is actually a made up dummy IP
 105+that no one has). Its (local) IP might be
 106+<A HREF="http://192.168.0.1/" TARGET="_blank">http://192.168.0.1/</A>
 107+(where you can visit the router to change its settings).
 108+Your two computers might have these (local) IP addresses:
 109+192.168.0.2 and 192.168.0.3 (you can easily find out your computers
 110+<A HREF="helpfindip.html">local IP addresses</A>).
 111+<BR>
 112+Let us assume that you want 192.168.0.2 to be the server computer which runs
 113+Xerver. 192.168.0.3 might be any other computer you have at home.
 114+<BR>
 115+Let us say, as in the previous example, that you want redirect port 80 to 5080
 116+and port 21 to 4321.
 117+<BR>
 118+Now you must tell the router to redirect
 119+all incoming connections from port 80 to port 5080 at computer 192.168.0.2 and
 120+all incoming connections from port 21 to port 4321 at computer 192.168.0.2.
 121+How this can be done varies in different routers, but most routers have this
 122+under a menu called "virtual servers", "port forwarding", "port mapping",
 123+"port redirecting" or something similar.
 124+<BR>
 125+Your users will not know anything about your computers 192.168.0.2
 126+and 192.168.0.3. Neither do they know about that you run Xerver on
 127+port 5080 respectively 4321. As far as your users are concerned
 128+you might as well have one computer with the IP 66.249.64.256
 129+that listens to port 80 and 21, which are the ports they use
 130+and know about.
 131+<P>
 132+
 133+
 134+<P>
 135+<HR>
 136+<CENTER>
 137+<FONT SIZE="-1" FACE="arial,verdana">
 138+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 139+</FONT>
 140+</CENTER>
 141+
 142+
 143+
 144+
 145+</TD></TR>
 146+</TABLE>
 147+
 148+
 149+
 150+
 151+
 152+</BODY>
 153+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpftpserveronly.html
@@ -0,0 +1,61 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>How do I only start the FTP server?</B>
 27+<P>
 28+ If you want you can start only the FTP server without starting the
 29+ web server. This can be done by
 30+ <A HREF="helpbackgroundprocess.html">starting the FTP server as a background process</A>.
 31+ The FTP server will then run without any graphical user interface (no Window will open).
 32+
 33+
 34+
 35+
 36+
 37+
 38+
 39+
 40+
 41+
 42+
 43+<P>
 44+<HR>
 45+<CENTER>
 46+<FONT SIZE="-1" FACE="arial,verdana">
 47+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 48+</FONT>
 49+</CENTER>
 50+
 51+
 52+
 53+
 54+</TD></TR>
 55+</TABLE>
 56+
 57+
 58+
 59+
 60+
 61+</BODY>
 62+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpcantrunphp.html
@@ -0,0 +1,115 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>I can't run my PHP scripts. Why?</B>
 28+<P>
 29+ To run PHP-scripts, you need PHP to be installed on your computer.
 30+ If you don't have PHP installed, download PHP from:
 31+ <BR>
 32+ <A HREF="http://www.php.net/downloads.php" TARGET="_blank">http://www.php.net/downloads.php</A>
 33+ <BR>
 34+ Just download and install it as any other software you have
 35+ downloaded and installed on your computer.
 36+ <BR>
 37+ Download the <B>PHP &lt;version name&gt; installer</B> under the title <B>Windows Binaries</B>.
 38+ <P>
 39+ The installation is really easy.
 40+ <P>
 41+ Follow these simple instructions to install PHP:
 42+ <OL>
 43+ <LI> Press next<BR> <IMG SRC="phpinstall1.jpg">
 44+ <P>
 45+ <LI> Press next<BR> <IMG SRC="phpinstall2.jpg">
 46+ <P>
 47+ <LI> Choose advanced<BR> <IMG SRC="phpinstall3.jpg">
 48+ <P>
 49+ <LI> Press next<BR> <IMG SRC="phpinstall4.jpg">
 50+ <P>
 51+ <LI> Press next<BR> <IMG SRC="phpinstall5.jpg">
 52+ <P>
 53+ <LI> Press next<BR> <IMG SRC="phpinstall6.jpg">
 54+ <P>
 55+ <LI> Press next<BR> <IMG SRC="phpinstall7.jpg">
 56+ <P>
 57+ <LI> Press next<BR> <IMG SRC="phpinstall8.jpg">
 58+ <P>
 59+ <LI> Press next<BR> <IMG SRC="phpinstall9.jpg">
 60+ <P>
 61+ <LI> Choose none<BR> <IMG SRC="phpinstall10.jpg">
 62+ <P>
 63+ <LI> Press next<BR> <IMG SRC="phpinstall11.jpg">
 64+ <P>
 65+ <LI> Press next<BR> <IMG SRC="phpinstall12.jpg">
 66+ <P>
 67+ <LI> PHP is now installed on your computer!
 68+ <P>
 69+ <LI> <B><FONT COLOR=red>Important:</FONT></B> PHP 4 and PHP 5 uses different
 70+ executables to execute your PHP scripts if you are a Windows user.
 71+ PHP 4 uses <U>php.exe</U> while PHP 5 uses <U>php-cgi.exe</U>. To avoid any confusion,
 72+ <I>Step 5</I> in Xerver Setup contains easy-to-follow instructions regarding
 73+ how you can choose if you want to use php.exe or php-cgi.exe in order to run your
 74+ scripts.
 75+ <BR>
 76+ Go to Xerver Web Setup by <U>first</U> starting Xerver and then go to:
 77+ <BR>
 78+ <A HREF="http://127.0.0.1:32123/" TARGET="_blank">http://127.0.0.1:32123/</A>
 79+ <P>
 80+ <LI> All done! You can now run your PHP-scripts
 81+
 82+ </OL>
 83+
 84+ <P>
 85+
 86+ <B><FONT COLOR=red>Important:</FONT></B> It's always wise to try out a new webserver with a
 87+ <A HREF="helpphphelloworld.html">Hello World-script</A>
 88+ to ensure that you have everything configured correctly.
 89+ Of course, you need to install PHP <U>before</U> you try to run the Hello World script.
 90+
 91+
 92+ <P>
 93+ If the Hello World script still does not work,
 94+ make sure that you have your PHP-directory (by default c:\PHP\) in your PATH environment variable.
 95+ There are <A HREF="helpphpwontrun.html">instructions</A> for how this can be done.
 96+
 97+<P>
 98+<HR>
 99+<CENTER>
 100+<FONT SIZE="-1" FACE="arial,verdana">
 101+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 102+</FONT>
 103+</CENTER>
 104+
 105+
 106+
 107+
 108+</TD></TR>
 109+</TABLE>
 110+
 111+
 112+
 113+
 114+
 115+</BODY>
 116+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpphpwontrun.html
@@ -0,0 +1,91 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+
 28+
 29+<B>I have installed PHP. But my scripts won't run anyway. Why?</B>
 30+<P>
 31+ This has actually nothing to do with Xerver.
 32+ The problem is that your system's path to PHP is incorrect.
 33+ The path to PHP is set in a environment variable called PATH.
 34+ A valid PATH variable can <U>for example</U> be:
 35+ <BR>
 36+ <TT>C:\WINNT\system32;C:\WINNT\;C:\PHP\;D:\Something\Else\</TT> (Windows users)
 37+ <BR>
 38+ ...or...
 39+ <BR>
 40+ <TT>/usr/openwin/bin:/opt/local/bin:/opt/pd/bin:/opt/gnu/bin:/opt/local/java/jdk/bin:.</TT> (UNIX users)
 41+ <P>
 42+
 43+ You can add the path to PHP to your PATH variable if you follow these steps:
 44+ <P>
 45+ <B>Windows NT/2000/XP users:</B>
 46+ <OL>
 47+ <LI> Go to Contol Panel/System.
 48+ <LI> Advanced tab
 49+ <LI> Press Environment Variable
 50+ <LI> Check the PATH variable under "System Variables".
 51+ <LI> Press Edit...
 52+ <LI> Don't erase what you see here, but add the path to PHP to the beginning of this line and press OK. (For example: If the PATH variable is <B>C:\WINNT\system32;C:\WINNT\</B> and PHP.exe is located at <B>C:\PHP\</B>, change the PATH to <B>C:\PHP\;C:\WINNT\system32;C:\WINNT\</B>)
 53+ <LI> Press OK.
 54+ <LI> Press OK again.
 55+ <LI> Start Xerver (if already running, close Xerver and restart it).
 56+ </OL>
 57+
 58+
 59+
 60+ <B>Windows 95/98/ME users:</B>
 61+ <OL>
 62+ <LI> Open c:\autoexec.bat with notepad (or another text editor).
 63+ <LI> Scroll down to the last line.
 64+ <LI> Add this line to the bottom of the autoexec.bat file: <B>set PATH=pathToPHP;%PATH%</B> where pathToPHP is the folder where PHP.exe is located. (For example: If PHP.exe is located at <B>C:\PHP\</B>, this line shall be added to the bottom of autoexec.bat: <B>set PATH=C:\PHP\;%PATH%</B>)
 65+ <LI> Save your settings to c:\autoexec.bat.
 66+ <LI> Restart your computer.
 67+ </OL>
 68+
 69+
 70+
 71+
 72+
 73+<P>
 74+<HR>
 75+<CENTER>
 76+<FONT SIZE="-1" FACE="arial,verdana">
 77+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 78+</FONT>
 79+</CENTER>
 80+
 81+
 82+
 83+
 84+</TD></TR>
 85+</TABLE>
 86+
 87+
 88+
 89+
 90+
 91+</BODY>
 92+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpstartxerver.html
@@ -0,0 +1,59 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>How do I start Xerver?</B>
 28+<P>
 29+ If you use Windows, run "StartXerver.exe" to start Xerver.
 30+ <BR>
 31+ If you don't use Windows, open a prompt and type "java -jar xerver.jar"
 32+ when you are in the xerver directory (also take a look in the ReadMe.txt for
 33+ more flags).
 34+
 35+
 36+
 37+
 38+
 39+
 40+
 41+<P>
 42+<HR>
 43+<CENTER>
 44+<FONT SIZE="-1" FACE="arial,verdana">
 45+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 46+</FONT>
 47+</CENTER>
 48+
 49+
 50+
 51+
 52+</TD></TR>
 53+</TABLE>
 54+
 55+
 56+
 57+
 58+
 59+</BODY>
 60+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpcantrunperl.html
@@ -0,0 +1,68 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>I can't run my Perl scripts. Why?</B>
 27+<P>
 28+ To run Perl-scripts, you need Perl to be installed on your computer.
 29+ If you don't have Perl installed, download Perl from:
 30+ <BR>
 31+ <A HREF="http://www.activestate.com/Products/ActivePerl/" TARGET="_blank">http://www.activestate.com/Products/ActivePerl/</A>
 32+ <BR>
 33+ (just download and install it as any other software you have
 34+ downloaded and installed on your computer)
 35+ <P>
 36+
 37+ It's always wise to try out a new webserver with a
 38+ <A HREF="helpperlhelloworld.html">Hello World-script</A>
 39+ to ensure that you have everything configured correctly.
 40+ Of course, you need to install Active Perl <U>before</U> you try to run the Hello World script.
 41+
 42+
 43+
 44+
 45+
 46+
 47+
 48+
 49+
 50+<P>
 51+<HR>
 52+<CENTER>
 53+<FONT SIZE="-1" FACE="arial,verdana">
 54+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 55+</FONT>
 56+</CENTER>
 57+
 58+
 59+
 60+
 61+</TD></TR>
 62+</TABLE>
 63+
 64+
 65+
 66+
 67+
 68+</BODY>
 69+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpperlhelloworld.html
@@ -0,0 +1,80 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>Perl Hello World-script</B>
 27+<P>
 28+ You can test Xerver with this Hello World-script:
 29+ <BR>
 30+ Note that if the script does not work, try to change <B>#!/usr/bin/perl</B>
 31+ to the location of your perl interpreter (for example <B>d:\perl\bin\perl.exe</B>).
 32+
 33+ <P>
 34+ <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#cccccc">
 35+ <TR><TD>
 36+ <FONT FACE="arial" SIZE="-1">
 37+ <B>Save this file as "testscript.pl":</B>
 38+ </FONT>
 39+ <P>
 40+
 41+ <CODE>
 42+ #!/usr/bin/perl
 43+ <BR>
 44+ print "Content-Type: text/html \r\n\r\n";
 45+ <BR>
 46+ print "Hello World!";
 47+ <BR>
 48+ print "&lt;BR&gt;";
 49+ <BR>
 50+ print "This is my first script ever!";
 51+ </CODE>
 52+ </TD></TR>
 53+ </TABLE>
 54+<BR>
 55+<BR>
 56+
 57+
 58+
 59+
 60+
 61+
 62+<P>
 63+<HR>
 64+<CENTER>
 65+<FONT SIZE="-1" FACE="arial,verdana">
 66+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 67+</FONT>
 68+</CENTER>
 69+
 70+
 71+
 72+
 73+</TD></TR>
 74+</TABLE>
 75+
 76+
 77+
 78+
 79+
 80+</BODY>
 81+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpperlwontrun.html
@@ -0,0 +1,95 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+
 28+<B>I have installed Perl. But my scripts won't run anyway. Why?</B>
 29+<P>
 30+ This has actually nothing to do with Xerver.
 31+ The problem is that your system's path to Perl is incorrect.
 32+ The path to Perl is set in a environment variable called PATH.
 33+ A valid PATH variable can <U>for example</U> be:
 34+ <BR>
 35+ <TT>C:\WINNT\system32;C:\WINNT\;C:\Perl\bin\;D:\Something\Else\</TT> (Windows users)
 36+ <BR>
 37+ ...or...
 38+ <BR>
 39+ <TT>/usr/openwin/bin:/opt/local/bin:/opt/pd/bin:/opt/gnu/bin:/opt/local/java/jdk/bin:.</TT> (UNIX users)
 40+ <P>
 41+
 42+ You can add the path to Perl to your PATH variable if you follow these steps:
 43+ <P>
 44+ <B>Windows NT/2000/XP users:</B>
 45+ <OL>
 46+ <LI> Go to Contol Panel/System.
 47+ <LI> Advanced tab
 48+ <LI> Press Environment Variable
 49+ <LI> Check the PATH variable under "System Variables".
 50+ <LI> Press Edit...
 51+ <LI> Don't erase what you see here, but add the path to perl to the beginning of this line and press OK. (For example: If the PATH variable is <B>C:\WINNT\system32;C:\WINNT\</B> and perl.exe is located at <B>C:\Perl\bin\</B>, change the PATH to <B>C:\Perl\bin\;C:\WINNT\system32;C:\WINNT\</B>)
 52+ <LI> Press OK.
 53+ <LI> Press OK again.
 54+ <LI> Start Xerver (if already running, close Xerver and restart it).
 55+ </OL>
 56+
 57+
 58+
 59+ <B>Windows 95/98/ME users:</B>
 60+ <OL>
 61+ <LI> Open c:\autoexec.bat with notepad (or another text editor).
 62+ <LI> Scroll down to the last line.
 63+ <LI> Add this line to the bottom of the autoexec.bat file: <B>set PATH=pathToPerl;%PATH%</B> where pathToPerl is the folder where perl.exe is located. (For example: If perl.exe is located at <B>C:\Perl\bin\</B>, this line shall be added to the bottom of autoexec.bat: <B>set PATH=C:\Perl\bin\;%PATH%</B>)
 64+ <LI> Save your settings to c:\autoexec.bat.
 65+ <LI> Restart your computer.
 66+ </OL>
 67+
 68+
 69+
 70+
 71+
 72+
 73+
 74+
 75+
 76+
 77+<P>
 78+<HR>
 79+<CENTER>
 80+<FONT SIZE="-1" FACE="arial,verdana">
 81+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 82+</FONT>
 83+</CENTER>
 84+
 85+
 86+
 87+
 88+</TD></TR>
 89+</TABLE>
 90+
 91+
 92+
 93+
 94+
 95+</BODY>
 96+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helplowsystemresources.html
@@ -0,0 +1,77 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>What does the "run Xerver with extremely low system resources" mean?</B>
 27+<P>
 28+ NOTE: This option doesn't affect Xerver at all if you start Xerver
 29+ with "StartXerver.exe" (or "java Start")!
 30+ <P>
 31+ HOWEVER: When you start Xerver with "StartXerver.exe" (or "java Start")
 32+ a Xerver window will popup
 33+ so you actually can see that the server is up and running.
 34+ When you close this window Xerver will be shut down.
 35+ <BR>
 36+ If you want Xerver to run as an background process
 37+ you can choose to "run Xerver with extremely low system resources".
 38+ If you do this, the Xerver window won't open next time you start
 39+ Xerver. If you for example want run Xerver each time you use your
 40+ computer, but you don't want the Xerver window, then the
 41+ "run Xerver with extremely low system resources" is what you shall
 42+ use, as it allows the Xerver to start with low system resources
 43+ and without the Xerver window. You won't even notice that
 44+ Xerver is running!
 45+ <BR>
 46+ You can always shut down Xerver with CTRL+ALT+DEL for Windows users.
 47+ Non-Windows users kill the Xerver process the same way they kill
 48+ any other process on their system.
 49+
 50+
 51+
 52+
 53+
 54+
 55+
 56+
 57+
 58+
 59+<P>
 60+<HR>
 61+<CENTER>
 62+<FONT SIZE="-1" FACE="arial,verdana">
 63+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 64+</FONT>
 65+</CENTER>
 66+
 67+
 68+
 69+
 70+</TD></TR>
 71+</TABLE>
 72+
 73+
 74+
 75+
 76+
 77+</BODY>
 78+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpphpnoinputfile.html
@@ -0,0 +1,130 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>"No input file specified"-error</B>
 27+<P>
 28+ If you are using PHP version 4.3.2 or later and you try
 29+ to run a PHP-script you will get a "No input file specified"-error
 30+ (if you use PHP 4.3.1 you won't have this problem).
 31+<P>
 32+ To solve this problem you can either install PHP 4.3.1 or you can follow these steps:
 33+ <OL>
 34+ <LI> Open your <B>php.ini</B> file
 35+ (for Windows users it's located in their Windows-directory,
 36+ for example <B>c:\windows\php.ini</B>).
 37+ <LI> Search for this line:
 38+ <BR>
 39+ <B>doc_root =</B>
 40+ <BR>
 41+ When you have found this line, replace it with
 42+ <BR>
 43+ <B>doc_root = <FONT COLOR="red">c:\myXerverRootFolder\</FONT></B>
 44+ <BR>
 45+ Where <B><FONT COLOR="red">c:\myXerverRootFolder\</FONT></B> shall be
 46+ your Xerver root-directory (you choose this directory during the Xerver setup).
 47+ <LI> Save <B>php.ini</B>.
 48+ <LI> You are done! Your PHP-scripts will now work!
 49+ </OL>
 50+<P>
 51+ Most users can stop reading now as the description above
 52+ is enough to make your PHP-scripts working.
 53+ <HR>
 54+ <BR>
 55+
 56+ However, a more accurate description is given below:
 57+ <BR>
 58+ After you have changed your <B>php.ini</B> your PHP-scripts will
 59+ work fine only <U>as long as they are not in a virtual directory</U>.
 60+ <P>
 61+
 62+ If you have PHP-scripts in a virtual directory and you want them
 63+ to be runnable you shall follow these steps:
 64+ <OL>
 65+ <LI> First assume your alias name is "cgi-bin" (it can be something else as well)
 66+ and it points
 67+ to <B>c:\john\homepage\cgi-bin\</B> (important: to make this work your
 68+ alias name MUST be the same as the end of your real directory path,
 69+ you can not have an alias called "cgi-bin" pointing to a folder called
 70+ <B>c:\john\homepage\dummyName\</B>).
 71+ <LI> Open your <B>php.ini</B> file
 72+ (for Windows users it's located in their Windows-directory,
 73+ for example <B>c:\windows\php.ini</B>).
 74+ <LI> Search for this line:
 75+ <BR>
 76+ <B>doc_root =</B>
 77+ <BR>
 78+ When you have found this line, replace it with
 79+ <BR>
 80+ <B>doc_root = <FONT COLOR="red">c:\john\homepage\</FONT></B>
 81+ <BR>
 82+ Where <B><FONT COLOR="red">c:\john\homepage\</FONT></B> shall be
 83+ the directory to which your alias points to
 84+ <U>except the directory having the same name as your alias(!!)</U>.
 85+ <BR>
 86+ (To make sure no one misunderstands this: if your alias points to
 87+ <B>c:\john\homepage\cgi-bin\</B> then your alias must be <B>\cgi-bin\</B>
 88+ and you must write <B>c:\john\homepage\</B> (and not <B>c:\john\homepage\cgi-bin\</B>)
 89+ in your <B>php.ini</B>.
 90+ <LI> Save <B>php.ini</B>.
 91+ <LI> You are done! As long as your PHP-scripts are located in
 92+ <B>c:\john\homepage\cgi-bin\</B> and your visitor visits them from
 93+ <B>http://www.yourserver.com/cgi-bin/script.php</B> they will work!
 94+ (Actually your scripts can also be located in subdirectories to cgi-bin,
 95+ for example <B>http://www.yourserver.com/cgi-bin/something/script2.php</B>).
 96+ </OL>
 97+ <BR>
 98+
 99+ <B>Note:</B> If you have more than one virtual directory, only one of them
 100+ can contain PHP-scripts.
 101+
 102+
 103+
 104+<BR>
 105+<BR>
 106+
 107+
 108+
 109+
 110+
 111+
 112+<P>
 113+<HR>
 114+<CENTER>
 115+<FONT SIZE="-1" FACE="arial,verdana">
 116+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 117+</FONT>
 118+</CENTER>
 119+
 120+
 121+
 122+
 123+</TD></TR>
 124+</TABLE>
 125+
 126+
 127+
 128+
 129+
 130+</BODY>
 131+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpfindip.html
@@ -0,0 +1,109 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>How can I find my IP address?</B>
 28+<P>
 29+If you are currently connected to internet you have two IP addresses that
 30+can be relevant to you:
 31+<P>
 32+
 33+The first one is your <B>outer IP</B>. This is the
 34+IP that other computers on internet see when they connect to your computer
 35+or when you connect to them.
 36+<BR>
 37+You can find this IP at for example:
 38+<BR>
 39+<A HREF="http://www.whatismyip.com/" TARGET="_blank">http://www.WhatIsMyIp.com/</A>
 40+
 41+<P>
 42+Note that the outer IP is not necessarily an IP that is unique for your computer.
 43+It might for example be the IP to a router you have at home or it might be the address of
 44+a router that your ISP has. What is important to understand is that the outer IP might or might not
 45+be unique for you.
 46+<P>
 47+
 48+After you started Xerver the outer IP is the IP you will give to your friends so they
 49+can visit your web or FTP server.
 50+
 51+<P>
 52+The second type of IP is your <B>local IP</B>. This is a computer that is unique
 53+to your computer in your local network (even if your home "network" only consists of one single computer).
 54+This IP is used for computers within a network to communicate to each other or for a router
 55+to keep track of what computers are in the network.
 56+<P>
 57+
 58+If you have a router and you would like to redirect
 59+a port from your router to your server computer (which runs Xerver)
 60+you need to know your computers local IP.
 61+
 62+<P>
 63+You can easily find your local IP in most operating systems:
 64+<P>
 65+
 66+<B>Windows 95/98/ME:</B>
 67+<BR>
 68+Start &gt; Run &gt; type "winipcfg" &gt; OK &gt; Select your network adapter in the list &gt; You will see the IP.
 69+<P>
 70+
 71+<B>Windows 2000/XP:</B>
 72+<BR>
 73+Start &gt; Run &gt; type "cmd" &gt; OK &gt; type "ipconfig" &gt; You will see the IP.
 74+<P>
 75+
 76+<B>Macintosh 8.x and 9.x:</B>
 77+<BR>
 78+Apple Menu &gt; Control Panels &gt; TCP/IP &gt; OK &gt; Select your network adapter in the Connect Via list &gt; Choose Using DHCP Server in the Configure list if you are connecting to a routers DHCP server.
 79+<P>
 80+
 81+<B>Macintosh OS X:</B>
 82+<BR>
 83+Apple Menu &gt; System Preferences &gt; Network &gt; TCP/IP &gt; You will see the IP.
 84+<P>
 85+
 86+<B>Linux:</B>
 87+<BR>
 88+Type <U>/sbin/ifconfig</U> in a prompt. Your IP is shown after <I>inet addr</I>.
 89+
 90+
 91+<P>
 92+<HR>
 93+<CENTER>
 94+<FONT SIZE="-1" FACE="arial,verdana">
 95+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 96+</FONT>
 97+</CENTER>
 98+
 99+
 100+
 101+
 102+</TD></TR>
 103+</TABLE>
 104+
 105+
 106+
 107+
 108+
 109+</BODY>
 110+</HTML>`
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpphp5.html
@@ -0,0 +1,76 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+
 28+
 29+<B>I'm using PHP 5 and I can't run my scripts.</B>
 30+<P>
 31+PHP 5 uses "php-cgi" (php-cgi.exe) to run php-scripts
 32+while older PHP versions (PHP 4 or older)
 33+are all using "php" (php.exe) to run php-scripts.
 34+<BR>
 35+Xerver is by default configured for PHP 4 which uses "php".
 36+If you have PHP 5 or plan to install PHP 5, make sure that
 37+you in the fifth step in Xerver Setup have "php=php-cgi"
 38+in the scroll list (default is "php=php").
 39+<P>
 40+
 41+In other words:
 42+<OL>
 43+<LI> Start Xerver Setup.
 44+<LI> Visit http://localhost:32123/.
 45+<LI> Go to step 5.
 46+<LI> Select "php=php".
 47+<LI> Press "Remove script extension" (and confirm).
 48+<LI> Press "Add script extension".
 49+<LI> Fill in "php" for "file extension".
 50+<LI> Fill in "php-cgi" for "Command to run script with".
 51+<LI> Press "Add to list".
 52+<LI> Press "Save and Next Step".
 53+<LI> You are done.
 54+</OL>
 55+
 56+
 57+
 58+<P>
 59+<HR>
 60+<CENTER>
 61+<FONT SIZE="-1" FACE="arial,verdana">
 62+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 63+</FONT>
 64+</CENTER>
 65+
 66+
 67+
 68+
 69+</TD></TR>
 70+</TABLE>
 71+
 72+
 73+
 74+
 75+
 76+</BODY>
 77+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpwindowsstartup.html
@@ -0,0 +1,123 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>How do I start Xerver when Windows starts?</B>
 27+<P>
 28+You can choose to run Xerver as a hidden process when you start your computer.
 29+This can be good if you want run Xerver as a server or if you just
 30+want Xerver to always be running, but you don't want see the Xerver window.
 31+<P>
 32+<B>If you want to auto start Xerver <U>Web</U> Server as a background process at Windows startup:</B>
 33+<OL>
 34+<LI> Copy <I>XerverMinimumResources.exe</I> from the folder <I>otherStartupFiles</I> to the Xerver directory
 35+(where xerver.jar is located).
 36+<LI> Create a shortcut to <I>XerverMinimumResources.exe</I>. The shortcut should be located in the startup folder.
 37+The startup folder is (depending on what version of Windows you use) located at
 38+<BR>
 39+<B>Start > Programs > Startup</B>
 40+<BR>
 41+or
 42+<BR>
 43+<B>Start > Programs > Autostart</B>.
 44+</OL>
 45+
 46+<P>
 47+<B>If you want to auto start Xerver <U>FTP</U> Server as a background process at Windows startup:</B>
 48+<OL>
 49+<LI> Copy <I>FTPServer.exe</I> from the folder <I>otherStartupFiles</I> to the Xerver directory
 50+(where xerver.jar is located).
 51+<LI> Create a shortcut to <I>FTPServer.exe</I>. The shortcut should be located in the startup folder.
 52+The startup folder is (depending on what version of Windows you use) located at
 53+<BR>
 54+<B>Start > Programs > Startup</B>
 55+<BR>
 56+or
 57+<BR>
 58+<B>Start > Programs > Autostart</B>.
 59+</OL>
 60+<P>
 61+
 62+Note that Xerver will start and run without a window (GUI).
 63+If you want to close Xerver, just press CTRL + ALT + DEL and delete "javaw.exe".
 64+To stop Xerver from starting at Windows startup in the future, just delete the shortcuts you just created in the
 65+autostart folder.
 66+
 67+<!--
 68+ Xerver is a open source software built with many small components.
 69+ This makes it possible to only run the most critical files for the Xerver Kernel.
 70+ What does this mean for you?
 71+ <P>
 72+ <UL>
 73+ Follow these steps when you want to:
 74+ <LI> <B>Run Xerver in full mode with all features enabled:</B>
 75+ <OL>
 76+ <LI> Run "StartXerver.exe" ("java Start.class")!
 77+ </OL>
 78+<P>
 79+ <LI> <B>Run the pure Xerver webserver kernel:</B>
 80+ <OL>
 81+ <LI> Run "StartXerver.exe" ("java StartXerver.class").
 82+ <BR>
 83+ No logging, no setup and no advanced layout is available (but you are using less system resources).
 84+ </OL>
 85+<P>
 86+ <LI> <B>Run Xerver as a background process</B>:
 87+ <OL>
 88+ <LI> Run "SetupXerver.exe" ("java SetupXerver.class")
 89+ <LI> Browse to <A HREF="http://localhost:32123/" TARGET="_blank">http://localhost:32123/</A> (the setup web interface will be available when the setup is running).
 90+ <LI> Choose to run Xerver with "low system resources".
 91+ <LI> Save settings
 92+ <LI> Run "StartXerver.exe" ("java StartXerver.class")
 93+ <LI> Xerver is now running as a background process (kill Xerver with CTRL+ALT+DEL).
 94+ </OL>
 95+ </UL>
 96+-->
 97+
 98+
 99+
 100+
 101+
 102+
 103+
 104+
 105+<P>
 106+<HR>
 107+<CENTER>
 108+<FONT SIZE="-1" FACE="arial,verdana">
 109+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 110+</FONT>
 111+</CENTER>
 112+
 113+
 114+
 115+
 116+</TD></TR>
 117+</TABLE>
 118+
 119+
 120+
 121+
 122+
 123+</BODY>
 124+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpjavainstalled.html
@@ -0,0 +1,70 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>How do I know if I have Java installed?</B>
 28+<P>
 29+ If you are using Windows you can check for an Java icon in your
 30+ control panel. If you find an icon labeled "Java Plug-in"
 31+ you have Java installed. If you can't find this icon, you must install
 32+ Java on your computer to be able to run Xerver.
 33+ <BR>
 34+ Java can be downloaded from:
 35+ <BR>
 36+ <A HREF="http://java.sun.com/j2se/downloads.html" TARGET="_blank">http://java.sun.com/j2se/downloads.html</A>
 37+ <P>
 38+
 39+ It is strongly recommended to always run the latest version of Java!
 40+ <P>
 41+
 42+ If you are unsure about which link you shall download from,
 43+ go to the download site and choose JRE and "Windows (all languages, including English)".
 44+
 45+
 46+
 47+
 48+
 49+
 50+
 51+
 52+<P>
 53+<HR>
 54+<CENTER>
 55+<FONT SIZE="-1" FACE="arial,verdana">
 56+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 57+</FONT>
 58+</CENTER>
 59+
 60+
 61+
 62+
 63+</TD></TR>
 64+</TABLE>
 65+
 66+
 67+
 68+
 69+
 70+</BODY>
 71+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpfriendscantbrowse.html
@@ -0,0 +1,71 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+
 28+<B>I can reach my website from my own computer. But my friends can't view my site. Why?</B>
 29+<P>
 30+ I recommend that you try to:
 31+ <OL>
 32+ <LI> Change port number. Maybe 80 or 21 have been blocked by your ISP, try another number.
 33+ <BR>
 34+ <LI> Temporary shut down your firewall and test again, if you are currently running one.
 35+ If it works now your firewall is the "problem".
 36+ You must change settings to your firewall to allow Xerver act as a server.
 37+ <BR>
 38+ <LI> Make sure that your friend can reach you computer with your unique IP.
 39+ If you don't have a unique IP your computer can't be reached, and you can't
 40+ run Xerver (or any other web server).
 41+ <BR>
 42+ To see your public IP (the one you show to the rest of internet), visit:
 43+ <BR>
 44+ <A HREF="http://www.whatismyip.com/" TARGET="_blank">http://www.WhatIsMyIP.com/</A>
 45+ <LI> If you have a router, please check out
 46+ <A HREF="helprouter.html">this page</A>.
 47+ </OL>
 48+
 49+
 50+
 51+
 52+
 53+<P>
 54+<HR>
 55+<CENTER>
 56+<FONT SIZE="-1" FACE="arial,verdana">
 57+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 58+</FONT>
 59+</CENTER>
 60+
 61+
 62+
 63+
 64+</TD></TR>
 65+</TABLE>
 66+
 67+
 68+
 69+
 70+
 71+</BODY>
 72+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall10.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall10.jpg
___________________________________________________________________
Added: svn:mime-type
173 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/help403forbidden.html
@@ -0,0 +1,101 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>403 Forbidden</B>
 27+<P>
 28+ A "403 Forbidden" error can be created for many reasons.
 29+ <BR>
 30+ With each 403 error you get an explaination why you have received the 403 error.
 31+ <BR>
 32+ Usually the reason why you have got a 403 error is obvious.
 33+ <BR>
 34+ However, if you have got a 403 error and you don't know for what reason,
 35+ please use this list. It can help you find the reason why you have received an unwanted 403 error:
 36+
 37+
 38+ <UL>
 39+ <LI>
 40+ <B>ERROR MESSAGE:</B>
 41+ <FONT COLOR="red"><B>You have tried to reach a folder you do not have permission to access. </B></FONT>
 42+ <BR>
 43+ You have probably not shared the folder you try to view.
 44+
 45+ <P>
 46+ <B>SOLUTION 1:</B>
 47+ <BR>
 48+ Some users forget to share their root. If your root is <B>c:\homepage\</B>,
 49+ make sure to share that folder as well! For security reasons,
 50+ the root is not shared by automatic. Use the setup to share the folder you have set as root.
 51+
 52+ <P>
 53+ <B>SOLUTION 2:</B>
 54+ <BR>
 55+ Some users forget to share their aliases. If you have an alias pointing to
 56+ <B>c:\homepage\</B>, make sure to share that folder as well! For security reasons,
 57+ aliases are not shared by automatic.
 58+ Use the setup to share the folders you are pointing to with aliases.
 59+<P>
 60+
 61+
 62+ <LI>
 63+ <B>ERROR MESSAGE:</B>
 64+ <FONT COLOR="red"><B>You have tried to download a file with an extension that you are not allowed to download.</B></FONT>
 65+ <BR>
 66+ You have probably not shared the file extension your
 67+ index file is using, for example <B>html</B> or <B>htm</B>.
 68+ <P>
 69+ <B>SOLUTION:</B> Share all file extensions you have used in your list of index files.
 70+ Example: If your index files are <I>index.html</I> and <I>index.htm</I>,
 71+ make sure you have allowed users to download files with <I>html</I> and <I>htm</I> extensions.
 72+<P>
 73+
 74+ </UL>
 75+
 76+
 77+
 78+
 79+
 80+
 81+
 82+
 83+<P>
 84+<HR>
 85+<CENTER>
 86+<FONT SIZE="-1" FACE="arial,verdana">
 87+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 88+</FONT>
 89+</CENTER>
 90+
 91+
 92+
 93+
 94+</TD></TR>
 95+</TABLE>
 96+
 97+
 98+
 99+
 100+
 101+</BODY>
 102+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpphphelloworld.html
@@ -0,0 +1,72 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>PHP Hello World-script</B>
 27+<P>
 28+ You can test Xerver with this Hello World-script:
 29+ <P>
 30+ <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#cccccc">
 31+ <TR><TD>
 32+ <FONT FACE="arial" SIZE="-1">
 33+ <B>Save this file as "testscript.php":</B>
 34+ </FONT>
 35+ <P>
 36+
 37+ <CODE>
 38+ &lt;? print("Hello World") ?&gt;
 39+ <BR>
 40+ &lt;BR&gt;
 41+ <BR>
 42+ &lt;? print("This is my first PHP script ever!") ?&gt;
 43+ </CODE>
 44+ </TD></TR>
 45+ </TABLE>
 46+<BR>
 47+<BR>
 48+
 49+
 50+
 51+
 52+
 53+
 54+<P>
 55+<HR>
 56+<CENTER>
 57+<FONT SIZE="-1" FACE="arial,verdana">
 58+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 59+</FONT>
 60+</CENTER>
 61+
 62+
 63+
 64+
 65+</TD></TR>
 66+</TABLE>
 67+
 68+
 69+
 70+
 71+
 72+</BODY>
 73+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpdifferentrunmodes.html
@@ -0,0 +1,92 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>How do I start Xerver with low system resources?</B>
 27+<BR>
 28+<B>How do I start Xerver as a background process?</B>
 29+<P>
 30+You can choose how Xerver shall start in the Xerver Setup.
 31+<BR>
 32+If you use Windows: Start setup with "Setup.exe".
 33+<BR>
 34+If you don't use Windows: Start setup with "java SetupXerver".
 35+
 36+<!--
 37+ Xerver is a open source software built with many small components.
 38+ This makes it possible to only run the most critical files for the Xerver Kernel.
 39+ What does this mean for you?
 40+ <P>
 41+ <UL>
 42+ Follow these steps when you want to:
 43+ <LI> <B>Run Xerver in full mode with all features enabled:</B>
 44+ <OL>
 45+ <LI> Run "StartXerver.exe" ("java Start.class")!
 46+ </OL>
 47+<P>
 48+ <LI> <B>Run the pure Xerver webserver kernel:</B>
 49+ <OL>
 50+ <LI> Run "StartXerver.exe" ("java StartXerver.class").
 51+ <BR>
 52+ No logging, no setup and no advanced layout is available (but you are using less system resources).
 53+ </OL>
 54+<P>
 55+ <LI> <B>Run Xerver as a background process</B>:
 56+ <OL>
 57+ <LI> Run "SetupXerver.exe" ("java SetupXerver.class")
 58+ <LI> Browse to <A HREF="http://localhost:32123/" TARGET="_blank">http://localhost:32123/</A> (the setup web interface will be available when the setup is running).
 59+ <LI> Choose to run Xerver with "low system resources".
 60+ <LI> Save settings
 61+ <LI> Run "StartXerver.exe" ("java StartXerver.class")
 62+ <LI> Xerver is now running as a background process (kill Xerver with CTRL+ALT+DEL).
 63+ </OL>
 64+ </UL>
 65+-->
 66+
 67+
 68+
 69+
 70+
 71+
 72+
 73+
 74+<P>
 75+<HR>
 76+<CENTER>
 77+<FONT SIZE="-1" FACE="arial,verdana">
 78+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 79+</FONT>
 80+</CENTER>
 81+
 82+
 83+
 84+
 85+</TD></TR>
 86+</TABLE>
 87+
 88+
 89+
 90+
 91+
 92+</BODY>
 93+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall11.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall11.jpg
___________________________________________________________________
Added: svn:mime-type
194 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helppasswordtofolders.html
@@ -0,0 +1,65 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>Password protection to folders</B>
 27+<P>
 28+
 29+Xerver is supporting password protection to folders.
 30+<BR>
 31+When a user visits a password protected folder,
 32+the user will be prompted for a username and password,
 33+which you have created during the setup.
 34+<BR>
 35+When the user enters a valid username and password
 36+the user will be able to view the content in that particular
 37+folder (and subfolders if you choosed to protect subfolders during setup).
 38+However, all folders that you password protect must belong to a "zone".
 39+The user will (with most modern browsers) see the name of the "zone"
 40+when he is asked to enter his username and password.
 41+With most modern browsers, the user will not be prompted to reenter the
 42+username and password when traveling between different folders as long as
 43+the folders are protected with the same username/password.
 44+
 45+
 46+
 47+<P>
 48+<HR>
 49+<CENTER>
 50+<FONT SIZE="-1" FACE="arial,verdana">
 51+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 52+</FONT>
 53+</CENTER>
 54+
 55+
 56+
 57+
 58+</TD></TR>
 59+</TABLE>
 60+
 61+
 62+
 63+
 64+
 65+</BODY>
 66+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall12.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall12.jpg
___________________________________________________________________
Added: svn:mime-type
167 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/help/menu.html
@@ -0,0 +1,630 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+<STYLE TYPE="text/css">
 13+<!--
 14+/* Don't remove this line: Script by Omid Rouhani from JavaScript.nu */
 15+
 16+
 17+/* Nedan �ndrar du f�rgen i de rutor d�r l�nkarna finns: */
 18+.menyLankarTD {background-color:#cccccc}
 19+
 20+/* Nedan �ndrar du f�rgen i de rutor d�r menyerna finns: */
 21+.menyMenyTD {background-color:#000C86}
 22+
 23+/* Nedan �ndrar du textstorlek, textf�rg och typsnitt p� l�nkarn */
 24+.menyLankarA {font-family:'MS Sans Serif',arial,verdana; font-size:12px; color:black; text-decoration:none;}
 25+
 26+/* Nedan �ndrar du textstorlek, textf�rg och typsnitt p� menyern */
 27+.menyMenyA {font-family:'MS Sans Serif',arial,verdana; font-size:12px; color:white; font-weight:bold; text-decoration:none;}
 28+
 29+
 30+/* OM DU SKA HA �VER 20 MENYER, L�S DETTA:
 31+ * F�r varje rubrik som du har ska du MINST en rad nedan.
 32+ * Har du t.ex. 5 olika "menyer" (varje "ruta" med menyer/l�nkar �r en meny) ska du ha
 33+ * minst 5 rader nedan, men du kan �ven ha flera om du vill. Du f�r dock inte ha f�rre
 34+ * �n 5 rader i s� fall.
 35+ *
 36+ * Dvs, du ska ha MINST LIKA M�NGA RADER NEDAN SOM DU HAR MENYER.
 37+ * (B�rja med 0 (noll) och g� upp�t)
 38+ */
 39+
 40+#menyLager0 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 41+#menyLager1 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 42+#menyLager2 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 43+#menyLager3 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 44+#menyLager4 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 45+#menyLager5 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 46+#menyLager6 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 47+#menyLager7 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 48+#menyLager8 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 49+#menyLager9 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 50+#menyLager10 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 51+#menyLager11 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 52+#menyLager12 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 53+#menyLager13 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 54+#menyLager14 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 55+#menyLager15 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 56+#menyLager16 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 57+#menyLager17 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 58+#menyLager18 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 59+#menyLager19 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 60+#menyLager20 {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:10;}
 61+
 62+
 63+/* �ndra inte raden nedan */
 64+#helaMenynsLager {position:absolute; visibility:hidden; background-color:#FFFFFF; z-index:5;}
 65+//-->
 66+</STYLE>
 67+
 68+
 69+
 70+
 71+<SCRIPT LANGUAGE="javascript">
 72+<!--This is one of many scripts which are available at: *---
 73+//--http://www.JavaScript.nu/javascript *---
 74+//--This script is FREE, but you MUST let these lines *---
 75+//--remain if you use this script. *---
 76+
 77+function initieraNodvandigaVariabler()
 78+{
 79+
 80+// ###########################################################################
 81+// ################ NEDAN �NDRAR DU INST�LLNINGARNA I SCRIPTET ###############
 82+// ###########################################################################
 83+
 84+
 85+//***---Lagrets placering r�knat fr�n �versta v�nstra h�rnet:
 86+ placeringToppen=10;
 87+ placeringVanster=2;
 88+
 89+//***---Rubrikernas/l�nkarnas storlek i bredd och h�jd.
 90+ varRutasHojd=20;
 91+ varRutasBredd=160;
 92+
 93+//***---N�r man trycker p� en meny kommer l�nkarna poppa upp i en ruta. Ofta vill man ha denna ruta lite f�rskjuten (t.ex. lite �t h�ger och lite ned�t). Denna f�rskjutning g�r du h�r.
 94+ forskjutningAtVanster=30;
 95+ forskjutningNedat=8;
 96+
 97+//***---Man kan f� f�rgade ramar runt sina rutor. Ange f�rgen h�r. (testa dig g�rna fram!)
 98+ fargKringHelaMenyn="black"; //F�rg p� den ram som omsluter hela menysystemet
 99+ fargKringLagren="red"; //F�rg runt menyerna (som kan inneh�lla l�nkar/menyrubriker)
 100+ fargKringVarjeRuta="orange"; //F�rg runt varje l�nk/menyrubrik
 101+
 102+//***---Ovan har du angett f�rgerna p� tre olika sorters ramar. Du kanske dock inte vill ha n�gra ramar alls. D� kan du ange det h�r. (1=ha ram; 0=ha inte ram). Anger du allts� tre nollor h�r blir de tre f�rgerna ovan betydelsel�sa (de syns inte).
 103+ ramRuntHelaMenyn=1; //1=ha ram; 0=ha inte ram
 104+ ramRuntVarjeMeny=1; //1=ha ram; 0=ha inte ram
 105+ ramRuntVarjeRuta=0; //1=ha ram; 0=ha inte ram
 106+
 107+//***---Med Explorer 4 (och senare) kan man f� rutorna att byta f�rg d� man f�r musen �ver rutan. H�r anger du f�rgen som rutan ska f�.
 108+ menyerFargMedMus="blue"; //Menyerna ska f� denna f�rg
 109+ lankarFargMedMus="eeeeee"; //L�nkarna ska f� denna f�rg
 110+
 111+//***---Om du inte har FRAMES p� din sida (eller om du inte vet vad det �r), strunta i detta: H�r anger du din default-target, dvs. s�vida du inte anger en annan TARGET till en viss l�nk s� kommer den ha detta TARGET-v�rde.
 112+ defaultTarget="main";
 113+
 114+//***---H�r anger du avst�ndet mellan texten i en ruta till rutans kanter. Ett rekommenderat v�rde �r 2.
 115+ cellpaddingVarde=2;
 116+
 117+
 118+ initieraOvrigaVariabler() //�ndra INTE denna rad
 119+} //�ndra INTE denna rad
 120+
 121+
 122+
 123+function skrivUtMenyer() //�ndra INTE denna rad
 124+{ //�ndra INTE denna rad
 125+ allTextAttSkrivaUt=""; //�ndra INTE denna rad
 126+
 127+
 128+// ###########################################################################
 129+// ############ NEDAN ANGER DU VILKA MENYER OCH L�NKAR DU VILL HA ############
 130+// ###########################################################################
 131+//
 132+//
 133+// OBS! L�S DESSA INSTRUKTIONER NOGA!
 134+//
 135+// Detta script har mycket stora anpassningsm�jligheter och kan t.ex:
 136+// 1) Ha ett obegr�nsat antal menyer under varandra.
 137+// 2) Ha ett obegr�nsat antal l�nkar under varje meny.
 138+// 3) Ha en fullt godtycklig struktur (hierarki) vad g�ller katalogerna och l�nkarna.
 139+// 4) Om du inte vet vad "Frames" �r s� ignorera detta:
 140+// Varje l�nk kan ha en unik TARGET. Anger du inte ett TARGET-v�rde s� anv�nds
 141+// default-v�rdet som du f�tt ange l�ngre upp i detta script.
 142+//
 143+// Innan du f�r bygga upp din meny, t�nk p� f�ljande:
 144+// * En "meny" betyder den rubrik d�r man trycker f�r att f� se fler l�nkar (och/eller fler menyer).
 145+// * En "l�nk" �r helt enkelt en l�nk som man trycker p�.
 146+//
 147+// N�r du bygger din meny s� anger du kommandon som "liknar":
 148+//
 149+// SYNTAXEN �R: STRUKTUREN BLIR:
 150+// <menu> Min meny 1 - Min meny 1
 151+// <link> Min l�nk 1 ---Min l�nk 1
 152+// <link> Min l�nk 2 ---Min l�nk 2
 153+// </menu>
 154+// <menu> Min meny 2 -Min meny 2
 155+// <link> Min l�nk 3 ---Min l�nk 3
 156+// <link> Min l�nk 4 ---Min l�nk 4
 157+// <link> Min l�nk 5 ---Min l�nk 5
 158+// </menu>
 159+// <menu> Min meny 3 -Min meny 3
 160+// <menu> Min meny 4 ---Min meny 4
 161+// <link> Min l�nk 6 ------Min l�nk 6
 162+// <link> Min l�nk 7 ------Min l�nk 7
 163+// </menu> ---
 164+// <link> Min l�nk 8 ---Min l�nk 8
 165+// <link> Min l�nk 9 ---Min l�nk 9
 166+// </menu>
 167+//
 168+//
 169+// Som du ser finns endast tre olika syntax (<link>, <menu> och </menu>).
 170+// Skrivs�ttet �r dock lite mer komplicerat.
 171+// Du skriver dina kommandon p� f�ljande s�tt:
 172+// skapaLager("<menu>","Rubrik")
 173+// skapaLager("<link>","L�nkens namn","http-adress","target-v�rde")
 174+// skapaLager("</menu>")
 175+//
 176+// Notera att du inte beh�ver ange ett target-v�rde om du inte vill.
 177+// Nedan ser du ett exempel p� hur man g�r.
 178+// Skulle du skriva n�gra syntax fel s� har scriptet en inbyggd
 179+// fels�kare som varnar dig. S� det �r bara att s�tta ig�ng och bygga :)
 180+
 181+
 182+
 183+
 184+
 185+
 186+
 187+
 188+
 189+
 190+
 191+ skapaLager("<menu>","About Xerver")
 192+ skapaLager("<menu>","License")
 193+ skapaLager("<link>","Is Xerver free?","helpisxerverfree.html")
 194+ skapaLager("<link>","Xerver License","../license.txt")
 195+ skapaLager("</menu>")
 196+ skapaLager("<link>","What is Xerver?","helpwhatisxerver.html")
 197+ skapaLager("</menu>")
 198+ skapaLager("<menu>","How do I...")
 199+ skapaLager("<menu>","Run scripts")
 200+ skapaLager("<menu>","Perl")
 201+ skapaLager("<link>","I can't run my Perl scripts. Why? ","helpcantrunperl.html")
 202+ skapaLager("<link>","I have installed Perl. But my scripts won't run anyway. Why? ","helpperlwontrun.html")
 203+ skapaLager("<link>","Perl Hello World-script","helpperlhelloworld.html")
 204+ skapaLager("</menu>")
 205+ skapaLager("<menu>","PHP")
 206+ skapaLager("<link>","I can't run my PHP scripts. Why? ","helpcantrunphp.html")
 207+ skapaLager("<link>","I use PHP 5 and can't run scripts","helpphp5.html")
 208+ skapaLager("<link>","I have installed PHP. But my scripts won't run anyway. Why? ","helpphpwontrun.html")
 209+// skapaLager("<link>","\"No input file specified\"-error","helpphpnoinputfile.html")
 210+ skapaLager("<link>","PHP Hello World-script","helpphphelloworld.html")
 211+ skapaLager("</menu>")
 212+ skapaLager("<menu>","Other")
 213+ skapaLager("<link>","What more scripts can I run?","helprunotherscripts.html")
 214+ skapaLager("</menu>")
 215+ skapaLager("<link>","Problems...","helpproblemwithscripts.html")
 216+ skapaLager("</menu>")
 217+ skapaLager("<menu>","Basic help")
 218+ skapaLager("<link>","Autostart at Windows startup","helpwindowsstartup.html")
 219+ skapaLager("<link>","Start Xerver","helpstartxerver.html")
 220+ skapaLager("<link>","Uninstall Xerver","helpuninstall.html")
 221+ skapaLager("</menu>")
 222+ skapaLager("<menu>","Features")
 223+ skapaLager("<link>","Password protection to folders","helppasswordtofolders.html")
 224+ skapaLager("<link>","How do I start Xerver as a background process?","helpbackgroundprocess.html")
 225+ skapaLager("<link>","How can I use my own error pages (for example \"404 File Not Found\")?","helpownerrorpages.html")
 226+// skapaLager("<link>","How do I start Xerver with low system resources?","helpdifferentrunmodes.html")
 227+ skapaLager("</menu>")
 228+ skapaLager("<menu>","FTP Server")
 229+ skapaLager("<link>","Start only the FTP Server","helpftpserveronly.html")
 230+ skapaLager("</menu>")
 231+ skapaLager("</menu>")
 232+ skapaLager("<menu>","Problems")
 233+ skapaLager("<menu>","Network problems")
 234+ skapaLager("<link>","I can reach my website from my own computer. But my friends can't view my site. Why?","helpfriendscantbrowse.html")
 235+ skapaLager("<link>","I have a router. Can I use Xerver?","helprouter.html")
 236+ skapaLager("<link>","How can I find my IP address?","helpfindip.html")
 237+ skapaLager("</menu>")
 238+ skapaLager("<menu>","HTTP Errors")
 239+ skapaLager("<link>","403 Forbidden","help403forbidden.html")
 240+ skapaLager("</menu>")
 241+ skapaLager("<link>","I can't run Xerver. Why?","helprunxerver.html")
 242+ skapaLager("<link>","How do I know if I have Java installed?","helpjavainstalled.html")
 243+ skapaLager("</menu>")
 244+ skapaLager("<link>","Xerver Homepage","http://www.javascript.nu/xerver/","_blank")
 245+
 246+
 247+
 248+
 249+
 250+
 251+
 252+
 253+
 254+/*
 255+ skapaLager("<menu>","Start using")
 256+ skapaLager("<link>","What is Xerver?","helpwhatisxerver.html")
 257+ skapaLager("<link>","How do I start Xerver?","helpstartxerver.html")
 258+ skapaLager("<link>","How do I uninstall Xerver?","helpuninstall.html")
 259+ skapaLager("<link>","I can't run Xerver. Why?","helprunxerver.html")
 260+ skapaLager("<link>","How do I know if I have Java installed?","helpjavainstalled.html")
 261+ skapaLager("</menu>")
 262+
 263+ skapaLager("<menu>","Run scripts")
 264+ skapaLager("<menu>","Perl")
 265+ skapaLager("<link>","I can't run my Perl scripts. Why? ","helpcantrunperl.html")
 266+ skapaLager("<link>","I have installed Perl. But my scripts won't run anyway. Why? ","helpperlwontrun.html")
 267+ skapaLager("<link>","Perl Hello World-script","helpperlhelloworld.html")
 268+ skapaLager("</menu>")
 269+ skapaLager("<menu>","PHP")
 270+ skapaLager("<link>","I can't run my PHP scripts. Why? ","helpcantrunphp.html")
 271+ skapaLager("<link>","I have installed PHP. But my scripts won't run anyway. Why? ","helpphpwontrun.html")
 272+// skapaLager("<link>","\"No input file specified\"-error","helpphpnoinputfile.html")
 273+ skapaLager("<link>","PHP Hello World-script","helpphphelloworld.html")
 274+ skapaLager("</menu>")
 275+ skapaLager("<menu>","Other")
 276+ skapaLager("<link>","What more scripts can I run?","helprunotherscripts.html")
 277+ skapaLager("</menu>")
 278+ skapaLager("<link>","Problems...","helpproblemwithscripts.html")
 279+ skapaLager("</menu>")
 280+
 281+ skapaLager("<menu>","Network problems")
 282+ skapaLager("<link>","I can reach my website from my own computer. But my friends can't view my site. Why?","helpfriendscantbrowse.html")
 283+ skapaLager("<link>","I have a router. Can I use Xerver?","helprouter.html")
 284+ skapaLager("<link>","How can I find my IP address?","helpfindip.html")
 285+ skapaLager("</menu>")
 286+
 287+ skapaLager("<menu>","HTTP Errors")
 288+ skapaLager("<link>","403 Forbidden","help403forbidden.html")
 289+ skapaLager("</menu>")
 290+
 291+ skapaLager("<menu>","Options/Features")
 292+ skapaLager("<link>","Password protection to folders","helppasswordtofolders.html")
 293+ skapaLager("<link>","How can I use my own error pages (for example \"404 File Not Found\")?","helpownerrorpages.html")
 294+// skapaLager("<link>","What does the \"run Xerver with extremely low system resources\" mean? ","helplowsystemresources.html")
 295+ skapaLager("<link>","How do I start Xerver with low system resources?","helpdifferentrunmodes.html")
 296+ skapaLager("<link>","How do I start Xerver as a background process?","helpdifferentrunmodes.html")
 297+ skapaLager("</menu>")
 298+
 299+ skapaLager("<menu>","License")
 300+ skapaLager("<link>","Is Xerver free?","helpisxerverfree.html")
 301+ skapaLager("<link>","Xerver License","../license.txt")
 302+ skapaLager("</menu>")
 303+
 304+ skapaLager("<link>","Xerver Homepage","http://www.javascript.nu/xerver/","_blank")
 305+*/
 306+
 307+
 308+
 309+// ###########################################################################
 310+// ############### �NDRA INGET NEDAN OM DU INTE VET VAD DU G�R ###############
 311+// ###########################################################################
 312+
 313+
 314+skapaLager("<end>"); //Avslutar utskrivningen. TA INTE BORT!!!
 315+document.write(allTextAttSkrivaUt);
 316+}
 317+
 318+
 319+
 320+
 321+function initieraOvrigaVariabler()
 322+{
 323+ antalUtplaceradeLager=0; //H�ller reda p� hur m�nga lager som skrivits ut
 324+ arIKatalogNiva=0; //H�ller reda p� hur m�nga steg ner i katalogstrukturen man �r
 325+ antalLagerNer=new Array(0); //Tempor�rt inneh�ller den hur m�nga steg ner man g�tt per katalogniv� s� man vet vart undermenyer ska ritas ut.
 326+ lagerSomVisas=new Array(0); //1=lager visas, 0=lager visas inte (index i array=index p� lager)
 327+ indexPaLagerIHierarki=new Array(0); //Tempor�rt inneh�ller den vilka index som hierarkin best�r av, t.ex. "3,6,7" ==> lager 7 ligger i lager 6 som ligger i lager 3, som inte ligger i n�got annat lager. Denna variabel �r tempor�r och v�rdet �ndras under uppbyggnaden av lagrena
 328+ buffradTextAttSkrivaUtPerLager=new Array(0); //Lagrar det som ska skrivas ut s� att inte "lager hamnar i lager"
 329+
 330+ antalLagerNer[0]=0;
 331+ lagerSomVisas[0]=0;
 332+ indexPaLagerIHierarki[0]=-1;
 333+ buffradTextAttSkrivaUtPerLager[0]="";
 334+
 335+ allaLagersStartattribut=new Array(0); //I denna kommer det lagras vart ett lager ligger och vad den har f�r Z-index (lagernamn,ZIndex, xKor, yKor)
 336+ forstaGangenManSkriverUt=true;
 337+
 338+ helaMenynNamnDIV="helaMenynsLager";
 339+ menyNamnDIV="menyLager";
 340+ konstantForZIndex=15;
 341+
 342+ startHTMLRamRuntTabellHelaMenyn="<TABLE BORDER='"+ramRuntHelaMenyn+"' CELLPADDING=0 CELLSPACING=0 BORDERCOLORDARK='"+fargKringHelaMenyn+"' BORDERCOLORLIGHT='"+fargKringHelaMenyn+"' BORDERCOLOR='"+fargKringHelaMenyn+"'><TR><TD>";
 343+ startHTMLRamRuntTabell="<TABLE BORDER='"+ramRuntVarjeMeny+"' CELLPADDING=0 CELLSPACING=0 BORDERCOLORDARK='"+fargKringLagren+"' BORDERCOLORLIGHT='"+fargKringLagren+"' BORDERCOLOR='"+fargKringLagren+"'><TR><TD>";
 344+ slutHTMLRamRuntTabell="</TD></TR></TABLE>";
 345+}
 346+
 347+
 348+
 349+function initieraLagrensAttribut()
 350+{
 351+ placera(helaMenynNamnDIV,placeringVanster,placeringToppen);
 352+ visa(helaMenynNamnDIV);
 353+ sattLagrensAttribut();
 354+}
 355+
 356+
 357+function geTotaltAntalStegNer(katalogNiva)
 358+{
 359+ tmpAntalSteg=0;
 360+ for (jj=0;jj<=katalogNiva;jj++)
 361+ {
 362+ tmpAntalSteg+=antalLagerNer[jj];
 363+ }
 364+ return tmpAntalSteg-katalogNiva;
 365+}
 366+
 367+
 368+
 369+
 370+
 371+function placeraVidDessaKoordinater()
 372+{
 373+ return ""+(new Array(placeringVanster+arIKatalogNiva*forskjutningAtVanster,placeringToppen+forskjutningNedat*arIKatalogNiva+geTotaltAntalStegNer(arIKatalogNiva)*varRutasHojd));
 374+}
 375+
 376+
 377+function visaDessaLager(lagerManTrycktPa, listaMedLager)
 378+{
 379+ tmpLagerVisades=lagerSomVisas[lagerManTrycktPa]
 380+ doljAllaLager();
 381+ listaMedLagerArray=listaMedLager.split(",")
 382+ for (iii=0;iii<listaMedLagerArray.length;iii++)
 383+ {
 384+ if (!(tmpLagerVisades==1 && listaMedLagerArray[iii]==lagerManTrycktPa)) //Om [lagret man trycker p� inte visas] och [vi kollar p� det lager jag tyckt p�]
 385+ {
 386+ lagerSomVisas[listaMedLagerArray[iii]]=1;
 387+ visa(menyNamnDIV+listaMedLagerArray[iii])
 388+ //break;
 389+ }
 390+ }
 391+}
 392+
 393+
 394+function doljAllaLager()
 395+{
 396+ for (iii=0;iii<antalUtplaceradeLager;iii++)
 397+ {
 398+ lagerSomVisas[iii]=0;
 399+ dolj(menyNamnDIV+iii)
 400+ }
 401+}
 402+
 403+function lagraLagretsAttribut(namn,ZIndex, xKor, yKor)
 404+{
 405+ allaLagersStartattribut[allaLagersStartattribut.length++]=new Array(namn,ZIndex, xKor, yKor);
 406+}
 407+
 408+function sattLagrensAttribut()
 409+{
 410+ for (i=0;i<antalUtplaceradeLager;i++)
 411+ {
 412+ placera(allaLagersStartattribut[i][0],allaLagersStartattribut[i][2],allaLagersStartattribut[i][3])
 413+ sattZIndex(allaLagersStartattribut[i][0],allaLagersStartattribut[i][1])
 414+ }
 415+}
 416+
 417+
 418+
 419+
 420+
 421+function skapaLager(typ,namn,url,target)
 422+{
 423+ typ=typ.toLowerCase();
 424+
 425+ if (target+""=="undefined" || target==null || target=="")
 426+ target=defaultTarget;
 427+
 428+ if (target.toLowerCase()=="_blank")
 429+ target="MyBlankWin";
 430+
 431+ if (url+""=="undefined" || url==null || url=="")
 432+ url="";
 433+
 434+ if (forstaGangenManSkriverUt)
 435+ {
 436+ forstaGangenManSkriverUt=false;
 437+ allTextAttSkrivaUt+=("<DIV ID='"+helaMenynNamnDIV+"'>");
 438+ allTextAttSkrivaUt+=(startHTMLRamRuntTabellHelaMenyn+"<TABLE BORDER="+ramRuntVarjeRuta+" CELLPADDING="+cellpaddingVarde+" CELLSPACING=0 WIDTH='"+varRutasBredd+"' BORDERCOLORDARK='"+fargKringVarjeRuta+"' BORDERCOLORLIGHT='"+fargKringVarjeRuta+"' BORDERCOLOR='"+fargKringVarjeRuta+"'>")
 439+ }
 440+
 441+ if (typ=="<end>")
 442+ {
 443+ allTextAttSkrivaUt+=("</TABLE>"+slutHTMLRamRuntTabell)
 444+ allTextAttSkrivaUt+=("</DIV>")
 445+
 446+ if (arIKatalogNiva>0)
 447+ alert("VARNING!\n\nDu har "+arIKatalogNiva+" st <menu> fler �n du har </menu>.\nAntalet <menu> och </menu> M�STE vara lika m�nga.\n\nScriptet kommer troligtvis inte att fungera om du inte r�ttar till felet!")
 448+ else if (arIKatalogNiva<0)
 449+ alert("VARNING!\n\nDu har "+(-arIKatalogNiva)+" st </menu> fler �n du har <menu>.\nAntalet <menu> och </menu> M�STE vara lika m�nga.\n\nScriptet kommer troligtvis inte att fungera om du inte r�ttar till felet!")
 450+ }
 451+ else if (typ=="<menu>")
 452+ {
 453+ antalLagerNer[antalLagerNer.length++]=0;
 454+ lagerSomVisas[lagerSomVisas.length++]=0;
 455+ indexPaLagerIHierarki[indexPaLagerIHierarki.length++]=-1;
 456+ buffradTextAttSkrivaUtPerLager[buffradTextAttSkrivaUtPerLager.length++]="";
 457+
 458+ indexPaLagerIHierarki[arIKatalogNiva]=antalUtplaceradeLager;
 459+
 460+ tmpIndexPaLagerIHierarkiStrang="";
 461+ for (ii=0;ii<indexPaLagerIHierarki.length;ii++)
 462+ {
 463+ if (indexPaLagerIHierarki[ii]==-1)
 464+ break;
 465+
 466+ tmpIndexPaLagerIHierarkiStrang+=indexPaLagerIHierarki[ii]+",";
 467+ }
 468+ tmpIndexPaLagerIHierarkiStrang=tmpIndexPaLagerIHierarkiStrang.substring(0,tmpIndexPaLagerIHierarkiStrang.length-1)
 469+
 470+ tmpIEInfo="";
 471+ tmpIckeIEAHREF="javascript:void(0)";
 472+ if (document.all)
 473+ {
 474+ tmpIEInfo="STYLE=\"cursor:hand\" onClick=\"visaDessaLager("+antalUtplaceradeLager+",'"+tmpIndexPaLagerIHierarkiStrang+"')\" onMouseOver=\"this.style.backgroundColor='"+menyerFargMedMus+"'\" onMouseOut=\"this.style.backgroundColor=''\"";
 475+ }
 476+ else
 477+ {
 478+ tmpIckeIEAHREF="javascript:visaDessaLager("+antalUtplaceradeLager+",'"+tmpIndexPaLagerIHierarkiStrang+"')";
 479+ }
 480+
 481+ if (arIKatalogNiva>0)
 482+ {
 483+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva]+=("<TR WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"'><TD CLASS='menyMenyTD' WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"' "+tmpIEInfo+"><A HREF=\""+tmpIckeIEAHREF+"\" CLASS='menyMenyA'>"+namn+"</A></TD></TR>");
 484+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva]+=("</TABLE>")
 485+ }
 486+ else
 487+ {
 488+ allTextAttSkrivaUt+=("<TR WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"'><TD CLASS='menyMenyTD' WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"' "+tmpIEInfo+"><A HREF=\""+tmpIckeIEAHREF+"\" CLASS='menyMenyA'>"+namn+"</A></TD></TR>");
 489+ allTextAttSkrivaUt+=("</TABLE>")
 490+ }
 491+
 492+ antalLagerNer[arIKatalogNiva]++;
 493+ arIKatalogNiva++;
 494+
 495+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva]+=("<DIV ID='"+menyNamnDIV+(antalUtplaceradeLager++)+"'>");
 496+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva]+=(startHTMLRamRuntTabell+"<TABLE BORDER="+ramRuntVarjeRuta+" CELLPADDING="+cellpaddingVarde+" CELLSPACING=0 WIDTH='"+varRutasBredd+"' BORDERCOLORDARK='"+fargKringVarjeRuta+"' BORDERCOLORLIGHT='"+fargKringVarjeRuta+"' BORDERCOLOR='"+fargKringVarjeRuta+"'>")
 497+
 498+ lagraLagretsAttribut(menyNamnDIV+(antalUtplaceradeLager-1),konstantForZIndex+arIKatalogNiva,placeraVidDessaKoordinater().split(",")[0],placeraVidDessaKoordinater().split(",")[1])
 499+
 500+ }
 501+ else if (typ=="</menu>")
 502+ {
 503+ antalLagerNer[arIKatalogNiva]=0;
 504+ arIKatalogNiva--;
 505+ indexPaLagerIHierarki[arIKatalogNiva]=-1;
 506+
 507+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva+1]+=("</TABLE>"+slutHTMLRamRuntTabell)
 508+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva+1]+=("</DIV>");
 509+ document.write(buffradTextAttSkrivaUtPerLager[arIKatalogNiva+1]);
 510+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva+1]="";
 511+
 512+ if (arIKatalogNiva>0)
 513+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva]+=("<TABLE BORDER="+ramRuntVarjeRuta+" CELLPADDING="+cellpaddingVarde+" CELLSPACING=0 WIDTH='"+varRutasBredd+"' BORDERCOLORDARK='"+fargKringVarjeRuta+"' BORDERCOLORLIGHT='"+fargKringVarjeRuta+"' BORDERCOLOR='"+fargKringVarjeRuta+"'>")
 514+ else
 515+ allTextAttSkrivaUt+=("<TABLE BORDER="+ramRuntVarjeRuta+" CELLPADDING="+cellpaddingVarde+" CELLSPACING=0 WIDTH='"+varRutasBredd+"' BORDERCOLORDARK='"+fargKringVarjeRuta+"' BORDERCOLORLIGHT='"+fargKringVarjeRuta+"' BORDERCOLOR='"+fargKringVarjeRuta+"'>")
 516+
 517+ }
 518+ else if (typ=="<link>")
 519+ {
 520+ tmpIEInfo="";
 521+ if (document.all)
 522+ {
 523+ tmpIEInfo="STYLE=\"cursor:hand\" onClick=\"window.open('"+url+"','"+target+"')\" onMouseOver=\"this.style.backgroundColor='"+lankarFargMedMus+"'\" onMouseOut=\"this.style.backgroundColor=''\"";
 524+ }
 525+ antalLagerNer[arIKatalogNiva]++;
 526+ if (arIKatalogNiva>0)
 527+ buffradTextAttSkrivaUtPerLager[arIKatalogNiva]+=("<TR WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"'><TD CLASS='menyLankarTD' WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"' "+tmpIEInfo+"><A HREF='"+url+"' TARGET='"+target+"' CLASS='menyLankarA'>"+namn+"</A><BR></TD></TR>");
 528+ else
 529+ allTextAttSkrivaUt+=("<TR WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"'><TD CLASS='menyLankarTD' WIDTH='"+varRutasBredd+"' HEIGHT='"+varRutasHojd+"' "+tmpIEInfo+"><A HREF='"+url+"' TARGET='"+target+"' CLASS='menyLankarA'>"+namn+"</A><BR></TD></TR>");
 530+ }
 531+ else if (typ+""=="undefined" || typ==null || typ=="")
 532+ alert("ERROR:\nDu har anropat 'skapaLager' utan att ange ett giltigt kommando!\n\nV�nligen anv�nd n�got av f�ljande kommandon:\n<menu>, <link> eller </menu>")
 533+ else
 534+ alert("ERROR:\n"+typ+" �r inte ett giltigt kommando.\nGiltiga kommandon �r:\n<menu>, <link> samt </menu>") //Ska inte kunna komma
 535+}
 536+
 537+
 538+
 539+
 540+
 541+
 542+
 543+// ###########################################################################
 544+// ################�NDRA INGET NEDAN OM DU INTE VET VAD DU G�R################
 545+// ###########################################################################
 546+
 547+//Notera, nya argument i denna "placera"!
 548+function placera(lager,hoger,ner) //Placerar ett lager exakt p� ett st�lle
 549+{
 550+ if (document.all)
 551+ {
 552+ document.all[lager].style.pixelLeft=hoger;
 553+ document.all[lager].style.pixelTop=ner;
 554+ }
 555+ else if (document.layers)
 556+ {
 557+ document.layers[lager].left=hoger;
 558+ document.layers[lager].top=ner;
 559+ }
 560+ else if (document.getElementById)
 561+ {
 562+ document.getElementById(lager).style.left=hoger;
 563+ document.getElementById(lager).style.top=ner;
 564+ }
 565+}
 566+
 567+
 568+
 569+
 570+function dolj(lager) //G�r ett lager osynligt
 571+{
 572+ if (document.all)
 573+ {
 574+ document.all[lager].style.visibility="hidden";
 575+ }
 576+ else if (document.layers)
 577+ {
 578+ document.layers[lager].visibility="hidden";
 579+ }
 580+ else if (document.getElementById)
 581+ {
 582+ document.getElementById(lager).style.visibility="hidden";
 583+ }
 584+}
 585+
 586+
 587+function visa(lager) //Visar ett lager
 588+{
 589+ if (document.all)
 590+ {
 591+ document.all[lager].style.visibility="visible";
 592+ }
 593+ else if (document.layers)
 594+ {
 595+ document.layers[lager].visibility="visible";
 596+ }
 597+ else if (document.getElementById)
 598+ {
 599+ document.getElementById(lager).style.visibility="visible";
 600+ }
 601+}
 602+
 603+
 604+function sattZIndex(lager,nyttZIndex) //Visar ett lager
 605+{
 606+ if (document.all)
 607+ {
 608+ document.all[lager].style.zIndex=nyttZIndex;
 609+ }
 610+ else if (document.layers)
 611+ {
 612+ document.layers[lager].zIndex=nyttZIndex;
 613+ }
 614+ else if (document.getElementById)
 615+ {
 616+ document.getElementById(lager).style.zIndex=nyttZIndex;
 617+ }
 618+}
 619+
 620+
 621+
 622+initieraNodvandigaVariabler();
 623+skrivUtMenyer();
 624+initieraLagrensAttribut();
 625+//-->
 626+</SCRIPT>
 627+
 628+
 629+
 630+</BODY>
 631+</HTML>
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpwhatisxerver.html
@@ -0,0 +1,63 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+<B>What is Xerver?</B>
 27+<P>
 28+ Xerver is a free web server and FTP server.
 29+ <BR>
 30+ You can use Xerver for several purposes:
 31+ <UL>
 32+ <LI> Run and test your CGI-scripts (Perl, PHP etc.) on your computer with a CGI-interface.
 33+ <LI> Allow your friends to download files from your hard drive.
 34+ <LI> Publish your homepage on internet with your own computer.
 35+ </UL>
 36+
 37+
 38+
 39+
 40+
 41+
 42+
 43+
 44+
 45+<P>
 46+<HR>
 47+<CENTER>
 48+<FONT SIZE="-1" FACE="arial,verdana">
 49+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 50+</FONT>
 51+</CENTER>
 52+
 53+
 54+
 55+
 56+</TD></TR>
 57+</TABLE>
 58+
 59+
 60+
 61+
 62+
 63+</BODY>
 64+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helpownerrorpages.html
@@ -0,0 +1,59 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+<B>How can I use my own error pages (for example "404 File Not Found")</B>
 28+<P>
 29+ Just edit the html-pages in the "errorHTML" directory.
 30+ <BR>
 31+ This directory will be created when you run Xerver for the very
 32+ first time.
 33+
 34+
 35+
 36+
 37+
 38+
 39+
 40+
 41+<P>
 42+<HR>
 43+<CENTER>
 44+<FONT SIZE="-1" FACE="arial,verdana">
 45+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 46+</FONT>
 47+</CENTER>
 48+
 49+
 50+
 51+
 52+</TD></TR>
 53+</TABLE>
 54+
 55+
 56+
 57+
 58+
 59+</BODY>
 60+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/index.html
@@ -0,0 +1,15 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+
 7+
 8+<FRAMESET COLS="270,*" BORDER=0 FRAMEBORDER=0>
 9+ <FRAME SRC="menu.html" NAME="menu">
 10+ <FRAME SRC="main.html" NAME="main">
 11+</FRAMESET>
 12+<NOFRAMES>
 13+You need frames to view this helpfile.
 14+</NOFRAMES>
 15+
 16+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/helprunxerver.html
@@ -0,0 +1,60 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Help Online!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" LINK="blue" TEXT="black" VLINK="red" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="5" MARGINWIDTH="5">
 7+
 8+
 9+
 10+
 11+
 12+
 13+<TABLE WIDTH="500" BORDER=0 CELLPADDING=0 CELLSPACING=0>
 14+<TR><TD>
 15+
 16+
 17+<FONT FACE="arial" SIZE="-1">
 18+
 19+<CENTER>
 20+<H2>Welcome to Xerver Help Online!</H2>
 21+</CENTER>
 22+<BR>
 23+
 24+
 25+
 26+
 27+
 28+<B>I can't run Xerver. Why?</B>
 29+<P>
 30+ Xerver is made in Java and is 100% compatible with all operating
 31+ systems that have a Java interpreter installed. If you don't have
 32+ Java installed on your computer, download it from sun's website at:
 33+ <BR>
 34+ <A HREF="http://java.sun.com/j2se/downloads.html" TARGET="_blank">http://java.sun.com/j2se/downloads.html</A>
 35+
 36+
 37+
 38+
 39+
 40+
 41+
 42+<P>
 43+<HR>
 44+<CENTER>
 45+<FONT SIZE="-1" FACE="arial,verdana">
 46+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_blank">Xerver Homepage</A>
 47+</FONT>
 48+</CENTER>
 49+
 50+
 51+
 52+
 53+</TD></TR>
 54+</TABLE>
 55+
 56+
 57+
 58+
 59+
 60+</BODY>
 61+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall1.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/help/phpinstall1.jpg
___________________________________________________________________
Added: svn:mime-type
162 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/ThanksTo.txt
@@ -0,0 +1,34 @@
 2+##############################################################
 3+#### The following people have contributed to Xerver: ####
 4+##############################################################
 5+
 6+
 7+##############################################################
 8+## Omid Rouhani ##
 9+## http://www.JavaScript.nu/ ##
 10+## http://www.JavaScript.nu/xerver/ ##
 11+## ##
 12+## Xerver was originally written by Omid Rouhani, ##
 13+## a student at Chalmers University of Technology, ##
 14+## in 2002. Xerver 3.10 was the first version of Xerver ##
 15+## being open source. ##
 16+##############################################################
 17+
 18+
 19+##############################################################
 20+## Anders L�fving ##
 21+## http://hem.passagen.se/glasnic/ ##
 22+## ##
 23+## Anders made the wizard picture which is used during ##
 24+## the setup. ##
 25+## Thanks Anders. ##
 26+##############################################################
 27+
 28+
 29+##############################################################
 30+## Many thanks to all of you who have BETA-tested Xerver! ##
 31+## Without your help Xerver would not be what it is today. ##
 32+## No need to mention any names. You know who you are ##
 33+## and how much your help has ment to me! ##
 34+##############################################################
 35+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddProtDirSetup.html
@@ -0,0 +1,70 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Add Protected Folder</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function getQueryLine(name)
 9+{
 10+ query=location.search.substring(1,location.search.length).split("&");
 11+ for (i=0; i<query.length; i++)
 12+ {
 13+ tmp=query[i].split("=");
 14+ thisName=unescape(tmp[0]);
 15+ thisValue=unescape(tmp[1]);
 16+ if (name==thisName)
 17+ return thisValue;
 18+ }
 19+
 20+ return "";
 21+}
 22+
 23+//-->
 24+</SCRIPT>
 25+
 26+</HEAD>
 27+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 28+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 29+<TR><TD>
 30+<FONT FACE="arial,verdana" SIZE="-1">
 31+<B>Which folder do you want to protect with a username/password?</B>
 32+<BR>
 33+<FORM NAME="addProtWinForm" onSubmit="opener.changeElementShareSubfolders(opener.getIndexByFolder(document.addProtWinForm.folder.value),document.addProtWinForm.subfolders.checked);opener.changeElementNewRealm(opener.getIndexByFolder(document.addProtWinForm.folder.value),document.addProtWinForm.realm.value);return false;">
 34+
 35+<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=0>
 36+<TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 37+<SCRIPT LANGUAGE="javascript">
 38+<!--
 39+ document.write("<B>Folder:</B></TD><TD><TT>"+getQueryLine('folderValue')+"</TT><INPUT TYPE=hidden NAME='folder' VALUE='"+getQueryLine('folderValue')+"' SIZE=40>");
 40+//-->
 41+</SCRIPT>
 42+</FONT></TD></TR><TR><TD COLSPAN=2><FONT FACE="arial,verdana" SIZE="-1">
 43+<SCRIPT LANGUAGE="javascript">
 44+<!--
 45+ document.write("<INPUT TYPE=checkbox NAME='subfolders' SIZE=40 "+getQueryLine('subfoldersValue')+"> Check this box if you also want to protect all subfolders.");
 46+//-->
 47+</SCRIPT>
 48+</FONT></TD></TR><TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 49+<SCRIPT LANGUAGE="javascript">
 50+<!--
 51+ document.write("<B>Zone:</B></TD><TD><INPUT TYPE=text NAME='realm' SIZE=15 VALUE='"+getQueryLine('realmValue')+"'><INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick=\"top.opener.showAlertXerverHelp('Each folder must belong to one (and only one) zone.\\nWhen a user goes from one zone to another he will be prompted for a username and password again, disregarding if he previously has login.\\nThis is for increased security.\\nAlso, if logging is enabled you can see which user has login to which zone.\\n\\nLet us say someone login with User:AAA and Pass:BBB to a folder which belongs to zone CCC.\\nWhen this user visits another folder which belongs to zone DDD, he has to login again.');\">");
 52+//-->
 53+</SCRIPT>
 54+</FONT></TD></TR><TR><TD COLSPAN=2>
 55+ <FONT COLOR="red" SIZE="-2" FACE="arial,verdana">
 56+ If you are unsure about what this means, please enter the same zone name
 57+ for all your folders (for example: enter "Xerver" as your zone for every folder
 58+ you protect).
 59+ </FONT>
 60+</TD></TR><TR><TD COLSPAN=2>
 61+<INPUT TYPE=button VALUE="Save" onClick="opener.changeElementShareSubfolders(opener.getIndexByFolder(document.addProtWinForm.folder.value),document.addProtWinForm.subfolders.checked);opener.changeElementNewRealm(opener.getIndexByFolder(document.addProtWinForm.folder.value),document.addProtWinForm.realm.value);opener.updateProtFoldersList();opener.document.myForm.allFoldersAndZones.selectedIndex=opener.getIndexByFolder(document.addProtWinForm.folder.value);top.close();">
 62+</TD></TR>
 63+</TABLE>
 64+
 65+
 66+</FORM>
 67+
 68+</TD></TR>
 69+</TABLE>
 70+</BODY>
 71+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddProtSetup.html
@@ -0,0 +1,95 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Add Protected Folder</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function submitForm()
 9+{
 10+ if (document.addProtWinForm.realm.value=="")
 11+ document.addProtWinForm.realm.value="Xerver";
 12+
 13+ if (document.addProtWinForm.folder.value=="")
 14+ {
 15+ top.opener.showAlertXerverHelp("Please enter something in all fields.");
 16+ return false;
 17+ }
 18+
 19+ if ( document.addProtWinForm.folder.value.indexOf("<<@>>")!=-1 || document.addProtWinForm.folder.value.indexOf("<<$>>")!=-1 ||
 20+ document.addProtWinForm.realm.value.indexOf("<<@>>")!=-1 || document.addProtWinForm.realm.value.indexOf("<<$>>")!=-1)
 21+ {
 22+ top.opener.showAlertXerverHelp("No fields should contain <<@>> or <<$>>.");
 23+ return false;
 24+ }
 25+
 26+ if ( document.addProtWinForm.folder.value.indexOf("&")!=-1 || document.addProtWinForm.realm.value.indexOf("&")!=-1)
 27+ {
 28+ top.opener.showAlertXerverHelp("No fields should contain &.");
 29+ return false;
 30+ }
 31+
 32+ self.location.replace("/?action=showAddProtFrameSetup&showInFrame=addUser&folderValue="+escape(document.addProtWinForm.folder.value)+"&realmValue="+escape(document.addProtWinForm.realm.value)+"&subfoldersValue="+escape(document.addProtWinForm.subfolders.checked));
 33+ return true;
 34+}
 35+
 36+
 37+
 38+function dirChoosen(path)
 39+{
 40+ document.addProtWinForm.folder.value=path;
 41+}
 42+
 43+function browseFolders()
 44+{
 45+ browseWindow=window.open('/?action=chooseDirectory&currentPath='+document.addProtWinForm.folder.value,'browse','width=500,height=400,scrollbars=yes')
 46+ browseWindow.focus();
 47+}
 48+//-->
 49+</SCRIPT>
 50+
 51+</HEAD>
 52+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 53+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 54+<TR><TD>
 55+<FONT FACE="arial,verdana" SIZE="-1">
 56+<B>Which folder do you want to protect with a username/password?</B>
 57+<BR>
 58+<FORM NAME="addProtWinForm" ACTION="/?action=showAddProtUserSetup" onSubmit="submitForm();return false;">
 59+
 60+<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=0>
 61+<TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 62+ <B>Folder:</B></TD><TD><INPUT TYPE=text NAME="folder" SIZE=40><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse..."><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="top.opener.showAlertXerverHelp('Enter the location of the folder you want to protect with a password.\n\nTo help you remember the exact location of the folder, you can press the \'Browse\' button.');">
 63+</FONT></TD></TR><TR><TD COLSPAN=2>
 64+ <FONT SIZE="-2" FACE="arial,verdana">
 65+ You can use the browse button if you don't remember the exact location of your folder.
 66+ <BR>
 67+ <FONT COLOR="red">Remember that you should share a directory, not a single file.</FONT>
 68+ </FONT>
 69+ <BR>
 70+ <BR>
 71+</FONT></TD></TR><TR><TD COLSPAN=2><FONT FACE="arial,verdana" SIZE="-1">
 72+ <INPUT TYPE=checkbox NAME="subfolders" SIZE=40> Check this box if you also want to protect all subfolders.
 73+ <BR>
 74+ <BR>
 75+</FONT></TD></TR><TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 76+ <B>Zone (Resource):</B></TD><TD><INPUT TYPE=text NAME="realm" SIZE=15 VALUE="Xerver"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="top.opener.showAlertXerverHelp('Each folder must belong to one (and only one) zone.\nWhen a user goes from one zone to another he will be prompted for a username and password again, disregarding if he previously has login.\nThis is for increased security.\nAlso, if logging is enabled you can see which user has login to which zone.\n\nLet us say someone login with User:AAA and Pass:BBB to a folder which belongs to zone CCC.\nWhen this user visits another folder which belongs to zone DDD, he has to login again.');">
 77+</FONT></TD></TR><TR><TD COLSPAN=2>
 78+ <FONT COLOR="red" SIZE="-2" FACE="arial,verdana">
 79+ If you are unsure about what this means, please enter the same zone name
 80+ for all your folders (for example: enter "Xerver" as your zone for every folder
 81+ you protect).
 82+ </FONT>
 83+ <BR>
 84+ <BR>
 85+</TD></TR><TR><TD COLSPAN=2>
 86+<INPUT TYPE=button VALUE="Save" onClick="submitForm()">
 87+</TD></TR>
 88+</TABLE>
 89+
 90+
 91+</FORM>
 92+
 93+</TD></TR>
 94+</TABLE>
 95+</BODY>
 96+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddScriptExtSetup.html
@@ -0,0 +1,36 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Add Script Extension</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 7+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 8+<TR><TD>
 9+<FONT FACE="arial,verdana" SIZE="-1">
 10+<B>Which file extension do you want to be a runnable file?</B>
 11+<BR>
 12+<FORM NAME="addScriptExtWinForm" onSubmit="if (document.addScriptExtWinForm.runnableScriptExtension.value.indexOf('.')==-1){opener.addThisScriptExtension(document.addScriptExtWinForm.runnableScriptExtension.value,document.addScriptExtWinForm.runnableScriptCommand.value);}else{alert('You have a . (dot) in your extension. Your extension can\'t contain a dot.');};return false;">
 13+
 14+File extension: <INPUT TYPE=text NAME="runnableScriptExtension" SIZE=10>
 15+<BR>
 16+Command to run script with: <INPUT TYPE=text NAME="runnableScriptCommand" SIZE=10>
 17+
 18+<BR>
 19+<INPUT TYPE=button VALUE="Add to list" onClick="if (document.addScriptExtWinForm.runnableScriptExtension.value.indexOf('.')==-1){opener.addThisScriptExtension(document.addScriptExtWinForm.runnableScriptExtension.value,document.addScriptExtWinForm.runnableScriptCommand.value);}else{alert('You have a . (dot) in your extension. Your extension can\'t contain a dot.');}"><INPUT TYPE="button" VALUE="Close" onClick="top.close();">
 20+
 21+</FONT>
 22+</FORM>
 23+
 24+<PRE>
 25+For example:
 26+Extension Command
 27+pl perl
 28+cgi perl
 29+exe
 30+php php
 31+phtml php
 32+</PRE>
 33+
 34+</TD></TR>
 35+</TABLE>
 36+</BODY>
 37+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagestopbutton.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagestopbutton.gif
___________________________________________________________________
Added: svn:mime-type
138 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep1.html
@@ -0,0 +1,146 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 1 / 9 ]</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function showXerverHelp(helpTxt,titleTxt)
 9+{
 10+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 11+ titleTxt="Xerver Wizard Help";
 12+
 13+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 14+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 15+
 16+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 17+ addDirWindow.focus();
 18+}
 19+
 20+function showAlertXerverHelp(helpTxt)
 21+{
 22+ showXerverHelp(helpTxt,"");
 23+}
 24+
 25+function submitForm()
 26+{
 27+ logFile = document.myForm.logFile.value;
 28+ if (logFile.indexOf("\"") != -1)
 29+ {
 30+ showAlertXerverHelp("Your log file can not contain a \" character. Please enter a valid file name or the absolute path to the file without any \" characters.")
 31+ return false;
 32+ }
 33+
 34+
 35+ nyAddress="action=wizardStep2&direction=forward&save=yes";
 36+
 37+ nyAddress+="&portNr="+document.myForm.portNr.value;
 38+ nyAddress+="&allowFolderListing="+document.myForm.allowFolderListing.options[document.myForm.allowFolderListing.selectedIndex].value;
 39+ nyAddress+="&shareHiddenFiles="+document.myForm.shareHiddenFiles.options[document.myForm.shareHiddenFiles.selectedIndex].value;
 40+ nyAddress+="&allowCGIScript="+document.myForm.allowCGIScript.options[document.myForm.allowCGIScript.selectedIndex].value;
 41+ nyAddress+="&logFile="+document.myForm.logFile.value;
 42+
 43+// alert(nyAddress)
 44+ self.location.replace("/?"+escape(nyAddress));
 45+ return true;
 46+}
 47+//-->
 48+</SCRIPT>
 49+
 50+</HEAD>
 51+<BODY BGCOLOR="white" TEXT="black">
 52+<TABLE WIDTH='400' BORDER='0'>
 53+<TR><TD>
 54+<FONT FACE='verdana,arial'>
 55+<CENTER>
 56+<H3>Xerver Setup [ 1 / 9 ]</H3>
 57+</CENTER>
 58+</FONT>
 59+<FONT FACE='arial,verdana' SIZE='-1'>
 60+<P>
 61+
 62+
 63+<FORM NAME="myForm" ACTION="/" METHOD=GET onSubmit="return false;">
 64+
 65+
 66+<B>Port:</B> <INPUT TYPE="text" NAME="portNr" VALUE="" onChange="if (this.value=='32123'){this.value='80';showAlertXerverHelp('Please don\'t use the port 32123.\nIt\'s reserved for Xervers Setup tool.\nFeel free to use anything but 32123.');}else if ((this.value>=49151 || this.value<=1024) && this.value!=80){this.value='80';
 67+showAlertXerverHelp('Please don\'t use that port number.\nYou must pick a port between 1024 and 49151 (or port 80, which is the default HTTP port).');}">
 68+<INPUT TYPE='button' VALUE='&nbsp;&nbsp;?&nbsp;&nbsp;' onClick="showXerverHelp('If you don\'t know what this is, enter 80 in this field.\n\nYou will be able to see your webpages from:\nhttp://localhost:PORTNR/\n\nExample: If you enter 5080 in this field, you can visit your website via:\nhttp://localhost:5080/\n')">
 69+
 70+<BR>
 71+Please choose which port you want to use. We recommend port "80",
 72+which is the standard port for web servers. If you are already using port 80
 73+(or if port 80 doesn't work for you), you might want to use port 5080,
 74+which is also a common port for web servers.
 75+If you don't want use port 80, you must pick a port between 1024 and 49151.
 76+<P>
 77+<BR>
 78+
 79+
 80+<B>Directory listing allowed?</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('If you allow directory listing, people will be able to see which files and folders you have in ALL your shared directories.\nKeep in mind, if you have an index file in your directory, the directory won\'t be listed. The index file will be showed instead.')">
 81+<BR>
 82+<SELECT NAME="allowFolderListing">
 83+ <OPTION VALUE="0">Don't allow directory listing</OPTION>
 84+ <OPTION VALUE="1" SELECTED>Allow directory listing</OPTION>
 85+</SELECT>
 86+<BR>
 87+If you choose to allow directory listing you will allow people to browse your shared directories.
 88+<P>
 89+<BR>
 90+
 91+<B>Share hidden files?</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('This option allows you to protect hidden files from being viewed by visitors to your webserver.\n\nIf you don\'t share your hidden files people can\'t download your hidden files, nor can they see the hidden files if they list the content of a folder (Windows: files marked as hidden in the file system; UNIX: files with a name starting with a dot(.)).');">
 92+<BR>
 93+<SELECT NAME="shareHiddenFiles">
 94+ <OPTION VALUE="0">Don't share hidden files</OPTION>
 95+ <OPTION VALUE="1" SELECTED>Share hidden files</OPTION>
 96+</SELECT>
 97+<BR>
 98+If you choose to not share hidden files, no hidden files will be shared,
 99+even if they are in a folder you have shared.
 100+<P>
 101+<BR>
 102+
 103+
 104+
 105+
 106+<B>Allow CGI-scripts to run?</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('If you want to run scripts written in Perl, PHP (or any other scripts) you have to enable CGI-scripts here.\nIf you enable CGI, the Setup Wizard will later on ask you for more details about which scripts you want to run.');">
 107+<BR>
 108+<SELECT NAME="allowCGIScript">
 109+ <OPTION VALUE="0">Don't enable CGI-scripts</OPTION>
 110+ <OPTION VALUE="1" SELECTED>Enable CGI-scripts</OPTION>
 111+</SELECT>
 112+<BR>
 113+If you for example want to set up a guestbook, wwwboard or poll you must enable CGI-scripts.
 114+<P>
 115+<BR>
 116+
 117+
 118+
 119+<B>Log file name:</B> <INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('This is a traditional log file with information such as what files are being accessed, at what time and by what IP address.\n\nIf you prefer not to have a log file, leave this field blank.');">
 120+<BR>
 121+<INPUT NAME="logFile" TYPE=text>
 122+<BR>
 123+For example <I>XerverWebserver.log</I> or <I>c:\logs\xerver.log</I>.
 124+<BR>
 125+Unless an absolute path is specified, the log file is created in the Xerver directory.
 126+<P>
 127+<BR>
 128+
 129+
 130+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 131+<TR><TD>
 132+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardGeneralSettings&direction=back')">
 133+</TD><TD ALIGN="right">
 134+<P ALIGN="right">
 135+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 136+</P>
 137+</TD></TR>
 138+</TABLE>
 139+
 140+
 141+</FORM>
 142+
 143+
 144+</FONT>
 145+</TD></TR>
 146+</TABLE>
 147+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagewizardbig.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagewizardbig.gif
___________________________________________________________________
Added: svn:mime-type
1148 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizGeneralSettings.html
@@ -0,0 +1,192 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Setup!</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE="javascript">
 8+<!--
 9+function setupXerver()
 10+{
 11+ if (navigator.appVersion.toLowerCase().indexOf("win")==-1) //user uses windows windows
 12+ {
 13+ rootPath="/";
 14+ sharedPaths="/*";
 15+ }
 16+ else
 17+ {
 18+ rootPath="c:\\";
 19+ sharedPaths="c:\\*";
 20+ }
 21+
 22+
 23+
 24+ for (i=0; i<document.myForm.myChoice.length; i++)
 25+ if (document.myForm.myChoice[i].checked)
 26+ {
 27+ if (document.myForm.myChoice[i].value=="public")
 28+ {
 29+ indexNames="index.html,index.htm,index.shtml,default.html,default.asp,index.php,index.phtml,index.pl,index.cgi";
 30+ fileExtensions="";
 31+ runnableExtensions="php=php,php3=php,php4=php,phtml=php,pl=perl,cgi=perl,exe=,bat=";
 32+ aliasNames="";
 33+ protectedFolders="";
 34+ allowFolderListing="1";
 35+ allowTheseFileExtensions="0";
 36+ useLowSystemResources="2";
 37+ allowCGIScript="1";
 38+ }
 39+ else if (document.myForm.myChoice[i].value=="testCGI")
 40+ {
 41+ indexNames="index.html,index.htm,index.shtml,default.html,default.asp,index.php,index.phtml,index.pl,index.cgi";
 42+ fileExtensions="";
 43+ runnableExtensions="php=php,php3=php,php4=php,phtml=php,pl=perl,cgi=perl,exe=,bat=";
 44+ aliasNames="";
 45+ protectedFolders="c:\\*<<@>>Xerver<<@>>";
 46+ allowFolderListing="1";
 47+ allowTheseFileExtensions="0";
 48+ useLowSystemResources="2";
 49+ allowCGIScript="1";
 50+ }
 51+ else if (document.myForm.myChoice[i].value=="fileSharing")
 52+ {
 53+ indexNames="";
 54+ fileExtensions="";
 55+ runnableExtensions="php=php,php3=php,php4=php,phtml=php,pl=perl,cgi=perl,exe=,bat=";
 56+ aliasNames="";
 57+ protectedFolders="c:\\*<<@>>Xerver<<@>>";
 58+ allowFolderListing="1";
 59+ allowTheseFileExtensions="0";
 60+ useLowSystemResources="2";
 61+ allowCGIScript="0";
 62+ }
 63+ else if (document.myForm.myChoice[i].value=="nothing")
 64+ {
 65+ self.location.replace("/?action=wizardStep1&direction=forward");
 66+ break;
 67+ }
 68+
 69+ self.location.replace("/?action=wizardStep1&direction=forward&save=yes"+
 70+ "&rootPath="+escape(rootPath)+
 71+ "&sharedPaths="+escape(sharedPaths)+
 72+ "&indexNames="+escape(indexNames)+
 73+ "&fileExtensions="+escape(fileExtensions)+
 74+ "&runnableExtensions="+escape(runnableExtensions)+
 75+ "&aliasNames="+escape(aliasNames)+
 76+ "&protectedFolders="+escape(protectedFolders)+
 77+ "&allowFolderListing="+escape(allowFolderListing)+
 78+ "&allowTheseFileExtensions="+escape(allowTheseFileExtensions)+
 79+ "&useLowSystemResources="+escape(useLowSystemResources)+
 80+ "&allowCGIScript="+escape(allowCGIScript));
 81+ }
 82+}
 83+
 84+//-->
 85+</SCRIPT>
 86+
 87+
 88+</HEAD>
 89+<BODY BGCOLOR="white" TEXT="black">
 90+<TABLE WIDTH='400' BORDER='0'>
 91+<TR><TD>
 92+<FONT FACE='verdana,arial'>
 93+<CENTER>
 94+<H3>Welcome to Xerver Setup!</H3>
 95+</CENTER>
 96+</FONT>
 97+<FONT FACE='arial,verdana' SIZE='-1'>
 98+<P>
 99+
 100+
 101+<FORM NAME="myForm" ACTION="/" METHOD=get onSubmit="return false;">
 102+
 103+
 104+<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
 105+<TR><TD>
 106+<IMG SRC='?action=showSmallWizard' BORDER=0>
 107+</TD><TD>
 108+<B>
 109+<FONT FACE='arial,verdana' SIZE='-1'>
 110+<!--
 111+Hmm, before we start<BR>
 112+the setup, tell me for<BR>
 113+what purpose you are<BR>
 114+going to use Xerver.<P>
 115+After you tell me this<BR>
 116+I will automatically<BR>
 117+configure Xerver for<BR>
 118+your needs.
 119+-->
 120+<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#eeeeee">
 121+<TR><TD>
 122+<FONT FACE='arial,verdana' SIZE='-1'>
 123+This setup consists of 9 quick steps.
 124+<BR>
 125+You can use the menu to the left to jump to another step in this setup.
 126+<BR>
 127+However, changes you make will only be saved when you press the Next-button (below).
 128+</FONT>
 129+</TD></TR>
 130+</TABLE>
 131+<P>
 132+By telling the Xerver auto configuration tool
 133+for what purpose are you going to use the server
 134+Xerver will automatically be configured
 135+to best suit your needs.
 136+<P>
 137+You can of course change settings again during the
 138+setup if you are not satisfied with the default configuration.
 139+
 140+</FONT>
 141+</B>
 142+</TD></TR>
 143+</TABLE>
 144+<BR>
 145+
 146+<B>
 147+<FONT FACE='arial,verdana' SIZE='-1'>
 148+<INPUT TYPE="radio" NAME="myChoice" VALUE="public">
 149+I will use Xerver as a public webserver,
 150+allowing everyone to view my homepage(s).
 151+<P>
 152+
 153+<INPUT TYPE="radio" NAME="myChoice" VALUE="testCGI">
 154+I want to use Xerver to test my CGI-scripts
 155+on my local computer. No one but myself should
 156+be able to read the content on my hard drive.
 157+<P>
 158+
 159+<INPUT TYPE="radio" NAME="myChoice" VALUE="fileSharing">
 160+I want to use Xerver as a file-sharing server.
 161+Only people with a username and a password
 162+should have access to the files I have shared.
 163+<P>
 164+
 165+<INPUT TYPE="radio" NAME="myChoice" CHECKED VALUE="nothing">
 166+<FONT COLOR="red">I have run setup before! Don't run auto config!</FONT>
 167+<P>
 168+
 169+
 170+</FONT>
 171+<FONT SIZE="-2" FACE="verdana,arial">
 172+Note: Please choose the option which <U>best</U>
 173+describes your needs. After this step Xerver
 174+will be configured and you will
 175+be taken to Xerver Setup, where you can change
 176+settings to Xerver.
 177+</FONT>
 178+</B>
 179+
 180+
 181+<P ALIGN="right">
 182+<INPUT TYPE="button" VALUE="Next Step --&gt;" onClick="setupXerver()">
 183+</P>
 184+
 185+</FORM>
 186+
 187+
 188+</FONT>
 189+</TD></TR>
 190+</TABLE>
 191+
 192+</BODY>
 193+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep3.html
@@ -0,0 +1,247 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 3 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+gotWindowsWarning=false;
 29+function haveSeenWindowsWarning()
 30+{
 31+ if (navigator.appVersion.toLowerCase().indexOf("win")==-1) //Om man inte har windows
 32+ return true; // S� s�ger vi att vi redan sett meddelandet s� vi slipper se det
 33+
 34+ if (!gotWindowsWarning)
 35+ {
 36+ gotWindowsWarning=true;
 37+ return false;
 38+ }
 39+ return true;
 40+}
 41+
 42+
 43+function suggestRoot(allData) //Suggest the shortest folder-name as the root folder... (this will only be run if no root has already been suggested)
 44+{
 45+ allFolders=allData.split(",");
 46+
 47+ //remove * at end of folders
 48+ for (i=0; i<allFolders.length; i++)
 49+ if (allFolders[i].substring(allFolders[i].length-1)=="*")
 50+ allFolders[i]=allFolders[i].substring(0,allFolders[i].length-1)
 51+
 52+ //if folders exists (it must exist by now, I think)
 53+ if (allFolders.length>0)
 54+ {
 55+ suggestedRoot=allFolders[0]; //The first folder is the suggested root...
 56+ for (i=0; i<allFolders.length; i++)
 57+ if (allFolders[i].length<suggestedRoot.length) //...unless there is a folder with a shorter name...
 58+ suggestedRoot=allFolders[i];
 59+
 60+ document.myForm.rootPath.value=suggestedRoot;
 61+ }
 62+}
 63+
 64+
 65+
 66+
 67+
 68+function fixaRattMedSlash(url)
 69+{
 70+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 71+ {
 72+ if (url.indexOf("/")!=-1) //om man har / i url...
 73+ {
 74+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a UNIX-style path.\n\nA path in Windows shall not use /, but instead \\.\nExamples:\nWrong: c:/windows/\nCorrect: c:\\windows\\\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "/","\\")))
 75+ {
 76+ gotWindowsWarning=false; //Visa varningen fram�ver
 77+ return sokOchErsatt(url, "/","\\");
 78+ }
 79+ else
 80+ {
 81+ return url;
 82+ }
 83+ }
 84+ else
 85+ {
 86+ return url;
 87+ }
 88+ }
 89+ else
 90+ {
 91+ if (url.indexOf("\\")!=-1) //om man har \ i url...
 92+ {
 93+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a Windows path.\n\nA path in UNIX, Linux or Mac shall not use \\, but instead /.\nExamples:\nWrong: \\files\\\nCorrect: /files/\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "\\","//")))
 94+ {
 95+ gotWindowsWarning=false; //Visa varningen fram�ver
 96+ return sokOchErsatt(url, "\\","//");
 97+ }
 98+ else
 99+ {
 100+ return url;
 101+ }
 102+ }
 103+ else
 104+ {
 105+ return url;
 106+ }
 107+ }
 108+}
 109+
 110+//Denna funktion l�gger till / eller \ beroende p� vad som redan finns i "url".
 111+function fixaRattMedSlashIslutet(url)
 112+{
 113+ if (url.substring(url.length-1)!="\\" && url.substring(url.length-1)!="/") //Man har inte n�gon slash i slutet
 114+ {
 115+ if (url.indexOf("\\")!=-1) //Man har redan \ i url
 116+ {
 117+ url+="\\";
 118+ }
 119+ else// if (url.indexOf("/")!=-1)
 120+ {
 121+ url+="/";
 122+ }
 123+ }
 124+
 125+ return url;
 126+}
 127+
 128+
 129+function sokOchErsatt(bigString, gammalStr, nyStr) //S�k "bigString" efter "gammalStr" och ers�tt med "NyStr"
 130+{
 131+ storStrang=bigString;
 132+ for (i=0; i<=storStrang.length-gammalStr.length; i++)
 133+ {
 134+ if (storStrang.substring(i,i+gammalStr.length)==(gammalStr))
 135+ {
 136+ storStrang=storStrang.substring(0,i)+nyStr+storStrang.substring(i+gammalStr.length);
 137+ i+=nyStr.length-1; //Utan detta s� g�r loopen f�r all evighet om man t.ex. har str�ngen "ab/cd" och ers�tter "/" med "//"
 138+ }
 139+ }
 140+ return storStrang;
 141+}
 142+
 143+
 144+function updateRootPath()
 145+{
 146+ theRoot=document.myForm.rootPath.value;
 147+ theRoot=fixaRattMedSlash(theRoot);
 148+ theRoot=fixaRattMedSlashIslutet(theRoot);
 149+ document.myForm.rootPath.value=theRoot;
 150+}
 151+
 152+
 153+function submitForm()
 154+{
 155+ updateRootPath();
 156+
 157+ nyAddress="action=wizardStep4&direction=forward&save=yes";
 158+
 159+ nyAddress+="&rootPath="+escape(document.myForm.rootPath.value);
 160+
 161+// alert(nyAddress)
 162+ self.location.replace("/?"+nyAddress);
 163+ return true;
 164+}
 165+
 166+
 167+
 168+
 169+function dirChoosen(path)
 170+{
 171+ document.myForm.rootPath.value=path;
 172+}
 173+
 174+function browseFolders()
 175+{
 176+ browseWindow=window.open('/?action=chooseDirectory&currentPath='+document.myForm.rootPath.value,'browse','width=500,height=400,scrollbars=yes')
 177+ browseWindow.focus();
 178+}
 179+//-->
 180+</SCRIPT>
 181+
 182+
 183+</HEAD>
 184+<BODY BGCOLOR="white" TEXT="black">
 185+<TABLE WIDTH='400' BORDER='0'>
 186+<TR><TD>
 187+<FONT FACE='verdana,arial'>
 188+<CENTER>
 189+<H3>Xerver Setup [ 3 / 9 ]</H3>
 190+</CENTER>
 191+</FONT>
 192+<FONT FACE='arial,verdana' SIZE='-1'>
 193+<P>
 194+
 195+
 196+<FORM NAME="myForm" ACTION="/" METHOD=get>
 197+
 198+
 199+
 200+
 201+<B>Your Root:</B> <INPUT TYPE="text" NAME="rootPath" VALUE="c:\" SIZE="50" onChange="updateRootPath()"><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse..."><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('If you are unsure about what you shall enter here, we recommend that you enter c:\\ (if you are using Microsoft Windows).\nHowever, if you know that you won\'t share files outside an particular folder, such as c:\\John\\homepages\\, you might want to use c:\\John\\homepages\\ as your root.')">
 202+<P>
 203+
 204+
 205+
 206+
 207+
 208+<TABLE BORDER=1 BGCOLOR="#cccccc" CELLSPACING=0 CELLPADDING=2>
 209+<TR BGCOLOR="#aaaaaa"><TD>
 210+<FONT FACE='arial,verdana' SIZE='-1'>
 211+<B>What is a root?</B>
 212+</FONT>
 213+</TD></TR><TR><TD>
 214+<FONT FACE='arial,verdana' SIZE='-1'>
 215+Let's say your root is <B>c:\AAA\</B>.
 216+<BR>
 217+When you visit <B>http://www.yourserver.com/</B> you will see the files and folders in <B>c:\AAA\</B>.
 218+<BR>
 219+When you visit <B>http://www.yourserver.com/BBB/</B> you will see the files and folders in <B>c:\AAA\BBB\</B>.
 220+<P>
 221+<BR>
 222+<P>
 223+<B>Advanced users:</B> You will later be able to create "virtual directories" (also known as "alias").
 224+
 225+</FONT>
 226+</TD></TR>
 227+</TABLE>
 228+<P>
 229+<BR>
 230+
 231+
 232+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 233+<TR><TD>
 234+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep2&direction=back')">
 235+</TD><TD ALIGN="right">
 236+<P ALIGN="right">
 237+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 238+</P>
 239+</TD></TR>
 240+</TABLE>
 241+
 242+</FORM>
 243+
 244+
 245+</FONT>
 246+</TD></TR>
 247+</TABLE>
 248+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddProtFrameSetup.html
@@ -0,0 +1,54 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Add Protected Folder</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function addThisProt(theFolder, theRealm, theUserName, thePass1, thePass2, subfolders)
 9+{
 10+ opener.addThisProt(theFolder, theRealm, theUserName, thePass1, thePass2, subfolders)
 11+}
 12+
 13+function getQueryLine(name)
 14+{
 15+ query=location.search.substring(1,location.search.length).split("&");
 16+ for (i=0; i<query.length; i++)
 17+ {
 18+ tmp=query[i].split("=");
 19+ thisName=unescape(tmp[0]);
 20+ thisValue=unescape(tmp[1]);
 21+ if (name==thisName)
 22+ return thisValue;
 23+ }
 24+
 25+ return "";
 26+}
 27+
 28+//-->
 29+</SCRIPT>
 30+</HEAD>
 31+
 32+
 33+
 34+<SCRIPT LANGUAGE="javascript">
 35+<!--
 36+ document.write("<FRAMESET ROWS='1,*' BORDER=0 FRAMEBORDER=0 FRAMESPACING=0 NORESIZE>");
 37+ document.write("<FRAME SRC='/?action=showEmptyPage' NAME=empty SCROLLING=no>");
 38+
 39+ if (getQueryLine("showInFrame")=="addFolder")
 40+ document.write("<FRAME SRC=\"/?action=showAddProtSetup\" NAME=content>");
 41+ else if (getQueryLine("showInFrame")=="addUser")
 42+ document.write("<FRAME SRC=\"/?action=showAddProtUserSetup&folderValue="
 43+ + escape(getQueryLine("folderValue"))
 44+ +'&subfoldersValue='+getQueryLine("subfoldersValue")
 45+ +'&realmValue='+escape(getQueryLine("realmValue"))
 46+ +"\" NAME=content>");
 47+ else
 48+ document.write("<FRAME SRC=\"/?action=showEmptyPage\" NAME=content>"); //this will never happen
 49+
 50+ document.write("</FRAMESET>");
 51+//-->
 52+</SCRIPT>
 53+
 54+
 55+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep5.html
@@ -0,0 +1,330 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 5 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+
 29+function createRunnableExtList(allFileExt)
 30+{
 31+ nollstallVarden();
 32+
 33+ if (allFileExt.split(",").length!=-1)
 34+ for (ii=0; ii<allFileExt.split(",").length; ii++)
 35+ addThisScriptExtension(allFileExt.split(",")[ii],null);
 36+}
 37+
 38+
 39+
 40+function nollstallVarden()
 41+{
 42+ while (document.myForm.runnableExtensions.length>0)
 43+ document.myForm.runnableExtensions.options[0]=null;
 44+}
 45+
 46+
 47+
 48+
 49+
 50+
 51+
 52+function addScriptExtension()
 53+{
 54+ addScriptExtWindow=window.open(escape("/?action=showAddScriptExtSetup"),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=400");
 55+ addScriptExtWindow.focus();
 56+}
 57+
 58+
 59+
 60+
 61+
 62+
 63+//If an element in myArray is longer than str, only compare the first str.length char. For example: "abc" is equal to "abc123"
 64+function stringIsInSelectBoxTextEqualLength(str, myArray) //Note that we compare the "[obj].text" value and not the "[obj].value" value
 65+{
 66+ for (i=0; i<myArray.length; i++)
 67+ {
 68+ if (str.toLowerCase()==myArray[i].text.substring(0,str.length).toLowerCase())
 69+ return true;
 70+ }
 71+ return false;
 72+}
 73+
 74+
 75+
 76+
 77+
 78+
 79+
 80+
 81+
 82+
 83+
 84+
 85+
 86+
 87+//addThisScriptExtension(runnableScriptExtension,runnableScriptCommand)
 88+//can eithe be called with addThisScriptExtension("php=php-cgi",null)
 89+//or with addThisScriptExtension("php","php-cgi")
 90+function addThisScriptExtension(runnableScriptExtension,runnableScriptCommand)
 91+{
 92+ if (runnableScriptExtension=="")
 93+ return false;
 94+
 95+ if (runnableScriptCommand==null && stringIsInSelectBoxTextEqualLength(runnableScriptExtension, document.myForm.runnableExtensions.options)) //called by automatic whenpage loads and list is propagated
 96+ {
 97+ showAlertXerverHelp("You have already added "+runnableScriptExtension+" to your list with runnable file extensions.")
 98+ return false;
 99+ }
 100+ else if (runnableScriptCommand!=null && stringIsInSelectBoxTextEqualLength(runnableScriptExtension+"=", document.myForm.runnableExtensions.options)) //user manually adds a script extension. If user adds extension "php" we compare "php=" so that user shall not be prevented to add for example "php" because he already has "php4" in list
 101+ {
 102+ showAlertXerverHelp("You have already added "+runnableScriptExtension+" to your list with runnable file extensions.")
 103+ return false;
 104+ }
 105+
 106+
 107+// if (runnableScriptExtension.indexOf("\"")==-1)
 108+// {
 109+ if (runnableScriptCommand==null) //If "addThisScriptExtension" has been called from the "sidanHarLaddatKlart" function (the setup page has been loaded and the values from the .js-file are being set now)
 110+ document.myForm.runnableExtensions.options[++document.myForm.runnableExtensions.length-1]=new Option(runnableScriptExtension, runnableScriptExtension)
 111+ else
 112+ document.myForm.runnableExtensions.options[++document.myForm.runnableExtensions.length-1]=new Option(runnableScriptExtension+"="+runnableScriptCommand, runnableScriptExtension)
 113+
 114+// }
 115+// else
 116+// showAlertXerverHelp("There is a \" in your file extension.\nSo it can't possibly be a valid file extension.")
 117+}
 118+
 119+
 120+function removeScriptExtension()
 121+{
 122+ if (document.myForm.runnableExtensions.selectedIndex>=0)
 123+ {
 124+ if (confirm("You have selected "+document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex].text+".\nDo you want to remove it?"))
 125+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 126+ document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex]=new Option();
 127+ else
 128+ document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex]=null;
 129+ //document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex]=null;
 130+
 131+ }
 132+ else
 133+ {
 134+ alert("Please select the file extension/command you want to remove.");
 135+ }
 136+}
 137+
 138+
 139+
 140+
 141+
 142+function addExtension()
 143+{
 144+ addExtWindow=window.open(escape("/Setup:showAddExtSetup"),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=200");
 145+
 146+ addExtWindow.focus();
 147+}
 148+
 149+
 150+
 151+function addThisExtension(extension)
 152+{
 153+ if (extension=="")
 154+ return false;
 155+
 156+ if (stringIsInArray(extension, document.form.runnableExtensions.options))
 157+ {
 158+ showAlertXerverHelp("You have already added "+extension+" to your list with file extensions.")
 159+ return false;
 160+ }
 161+
 162+
 163+ if (extension.indexOf("\"")==-1)
 164+ {
 165+ document.myForm.runnableExtensions.options[++document.myForm.runnableExtensions.length-1]=new Option(extension, extension)
 166+// document.myForm.runnableExtensions.options[++document.myForm.runnableExtensions.length-1].value=extension;
 167+// document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.length-1].text=extension;
 168+ }
 169+ else
 170+ showAlertXerverHelp("There is a \" in your file extension.\nSo it can't possibly be a valid file extension.")
 171+}
 172+
 173+
 174+function removeExtension()
 175+{
 176+ if (document.myForm.runnableExtensions.selectedIndex>=0)
 177+ {
 178+ if (confirm("You have selected "+document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex].text+".\nDo you want to remove it?"))
 179+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 180+ document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex]=new Option();
 181+ else
 182+ document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex]=null;
 183+ //document.myForm.runnableExtensions.options[document.myForm.runnableExtensions.selectedIndex]=null;
 184+
 185+ }
 186+ else
 187+ {
 188+ alert("Please select the file extension you want to remove.");
 189+ }
 190+}
 191+
 192+
 193+
 194+
 195+
 196+
 197+
 198+
 199+function submitForm()
 200+{
 201+ nyAddress="action=wizardStep6&direction=forward&save=yes&runnableExtensions=";
 202+
 203+ if (document.myForm.runnableExtensions.length>0)
 204+ {
 205+ tmpHarLagtTillKomma=false;
 206+ for (i=0; i<document.myForm.runnableExtensions.length; i++)
 207+ if (document.myForm.runnableExtensions.options[i].text!="") //Om det INTE �r ett element som raderats i Opera (d�r raderas de inte p� riktigt, d�r blir de bara tomma str�ngar)
 208+ {
 209+ tmpHarLagtTillKomma=true;
 210+ nyAddress+=document.myForm.runnableExtensions.options[i].text+",";
 211+ }
 212+ if (tmpHarLagtTillKomma)
 213+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 214+ }
 215+
 216+// alert(nyAddress)
 217+ self.location.replace("/?"+escape(nyAddress));
 218+ return true;
 219+}
 220+//-->
 221+</SCRIPT>
 222+
 223+
 224+</HEAD>
 225+<BODY BGCOLOR="white" TEXT="black">
 226+<TABLE WIDTH='400' BORDER='0'>
 227+<TR><TD>
 228+<FONT FACE='verdana,arial'>
 229+<CENTER>
 230+<H3>Xerver Setup [ 5 / 9 ]</H3>
 231+</CENTER>
 232+</FONT>
 233+<FONT FACE='arial,verdana' SIZE='-1'>
 234+<P>
 235+
 236+
 237+<FORM NAME="myForm" ACTION="/" METHOD=get>
 238+
 239+The list below shows file extensions that should be run and not be downloaded when a visitor visits the file.
 240+<BR>
 241+The format of the list is:
 242+<BR>
 243+<I>fileExtension=commandToRunThisFile</I>
 244+<P>
 245+Example:
 246+<BR>
 247+<I>pl=perl</I>
 248+<BR>
 249+<I>php4=php</I>
 250+
 251+<P>
 252+<INPUT TYPE="button" NAME="addExtButton" VALUE="Add script extension" onClick="addScriptExtension()"><INPUT TYPE="button" NAME="removeExtButton" VALUE="Remove script extension" onClick="removeScriptExtension()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('Xerver can be used to run CGI-scripts.\nThis means that you can run guestbooks, formmails, wwwboards etc. with Xerver.\n\nHowever, you have to decide which file extensions that should be considered \'runnable files\'.\n\nFor example: If you want your perl-scripts to be runnable, you must tell Xerver that all files that ends with \'.cgi\' or \'.pl\' should be considered perl files and that these files shall be executed, not downloaded, when a visitor visits the file.\nPerl-scripts are executed with a command called \'perl\'.\nPHP-scripts are executed with a command called \'php\'.\n\nThis means that Xerver can run ANY script language that you can run on your computer.');">
 253+<BR>
 254+<SELECT NAME="runnableExtensions" SIZE=4 onChange="status=this.options[this.selectedIndex].value;">
 255+
 256+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 257+
 258+<!--
 259+<OPTION VALUE="php=php">php=php
 260+<OPTION VALUE="php3=php">php3=php
 261+<OPTION VALUE="php4=php">php4=php
 262+<OPTION VALUE="phtml=php">phtml=php
 263+<OPTION VALUE="pl=perl">pl=perl
 264+<OPTION VALUE="cgi=perl">cgi=perl
 265+-->
 266+</SELECT>
 267+<P>
 268+<BR>
 269+
 270+<FONT COLOR=red>
 271+<B>Important message to Windows users that will run PHP scripts:</B>
 272+<BR>
 273+PHP 5 uses "php-cgi" to run php-scripts
 274+while older PHP versions (PHP 4 or older)
 275+are all using "php" to run php-scripts.
 276+<BR>
 277+Xerver is by default configured for PHP 4 which uses "php".
 278+If you have PHP 5 or plan to install PHP 5, make sure that
 279+you have "php=php-cgi" in the scroll list above.
 280+</FONT>
 281+<P>
 282+
 283+
 284+<TABLE BORDER=1 BGCOLOR="#cccccc" CELLSPACING=0 CELLPADDING=2>
 285+<TR BGCOLOR="#aaaaaa"><TD>
 286+<FONT FACE='arial,verdana' SIZE='-1'>
 287+<B>What is this?</B>
 288+</FONT>
 289+</TD></TR><TR><TD>
 290+<FONT FACE='arial,verdana' SIZE='-1'>
 291+If you want to run CGI-scripts with Xerver, you have to tell Xerver
 292+which file extensions should be considered CGI-files.
 293+<BR>
 294+When someone visits a CGI-file (for example "guestbook.php")
 295+Xerver won't show the content of the file,
 296+but will execute the script.
 297+However, different script types are run with different commands
 298+on your computer. Sounds difficult? It's not!
 299+<P>
 300+The command for Perl-script is "perl".
 301+<BR>
 302+The command for PHP-script is "php" (or "php-cgi").
 303+<BR>
 304+However, some files are runnable without a command,
 305+such as "exe" files on windows. The command
 306+for exe-files is "" (nothing).
 307+
 308+</FONT>
 309+</TD></TR>
 310+</TABLE>
 311+<P>
 312+<BR>
 313+
 314+
 315+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 316+<TR><TD>
 317+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep4&direction=back')">
 318+</TD><TD ALIGN="right">
 319+<P ALIGN="right">
 320+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 321+</P>
 322+</TD></TR>
 323+</TABLE>
 324+
 325+</FORM>
 326+
 327+
 328+</FONT>
 329+</TD></TR>
 330+</TABLE>
 331+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddExtSetup.html
@@ -0,0 +1,34 @@
 2+
 3+<HTML>
 4+<HEAD>
 5+<TITLE>Add file extension</TITLE>
 6+</HEAD>
 7+<BODY BGCOLOR='white' link='red' text='black' vlink='#ff00ff'>
 8+<TABLE BORDER='0' CELLPADDING=0 CELLSPACING=0 WIDTH='100%'>
 9+<TR><TD>
 10+<FONT FACE='arial,verdana' SIZE='-1'>
 11+<B>Which file extension do you want to add to the list?</B>
 12+<BR>
 13+<FORM NAME='addExtWinForm' onSubmit="if (document.addExtWinForm.extensionToShare.value.indexOf('.')==-1){opener.addThisExtension(document.addExtWinForm.extensionToShare.value);}else{alert('You have a . (dot) in your extension. Your extension can\'t contain a dot.');};return false;">
 14+<INPUT TYPE=text NAME='extensionToShare' SIZE=40>
 15+<BR>
 16+<INPUT TYPE=button VALUE='Add to list' onClick="if (document.addExtWinForm.extensionToShare.value.indexOf('.')==-1){opener.addThisExtension(document.addExtWinForm.extensionToShare.value);}else{alert('You have a . (dot) in your extension. Your extension can\'t contain a dot.');}"><INPUT TYPE="button" VALUE="Close" onClick="top.close();">
 17+
 18+<P>
 19+
 20+For example:
 21+<BR>
 22+<I>html</I>
 23+<BR>
 24+or
 25+<BR>
 26+<I>doc</I>
 27+
 28+
 29+
 30+</FONT>
 31+</FORM>
 32+</TD></TR>
 33+</TABLE>
 34+</BODY>
 35+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagefileicon.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagefileicon.gif
___________________________________________________________________
Added: svn:mime-type
136 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep7.html
@@ -0,0 +1,206 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 7 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+
 29+function createFileExtList(allIndexFiles)
 30+{
 31+ nollstallVarden();
 32+
 33+ if (allIndexFiles.split(",").length!=-1)
 34+ for (ii=0; ii<allIndexFiles.split(",").length; ii++)
 35+ addThisExtension(allIndexFiles.split(",")[ii],null);
 36+}
 37+
 38+
 39+
 40+function nollstallVarden()
 41+{
 42+ while (document.myForm.fileExtensions.length>0)
 43+ document.myForm.fileExtensions.options[0]=null;
 44+}
 45+
 46+
 47+
 48+
 49+
 50+
 51+
 52+
 53+function stringIsInArray(str, myArray)
 54+{
 55+ for (i=0; i<myArray.length; i++)
 56+ if (str==myArray[i].value)
 57+ return true;
 58+ return false;
 59+}
 60+
 61+
 62+
 63+
 64+
 65+
 66+
 67+function addExtension()
 68+{
 69+ addExtWindow=window.open(escape("/?action=showAddExtSetup"),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=230");
 70+ addExtWindow.focus();
 71+}
 72+
 73+
 74+
 75+function addThisExtension(extension)
 76+{
 77+ if (extension=="")
 78+ return false;
 79+
 80+ if (extension.indexOf(",")!=-1 || extension.indexOf("\\")!=-1 || extension.indexOf("/")!=-1 || extension.indexOf("\"")!=-1)
 81+ {
 82+ showAlertXerverHelp("Your file extension can not contain these characters:\n , / \\ \"");
 83+ return false;
 84+ }
 85+
 86+ if (stringIsInArray(extension, document.myForm.fileExtensions.options))
 87+ {
 88+ showAlertXerverHelp("You have already added "+extension+" to your list with file extensions.")
 89+ return false;
 90+ }
 91+
 92+
 93+// if (extension.indexOf("\"")==-1)
 94+// {
 95+ document.myForm.fileExtensions.options[++document.myForm.fileExtensions.length-1]=new Option(extension, extension)
 96+// document.myForm.fileExtensions.options[++document.myForm.fileExtensions.length-1].value=extension;
 97+// document.myForm.fileExtensions.options[document.myForm.fileExtensions.length-1].text=extension;
 98+// }
 99+// else
 100+// alert("There is a \" in your file extension.\nSo it can't possibly be a valid file extension.")
 101+}
 102+
 103+
 104+function removeExtension()
 105+{
 106+ if (document.myForm.fileExtensions.selectedIndex>=0)
 107+ {
 108+ if (confirm("You have selected "+document.myForm.fileExtensions.options[document.myForm.fileExtensions.selectedIndex].text+".\nDo you want to remove it?"))
 109+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 110+ document.myForm.fileExtensions.options[document.myForm.fileExtensions.selectedIndex]=new Option();
 111+ else
 112+ document.myForm.fileExtensions.options[document.myForm.fileExtensions.selectedIndex]=null;
 113+ //document.myForm.fileExtensions.options[document.myForm.fileExtensions.selectedIndex]=null;
 114+
 115+ }
 116+ else
 117+ {
 118+ alert("Please select the file extension you want to remove.");
 119+ }
 120+}
 121+
 122+
 123+
 124+
 125+
 126+
 127+
 128+
 129+
 130+
 131+function submitForm()
 132+{
 133+ nyAddress="action=wizardStep8&direction=forward&save=yes&allowTheseFileExtensions="+document.myForm.allowTheseFileExtensions.selectedIndex+"&fileExtensions=";
 134+
 135+ if (document.myForm.fileExtensions.length>0)
 136+ {
 137+ tmpHarLagtTillKomma=false;
 138+ for (i=0; i<document.myForm.fileExtensions.length; i++)
 139+ if (document.myForm.fileExtensions.options[i].text!="") //Om det INTE �r ett element som raderats i Opera (d�r raderas de inte p� riktigt, d�r blir de bara tomma str�ngar)
 140+ {
 141+ tmpHarLagtTillKomma=true;
 142+ nyAddress+=document.myForm.fileExtensions.options[i].text+",";
 143+ }
 144+ if (tmpHarLagtTillKomma)
 145+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 146+ }
 147+
 148+// alert(nyAddress)
 149+ self.location.replace("/?"+escape(nyAddress));
 150+ return true;
 151+}
 152+//-->
 153+</SCRIPT>
 154+
 155+
 156+</HEAD>
 157+<BODY BGCOLOR="white" TEXT="black">
 158+<TABLE WIDTH='400' BORDER='0'>
 159+<TR><TD>
 160+<FONT FACE='verdana,arial'>
 161+<CENTER>
 162+<H3>Xerver Setup [ 7 / 9 ]</H3>
 163+</CENTER>
 164+</FONT>
 165+<FONT FACE='arial,verdana' SIZE='-1'>
 166+<P>
 167+
 168+
 169+<FORM NAME="myForm" ACTION="/" METHOD=get>
 170+
 171+
 172+<B>Shared file extensions</B>
 173+<BR>
 174+<SELECT NAME="allowTheseFileExtensions">
 175+ <OPTION VALUE="0" SELECTED>All files should be downloadable, except those with an extension listed below</OPTION>
 176+ <OPTION VALUE="1">Only files with an extension listed below should be downloadable</OPTION>
 177+</SELECT>
 178+
 179+<BR>
 180+<INPUT TYPE="button" NAME="addExtButton" VALUE="Add file extension" onClick="addExtension()"><INPUT TYPE="button" NAME="removeExtButton" VALUE="Remove file extension" onClick="removeExtension()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('Files that are not shared can\'t be downloaded.\nWhen someone browses your directories, only your shared files will be shown.\n\nExample 1: You don\'t want people to download your exe and doc files:\nChoose \'All files should be downloadable, except those with an extension listed below\' and add doc and exe to the list.\n\nExample 2: You ONLY want to share music files on your hard drive:\nAdd \'mp3\' and \'wma\' to this list and choose \'Only files with an extension listed below should be downloadable\'. Now everyone will be able to browse your hard drive, but ONLY your mp3 and wma files will be listed (and only these files can be downloaded).');">
 181+<BR>
 182+<SELECT NAME="fileExtensions" SIZE=4 onChange="status=this.options[this.selectedIndex].value;">
 183+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 184+</SELECT>
 185+<P>
 186+<BR>
 187+
 188+
 189+
 190+
 191+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 192+<TR><TD>
 193+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep6&direction=back')">
 194+</TD><TD ALIGN="right">
 195+<P ALIGN="right">
 196+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 197+</P>
 198+</TD></TR>
 199+</TABLE>
 200+
 201+</FORM>
 202+
 203+
 204+</FONT>
 205+</TD></TR>
 206+</TABLE>
 207+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagestartbutton.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagestartbutton.gif
___________________________________________________________________
Added: svn:mime-type
1208 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep9.html
@@ -0,0 +1,166 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 9 / 9 ]</TITLE>
 5+
 6+
 7+<STYLE TYPE="text/css">
 8+<!--
 9+TABLE {font-family:verdana,arial; font-size: 11px;}
 10+TR {font-family:verdana,arial; font-size: 11px;}
 11+TD {font-family:verdana,arial; font-size: 11px;}
 12+//-->
 13+</STYLE>
 14+
 15+<SCRIPT LANGUAGE="javascript">
 16+<!--
 17+//
 18+function selectCorrectRadio(value)
 19+{
 20+ for (i=0; i<document.myForm.useLowSystemResources.length; i++)
 21+ {
 22+ if (document.myForm.useLowSystemResources[i].value==value)
 23+ {
 24+ document.myForm.useLowSystemResources[i].checked=true;
 25+ }
 26+ else
 27+ {
 28+ document.myForm.useLowSystemResources[i].checked=false;
 29+ }
 30+ }
 31+}
 32+
 33+
 34+
 35+
 36+function submitForm()
 37+{
 38+ value="";
 39+
 40+ for (i=0; i<document.myForm.useLowSystemResources.length; i++)
 41+ if (document.myForm.useLowSystemResources[i].checked)
 42+ {
 43+ value=document.myForm.useLowSystemResources[i].value
 44+ }
 45+
 46+ if (value!="")
 47+ self.location.replace("/?action=setupDone&direction=forward&save=yes&startupWindowMode="+value);
 48+}
 49+
 50+//-->
 51+</SCRIPT>
 52+
 53+
 54+</HEAD>
 55+<BODY BGCOLOR="white" TEXT="black">
 56+<TABLE WIDTH='400' BORDER='0'>
 57+<TR><TD>
 58+<FONT FACE='verdana,arial'>
 59+<CENTER>
 60+<H3>Xerver Setup [ 9 / 9 ]</H3>
 61+</CENTER>
 62+</FONT>
 63+<FONT FACE='arial,verdana' SIZE='-1'>
 64+<P>
 65+
 66+
 67+<FORM NAME="myForm" ACTION="/" METHOD=get onSubmit="return false;">
 68+
 69+
 70+<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
 71+<TR><TD>
 72+<IMG SRC='?action=showSmallWizard' BORDER=0>
 73+</TD><TD>
 74+<B>
 75+<FONT FACE='arial,verdana' SIZE='-1'>
 76+Congratulations!<BR>
 77+This is the last step of this setup.<BR>
 78+You have to decide which user interface
 79+you want to use when you run Xerver.<BR>
 80+Most people should choose the recommended default layout.
 81+</FONT>
 82+</B>
 83+</TD></TR>
 84+</TABLE>
 85+<BR>
 86+
 87+<B>
 88+<INPUT TYPE="radio" NAME="useLowSystemResources" VALUE="2" CHECKED>
 89+Xerver Default - All features enabled (<FONT COLOR="red">Recommended</FONT>)!<BR>
 90+<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
 91+<TR><TD WIDTH="50">&nbsp;</TD><TD>
 92+Most users should choose this. Everything is activated by default.
 93+</TD></TR>
 94+</TABLE>
 95+<P>
 96+
 97+
 98+<INPUT TYPE="radio" NAME="useLowSystemResources" VALUE="3">
 99+Xerver Default - Starting minimized<BR>
 100+<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
 101+<TR><TD WIDTH="50">&nbsp;</TD><TD>
 102+This is the same as the default option, but the window is started minimized.
 103+This means for example that no Xerver-tab will be shown in the Windows taskbar.
 104+</TD></TR>
 105+</TABLE>
 106+<P>
 107+
 108+
 109+<FONT FACE='arial,verdana' SIZE='-1'>
 110+<INPUT TYPE="radio" NAME="useLowSystemResources" VALUE="0">
 111+Xerver Minimum<BR>
 112+<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
 113+<TR><TD WIDTH="50">&nbsp;</TD><TD>
 114+This will run just the core Xerver webserver kernel and nothing else.
 115+There is no user interface activated, so you will have to kill the process using
 116+CTRL+ALT+DEL (or similar on your operating system).
 117+<BR>
 118+The Setup pages are also disabled and you will have to manually
 119+start Setup.exe (or "java Setup") to run Setup.
 120+<BR>
 121+There is no way to start Xerver FTP server using Xerver Minimum.
 122+</TD></TR>
 123+</TABLE>
 124+<P>
 125+
 126+<INPUT TYPE="radio" NAME="useLowSystemResources" VALUE="1">
 127+Xerver Minimum - With GUI<BR>
 128+<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
 129+<TR><TD WIDTH="50">&nbsp;</TD><TD>
 130+This is like "Xerver Minimum", but there is a trivial user interface allowing
 131+you to close the Window to shut down Xerver. You don't have to kill the process
 132+with CTRL+ALT+DEL when you want to terminate the application.
 133+</TD></TR>
 134+</TABLE>
 135+<P>
 136+
 137+
 138+</FONT>
 139+</B>
 140+
 141+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 142+<TR><TD>
 143+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep8&direction=back')">
 144+</TD><TD ALIGN="right">
 145+<P ALIGN="right">
 146+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 147+</P>
 148+</TD></TR>
 149+</TABLE>
 150+
 151+</FORM>
 152+
 153+
 154+</FORM>
 155+
 156+<BR>
 157+
 158+<B>What shall I choose?</B>
 159+<BR>
 160+If you are unsure what to pick, you probably should choose
 161+Xerver Maximum which is the recommended options for most users.
 162+
 163+
 164+
 165+</FONT>
 166+</TD></TR>
 167+</TABLE>
Index: trunk/ATTIC/wikiSDK/Xerver4/data/IndexPage.html
@@ -0,0 +1,72 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Setup!</TITLE>
 5+
 6+<SCRIPT LANGUAGE=javascript>
 7+function openXerverSetup()
 8+{
 9+ addDirWindow=window.open("/action=wizardFrames","XerverSetup","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=630,height=465");
 10+ addDirWindow.focus();
 11+}
 12+</SCRIPT>
 13+
 14+</HEAD>
 15+<BODY BGCOLOR=white TEXT=black>
 16+
 17+
 18+ <TABLE WIDTH='500' BORDER='0' CELLPADDING=0 CELLSPACING=0>
 19+ <TR>
 20+ <TD>
 21+ <CENTER>
 22+ <A HREF="javascript:openXerverSetup()">
 23+ <IMG SRC='?action=showLogo' BORDER=0 ALT="Xerver Logo">
 24+ </A>
 25+
 26+ <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
 27+ <TR>
 28+ <TD VALIGN=top WIDTH=339>
 29+
 30+ <CENTER>
 31+ <A HREF="javascript:openXerverSetup()" STYLE="text-decoration:none;">
 32+ <FONT FACE='arial,verdana' SIZE='+2'>
 33+ <B>
 34+ Start Setup</B>
 35+ </FONT>
 36+ </A>
 37+ </CENTER>
 38+
 39+ <BR>
 40+ <BR>
 41+ <BR>
 42+
 43+ <B>
 44+ <FONT FACE='arial,verdana' SIZE='-1'>
 45+ Xerver Wizard will guide you
 46+ <BR>
 47+ through this setup program.
 48+ </FONT>
 49+ <P>
 50+
 51+ <FONT FACE='arial,verdana' SIZE='-2'>
 52+ This is the setup for the HTTP server only.
 53+ <BR>
 54+ The FTP server setup is running at
 55+ <A HREF="http://127.0.0.1:32124/">port 32124</A>.
 56+ </FONT>
 57+
 58+ </B>
 59+
 60+ </TD><TD WIDTH=261>
 61+
 62+ <A HREF="javascript:openXerverSetup()"><IMG SRC="?action=showBigWizard" BORDER=0 WIDTH=261 HEIGHT=326 ALT="Xerver Wizard"></A>
 63+
 64+ </TD></TR>
 65+ </TABLE>
 66+ </CENTER>
 67+
 68+ </TD></TR>
 69+ </TABLE>
 70+
 71+</BODY>
 72+</HTML>
 73+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagelogo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagelogo.gif
___________________________________________________________________
Added: svn:mime-type
174 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagestopsetupbutton.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagestopsetupbutton.gif
___________________________________________________________________
Added: svn:mime-type
275 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddDirSetup.html
@@ -0,0 +1,44 @@
 2+
 3+<HTML>
 4+<HEAD>
 5+<TITLE>Add directory</TITLE>
 6+
 7+<SCRIPT LANGUAGE="javascript">
 8+<!--
 9+function dirChoosen(path)
 10+{
 11+ document.addDirWinForm.folderToShare.value=path;
 12+}
 13+
 14+function browseFolders()
 15+{
 16+ window.open('/?action=chooseDirectory&currentPath='+document.addDirWinForm.folderToShare.value,'browse','width=500,height=400,scrollbars=yes')
 17+}
 18+//-->
 19+</SCRIPT>
 20+
 21+</HEAD>
 22+<BODY BGCOLOR='white' link='red' text='black' vlink='#ff00ff'>
 23+<TABLE BORDER='0' CELLPADDING=0 CELLSPACING=0 WIDTH='100%'>
 24+<TR><TD>
 25+<FONT FACE='arial,verdana' SIZE='-1'>
 26+<B>Which directory do you want to share?</B>
 27+<BR>
 28+<FONT FACE='arial,verdana' SIZE='-2'>
 29+<B>
 30+You can use the browse button if you don't remember the exact location of your folder.
 31+</B>
 32+</FONT>
 33+<BR>
 34+<FORM NAME="addDirWinForm" onSubmit='opener.addThisDirectory(document.addDirWinForm.folderToShare.value,document.addDirWinForm.shareSubfolders.checked); return false;'>
 35+<INPUT TYPE=text NAME="folderToShare" SIZE=60><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse..."><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="top.opener.showAlertXerverHelp('Enter the location of a folder you want to share.\nThe content of a shared folder can be viewed by anyone on Internet (unless you protect the folder with a password). The setup will later ask you which folders you want to protect with a password.\n\nTo help you remember the exact location of the folder, you can press the \'Browse\' button.');">
 36+<BR>
 37+<INPUT TYPE=checkbox NAME=shareSubfolders> Check this if you also want share all subfolders
 38+<BR>
 39+<INPUT TYPE=button VALUE='Share Directory' onClick='opener.addThisDirectory(document.addDirWinForm.folderToShare.value,document.addDirWinForm.shareSubfolders.checked)'><INPUT TYPE="button" VALUE="Close" onClick="top.close();">
 40+</FONT>
 41+</FORM>
 42+</TD></TR>
 43+</TABLE>
 44+</BODY>
 45+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizardHelp.html
@@ -0,0 +1,97 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Wizard Help</TITLE>
 5+
 6+
 7+<STYLE TYPE="text/css">
 8+<!--
 9+TABLE {font-family:verdana,arial; font-size: 10px;}
 10+TR {font-family:verdana,arial; font-size: 10px;}
 11+TD {font-family:verdana,arial; font-size: 10px; font-weight:bold;}
 12+//-->
 13+</STYLE>
 14+
 15+
 16+<SCRIPT LANGUAGE="javascript">
 17+<!--
 18+function getQueryLine(name)
 19+{
 20+ query=location.search.substring(1,location.search.length).split("&");
 21+ for (i=0; i<query.length; i++)
 22+ {
 23+ tmp=query[i].split("=");
 24+ thisName=unescape(tmp[0]);
 25+ thisValue=unescape(tmp[1]);
 26+ if (name==thisName)
 27+ return thisValue;
 28+ }
 29+
 30+ return "";
 31+}
 32+
 33+
 34+
 35+function sokOchErsatt(bigString, gammalStr, nyStr) //S�k "bigString" efter "gammalStr" och ers�tt med "NyStr"
 36+{
 37+ storStrang=bigString;
 38+ for (i=0; i<=storStrang.length-gammalStr.length; i++)
 39+ {
 40+ if (storStrang.substring(i,i+gammalStr.length)==(gammalStr))
 41+ {
 42+ storStrang=storStrang.substring(0,i)+nyStr+storStrang.substring(i+gammalStr.length);
 43+ i+=nyStr.length-1; //Utan detta s� g�r loopen f�r all evighet om man t.ex. har str�ngen "ab/cd" och ers�tter "/" med "//"
 44+ }
 45+ }
 46+ return storStrang;
 47+}
 48+
 49+//-->
 50+</SCRIPT>
 51+
 52+</HEAD>
 53+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 54+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 55+<TR><TD>
 56+<IMG SRC="/?action=showSmallWizard">
 57+</TD><TD>
 58+<FONT FACE="verdana,arial" SIZE="-1">
 59+<B>
 60+<SCRIPT LANGUAGE="javascript">
 61+<!--
 62+document.write(sokOchErsatt(getQueryLine("titleText"),"\n","<BR>"));
 63+//-->
 64+</SCRIPT>
 65+</B>
 66+</FONT>
 67+<P>
 68+
 69+<FONT FACE="verdana,arial" SIZE="-2">
 70+<B>
 71+<SCRIPT LANGUAGE="javascript">
 72+<!--
 73+document.write(sokOchErsatt(getQueryLine("helpText"),"\n","<BR>"));
 74+//-->
 75+</SCRIPT>
 76+</B>
 77+
 78+
 79+<BR><BR>
 80+</FONT>
 81+</TD></TR>
 82+</TABLE>
 83+
 84+
 85+
 86+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 87+<TR><TD>
 88+</TD><TD ALIGN="right">
 89+<FORM>
 90+<P ALIGN="right">
 91+<INPUT TYPE="button" VALUE="Close" onCLick="top.close()">
 92+</P>
 93+</FORM>
 94+</TD></TR>
 95+</TABLE>
 96+
 97+</BODY>
 98+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddProtUserSetup.html
@@ -0,0 +1,100 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Add Protected Folder</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function getQueryLine(name)
 9+{
 10+ query=location.search.substring(1,location.search.length).split("&");
 11+ for (i=0; i<query.length; i++)
 12+ {
 13+ tmp=query[i].split("=");
 14+ thisName=unescape(tmp[0]);
 15+ thisValue=unescape(tmp[1]);
 16+ if (name==thisName)
 17+ return thisValue;
 18+ }
 19+
 20+ return "";
 21+}
 22+
 23+
 24+function getNewQuery(name, newValue)
 25+{
 26+ newQuery="";
 27+ query=unescape(location.search.substring(1,location.search.length)).split("&");
 28+ for (i=0; i<query.length; i++)
 29+ {
 30+ tmp=query[i].split("=");
 31+ thisName=tmp[0];
 32+ thisValue=tmp[1];
 33+ if (name==thisName)
 34+ newQuery+=name+"="+escape(newValue)+"&";
 35+ else
 36+ newQuery+=escape(thisName)+"="+escape(thisValue)+"&";
 37+ }
 38+ newQuery=newQuery.substring(0,newQuery.length-1);
 39+
 40+ location="/?"+newQuery;
 41+}
 42+//-->
 43+</SCRIPT>
 44+
 45+</HEAD>
 46+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 47+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 48+<TR><TD>
 49+<FONT FACE="arial,verdana" SIZE="-1">
 50+<B>Please create a username/password for this folder?</B>
 51+<BR>
 52+<FORM NAME="addProtWinForm" onSubmit="if (document.addProtWinForm.folder.value!='' && document.addProtWinForm.realm.value!='' && document.addProtWinForm.username.value!='' && document.addProtWinForm.pass1.value!='' && document.addProtWinForm.pass2.value!=''){top.addThisProt(document.addProtWinForm.folder.value, document.addProtWinForm.realm.value, document.addProtWinForm.username.value, document.addProtWinForm.pass1.value, document.addProtWinForm.pass2.value, document.addProtWinForm.subfolders.value);}else{top.opener.showAlertXerverHelp('Please enter something in all fields.')};return false;">
 53+
 54+
 55+<SCRIPT LANGUAGE="javascript">
 56+<!--
 57+ document.write("<TT><B>Folder:</B> "+getQueryLine('folderValue')+"<INPUT TYPE=hidden NAME='folder' VALUE='"+getQueryLine('folderValue')+"'> ");
 58+ document.write("<A HREF='#' onClick=\"newDir=prompt('Change folder:',document.addProtWinForm.folder.value);if (newDir!=null && newDir!='')getNewQuery('folderValue', newDir);return true;\">Edit</A></TT><BR>");
 59+
 60+ document.write("<INPUT TYPE=hidden NAME='subfolders' SIZE=40 VALUE='"+getQueryLine('subfoldersValue')+"'>");
 61+ if (getQueryLine('subfoldersValue')=="true")
 62+ {
 63+ document.write("<TT><B>Subfolders:</B> Protected ");
 64+ document.write("<A HREF='#' onClick=\"getNewQuery('subfoldersValue', 'false');return true;\">Edit</A></TT><BR>");
 65+ }
 66+ else
 67+ {
 68+ document.write("<TT><B>Subfolders:</B> Not protected ");
 69+ document.write("<A HREF='#' onClick=\"getNewQuery('subfoldersValue', 'true');return true;\">Edit</A></TT><BR>");
 70+ }
 71+
 72+
 73+ document.write("<TT><B>Zone:</B> "+getQueryLine('realmValue')+"<INPUT TYPE=hidden NAME='realm' SIZE=15 VALUE='"+getQueryLine('realmValue')+"'> ");
 74+ document.write("<A HREF='#' onClick=\"newRealm=prompt('Change zone:',document.addProtWinForm.realm.value);if (newRealm!=null && newRealm!='')getNewQuery('realmValue', newRealm);return true;\">Edit</A></TT><BR>");
 75+//-->
 76+</SCRIPT>
 77+
 78+
 79+
 80+
 81+<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=0>
 82+<TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 83+ <B>User name:</B></TD><TD><INPUT TYPE=text NAME="username" SIZE=15>
 84+</FONT></TD></TR><TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 85+ <B>Password:</B></TD><TD><INPUT TYPE=button VALUE="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetPassword&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" NAME="pass1" onClick="parent.empty.location.href='/?action=promptForPassword&passNr=1&uniqe='+(new Date()).getTime();"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="top.opener.showAlertXerverHelp('For advanced users:\nXerver uses a secure one-way crypto to ensure your security!\nThe same security is used by the browser when someone visits a secury folder. Xerver tells the browser to ask for a username/password and send it *encrypted* over the network (Internet).\nXerver will receive the encrypted username/password and match it with the Xerver database on your hard drive (all usernames/passwords are, of course, stored with a well-known one-way crypto which by today has no known decrypting methods).');">
 86+</FONT></TD></TR><TR><TD><FONT FACE="arial,verdana" SIZE="-1">
 87+ <B>Re-enter Password:</B></TD><TD><INPUT TYPE=button VALUE="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetPassword&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" NAME="pass2" onClick="parent.empty.location.href='/?action=promptForPassword&passNr=2&uniqe='+(new Date()).getTime();">
 88+</FONT></TD></TR><TR><TD COLSPAN=2><FONT FACE="arial,verdana" SIZE="-1">
 89+ <BR><INPUT TYPE=button VALUE="Add account" onClick="if (document.addProtWinForm.folder.value!='' && document.addProtWinForm.realm.value!='' && document.addProtWinForm.username.value!='' && document.addProtWinForm.pass1.value!='' && document.addProtWinForm.pass2.value!=''){top.addThisProt(document.addProtWinForm.folder.value, document.addProtWinForm.realm.value, document.addProtWinForm.username.value, document.addProtWinForm.pass1.value, document.addProtWinForm.pass2.value, document.addProtWinForm.subfolders.value);}else{top.opener.showAlertXerverHelp('Please enter something in all fields.')};">
 90+</FONT>
 91+</TD></TR>
 92+</TABLE>
 93+
 94+
 95+</FORM>
 96+</FONT>
 97+
 98+</TD></TR>
 99+</TABLE>
 100+</BODY>
 101+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagestartsetupbutton.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagestartsetupbutton.gif
___________________________________________________________________
Added: svn:mime-type
1102 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagefolder.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagefolder.gif
___________________________________________________________________
Added: svn:mime-type
2103 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddAliasSetup.html
@@ -0,0 +1,56 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Create Alias</TITLE>
 5+
 6+<SCRIPT LANGUAGE="javascript">
 7+<!--
 8+function dirChoosen(path)
 9+{
 10+ document.addAliasWinForm.theFolder.value=path;
 11+}
 12+
 13+function browseFolders()
 14+{
 15+ window.open('/?action=chooseDirectory&currentPath='+document.addAliasWinForm.theFolder.value,'browse','width=500,height=400,scrollbars=yes')
 16+}
 17+//-->
 18+</SCRIPT>
 19+
 20+
 21+</HEAD>
 22+<BODY BGCOLOR="white" link="red" text="black" vlink="#ff00ff">
 23+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 24+<TR><TD>
 25+<FONT FACE="arial,verdana" SIZE="-1">
 26+<B>Please choose which aliases ("virtual directories") you want:</B>
 27+<BR>
 28+<FORM NAME="addAliasWinForm" onSubmit="if (document.addAliasWinForm.theAlias.value!=''){opener.addThisAlias(document.addAliasWinForm.theAlias.value,document.addAliasWinForm.theFolder.value);};return false;">
 29+
 30+<B>Alias:</B>
 31+<BR>
 32+http://www.yourdomain.com/<INPUT TYPE=text NAME="theAlias" SIZE=20>
 33+<P>
 34+
 35+<B>Will point to:</B>
 36+<BR>
 37+<FONT FACE='arial,verdana' SIZE='-2'>
 38+<B>
 39+You can use the browse button if you don't remember the exact location of your folder.
 40+</B>
 41+</FONT>
 42+<BR>
 43+<INPUT TYPE=text NAME="theFolder" SIZE=40><INPUT TYPE="button" onClick="browseFolders()" VALUE="Browse..."><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="top.opener.showAlertXerverHelp('Enter the location of the folder, which the alias should point to.\n\nTo help you remember the exact location of the folder, you can press the \'Browse\' button.');">
 44+<BR>
 45+<I>For example: c:\some\folder\</I>
 46+
 47+<BR>
 48+<BR>
 49+<INPUT TYPE=button VALUE="Create Alias" onClick="if (document.addAliasWinForm.theAlias.value!=''){opener.addThisAlias(document.addAliasWinForm.theAlias.value,document.addAliasWinForm.theFolder.value);}"><INPUT TYPE="button" VALUE="Close" onClick="top.close();">
 50+
 51+</FONT>
 52+</FORM>
 53+
 54+</TD></TR>
 55+</TABLE>
 56+</BODY>
 57+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep2.html
@@ -0,0 +1,394 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 2 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+gotWindowsWarning=false;
 29+function haveSeenWindowsWarning()
 30+{
 31+ if (navigator.appVersion.toLowerCase().indexOf("win")==-1) //Om man inte har windows
 32+ return true; // S� s�ger vi att vi redan sett meddelandet s� vi slipper se det
 33+
 34+ if (!gotWindowsWarning)
 35+ {
 36+ gotWindowsWarning=true;
 37+ return false;
 38+ }
 39+ return true;
 40+}
 41+
 42+
 43+
 44+
 45+
 46+function addDirectory()
 47+{
 48+ addDirWindow=window.open(escape("/?action=showAddDirSetup"),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=620,height=200");
 49+ addDirWindow.focus();
 50+}
 51+
 52+
 53+
 54+function removeDirectory()
 55+{
 56+ if (document.myForm.sharedPaths.selectedIndex>=0)
 57+ {
 58+ if (confirm("You have selected "+document.myForm.sharedPaths.options[document.myForm.sharedPaths.selectedIndex].text+".\nDo you want to remove it from this list?"))
 59+ {
 60+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 61+ document.myForm.sharedPaths.options[document.myForm.sharedPaths.selectedIndex]=new Option();
 62+ else
 63+ document.myForm.sharedPaths.options[document.myForm.sharedPaths.selectedIndex]=null;
 64+ }
 65+ }
 66+ else
 67+ {
 68+ alert("Please select the folder you want to remove.");
 69+ }
 70+
 71+}
 72+
 73+
 74+
 75+
 76+
 77+function laggTillDirectoryUtanKontroll(url)
 78+{
 79+ document.myForm.sharedPaths.options[++document.myForm.sharedPaths.length-1]=new Option(url, url)
 80+}
 81+
 82+function nollstallVarden()
 83+{
 84+ while (document.myForm.sharedPaths.length>0)
 85+ document.myForm.sharedPaths.options[0]=null;
 86+}
 87+
 88+function createFolderList(allData)
 89+{
 90+ nollstallVarden()
 91+
 92+ if (allData.split(",").length!=-1)
 93+ for (ii=0; ii<allData.split(",").length; ii++)
 94+ laggTillDirectoryUtanKontroll(allData.split(",")[ii]);
 95+}
 96+
 97+
 98+
 99+
 100+
 101+
 102+
 103+
 104+function fixaRattMedSlash(url)
 105+{
 106+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 107+ {
 108+ if (url.indexOf("/")!=-1) //om man har / i url...
 109+ {
 110+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a UNIX-style path.\n\nA path in Windows shall not use /, but instead \\.\nExamples:\nWrong: c:/windows/\nCorrect: c:\\windows\\\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "/","\\")))
 111+ {
 112+ gotWindowsWarning=false; //Visa varningen fram�ver
 113+ return sokOchErsatt(url, "/","\\");
 114+ }
 115+ else
 116+ {
 117+ return url;
 118+ }
 119+ }
 120+ else
 121+ {
 122+ return url;
 123+ }
 124+ }
 125+ else
 126+ {
 127+ if (url.indexOf("\\")!=-1) //om man har \ i url...
 128+ {
 129+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a Windows path.\n\nA path in UNIX, Linux or Mac shall not use \\, but instead /.\nExamples:\nWrong: \\files\\\nCorrect: /files/\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "\\","//")))
 130+ {
 131+ gotWindowsWarning=false; //Visa varningen fram�ver
 132+ return sokOchErsatt(url, "\\","//");
 133+ }
 134+ else
 135+ {
 136+ return url;
 137+ }
 138+ }
 139+ else
 140+ {
 141+ return url;
 142+ }
 143+ }
 144+}
 145+
 146+
 147+//Denna funktion l�gger till / eller \ beroende p� vad som redan finns i "url".
 148+function fixaRattMedSlashIslutet(url)
 149+{
 150+ if (url.substring(url.length-1)!="\\" && url.substring(url.length-1)!="/") //Man har inte n�gon slash i slutet
 151+ {
 152+ if (url.indexOf("\\")!=-1) //Man har redan \ i url
 153+ {
 154+ url+="\\";
 155+ }
 156+ else// if (url.indexOf("/")!=-1)
 157+ {
 158+ url+="/";
 159+ }
 160+ }
 161+
 162+ return url;
 163+}
 164+
 165+function fixaRattMedEnhetsbokstav(url)
 166+{
 167+ if (url.substring(1,2)!=":") //Om [man inte varnats tidigare] och om [man inte har : som andra tecken i sin adress]
 168+ if (!haveSeenWindowsWarning() && confirm("The path to your directory is:\n"+url+"\n\nIf you are using Windows the path should start with your drive letter such as (c:\\).\n\nPress OK to change your path to something else.\nPress Cancel to ignore this message and add this to your list with directories."))
 169+ {
 170+ gotWindowsWarning=false; //Visa varningen fram�ver
 171+ return ""; //Avbryt
 172+ }
 173+
 174+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 175+ return url.substring(0,1).toLowerCase()+url.substring(1); //G�r "C:/mapp/" ==> "c:/mapp/"
 176+ else
 177+ return url;
 178+}
 179+
 180+function sokOchErsatt(bigString, gammalStr, nyStr) //S�k "bigString" efter "gammalStr" och ers�tt med "NyStr"
 181+{
 182+ storStrang=bigString;
 183+ for (i=0; i<=storStrang.length-gammalStr.length; i++)
 184+ {
 185+ if (storStrang.substring(i,i+gammalStr.length)==(gammalStr))
 186+ {
 187+ storStrang=storStrang.substring(0,i)+nyStr+storStrang.substring(i+gammalStr.length);
 188+ i+=nyStr.length-1; //Utan detta s� g�r loopen f�r all evighet om man t.ex. har str�ngen "ab/cd" och ers�tter "/" med "//"
 189+ }
 190+ }
 191+ return storStrang;
 192+}
 193+
 194+function stringIsInArray(str, myArray)
 195+{
 196+ for (i=0; i<myArray.length; i++)
 197+ if (str==myArray[i].value)
 198+ return true;
 199+ return false;
 200+}
 201+
 202+
 203+
 204+
 205+
 206+
 207+
 208+
 209+
 210+
 211+function removeQuoteFromURL(url)
 212+{
 213+ if (url.charAt(0)=="\"")
 214+ url=url.substring(1);
 215+ if (url.charAt(url.length-1)=="\"")
 216+ url=url.substring(0,url.length-1);
 217+ return url;
 218+}
 219+
 220+
 221+
 222+
 223+promptForAsterix=true;
 224+function addThisDirectory(url, addSubdirectories)
 225+{
 226+ url=removeQuoteFromURL(url);
 227+
 228+ if (url=="")
 229+ return false;//addDirectory();
 230+
 231+ if (url.indexOf(",")!=-1)
 232+ {
 233+ showAlertXerverHelp("You can't share a folder that has an comma (,) in it's path.");
 234+ return false;//addDirectory();
 235+ }
 236+
 237+ if (url.substring(url.length-1)=="\"" && url.substring(0,1)=="\"") // '"c:/mapp/"' ==> 'c:/mapp/'
 238+ url=url.substring(1,url.length-1);
 239+
 240+ nyURLtmp=fixaRattMedEnhetsbokstav(url);
 241+ if (nyURLtmp=="")
 242+ {
 243+ return false;
 244+ }
 245+ else
 246+ {
 247+ url=nyURLtmp;
 248+ }
 249+
 250+ if ( (url.lastIndexOf(".")>url.lastIndexOf("\\") && (url.indexOf("/")==-1)) ||
 251+ (url.lastIndexOf(".")>url.lastIndexOf("/") && url.indexOf("\\")==-1))
 252+ if (!haveSeenWindowsWarning() && confirm("Is "+url+" a folder or a file?\nPress OK if it is a file.\nPress Cancel if it is a folder."))
 253+ {
 254+ gotWindowsWarning=false; //Visa varningen fram�ver
 255+ showAlertXerverHelp("You must enter the path to the DIRECTORY you want to share.\nYou can't share a single file.");
 256+ return false;
 257+ }
 258+
 259+ url=fixaRattMedSlash(url);
 260+ url=fixaRattMedSlashIslutet(url);
 261+
 262+
 263+
 264+ if (url.indexOf("\"")!=-1)
 265+ {
 266+ showAlertXerverHelp("There is a \" in your directory name.\nSo it can't possibly be a valid directory.")
 267+ return false;//addDirectory();
 268+ }
 269+
 270+
 271+//alert(stringIsInArray(url, document.myForm.sharedPaths.options) +" "+ stringIsInArray(url+"*", document.myForm.sharedPaths.options))
 272+ if (stringIsInArray(url, document.myForm.sharedPaths.options) || stringIsInArray(url+"*", document.myForm.sharedPaths.options)) //Om adressen redan finns i listan...
 273+ for (i=0; i<document.myForm.sharedPaths.length; i++) //Om man tidigare bara delat ut mappen (inte underkataloger), i s� fall ska vi nu uppdatera f�ltet s� att �ven underkatalogerna blir utdelade (och tv�rt om, dvs. man f�rst hade delat ut underkatalogerna och inte vill det mera)
 274+ if (url==document.myForm.sharedPaths.options[i].value || url+"*"==document.myForm.sharedPaths.options[i].value)
 275+ {
 276+ //taBortDettaElement(document.myForm.sharedPaths.options[i]);
 277+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 278+ document.myForm.sharedPaths.options[i]=new Option();
 279+ else
 280+ document.myForm.sharedPaths.options[i]=null;
 281+ break;
 282+ }
 283+
 284+
 285+
 286+ if (addSubdirectories)
 287+ {
 288+ laggTillDirectoryUtanKontroll(url+"*")
 289+ if (promptForAsterix)
 290+ {
 291+ showAlertXerverHelp("The * next to the directory means that all subfolders to that directory has been shared.")
 292+ promptForAsterix=false;
 293+ }
 294+ }
 295+ else
 296+ {
 297+ laggTillDirectoryUtanKontroll(url)
 298+ }
 299+
 300+
 301+ return false;//addDirectory();
 302+}
 303+
 304+
 305+
 306+
 307+
 308+
 309+
 310+function submitForm()
 311+{
 312+ if (document.myForm.sharedPaths.length==0)
 313+ {
 314+ showAlertXerverHelp("Please share at least one folder.");
 315+ return false;
 316+ }
 317+
 318+ nyAddress="action=wizardStep3&direction=forward&save=yes&sharedPaths=";
 319+
 320+ if (document.myForm.sharedPaths.length>0)
 321+ {
 322+ tmpHarLagtTillKomma=false;
 323+ for (i=0; i<document.myForm.sharedPaths.length; i++)
 324+ if (document.myForm.sharedPaths.options[i].text!="") //Om det INTE �r ett element som raderats i Opera (d�r raderas de inte p� riktigt, d�r blir de bara tomma str�ngar)
 325+ {
 326+ tmpHarLagtTillKomma=true;
 327+ nyAddress+=document.myForm.sharedPaths.options[i].text+",";
 328+ }
 329+ if (tmpHarLagtTillKomma)
 330+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 331+ }
 332+
 333+// alert(nyAddress)
 334+ self.location.replace("/?"+escape(nyAddress));
 335+ return true;
 336+}
 337+//-->
 338+</SCRIPT>
 339+
 340+
 341+</HEAD>
 342+<BODY BGCOLOR="white" TEXT="black">
 343+<TABLE WIDTH='400' BORDER='0'>
 344+<TR><TD>
 345+<FONT FACE='verdana,arial'>
 346+<CENTER>
 347+<H3>Xerver Setup [ 2 / 9 ]</H3>
 348+</CENTER>
 349+</FONT>
 350+<FONT FACE='arial,verdana' SIZE='-1'>
 351+<P>
 352+
 353+
 354+<FORM NAME="myForm" ACTION="/" METHOD=get>
 355+
 356+
 357+
 358+
 359+
 360+<B>Add directories</B> <INPUT TYPE="button" NAME="addDirButton" VALUE="Add directory" onClick="addDirectory()"><INPUT TYPE="button" NAME="removeDirButton" VALUE="Remove directory" onClick="removeDirectory()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('Files (not subfolders) in these directories can be viewed by visitors to your web server.\nVisitors can NOT remove or edit files in a folder.\n\nTo share more folders, press the [Add directory] button.\n\nIf a directory has a * in the end of the directory name, you have chosen to share both files AND subfolders in that directory.');">
 361+<BR>
 362+Please choose which directories you want to share.
 363+The content of a shared folder can be viewed by anyone on Internet
 364+(unless you protect the folder with a password).
 365+The setup will later ask you which folders you want to protect with a password.
 366+<BR>
 367+<SELECT NAME="sharedPaths" SIZE=4><!-- onChange="status=this.options[this.selectedIndex].value;" -->
 368+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 369+<!--
 370+<OPTION VALUE="c:\*">c:\*
 371+-->
 372+</SELECT>
 373+<P>
 374+<BR>
 375+
 376+
 377+
 378+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 379+<TR><TD>
 380+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep1&direction=back')">
 381+</TD><TD ALIGN="right">
 382+<P ALIGN="right">
 383+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 384+</P>
 385+</TD></TR>
 386+</TABLE>
 387+
 388+
 389+</FORM>
 390+
 391+
 392+</FONT>
 393+</TD></TR>
 394+</TABLE>
 395+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagexervericon.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagexervericon.gif
___________________________________________________________________
Added: svn:mime-type
1396 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imageinvisible.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imageinvisible.gif
___________________________________________________________________
Added: svn:mime-type
2397 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep4.html
@@ -0,0 +1,450 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 4 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+gotWindowsWarning=false;
 29+function haveSeenWindowsWarning()
 30+{
 31+ if (navigator.appVersion.toLowerCase().indexOf("win")==-1) //Om man inte har windows
 32+ return true; // S� s�ger vi att vi redan sett meddelandet s� vi slipper se det
 33+
 34+ if (!gotWindowsWarning)
 35+ {
 36+ return false;
 37+ gotWindowsWarning=true;
 38+ }
 39+ return true;
 40+}
 41+
 42+
 43+
 44+
 45+function removeAlias()
 46+{
 47+ if (document.myForm.aliasNames.selectedIndex>=0)
 48+ {
 49+ if (confirm("You have selected "+document.myForm.aliasNames.options[document.myForm.aliasNames.selectedIndex].text+".\nDo you want to remove it?"))
 50+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 51+ document.myForm.aliasNames.options[document.myForm.aliasNames.selectedIndex]=new Option();
 52+ else
 53+ document.myForm.aliasNames.options[document.myForm.aliasNames.selectedIndex]=null;
 54+ //document.myForm.aliasNames.options[document.myForm.aliasNames.selectedIndex]=null;
 55+
 56+ }
 57+ else
 58+ {
 59+ alert("Please select the alias you want to remove.");
 60+ }
 61+}
 62+
 63+
 64+
 65+
 66+
 67+function addAlias()
 68+{
 69+ addAliasWindow=window.open(escape("/?action=showAddAliasSetup"),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=470,height=270");
 70+ addAliasWindow.focus();
 71+}
 72+
 73+
 74+
 75+
 76+
 77+function laggTillDirectoryUtanKontroll(url)
 78+{
 79+ document.myForm.aliasNames.options[++document.myForm.aliasNames.length-1]=new Option(url, url)
 80+}
 81+
 82+function nollstallVarden()
 83+{
 84+ while (document.myForm.aliasNames.length>0)
 85+ document.myForm.aliasNames.options[0]=null;
 86+}
 87+
 88+
 89+
 90+var allaKataloger=new Array();
 91+function createAliasList(argAllaKataloger, allaAlias)
 92+{
 93+ allaKataloger=argAllaKataloger.split(",");
 94+ nollstallVarden()
 95+
 96+ if (allaAlias.split(",").length!=-1 && allaAlias!="")
 97+ for (ii=0; ii<allaAlias.split(",").length; ii++)
 98+ laggTillDirectoryUtanKontroll(allaAlias.split(",")[ii]);
 99+}
 100+
 101+
 102+
 103+
 104+
 105+//If an element in myArray is longer than str, only compare the first str.length char. For example: "abc" is equal to "abc123"
 106+function stringIsInSelectBoxEqualLength(str, myArray)
 107+{
 108+ for (i=0; i<myArray.length; i++)
 109+ if (str.toLowerCase()==myArray[i].value.substring(0,str.length).toLowerCase())
 110+ return true;
 111+ return false;
 112+}
 113+
 114+
 115+//If an element in myArray is longer than str, only compare the first str.length char. For example: "abc" is equal to "abc123"
 116+function stringIsInArrayEqualLength(str, myArray)
 117+{
 118+ for (i=0; i<myArray.length; i++)
 119+ if (str.toLowerCase()==myArray[i].substring(0,str.length).toLowerCase())
 120+ return true;
 121+ return false;
 122+}
 123+
 124+//Returns true if "oneFolder" is a shared directory. The list of directories are given by "sharedFolders".
 125+function folderIsShared(oneFolder, sharedFolders)
 126+{
 127+ for (i=0; i<sharedFolders.length; i++)
 128+ {
 129+ tmpDir=sharedFolders[i];
 130+ if (tmpDir.substring(tmpDir.length-1)=="*") //If the folder ends with an "*"
 131+ {
 132+ tmpDir=tmpDir.substring(0,tmpDir.length-1) //"c:/folder/*" ==> "c:/folder/"
 133+
 134+ if (oneFolder.substring(0,tmpDir.length).toLowerCase()==tmpDir.toLowerCase())
 135+ return true;
 136+ }
 137+ else if (oneFolder.toLowerCase()==tmpDir.toLowerCase()) //If the subfolders are not shared, the folders must be equal
 138+ return true;
 139+
 140+ }
 141+ return false;
 142+}
 143+
 144+
 145+
 146+function fixaRattMedSlash(url)
 147+{
 148+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 149+ {
 150+ if (url.indexOf("/")!=-1) //om man har / i url...
 151+ {
 152+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a UNIX-style path.\n\nA path in Windows shall not use /, but instead \\.\nExamples:\nWrong: c:/windows/\nCorrect: c:\\windows\\\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "/","\\")))
 153+ {
 154+ gotWindowsWarning=false; //Visa varningen fram�ver
 155+ return sokOchErsatt(url, "/","\\");
 156+ }
 157+ else
 158+ {
 159+ return url;
 160+ }
 161+ }
 162+ else
 163+ {
 164+ return url;
 165+ }
 166+ }
 167+ else
 168+ {
 169+ if (url.indexOf("\\")!=-1) //om man har \ i url...
 170+ {
 171+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a Windows path.\n\nA path in UNIX, Linux or Mac shall not use \\, but instead /.\nExamples:\nWrong: \\files\\\nCorrect: /files/\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "\\","//")))
 172+ {
 173+ gotWindowsWarning=false; //Visa varningen fram�ver
 174+ return sokOchErsatt(url, "\\","//");
 175+ }
 176+ else
 177+ {
 178+ return url;
 179+ }
 180+ }
 181+ else
 182+ {
 183+ return url;
 184+ }
 185+ }
 186+}
 187+
 188+
 189+//Denna funktion l�gger till / eller \ beroende p� vad som redan finns i "url".
 190+function fixaRattMedSlashIslutet(url)
 191+{
 192+ if (url.substring(url.length-1)!="\\" && url.substring(url.length-1)!="/") //Man har inte n�gon slash i slutet
 193+ {
 194+ if (url.indexOf("\\")!=-1) //Man har redan \ i url
 195+ {
 196+ url+="\\";
 197+ }
 198+ else// if (url.indexOf("/")!=-1)
 199+ {
 200+ url+="/";
 201+ }
 202+ }
 203+
 204+ return url;
 205+}
 206+
 207+
 208+function fixaRattMedEnhetsbokstav(url)
 209+{
 210+ if (url.substring(1,2)!=":") //Om [man inte varnats tidigare] och om [man inte har : som andra tecken i sin adress]
 211+ if (!haveSeenWindowsWarning() && confirm("The path to your directory is:\n"+url+"\n\nIf you are using Windows the path should start with your drive letter such as (c:\\).\n\nPress OK to change your path to something else.\nPress Cancel to ignore this message and add this to your list with directories."))
 212+ {
 213+ gotWindowsWarning=false; //Visa varningen fram�ver
 214+ return ""; //Avbryt
 215+ }
 216+
 217+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 218+ return url.substring(0,1).toLowerCase()+url.substring(1); //G�r "C:/mapp/" ==> "c:/mapp/"
 219+ else
 220+ return url;
 221+}
 222+
 223+
 224+function sokOchErsatt(bigString, gammalStr, nyStr) //S�k "bigString" efter "gammalStr" och ers�tt med "NyStr"
 225+{
 226+ storStrang=bigString;
 227+ for (i=0; i<=storStrang.length-gammalStr.length; i++)
 228+ {
 229+ if (storStrang.substring(i,i+gammalStr.length)==(gammalStr))
 230+ {
 231+ storStrang=storStrang.substring(0,i)+nyStr+storStrang.substring(i+gammalStr.length);
 232+ i+=nyStr.length-1; //Utan detta s� g�r loopen f�r all evighet om man t.ex. har str�ngen "ab/cd" och ers�tter "/" med "//"
 233+ }
 234+ }
 235+ return storStrang;
 236+}
 237+
 238+function stringIsInArray(str, myArray)
 239+{
 240+ for (i=0; i<myArray.length; i++)
 241+ if (str==myArray[i].value)
 242+ return true;
 243+ return false;
 244+}
 245+
 246+
 247+
 248+
 249+
 250+
 251+function removeQuoteFromURL(url)
 252+{
 253+ if (url.charAt(0)=="\"")
 254+ url=url.substring(1);
 255+ if (url.charAt(url.length-1)=="\"")
 256+ url=url.substring(0,url.length-1);
 257+ return url;
 258+}
 259+
 260+
 261+
 262+function addThisAlias(theAlias,theFolder)
 263+{
 264+ theFolder=removeQuoteFromURL(theFolder);
 265+ theFolder=fixaRattMedSlashIslutet(theFolder);
 266+ theFolder=fixaRattMedEnhetsbokstav(theFolder);
 267+
 268+ theAlias=sokOchErsatt(theAlias,"\\","/"); //"fold1\fold2" ==> "fold1/fold2"
 269+
 270+ while (theAlias!=sokOchErsatt(theAlias,"//","/")) //"fold1////fold2" ==> "fold1/fold2"
 271+ theAlias=sokOchErsatt(theAlias,"//","/");
 272+
 273+ if (theAlias.substring(0,1)!="/")
 274+ theAlias="/"+theAlias; //"alias" ==> "/alias"
 275+
 276+ if (theAlias.substring(theAlias.length-1)!="/")
 277+ theAlias=theAlias+"/"; //"/alias" ==> "/alias/"
 278+
 279+ if (theAlias=="") //alias minimum length: ("/a/".length==3)
 280+ return false;
 281+
 282+ if (theFolder=="") //alias minimum length: ("/a/".length==3)
 283+ return false;
 284+
 285+ if (theAlias.length < 3 || theAlias.indexOf("=")!=-1 || theAlias.indexOf(",")!=-1) //alias minimum length: ("/a/".length==3)
 286+ {
 287+ showAlertXerverHelp("Your alias should use this format:\t/myFolder/\nThis format is invalid:\t\t"+theAlias+"\n\nYour alias should not contain a comma (,) or a =.")
 288+ return false;
 289+ }
 290+
 291+ if (theFolder.indexOf(",")!=-1)
 292+ {
 293+ showAlertXerverHelp("Your directory path should not contain a comma (,)")
 294+ return false;
 295+ }
 296+
 297+ if (stringIsInSelectBoxEqualLength(theAlias, document.myForm.aliasNames.options))
 298+ {
 299+ showAlertXerverHelp("You have already added "+theAlias+" to your list.")
 300+ return false;
 301+ }
 302+
 303+ if (!folderIsShared(theFolder, allaKataloger)) //If you try to point an alias to a directory which you have NOT shared...
 304+ {
 305+ if(confirm("WARNING!\n\nYour alias ("+theAlias+") is pointing to a directory ("+theFolder+") which you have NOT shared!\nPointing an alias to a directory DOES NOT automatically add that directory to the list of shared directories.\n\nThis means that if someone visits http://www.yourdomain.com"+theAlias+" he will get a \"403 Forbidden\" error message, as the user does not have permission to view the content of "+theFolder+".\n\n\nDo you want to add "+theFolder+" to your list with shared directories? (This means that everyone will be able to view the content of this directory)"))
 306+ if (confirm("Do you also want to share the subfolders to "+theFolder+"?\n\nOK = Yes, share "+theFolder+" and all subfolders.\nCancel = No, share only "+theFolder+"."))
 307+ allaKataloger[allaKataloger.length++]=theFolder+"*";
 308+ else
 309+ allaKataloger[allaKataloger.length++]=theFolder;
 310+
 311+ }
 312+
 313+
 314+ if (theAlias.indexOf("\"")==-1)
 315+ {
 316+ if (theFolder==null) //If "addThisScriptExtension" has been called from the "sidanHarLaddatKlart" function (the setup page has been loaded and the values from the .js-file are being set now)
 317+ document.myForm.aliasNames.options[++document.myForm.aliasNames.length-1]=new Option(theAlias, theAlias)
 318+ else
 319+ document.myForm.aliasNames.options[++document.myForm.aliasNames.length-1]=new Option(theAlias+"="+theFolder, theAlias)
 320+
 321+ }
 322+ else
 323+ showAlertXerverHelp("There is a \" in your file extension.\nSo it can't possibly be a valid file extension.")
 324+}
 325+
 326+
 327+
 328+
 329+
 330+
 331+
 332+
 333+
 334+
 335+
 336+function submitForm()
 337+{
 338+ nyAddress="action=wizardStep5&direction=forward&save=yes&aliasNames=";
 339+
 340+ if (document.myForm.aliasNames.length>0)
 341+ {
 342+ tmpHarLagtTillKomma=false;
 343+ for (i=0; i<document.myForm.aliasNames.length; i++)
 344+ if (document.myForm.aliasNames.options[i].text!="") //Om det INTE �r ett element som raderats i Opera (d�r raderas de inte p� riktigt, d�r blir de bara tomma str�ngar)
 345+ {
 346+ tmpHarLagtTillKomma=true;
 347+ nyAddress+=document.myForm.aliasNames.options[i].text+",";
 348+ }
 349+ if (tmpHarLagtTillKomma)
 350+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 351+ }
 352+
 353+ nyAddress+="&sharedPaths="
 354+
 355+ if (allaKataloger.length>0)
 356+ {
 357+ tmpHarLagtTillKomma=false;
 358+ for (i=0; i<allaKataloger.length; i++)
 359+ if (allaKataloger[i]!="")
 360+ {
 361+ tmpHarLagtTillKomma=true;
 362+ nyAddress+=allaKataloger[i]+",";
 363+ }
 364+ if (tmpHarLagtTillKomma)
 365+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 366+ }
 367+
 368+// alert(nyAddress)
 369+ self.location.replace("/?"+escape(nyAddress));
 370+ return true;
 371+}
 372+//-->
 373+</SCRIPT>
 374+
 375+
 376+</HEAD>
 377+<BODY BGCOLOR="white" TEXT="black">
 378+<TABLE WIDTH='400' BORDER='0'>
 379+<TR><TD>
 380+<FONT FACE='verdana,arial'>
 381+<CENTER>
 382+<H3>Xerver Setup [ 4 / 9 ]</H3>
 383+</CENTER>
 384+</FONT>
 385+<FONT FACE='arial,verdana' SIZE='-1'>
 386+<P>
 387+
 388+
 389+<FORM NAME="myForm" ACTION="/" METHOD=get>
 390+
 391+
 392+
 393+
 394+
 395+<B>Add alias</B> <INPUT TYPE="button" NAME="addAliasButton" VALUE="Add Alias" onClick="addAlias()"><INPUT TYPE="button" NAME="removeAliasButton" VALUE="Remove Alias" onClick="removeAlias()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('If you don\'t understand what an alias is:\nDon\'t mind, you don\'t have to use aliases.\n\nXerver doesn\'t support only first level aliases (such as http://server.com/alias1/), but also multilevel aliases (such as http://server.com/alias1/alias2/).');">
 396+<BR>
 397+<SELECT NAME="aliasNames" SIZE=4><!-- onChange="status=this.options[this.selectedIndex].value;" -->
 398+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 399+<!--
 400+<OPTION VALUE="c:\*">c:\*
 401+-->
 402+</SELECT>
 403+<P>
 404+<BR>
 405+
 406+<TABLE BORDER=1 BGCOLOR="#cccccc" CELLSPACING=0 CELLPADDING=2>
 407+<TR BGCOLOR="#aaaaaa"><TD>
 408+<FONT FACE='arial,verdana' SIZE='-1'>
 409+<B>What is an alias?</B>
 410+</FONT>
 411+</TD></TR><TR><TD>
 412+<FONT FACE='arial,verdana' SIZE='-1'>
 413+Let's say your root is <B>c:\AAA\</B>.
 414+<BR>
 415+<BR>
 416+When you visit <B>http://www.yourserver.com/</B> you will see the files and folders in <B>c:\AAA\</B>.
 417+<BR>
 418+When you visit <B>http://www.yourserver.com/BBB/</B> you will see the files and folders in <B>c:\AAA\BBB\</B>.
 419+<P>
 420+
 421+However, if you want, you can create an alias called <B>/CCC/</B> and point it to <B>x:\DDD\</B>.
 422+<BR>
 423+When you visit <B>http://www.yourserver.com/CCC/</B> you will see the files and folders in <B>x:\DDD\</B>.
 424+<BR>
 425+When you visit <B>http://www.yourserver.com/CCC/EEE/</B> you will see the files and folders in <B>x:\DDD\EEE\</B>.
 426+
 427+</FONT>
 428+</TD></TR>
 429+</TABLE>
 430+<P>
 431+<BR>
 432+
 433+
 434+
 435+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 436+<TR><TD>
 437+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep3&direction=back')">
 438+</TD><TD ALIGN="right">
 439+<P ALIGN="right">
 440+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 441+</P>
 442+</TD></TR>
 443+</TABLE>
 444+
 445+</FORM>
 446+
 447+
 448+</FONT>
 449+</TD></TR>
 450+</TABLE>
 451+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/gotosetup.html
@@ -0,0 +1,91 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Go to Xerver Web Setup</TITLE>
 5+</HEAD>
 6+<BODY>
 7+
 8+<BR>
 9+<BR>
 10+
 11+<TABLE width=600>
 12+<TR><TD>
 13+<CENTER>
 14+<H2><FONT FACE="verdana,arial"><A HREF="http://127.0.0.1:32123/">Go to Xerver Web Setup</A></FONT></H2>
 15+
 16+<BR>
 17+
 18+<FONT FACE="arial,verdana" SIZE="-1">
 19+<B>What is this?</B>
 20+<P>
 21+All Xerver settings are configurable through a <I>Web Interface</I>.
 22+<BR>
 23+There are two different pages where you can change settings.
 24+<BR>
 25+One for the HTTP server and another one for the FTP server.
 26+<BR>
 27+<BR>
 28+
 29+</FONT>
 30+
 31+<TABLE width=600 cellpadding=0 cellspacing=0>
 32+<TR bgcolor=black>
 33+ <TD colspan=2 height=3></TD>
 34+</TR>
 35+<TR>
 36+ <TH width=200 bgcolor=lightgreen>
 37+ <FONT FACE="arial,verdana" SIZE="-1">
 38+ Xerver Web (HTTP) Setup
 39+ </FONT>
 40+ </TH>
 41+ <TD>
 42+ <TABLE cellspacing=5><TR><TD>
 43+ <FONT FACE="arial,verdana" SIZE="-1">
 44+ You can change settings to the HTTP server here:
 45+ <B><A HREF="http://127.0.0.1:32123/">http://127.0.0.1:32123/</A></B>
 46+ </FONT>
 47+ </TD></TR></TABLE>
 48+ </TD>
 49+</TR>
 50+<TR bgcolor=black>
 51+ <TD colspan=2 height=3></TD>
 52+</TR>
 53+<TR>
 54+<TR>
 55+ <TH bgcolor=lightgreen>
 56+ <FONT FACE="arial,verdana" SIZE="-1">
 57+ Xerver FTP Setup
 58+ </FONT>
 59+ </TH>
 60+ <TD>
 61+ <TABLE cellspacing=5><TR><TD>
 62+ <FONT FACE="arial,verdana" SIZE="-1">
 63+ You can change settings to the FTP server here:
 64+ <B><A HREF="http://127.0.0.1:32124/">http://127.0.0.1:32124/</A></B>
 65+ </FONT>
 66+ </TD></TR></TABLE>
 67+ </TD>
 68+ </TD>
 69+</TR>
 70+<TR bgcolor=black>
 71+ <TD colspan=2 height=3></TD>
 72+</TR>
 73+<TR>
 74+</TABLE>
 75+
 76+<BR>
 77+<BR>
 78+
 79+<FONT FACE="arial,verdana" SIZE="-2">
 80+<I>When Xerver is not running, the setup websites are
 81+<BR>
 82+not running and the websites will not be accessible.</I>
 83+</FONT>
 84+
 85+</CENTER>
 86+</TD></TR>
 87+</TABLE>
 88+
 89+
 90+
 91+</BODY>
 92+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep6.html
@@ -0,0 +1,234 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 6 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+
 29+function createIndexFileList(allIndexFiles)
 30+{
 31+ nollstallVarden();
 32+
 33+ if (allIndexFiles.split(",").length!=-1)
 34+ for (ii=0; ii<allIndexFiles.split(",").length; ii++)
 35+ addThisIndex(allIndexFiles.split(",")[ii],null);
 36+}
 37+
 38+
 39+
 40+function nollstallVarden()
 41+{
 42+ while (document.myForm.indexNames.length>0)
 43+ document.myForm.indexNames.options[0]=null;
 44+}
 45+
 46+
 47+
 48+
 49+
 50+
 51+
 52+
 53+function stringIsInArray(str, myArray)
 54+{
 55+ for (i=0; i<myArray.length; i++)
 56+ if (str==myArray[i].value)
 57+ return true;
 58+ return false;
 59+}
 60+
 61+
 62+
 63+
 64+
 65+
 66+
 67+
 68+
 69+
 70+
 71+
 72+
 73+
 74+
 75+function addIndex()
 76+{
 77+ addIndWindow=window.open(escape("/?action=showAddIndSetup"),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=230");
 78+ addIndWindow.focus();
 79+}
 80+
 81+
 82+
 83+
 84+function addThisIndex(thisIndex)
 85+{
 86+ if (thisIndex=="")
 87+ return false;
 88+
 89+ if (thisIndex.indexOf(",")!=-1 || thisIndex.indexOf("\\")!=-1 || thisIndex.indexOf("/")!=-1 || thisIndex.indexOf("\"")!=-1)
 90+ {
 91+ showAlertXerverHelp("Your index-file can not contain these characters:\n , / \\ \"");
 92+ return false;
 93+ }
 94+
 95+ if (stringIsInArray(thisIndex, document.myForm.indexNames.options))
 96+ {
 97+ showAlertXerverHelp("You have already added "+thisIndex+" to your list with index files.")
 98+ return false;
 99+ }
 100+
 101+ if (thisIndex.indexOf("\"")==-1)
 102+ {
 103+ document.myForm.indexNames.options[++document.myForm.indexNames.length-1]=new Option(thisIndex, thisIndex)
 104+// document.myForm.indexNames.options[++document.myForm.indexNames.length-1].value=thisIndex;
 105+// document.myForm.indexNames.options[document.myForm.indexNames.length-1].text=thisIndex;
 106+ }
 107+ else
 108+ showAlertXerverHelp("There is a \" in your index file.\nSo it can't possibly be a valid file.")
 109+}
 110+
 111+
 112+function removeIndex()
 113+{
 114+ if (document.myForm.indexNames.selectedIndex>=0)
 115+ {
 116+ if (confirm("You have selected "+document.myForm.indexNames.options[document.myForm.indexNames.selectedIndex].text+".\nDo you want to remove it?"))
 117+// document.myForm.indexNames.options[document.myForm.indexNames.selectedIndex]=null;
 118+ if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) //Om man k�r opera
 119+ document.myForm.indexNames.options[document.myForm.indexNames.selectedIndex]=new Option();
 120+ else
 121+ document.myForm.indexNames.options[document.myForm.indexNames.selectedIndex]=null;
 122+ }
 123+ else
 124+ {
 125+ alert("Please select the index file you want to remove.");
 126+ }
 127+}
 128+
 129+
 130+
 131+
 132+
 133+
 134+
 135+
 136+
 137+
 138+
 139+function submitForm()
 140+{
 141+ nyAddress="action=wizardStep7&direction=forward&save=yes&indexNames=";
 142+
 143+ if (document.myForm.indexNames.length>0)
 144+ {
 145+ tmpHarLagtTillKomma=false;
 146+ for (i=0; i<document.myForm.indexNames.length; i++)
 147+ if (document.myForm.indexNames.options[i].text!="") //Om det INTE �r ett element som raderats i Opera (d�r raderas de inte p� riktigt, d�r blir de bara tomma str�ngar)
 148+ {
 149+ tmpHarLagtTillKomma=true;
 150+ nyAddress+=document.myForm.indexNames.options[i].text+",";
 151+ }
 152+ if (tmpHarLagtTillKomma)
 153+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 154+ }
 155+
 156+// alert(nyAddress)
 157+ self.location.replace("/?"+escape(nyAddress));
 158+ return true;
 159+}
 160+//-->
 161+</SCRIPT>
 162+
 163+
 164+</HEAD>
 165+<BODY BGCOLOR="white" TEXT="black">
 166+<TABLE WIDTH='400' BORDER='0'>
 167+<TR><TD>
 168+<FONT FACE='verdana,arial'>
 169+<CENTER>
 170+<H3>Xerver Setup [ 6 / 9 ]</H3>
 171+</CENTER>
 172+</FONT>
 173+<FONT FACE='arial,verdana' SIZE='-1'>
 174+<P>
 175+
 176+
 177+<FORM NAME="myForm" ACTION="/" METHOD=get>
 178+
 179+
 180+<B>Default index-files</B>
 181+<BR>
 182+<INPUT TYPE="button" NAME="addIndexButton" VALUE="Add index file" onClick="addIndex()"><INPUT TYPE="button" NAME="removeIndButton" VALUE="Remove index file" onClick="removeIndex()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('An index file is a file that will be shown by default if someone visits a directory.\nExample: If someone is visiting http://www.yourwebsite.com/directory/ and if there is an index file in this directory (for example index.html) this file will be shown for the visitor.\n\nIn case that you have more than one index file in your directory, the files should be ordered with the file you prefer to show at the top of this list.\n\nIf you don\'t have an website you want to share and you are using this web server just as a file-sharing application (maybe you just want to share your music files with your friends), we recommend that you don\'t have any index files at all.\nHowever, if you have a homepage, you might want to add index.htm, index.html etc. as index files.');">
 183+<BR>
 184+<SELECT NAME="indexNames" SIZE=4 onChange="status=this.options[this.selectedIndex].value;">
 185+
 186+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 187+<!--
 188+<OPTION VALUE="index.html">index.html
 189+<OPTION VALUE="index.htm">index.htm
 190+<OPTION VALUE="index.shtml">index.shtml
 191+<OPTION VALUE="index.shtm">index.shtm
 192+-->
 193+</SELECT>
 194+<P>
 195+<BR>
 196+
 197+
 198+<TABLE BORDER=1 BGCOLOR="#cccccc" CELLSPACING=0 CELLPADDING=2>
 199+<TR BGCOLOR="#aaaaaa"><TD>
 200+<FONT FACE='arial,verdana' SIZE='-1'>
 201+<B>What is an index file?</B>
 202+</FONT>
 203+</TD></TR><TR><TD>
 204+<FONT FACE='arial,verdana' SIZE='-1'>
 205+Let's say someone visits <B>http://www.yourdomain.com/AAA/</B>.
 206+<P>
 207+If you have no index files the visitor will see a list of all files and folders located in <B>/AAA/</B>
 208+(if folder listing is enabled, of course).
 209+<BR>
 210+If you have an index file (for example <B>index.html</B>) in <B>/AAA/</B>, this will be shown
 211+(the visitor will see <B>http://www.yourdomain.com/AAA/index.html</B>).
 212+</FONT>
 213+</TD></TR>
 214+</TABLE>
 215+<P>
 216+<BR>
 217+
 218+
 219+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 220+<TR><TD>
 221+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep5&direction=back')">
 222+</TD><TD ALIGN="right">
 223+<P ALIGN="right">
 224+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 225+</P>
 226+</TD></TR>
 227+</TABLE>
 228+
 229+</FORM>
 230+
 231+
 232+</FONT>
 233+</TD></TR>
 234+</TABLE>
 235+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagewizardsmall.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagewizardsmall.gif
___________________________________________________________________
Added: svn:mime-type
1236 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizStep8.html
@@ -0,0 +1,724 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Xerver Setup [ 8 / 9 ]</TITLE>
 5+
 6+
 7+<SCRIPT LANGUAGE=javascript>
 8+<!--
 9+function showXerverHelp(helpTxt,titleTxt)
 10+{
 11+ if (titleTxt=="undefined" || titleTxt==null || titleTxt=="")
 12+ titleTxt="Xerver Wizard Help";
 13+
 14+//NOTE: if (parseInt(navigator.appVersion)>=4 && navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.toLowerCase().indexOf("opera")==-1)
 15+//NOTE: showHelp("/?"+escape("action=showWizardHelp&helpText="+helpTxt+"&titleText="+titleTxt),"width=400,height=200");
 16+
 17+ addDirWindow=window.open("/?action=showWizardHelp&helpText="+escape(helpTxt)+"&titleTxt="+escape(titleTxt),"XerverWizardHelp","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=450,height=330");
 18+ addDirWindow.focus();
 19+}
 20+
 21+function showAlertXerverHelp(helpTxt)
 22+{
 23+ showXerverHelp(helpTxt,"");
 24+}
 25+
 26+
 27+
 28+
 29+gotWindowsWarning=false;
 30+function haveSeenWindowsWarning()
 31+{
 32+ if (navigator.appVersion.toLowerCase().indexOf("win")==-1) //Om man inte har windows
 33+ return true; // S� s�ger vi att vi redan sett meddelandet s� vi slipper se det
 34+
 35+ if (!gotWindowsWarning)
 36+ {
 37+ gotWindowsWarning=true;
 38+ return false;
 39+ }
 40+ return true;
 41+}
 42+
 43+
 44+
 45+
 46+function removeProtFolders()
 47+{
 48+ if (document.myForm.allFoldersAndZones.selectedIndex>=0)
 49+ {
 50+ if (confirm("You have selected "+document.myForm.allFoldersAndZones.options[document.myForm.allFoldersAndZones.selectedIndex].text+".\nDo you want to remove it?"))
 51+ {
 52+ removeElementByIndex(allProtFolders, document.myForm.allFoldersAndZones.selectedIndex)
 53+ updateProtFoldersList();
 54+ updateListOfUsers();
 55+ }
 56+ }
 57+ else
 58+ {
 59+ alert("Please select the folder you want to remove.");
 60+ }
 61+}
 62+
 63+
 64+
 65+function removeProtUsers()
 66+{
 67+ if (document.myForm.allUsers.selectedIndex>=0)
 68+ {
 69+ if (confirm("You have selected "+document.myForm.allUsers.options[document.myForm.allUsers.selectedIndex].text+".\nDo you want to remove it?"))
 70+ {
 71+ tmpDirSelected=document.myForm.allFoldersAndZones.selectedIndex;
 72+ removeUserByIndex(allProtFolders, document.myForm.allUsers.selectedIndex, document.myForm.allFoldersAndZones.selectedIndex)
 73+ updateProtFoldersList();
 74+ document.myForm.allFoldersAndZones.selectedIndex=tmpDirSelected;
 75+ updateListOfUsers();
 76+ }
 77+ }
 78+ else
 79+ {
 80+ alert("Please select the user you want to delete.");
 81+ }
 82+}
 83+
 84+
 85+
 86+
 87+function addProtUsers()
 88+{
 89+ if (document.myForm.allFoldersAndZones.selectedIndex!=-1)
 90+ {
 91+ line=document.myForm.allFoldersAndZones.options[document.myForm.allFoldersAndZones.selectedIndex].value
 92+ folder=giveFolderWithoutAsterix(line.substring(0,line.indexOf("<<@>>")));
 93+ realm=line.substring(line.indexOf("<<@>>")+"<<@>>".length,line.lastIndexOf("<<@>>"));
 94+ if (line.substring(line.indexOf("<<@>>")-1,line.indexOf("<<@>>"))=="*")
 95+ subfolder="true";
 96+ else
 97+ subfolder="false";
 98+
 99+ addProtFoldersWindow=window.open("/?action=showAddProtFrameSetup&showInFrame=addUser&folderValue="+escape(folder)+"&realmValue="+escape(realm)+"&subfoldersValue="+escape(subfolder),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=350");
 100+ addProtFoldersWindow.focus();
 101+ }
 102+ else
 103+ alert("Please select the folder you like to add a user to.")
 104+}
 105+
 106+
 107+function addProtFolders()
 108+{
 109+ addProtFoldersWindow=window.open("/?action=showAddProtFrameSetup&showInFrame=addFolder","addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=350");
 110+ addProtFoldersWindow.focus();
 111+}
 112+
 113+
 114+function nollstallVarden()
 115+{
 116+ clearSelectBox(document.myForm.allFoldersAndZones);
 117+ clearSelectBox(document.myForm.allUsers);
 118+}
 119+
 120+
 121+
 122+var allaKataloger=new Array();
 123+var allProtFolders=new Array();
 124+function createProtectedList(argAllaKataloger, allProtected)
 125+{
 126+ if (argAllaKataloger==null || argAllaKataloger=="" || argAllaKataloger=="undefined")
 127+ allaKataloger=new Array();
 128+ else
 129+ allaKataloger=argAllaKataloger.split(",");
 130+
 131+ if (allProtected==null || allProtected=="" || allProtected=="undefined")
 132+ allProtFolders=new Array();
 133+ else
 134+ allProtFolders=allProtected.split("<<$>>");
 135+
 136+ nollstallVarden();
 137+ updateProtFoldersList();
 138+}
 139+
 140+function updateProtFoldersList()
 141+{
 142+ clearSelectBox(document.myForm.allFoldersAndZones);
 143+ for (ii=0; ii<allProtFolders.length; ii++)
 144+ addStringToSelectBox(allProtFolders[ii], allProtFolders[ii].substring(0,allProtFolders[ii].lastIndexOf("<<@>>")).split("<<@>>")[0]+" ["+allProtFolders[ii].substring(0,allProtFolders[ii].lastIndexOf("<<@>>")).split("<<@>>")[1]+"]",document.myForm.allFoldersAndZones);
 145+}
 146+
 147+
 148+function updateListOfUsers()
 149+{
 150+ if (document.myForm.allFoldersAndZones.selectedIndex!=-1)
 151+ {
 152+ raden=document.myForm.allFoldersAndZones.options[document.myForm.allFoldersAndZones.selectedIndex].value;
 153+ arrayOfUsers=raden.substring(raden.lastIndexOf("<<@>>")+"<<@>>".length).split(";")
 154+ clearSelectBox(document.myForm.allUsers);
 155+ for (i=0; i<arrayOfUsers.length; i++)
 156+ addStringToSelectBox(document.myForm.allFoldersAndZones.options[document.myForm.allFoldersAndZones.selectedIndex].value, arrayOfUsers[i], document.myForm.allUsers);
 157+ }
 158+ else //no folder is selected
 159+ clearSelectBox(document.myForm.allUsers); //remove all users from list (no folder will be selected anymore)
 160+}
 161+
 162+
 163+function addStringToSelectBox(value, txt, selectBox) //selctBox=document.form.name
 164+{
 165+ selectBox.options[++selectBox.length-1]=new Option(txt, value);
 166+}
 167+
 168+
 169+function clearSelectBox(selectBox) //selctBox=document.form.name
 170+{
 171+ while (selectBox.length>0)
 172+ selectBox.options[0]=null;
 173+}
 174+
 175+function giveFolderWithoutAsterix(folder)
 176+{
 177+ if (folder.substring(folder.length-1)=="*")
 178+ return folder.substring(0,folder.length-1);
 179+ else
 180+ return folder;
 181+}
 182+
 183+function numberOfUsersAtFolder(thisFolder) //thisFolder can be "c:/dir/*"
 184+{
 185+ for (i=0; i<allProtFolders.length; i++)
 186+ if (giveFolderWithoutAsterix(allProtFolders[i].substring(0,allProtFolders[i].indexOf("<<@>>")))==thisFolder)
 187+ if (allProtFolders[i].substring(allProtFolders[i].lastIndexOf("<<@>>")+"<<@>>".length)=="")
 188+ return 0;
 189+ else
 190+ return allProtFolders[i].substring(allProtFolders[i].lastIndexOf("<<@>>")+"<<@>>".length).split(";").length;
 191+ return -1; //folder does not exists
 192+}
 193+
 194+
 195+function numberOfUsersByIndex(index)
 196+{
 197+ if (allProtFolders[index].substring(allProtFolders[index].lastIndexOf("<<@>>")+"<<@>>".length)=="")
 198+ return 0;
 199+ else
 200+ return allProtFolders[index].substring(allProtFolders[index].lastIndexOf("<<@>>")+"<<@>>".length).split(";").length;
 201+
 202+ return -1; //folder does not exists
 203+}
 204+
 205+function userExists(user, index)
 206+{
 207+ userList=allProtFolders[index].substring(allProtFolders[index].lastIndexOf("<<@>>")+"<<@>>".length).split(";");
 208+ for (jj=0; jj<userList.length; jj++)
 209+ if (userList[jj].substring(0,userList[jj].indexOf(":"))==user)
 210+ return true;
 211+
 212+ return false;
 213+}
 214+
 215+
 216+function changeElementUpdatePassword(user, password, index)
 217+{
 218+ userList=allProtFolders[index].substring(allProtFolders[index].lastIndexOf("<<@>>")+"<<@>>".length).split(";");
 219+ for (jj=0; jj<userList.length; jj++)
 220+ if (userList[jj].substring(0,userList[jj].indexOf(":"))==user)
 221+ userList[jj]=user+":"+password;
 222+
 223+ tmpLine=allProtFolders[index].substring(0,allProtFolders[index].lastIndexOf("<<@>>")+"<<@>>".length)
 224+ for (jj=0; jj<userList.length; jj++)
 225+ tmpLine+=userList[jj]+";";
 226+
 227+ tmpLine=tmpLine.substring(0,tmpLine.length-1)
 228+ allProtFolders[index]=tmpLine;
 229+}
 230+
 231+function addLineToProtDatabase(theFolder, theRealm, theUserName, thePass, subfolders)
 232+{
 233+ if (numberOfUsersAtFolder(theFolder)==-1) //folder is not already shared
 234+ if (subfolders) //also share subfolders
 235+ allProtFolders[allProtFolders.length++]=theFolder+"*"+"<<@>>"+theRealm+"<<@>>"+theUserName+":"+thePass;
 236+ else //don't share subfolders
 237+ allProtFolders[allProtFolders.length++]=theFolder+"<<@>>"+theRealm+"<<@>>"+theUserName+":"+thePass;
 238+ else //folder is already shared
 239+ for (i=0; i<allProtFolders.length; i++)
 240+ if (giveFolderWithoutAsterix(allProtFolders[i].substring(0,allProtFolders[i].indexOf("<<@>>")))==theFolder)
 241+ {
 242+ if (userExists(theUserName, i))
 243+ {
 244+ changeElementUpdatePassword(theUserName, thePass, i);
 245+ }
 246+ else
 247+ {
 248+ if (numberOfUsersByIndex(i)=="0")
 249+ {
 250+ allProtFolders[i]+=theUserName+":"+thePass;
 251+ }
 252+ else
 253+ {
 254+ allProtFolders[i]+=";"+theUserName+":"+thePass;
 255+ }
 256+ break;
 257+ }
 258+ }
 259+
 260+ updateProtFoldersList();
 261+ document.myForm.allFoldersAndZones.selectedIndex=getIndexByFolder(theFolder); //Select the folder that has been created/updated
 262+ updateListOfUsers(); //Now we show all users for this directory
 263+}
 264+
 265+
 266+
 267+//If an element in myArray is longer than str, only compare the first str.length char. For example: "abc" is equal to "abc123"
 268+function stringIsInSelectBoxEqualLength(str, myArray)
 269+{
 270+ for (i=0; i<myArray.length; i++)
 271+ if (str.toLowerCase()==myArray[i].value.substring(0,str.length).toLowerCase())
 272+ return true;
 273+ return false;
 274+}
 275+
 276+
 277+//If an element in myArray is longer than str, only compare the first str.length char. For example: "abc" is equal to "abc123"
 278+function stringIsInArrayEqualLength(str, myArray)
 279+{
 280+ for (i=0; i<myArray.length; i++)
 281+ if (str.toLowerCase()==myArray[i].substring(0,str.length).toLowerCase())
 282+ return true;
 283+ return false;
 284+}
 285+
 286+//Returns true if "oneFolder" is a shared directory. The list of directories are given by "sharedFolders".
 287+function folderIsShared(oneFolder, sharedFolders)
 288+{
 289+ for (i=0; i<sharedFolders.length; i++)
 290+ {
 291+ tmpDir=sharedFolders[i];
 292+
 293+ if (tmpDir.substring(tmpDir.length-1)=="*") //If the folder ends with an "*"
 294+ {
 295+ tmpDir=tmpDir.substring(0,tmpDir.length-1) //"c:/folder/*" ==> "c:/folder/"
 296+
 297+ if (oneFolder.substring(0,tmpDir.length).toLowerCase()==tmpDir.toLowerCase())
 298+ return true;
 299+ }
 300+ else if (oneFolder.toLowerCase()==tmpDir.toLowerCase()) //If the subfolders are not shared, the folders must be equal
 301+ return true;
 302+
 303+ }
 304+ return false;
 305+}
 306+
 307+function fixaRattMedSlash(url)
 308+{
 309+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 310+ {
 311+ if (url.indexOf("/")!=-1) //om man har / i url...
 312+ {
 313+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a UNIX-style path.\n\nA path in Windows shall not use /, but instead \\.\nExamples:\nWrong: c:/windows/\nCorrect: c:\\windows\\\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "/","\\")))
 314+ {
 315+ gotWindowsWarning=false; //Visa varningen fram�ver
 316+ return sokOchErsatt(url, "/","\\");
 317+ }
 318+ else
 319+ {
 320+ return url;
 321+ }
 322+ }
 323+ else
 324+ {
 325+ return url;
 326+ }
 327+ }
 328+ else
 329+ {
 330+ if (url.indexOf("\\")!=-1) //om man har \ i url...
 331+ {
 332+ if (!haveSeenWindowsWarning() && confirm("It seems like you have used a Windows path.\n\nA path in UNIX, Linux or Mac shall not use \\, but instead /.\nExamples:\nWrong: \\files\\\nCorrect: /files/\n\nDo you want to change...\n"+url+"\n...to...\n"+sokOchErsatt(url, "\\","//")))
 333+ {
 334+ gotWindowsWarning=false; //Visa varningen fram�ver
 335+ return sokOchErsatt(url, "\\","//");
 336+ }
 337+ else
 338+ {
 339+ return url;
 340+ }
 341+ }
 342+ else
 343+ {
 344+ return url;
 345+ }
 346+ }
 347+}
 348+
 349+
 350+//Denna funktion l�gger till / eller \ beroende p� vad som redan finns i "url".
 351+function fixaRattMedSlashIslutet(url)
 352+{
 353+ if (url.substring(url.length-1)!="\\" && url.substring(url.length-1)!="/") //Man har inte n�gon slash i slutet
 354+ {
 355+ if (url.indexOf("\\")!=-1) //Man har redan \ i url
 356+ {
 357+ url+="\\";
 358+ }
 359+ else// if (url.indexOf("/")!=-1)
 360+ {
 361+ url+="/";
 362+ }
 363+ }
 364+
 365+ return url;
 366+}
 367+
 368+
 369+function fixaRattMedEnhetsbokstav(url)
 370+{
 371+ if (url.substring(1,2)!=":") //Om [man inte varnats tidigare] och om [man inte har : som andra tecken i sin adress]
 372+ if (!haveSeenWindowsWarning() && confirm("The path to your directory is:\n"+url+"\n\nIf you are using Windows the path should start with your drive letter such as (c:\\).\n\nPress OK to change your path to something else.\nPress Cancel to ignore this message and add this to your list with directories."))
 373+ {
 374+ gotWindowsWarning=false; //Visa varningen fram�ver
 375+ return ""; //Avbryt
 376+ }
 377+
 378+ if (navigator.appVersion.toLowerCase().indexOf("win")!=-1) //Om man har windows
 379+ return url.substring(0,1).toLowerCase()+url.substring(1); //G�r "C:/mapp/" ==> "c:/mapp/"
 380+ else
 381+ return url;
 382+}
 383+
 384+function sokOchErsatt(bigString, gammalStr, nyStr) //S�k "bigString" efter "gammalStr" och ers�tt med "NyStr"
 385+{
 386+ storStrang=bigString;
 387+ for (i=0; i<=storStrang.length-gammalStr.length; i++)
 388+ {
 389+ if (storStrang.substring(i,i+gammalStr.length)==(gammalStr))
 390+ {
 391+ storStrang=storStrang.substring(0,i)+nyStr+storStrang.substring(i+gammalStr.length);
 392+ i+=nyStr.length-1; //Utan detta s� g�r loopen f�r all evighet om man t.ex. har str�ngen "ab/cd" och ers�tter "/" med "//"
 393+ }
 394+ }
 395+ return storStrang;
 396+}
 397+
 398+function stringIsInArray(str, myArray)
 399+{
 400+ for (i=0; i<myArray.length; i++)
 401+ if (str==myArray[i].value)
 402+ return true;
 403+ return false;
 404+}
 405+
 406+
 407+function removeElementByIndex(allProtFolders, index)
 408+{
 409+ for (jj=index; jj<allProtFolders.length-1; jj++)
 410+ allProtFolders[jj]=allProtFolders[jj+1];
 411+
 412+ allProtFolders.length--;
 413+}
 414+
 415+function removeUserByIndex(allProtFolders, indexUser, indexFolder)
 416+{
 417+/*
 418+ if (numberOfUsersByIndex(indexFolder)==1)
 419+ if (confirm("You are about to remove the last user who can login at XXXXXXXXXXXXXXXXXXXXXXXX"))
 420+ removeElementByIndex(allProtFolders, indexFolder); //also remove folder
 421+ else
 422+ {
 423+*/
 424+ listOfUsers=allProtFolders[indexFolder].substring(allProtFolders[indexFolder].lastIndexOf("<<@>>")+"<<@>>".length).split(";");
 425+ for (jj=indexUser; jj<listOfUsers.length-1; jj++)
 426+ listOfUsers[jj]=listOfUsers[jj+1];
 427+
 428+ listOfUsers.length--; //listOfUsers now contains all users we want
 429+ newLine=allProtFolders[indexFolder].substring(0,allProtFolders[indexFolder].lastIndexOf("<<@>>")+"<<@>>".length)
 430+ for (jj=0; jj<listOfUsers.length; jj++)
 431+ newLine+=listOfUsers[jj]+";";
 432+
 433+ if (listOfUsers.length!=-1 && listOfUsers.length!=0)
 434+ newLine=newLine.substring(0,newLine.length-1);
 435+
 436+ allProtFolders[indexFolder]=newLine;
 437+// }
 438+}
 439+
 440+
 441+function getIndexByFolder(folder)
 442+{
 443+ for (jj=0; jj<allProtFolders.length; jj++)
 444+ if (allProtFolders[jj].substring(0,folder.length)==folder)
 445+ return jj;
 446+
 447+ return -1; //Folder does not exists
 448+}
 449+
 450+
 451+function changeElementShareSubfolders(index, subfolders)
 452+{
 453+ if (index==-1)
 454+ return false;
 455+
 456+ tmpFolder=giveFolderWithoutAsterix(allProtFolders[index].substring(0,allProtFolders[index].indexOf("<<@>>")));
 457+ if (subfolders) //the folder shall be shared with all subfolders
 458+ allProtFolders[index]=tmpFolder+"*"+allProtFolders[index].substring(allProtFolders[index].indexOf("<<@>>"));
 459+ else
 460+ allProtFolders[index]=tmpFolder+allProtFolders[index].substring(allProtFolders[index].indexOf("<<@>>"));
 461+
 462+ return true;
 463+}
 464+
 465+function changeElementNewRealm(index, realm)
 466+{
 467+ if (index==-1)
 468+ return false;
 469+
 470+ allProtFolders[index]=allProtFolders[index].substring(0,allProtFolders[index].indexOf("<<@>>")+"<<@>>".length)+realm+allProtFolders[index].substring(allProtFolders[index].lastIndexOf("<<@>>"))
 471+
 472+ return true;
 473+}
 474+
 475+
 476+function editSelectedFolder()
 477+{
 478+ if (document.myForm.allFoldersAndZones.selectedIndex!=-1)
 479+ {
 480+ line=document.myForm.allFoldersAndZones.options[document.myForm.allFoldersAndZones.selectedIndex].value
 481+ folder=giveFolderWithoutAsterix(line.substring(0,line.indexOf("<<@>>")));
 482+ realm=line.substring(line.indexOf("<<@>>")+"<<@>>".length,line.lastIndexOf("<<@>>"));
 483+ if (line.substring(line.indexOf("<<@>>")-1,line.indexOf("<<@>>"))=="*")
 484+ subfolder="checked";
 485+ else
 486+ subfolder="";
 487+ addProtFoldersWindow=window.open("/?action=showAddProtDirSetup&folderValue="+escape(folder)+"&realmValue="+escape(realm)+"&subfoldersValue="+escape(subfolder),"addInfoWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=350");
 488+ addProtFoldersWindow.focus();
 489+ }
 490+ else
 491+ alert("Please select the folder you like to edit.")
 492+}
 493+
 494+
 495+
 496+
 497+function removeQuoteFromURL(url)
 498+{
 499+ if (url.charAt(0)=="\"")
 500+ url=url.substring(1);
 501+ if (url.charAt(url.length-1)=="\"")
 502+ url=url.substring(0,url.length-1);
 503+ return url;
 504+}
 505+
 506+
 507+function addThisProt(theFolder, theRealm, theUserName, thePass1, thePass2, subfolders)
 508+{
 509+ theFolder=removeQuoteFromURL(theFolder);
 510+
 511+ if (theFolder=="" || theRealm=="" || theUserName=="" || thePass1=="" || thePass2=="")
 512+ {
 513+ showAlertXerverHelp("Please enter something in all fields.")
 514+ return false;
 515+ }
 516+
 517+ if ( theFolder.indexOf("<<@>>")!=-1 || theFolder.indexOf("<<$>>")!=-1 ||
 518+ theRealm.indexOf("<<@>>")!=-1 || theRealm.indexOf("<<$>>")!=-1 ||
 519+ theUserName.indexOf("<<@>>")!=-1 || theUserName.indexOf("<<$>>")!=-1 ||
 520+ thePass1.indexOf("<<@>>")!=-1 || thePass1.indexOf("<<$>>")!=-1)
 521+ {
 522+ showAlertXerverHelp("No fields should contain <<@>> or <<$>>.")
 523+ return false;
 524+ }
 525+
 526+ if (thePass1.toLowerCase().indexOf("password")!=-1)
 527+ {
 528+ showAlertXerverHelp("Please press the \"SetPassword\" buttons to choose a username/password.")
 529+ return false;
 530+ }
 531+
 532+ if (thePass1!=thePass2)
 533+ {
 534+ showAlertXerverHelp("The passwords are not equal.\nThe two passwords must be equal!")
 535+ return false;
 536+ }
 537+
 538+ nyURLtmp=fixaRattMedEnhetsbokstav(theFolder);
 539+ if (nyURLtmp=="")
 540+ {
 541+ return false;
 542+ }
 543+ else
 544+ {
 545+ theFolder=nyURLtmp;
 546+ }
 547+
 548+ if ( (theFolder.lastIndexOf(".")>theFolder.lastIndexOf("\\") && (theFolder.indexOf("/")==-1)) ||
 549+ (theFolder.lastIndexOf(".")>theFolder.lastIndexOf("/") && theFolder.indexOf("\\")==-1))
 550+ if (!haveSeenWindowsWarning() && confirm("Is "+theFolder+" a folder or a file?\nPress OK if it is a file.\nPress Cancel if it is a folder."))
 551+ {
 552+ gotWindowsWarning=false; //Visa varningen fram�ver
 553+ showAlertXerverHelp("You can only set password protection to folders, not to files.\nPlease change "+theFolder+" to a directory.");
 554+ return false;
 555+ }
 556+
 557+ theFolder=fixaRattMedSlash(theFolder);
 558+ theFolder=fixaRattMedSlashIslutet(theFolder);
 559+
 560+ if (stringIsInSelectBoxEqualLength(theFolder, document.myForm.allFoldersAndZones.options))
 561+ {
 562+ changeElementNewRealm(i, theRealm);
 563+ }
 564+
 565+ if (stringIsInArrayEqualLength(theFolder, allProtFolders) || stringIsInArrayEqualLength(theFolder+"*", allProtFolders)) //Om adressen redan finns i listan...
 566+ for (i=0; i<allProtFolders.length; i++) //Om man tidigare bara delat ut mappen (inte underkataloger), i s� fall ska vi nu uppdatera f�ltet s� att �ven underkatalogerna blir utdelade (och tv�rt om, dvs. man f�rst hade delat ut underkatalogerna och inte vill det mera)
 567+ if (theFolder==giveFolderWithoutAsterix(allProtFolders[i].substring(0,allProtFolders[i].indexOf("<<@>>"))))
 568+ {
 569+ changeElementShareSubfolders(i, subfolders);
 570+ }
 571+
 572+
 573+ if (!folderIsShared(theFolder, allaKataloger)) //If you try to protect a directory which you have NOT shared...
 574+ {
 575+ if(confirm("WARNING!\n\nYour directory ("+theFolder+") is NOT shared!\nCreateing an user account for a directory DOES NOT automatically add that directory to the list of shared directories.\n\nThis means that if someone visits this directory he will get a \"403 Forbidden\" error message, as the user does not have permission to view the content of "+theFolder+".\n\n\nDo you want to add "+theFolder+" to your list with shared directories? (This means that "+theUserName+" will be able to view the content of this directory)"))
 576+ if (confirm("Do you also want to share the subfolders to "+theFolder+"?\n\nOK = Yes, share "+theFolder+" and all subfolders.\nCancel = No, share only "+theFolder+"."))
 577+ allaKataloger[allaKataloger.length++]=theFolder+"*";
 578+ else
 579+ allaKataloger[allaKataloger.length++]=theFolder;
 580+ }
 581+
 582+ addLineToProtDatabase(theFolder, theRealm, theUserName, thePass1, subfolders);
 583+ showAlertXerverHelp(theUserName+" has been added to the list.\nYou might at any moment add more users to the list.");
 584+ return true;
 585+}
 586+
 587+
 588+
 589+
 590+
 591+
 592+
 593+
 594+
 595+
 596+function submitForm()
 597+{
 598+ nyAddress="action=wizardStep9&direction=forward&save=yes&protectedFolders=";
 599+
 600+ if (allProtFolders.length>0)
 601+ {
 602+ tmpHarLagtTillKomma=false;
 603+ for (i=0; i<allProtFolders.length; i++)
 604+ {
 605+ tmpHarLagtTillKomma=true;
 606+ nyAddress+=allProtFolders[i]+"<<$>>";
 607+ }
 608+ if (tmpHarLagtTillKomma)
 609+ nyAddress=nyAddress.substring(0,nyAddress.length-"<<$>>".length);
 610+ }
 611+
 612+ nyAddress+="&sharedPaths="
 613+
 614+ if (allaKataloger.length>0)
 615+ {
 616+ tmpHarLagtTillKomma=false;
 617+ for (i=0; i<allaKataloger.length; i++)
 618+ if (allaKataloger[i]!="")
 619+ {
 620+ tmpHarLagtTillKomma=true;
 621+ nyAddress+=allaKataloger[i]+",";
 622+ }
 623+ if (tmpHarLagtTillKomma)
 624+ nyAddress=nyAddress.substring(0,nyAddress.length-1);
 625+ }
 626+
 627+// alert(nyAddress)
 628+ self.location.replace("/?"+escape(nyAddress));
 629+ return true;
 630+}
 631+//-->
 632+</SCRIPT>
 633+
 634+
 635+</HEAD>
 636+<BODY BGCOLOR="white" TEXT="black">
 637+<TABLE WIDTH='400' BORDER='0'>
 638+<TR><TD>
 639+<FONT FACE='verdana,arial'>
 640+<CENTER>
 641+<H3>Xerver Setup [ 8 / 9 ]</H3>
 642+</CENTER>
 643+</FONT>
 644+<FONT FACE='arial,verdana' SIZE='-1'>
 645+<P>
 646+
 647+
 648+<FORM NAME="myForm" ACTION="/" METHOD=get>
 649+
 650+
 651+
 652+
 653+<B>Password protected folders and zones (resources)</B>
 654+<BR>
 655+<SELECT NAME="allFoldersAndZones" SIZE=4 onChange="updateListOfUsers()"><!-- onChange="status=this.options[this.selectedIndex].value;" -->
 656+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 657+<!--
 658+<OPTION VALUE="c:\*">c:\*
 659+-->
 660+</SELECT>
 661+<BR>
 662+<INPUT TYPE="button" NAME="addProtFoldersButton" VALUE="Add" onClick="addProtFolders()"><INPUT TYPE="button" NAME="removeProtFoldersButton" VALUE="Remove" onClick="removeProtFolders()"><INPUT TYPE=button VALUE="Edit" onClick="editSelectedFolder()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('This is a list with all folders you have choosed to protect with a password.\n\nEach folder must belong to one (and only one) zone.\nWhen a user goes from one zone to another he will be prompted for a username and password again, disregarding if he previously has login.\nThis is for increased security.\nAlso, if logging is enabled you can see which user has login to which zone.');">
 663+
 664+<P>
 665+<B>Users for this folder</B>
 666+<BR>
 667+<SELECT NAME="allUsers" SIZE=4><!-- onChange="status=this.options[this.selectedIndex].value;" -->
 668+<OPTION VALUE="-----------------------------------------------------------------------------------------------">-----------------------------------------------------------------------------------------------
 669+<!--
 670+<OPTION VALUE="c:\*">c:\*
 671+-->
 672+</SELECT>
 673+<BR>
 674+<INPUT TYPE="button" NAME="addProtFoldersButton" VALUE="Add" onClick="addProtUsers()"><INPUT TYPE="button" NAME="removeProtFoldersButton" VALUE="Remove" onClick="removeProtUsers()"><INPUT TYPE="button" VALUE="&nbsp;&nbsp;?&nbsp;&nbsp;" onClick="showXerverHelp('When you have selected a folder from the list above, you will see all users who have access to that particular folder in this list.');">
 675+
 676+<P>
 677+<BR>
 678+
 679+
 680+
 681+
 682+<TABLE BORDER=1 BGCOLOR="#cccccc" CELLSPACING=0 CELLPADDING=2>
 683+<TR BGCOLOR="#aaaaaa"><TD>
 684+<FONT FACE='arial,verdana' SIZE='-1'>
 685+<B>What is a password protected folder?</B>
 686+</FONT>
 687+</TD></TR><TR><TD>
 688+<FONT FACE='arial,verdana' SIZE='-1'>
 689+You have previously chosen which folders that should be shared.
 690+If you want you can as well password protect the folders that you have shared.
 691+<P>
 692+
 693+When someone visits a folder that you have protected with a password
 694+the visitor will see a login prompt. If the visitor has an account/password
 695+(which you shall create above) he will get access to view the content of that folder.
 696+<P>
 697+
 698+Xerver uses a well-known secure one-way crypto, which by today has no known
 699+decrypting algorithms.
 700+</FONT>
 701+</TD></TR>
 702+</TABLE>
 703+<P>
 704+<BR>
 705+
 706+
 707+
 708+
 709+<TABLE BORDER="0" CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
 710+<TR><TD>
 711+<INPUT TYPE="button" VALUE="&lt;-- Back" onClick="location.replace('/?action=wizardStep7&direction=back')">
 712+</TD><TD ALIGN="right">
 713+<P ALIGN="right">
 714+<INPUT TYPE="button" VALUE="Save and Next Step --&gt;" onClick="submitForm()">
 715+</P>
 716+</TD></TR>
 717+</TABLE>
 718+
 719+</FORM>
 720+
 721+
 722+</FONT>
 723+</TD></TR>
 724+</TABLE>
 725+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/imagexervericon.ico
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data/imagexervericon.ico
___________________________________________________________________
Added: svn:mime-type
1726 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/data/empty.html
@@ -0,0 +1,7 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Add Protected Folder</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+</BODY>
 8+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizMenu.html
@@ -0,0 +1,25 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Setup!</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR=white TEXT=black LINK="blue" VLINK="darkblue" ALINK="orange" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0">
 7+<FONT FACE="verdana,arial" SIZE="-1">
 8+
 9+<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0>
 10+<TR BGCOLOR="#aaaaaa"><TH COLSPAN=2><FONT FACE="verdana,arial" SIZE="-1">Quick jump to step:</FONT></TH></TR>
 11+<TR BGCOLOR="#eeeeee"><TH><FONT FACE="verdana,arial" SIZE="-1">1</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep1" TARGET="mainsetup">General settings</A></FONT></TD></TR>
 12+<TR BGCOLOR="#dddddd"><TH><FONT FACE="verdana,arial" SIZE="-1">2</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep2" TARGET="mainsetup">Shared directories</A></FONT></TD></TR>
 13+<TR BGCOLOR="#eeeeee"><TH><FONT FACE="verdana,arial" SIZE="-1">3</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep3" TARGET="mainsetup">Root</A></FONT></TD></TR>
 14+<TR BGCOLOR="#dddddd"><TH><FONT FACE="verdana,arial" SIZE="-1">4</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep4" TARGET="mainsetup">Aliases/Virtual directories</A></FONT></TD></TR>
 15+<TR BGCOLOR="#eeeeee"><TH><FONT FACE="verdana,arial" SIZE="-1">5</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep5" TARGET="mainsetup">Script extentions (if you enable CGI only)</A></FONT></TD></TR>
 16+<TR BGCOLOR="#dddddd"><TH><FONT FACE="verdana,arial" SIZE="-1">6</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep6" TARGET="mainsetup">Default index-files</A></FONT></TD></TR>
 17+<TR BGCOLOR="#eeeeee"><TH><FONT FACE="verdana,arial" SIZE="-1">7</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep7" TARGET="mainsetup">Shared file extensions</A></FONT></TD></TR>
 18+<TR BGCOLOR="#dddddd"><TH><FONT FACE="verdana,arial" SIZE="-1">8</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep8" TARGET="mainsetup">Password protected folders</A></FONT></TD></TR>
 19+<TR BGCOLOR="#eeeeee"><TH><FONT FACE="verdana,arial" SIZE="-1">9</FONT></TH><TD><FONT FACE="verdana,arial" SIZE="-1"><A HREF="/?action=wizardStep9" TARGET="mainsetup">Startup mode</A></FONT></TD></TR>
 20+</TABLE>
 21+
 22+
 23+
 24+</FONT>
 25+</BODY>
 26+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/AddIndSetup.html
@@ -0,0 +1,33 @@
 2+
 3+<HTML>
 4+<HEAD>
 5+<TITLE>Add index file</TITLE>
 6+</HEAD>
 7+<BODY BGCOLOR='white' link='red' text='black' vlink='#ff00ff'>
 8+<TABLE BORDER='0' CELLPADDING=0 CELLSPACING=0 WIDTH='100%'>
 9+<TR><TD>
 10+<FONT FACE='arial,verdana' SIZE='-1'>
 11+<B>Which file shall be used as an index file?</B>
 12+<BR>
 13+<FORM NAME="addIndWinForm" onSubmit="opener.addThisIndex(document.addIndWinForm.indexToShare.value);return false;">
 14+<INPUT TYPE=text NAME="indexToShare" SIZE=40>
 15+<BR>
 16+<INPUT TYPE=button VALUE='Add Index file' onClick="opener.addThisIndex(document.addIndWinForm.indexToShare.value);"><INPUT TYPE="button" VALUE="Close" onClick="top.close();">
 17+
 18+<P>
 19+
 20+For example:
 21+<BR>
 22+<I>index.html</I>
 23+<BR>
 24+or
 25+<BR>
 26+<I>index.htm</I>
 27+
 28+
 29+</FONT>
 30+</FORM>
 31+</TD></TR>
 32+</TABLE>
 33+</BODY>
 34+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/data/Xerver2.cfg.txt
@@ -0,0 +1,79 @@
 2+############################################################################
 3+################################ XERVER.CFG ################################
 4+############################################################################
 5+
 6+This file is for advanced users only.
 7+
 8+DON'T EDIT THE Xerver.cfg MANUALLY IF YOU DON'T KNOW WHAT YOU ARE DOING!
 9+
 10+You are recommended to use the real setup if you want change settings to Xerver.
 11+For more information about the setup, please read the ReadMe.txt.
 12+If you are currently running Xerver, your changes to Xerver.cfg will take
 13+place AFTER you have restarted Xerver.
 14+
 15+Xerver.cfg is a line based setup-file. Each line contains information about
 16+your settings. You can manually change these settings, however, you are NOT
 17+recommended to change settings manually.
 18+
 19+
 20+Xerver.cfg:
 21+Line Description
 22+1 port number
 23+2 index files, comma separated list
 24+3 shared directories, comma separated list ( each folder MUST end with / or \ )
 25+4 file extensions, comma separated list
 26+5 root ( MUST end with / or \ )
 27+6 list with runnable file extenssions. The format is: "php=php,php3=php,php4=php,phtml=php,pl=perl,cgi=perl,exe="
 28+7 list with aliases. The format is: "/D/=d:\,/music/=e:\myMusic\mp3\,/music/others/Mozart/=c:\mozart\".
 29+8 list with password protected files. The format for each element is "path<<@>>zone<<@>>listWithUsers". Each element is separated with <<$>>. "listWithUsers" is a list with users and passwords (encrypted) "UserName:encryptedPass;UserName2:encryptedPass2;UserName3:encryptedPass3". Example of this line: "d:\mysecret\*<<@>>SecretZone<<@>>Leonardo:cTpx;John:cXFxOnFxcQ==<<$>>d:\temp\*<<@>>JohnsHome<<@>>John:cXFxOnFxcQ=="
 30+9 allow directory listing? (1=true; 0=false)
 31+10 allow file extensions at line 4 to be shown? (1=true; 0=false)
 32+11 allow hidden files to be shown? (1=true; 0=false)
 33+12 startup mode (0=with no window; 1=with simple AWT window; 2=with advanced Swing window)
 34+13 allow CGI-scripts? (1=true; 0=false)
 35+14 path to log file
 36+
 37+EXAMPLE (Xerver.cfg):
 38+Line Description
 39+1 80
 40+2 index.html,index.htm,index.shtml,index.shtm
 41+3 c:\*,d:\myHomepage\,h:\music\*
 42+4
 43+5 c:\
 44+6 php=php,php3=php,php4=php,phtml=php,pl=perl,cgi=perl,exe=
 45+7 /WWW/=d:\myHomepage\,/music/=h:\music\
 46+8 c:\winnt\*<<@>>OS-files<<@>><<$>>c:\temp\*<<@>>Secrets<<@>>Leonardo:cTpx;John:cXFxOnFxcQ==
 47+9 1
 48+10 0
 49+11 1
 50+12 2
 51+13 1
 52+14 XerverWebserver.log
 53+
 54+
 55+############################################################################
 56+############################################################################
 57+############################################################################
 58+
 59+Additional descriptions:
 60+
 61+Line 3:
 62+* If you want to share all subfolders to a directory, add a wildcard (*) at the end of the folders name (example: "c:\myDoc\*")
 63+
 64+Line 7:
 65+* An alias shall begin AND end with /. The folder path shall end with a /.
 66+* Aliases are not CaSe SeNsItIvE.
 67+
 68+Line 8:
 69+* If you want to protect all subfolders to a protected directory, add a wildcard (*) at the end of the folders name (example: "c:\myDoc\*")
 70+* UserName doesn't have to be the username which is used to encrypt the password. UserName is good for one purpose only: You can identify which encrypted password belongs to which user. Xerver has no use for UserName, but to log the name.
 71+Line 9 MUST be 1 or 0 (1 or "something else") (1 = allow directory listing; 0 = don't allow)
 72+Line 10 MUST be 1 or 0 (1 or "something else") (1 = allow files with a file extension at line 4 to be shown; 0 = permission to these file extensions shall be denied)
 73+Line 11 MUST be 1 or 0 (1 or "something else") (1 = allow hidden files to be shown; 0 don't allow)
 74+Line 12 MUST be 2 or 1 or 0 (0=with no window; 1=with simple AWT window; 2=with advanced Swing window)
 75+Line 13 MUST be 1 or 0 (1 or "something else") (1 = allow perl-scripts to be run; 0 don't allow)
 76+Line 14 can both be an absolute and a relative path
 77+
 78+Xerver.cfg shall NOT be ended with an empty line (\n).
 79+Xerver.cfg shall only have 14 lines, no more, no less.
 80+
Index: trunk/ATTIC/wikiSDK/Xerver4/data/WizFrames.html
@@ -0,0 +1,9 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>Welcome to Xerver Setup!</TITLE>
 5+</HEAD>
 6+<FRAMESET COLS="150,*" BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>
 7+ <FRAME SRC="/?action=wizardMenu" NAME="menu">
 8+ <FRAME SRC="/?action=wizardGeneralSettings" NAME="mainsetup">
 9+</FRAMESET>
 10+</HTML>
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/data
___________________________________________________________________
Added: svn:ignore
111 + Xerver2.cfg
Index: trunk/ATTIC/wikiSDK/Xerver4/ReadMe.txt
@@ -0,0 +1,474 @@
 2+
 3+
 4+
 5+ ######################################################
 6+ ## IMPORTANT: ##
 7+ ## There is a help folder in the Xerver directory. ##
 8+ ## Start index.html in the help directory for help. ##
 9+ ######################################################
 10+
 11+
 12+
 13+#######################################################################
 14+########################## ABOUT THIS README #########################
 15+#######################################################################
 16+
 17+
 18+ THIS DOCUMENT:
 19+* How to start Xerver
 20+* Xerver features
 21+* Xerver version history
 22+
 23+
 24+#######################################################################
 25+######################### How to start Xerver #########################
 26+#######################################################################
 27+
 28+ WINDOWS USERS:
 29+ Start Xerver with "StartXerver.exe"
 30+ and run the setup with "Setup.exe".
 31+
 32+ For advanced users: The the folder "otherStartupFiles" for
 33+ alternative startup files (to run Xerver as a background process).
 34+
 35+
 36+ NON WINDOWS USERS:
 37+ Enter one of the following lines in your prompt:
 38+ * java -jar xerver.jar Start Xerver
 39+ * java -jar xerver.jar Server Start Xerver
 40+ * java -jar xerver.jar Setup Start Xerver Setup
 41+ * java -jar xerver.jar FTPServer Start Xerver FTP
 42+ * java -jar xerver.jar FTPSetup Start Xerver FTP Setup
 43+
 44+
 45+ Actually, you also have these "subparameters" you can use as well
 46+ (you can combine them as well):
 47+ * java -jar xerver.jar FTPServer -pXX Start server on port XX
 48+
 49+ * java -jar xerver.jar FTPSetup -pXX Start FTP setup on port XX
 50+ * java -jar xerver.jar FTPSetup -r Start FTP remote setup
 51+
 52+ * java -jar xerver.jar Setup -pXX Start setup on port XX
 53+ * java -jar xerver.jar Setup -r Start remote setup
 54+ * java -jar xerver.jar Setup -nw Start setup without a GUI
 55+
 56+ * java -jar xerver.jar Server -nw Is equivalent to -s0
 57+ * java -jar xerver.jar Server -sX Start server in mode X where X is an integer:
 58+ 0 = start with no GUI
 59+ 1 = start with a basic AWT-interface
 60+ 2 = start with an advanced Swing-interface
 61+ (not minimized at startup)
 62+ 3 = start with an advanced Swing-interface
 63+ (minimized at startup)
 64+
 65+
 66+ EXAMPLE:
 67+ * java -jar xerver.jar Setup -nw -r -p1234 Start setup on port 1234 without a GUI
 68+ and allow remote IPs to connect to setup.
 69+
 70+#######################################################################
 71+########################### Xerver features ###########################
 72+#######################################################################
 73+
 74+
 75+ USER FRIENDLY
 76+* A very-easy-to-use setup web interface, including a Setup Wizard.
 77+* "Check for updates" feature is included.
 78+
 79+
 80+ FEATURES
 81+* A complete FTP server is included.
 82+* HTTP/0.9, HTTP/1.0 and HTTP/1.1 supported.
 83+* All HTTP methods supported (GET, POST and HEAD).
 84+* Advanced logging.
 85+* Create aliases (virtual directories).
 86+* Create password protected folders. (Create users and choose which folder(s) each user shall have access to).
 87+* Run CGI-scripts
 88+ (run your own scripts on your hard drive).
 89+ Among other script types, Perl and PHP scripts can be run.
 90+* Allow/deny directory listing.
 91+* Choose which port Xerver shall use.
 92+* Use your own error pages (for example "404 Not Found").
 93+* Choose which files shall be considered index-files.
 94+* Run Xerver as a background process.
 95+* Remote administration available.
 96+
 97+
 98+ SECURITY
 99+* Allow users to download only files with
 100+ certain file extensions.
 101+* Choose which folder(s) you want to share.
 102+* Choose if you want to share hidden files.
 103+* If you create password protected folders,
 104+ the crypto that is used by Xerver is a
 105+ safe one-way crypto which by today has no
 106+ known decrypting algorithms.
 107+
 108+
 109+ ABOUT XERVER
 110+* Xerver is freeware.
 111+* Xerver is open source, released under the GNU General Public License (GPL).
 112+* Any computer/system (such as Windows, Linux, UNIX, Mac etc.)
 113+ with a Java interpreter installed can run Xerver.
 114+* Requires less than 1 Mb hard drive space.
 115+* Requires very low system resources.
 116+* Xerver is fast, free and reliable. Why use something else?
 117+
 118+
 119+
 120+#######################################################################
 121+######################## Xerver version history #######################
 122+#######################################################################
 123+
 124+Below you can see when different versions of Xerver have been released.
 125+You can also see which components of Xerver that have been
 126+added/removed/updated with each new release.
 127+
 128+
 129+* 2002-01-14
 130+ Xerver 1.00 released for BETA testing.
 131+
 132+* 2002-01-15
 133+ Xerver 1.01 released for BETA testing.
 134+ * Setup page improved
 135+
 136+* 2002-01-16
 137+ Xerver 1.02 released for BETA testing.
 138+ * Xerver Update Service added
 139+ * Setup page improved
 140+ * Xerver Kernel improved
 141+
 142+* 2002-01-17
 143+ Xerver 1.10 released for BETA testing.
 144+ * Setup page improved
 145+ * Xerver Kernel improved
 146+
 147+* 2002-01-18
 148+ Xerver 1.11 released for BETA testing.
 149+ * Xerver Kernel improved
 150+
 151+* 2002-01-18
 152+ Xerver 1.12 released for BETA testing.
 153+ * Xerver Update Service is now a part of the setup page
 154+ * Xerver Kernel improved
 155+
 156+* 2002-01-22
 157+ Xerver 1.13 released for BETA testing.
 158+ * Setup page improved
 159+
 160+* 2002-01-26
 161+ Xerver 1.14 released for BETA testing.
 162+ * Setup page improved
 163+ * Xerver Kernel improved
 164+ * Some files were renamed
 165+
 166+* 2002-01-27
 167+ Xerver 1.20 released for BETA testing.
 168+ * Setup page improved
 169+ * Xerver Kernel improved
 170+ * Install file added
 171+
 172+* 2002-01-28
 173+ Xerver 1.30 released for BETA testing.
 174+ * A new interface when running Xerver or Xerver setup
 175+ * Ability to run Xerver with extremely low system resources
 176+
 177+* 2002-01-28
 178+ Xerver 1.31 released for BETA testing.
 179+ * Xerver Kernel improved
 180+
 181+* 2002-01-28
 182+ Xerver 1.32 released for BETA testing.
 183+ * Setup page improved
 184+ * Xerver Kernel improved
 185+
 186+* 2002-02-05
 187+ Xerver 1.33 released.
 188+ * This version is not considered BETA.
 189+ * Setup page improved
 190+
 191+* 2002-02-15
 192+ Xerver 2.00 released for BETA testing.
 193+ * Xerver now supports CGI-scripts
 194+ * Xerver now supports POST
 195+
 196+* 2002-02-16
 197+ Xerver 2.01 released for BETA testing.
 198+ * Xerver Install improved
 199+
 200+* 2002-02-24
 201+ Xerver 2.10 released.
 202+ * This version is not considered BETA.
 203+ * Xerver Kernel improved
 204+ * Setup page improved
 205+
 206+* 2002-03-12
 207+ Xerver 2.20 released.
 208+ * Xerver Kernel improved
 209+
 210+* 2002-07-29
 211+ Xerver 3.00 released for BETA testing.
 212+ * Not open source yet, I'm searching for a suitable license. Be patient ;)
 213+ * Large parts of Xerver has been rewritten from scratch.
 214+ * Minor bugfixes.
 215+ * Much faster(!).
 216+ * Run any script types you want.
 217+ * Password protect folders with username/password.
 218+ * Create aliases.
 219+ * A brand new Setup, including a setup wizard.
 220+
 221+* 2002-08-16
 222+ Xerver 3.10 released for BETA testing.
 223+ * Xerver is released under the GNU General Public License.
 224+ * A few words were replaced during the setup.
 225+ * Help files updated.
 226+ * Setup HTML-pages have been updated.
 227+ * Several classes have been updated.
 228+ * Several new classes have been added, including:
 229+ ReadInputStream
 230+ ReadInputStreamSTDIN
 231+ ReadInputStreamSTDOUT
 232+ ReadInputStreamSTDERR
 233+ DataInputStreamWithReadLine
 234+
 235+* 2002-08-17
 236+ Xerver 3.11 released for BETA testing.
 237+ * Source has been modified. Unnecessery comments have been removed.
 238+ * Minor bugfixes.
 239+ * Minor layout improvements.
 240+
 241+* 2002-08-24
 242+ Xerver 3.12 released.
 243+ * This version is not considered BETA.
 244+ * A few words were replaced during the setup.
 245+ * Additional help files created.
 246+ * The following classes have been updated:
 247+ InstallXerver
 248+ NewConnection
 249+ XerverKernel
 250+ ExtractZipFile
 251+ * One new class has been added:
 252+ ExtractZipFileInstall
 253+ * If a new update is available, the user will be notified
 254+ about this when Xerver starts (in Swing mode).
 255+
 256+* 2002-08-24
 257+ Xerver 3.13 released.
 258+ * The following classes have been updated:
 259+ ProgramWindow
 260+ Start
 261+
 262+* 2003-01-11
 263+ Xerver 3.20 released for BETA testing.
 264+ * Many classes rewritten and optimized for faster performance.
 265+ * A brand new install program with a very easy to use user interface.
 266+ * New algorithms using less CPU.
 267+ * Two new classes were added:
 268+ MyInteger
 269+ ComparatorIgnoreCase
 270+ * Xerver Remote Administration tool updated.
 271+ * Kernel improvments with chunked data transfer encoding and
 272+ Keep-Alive connections (for faster surfing).
 273+ * Several changes to the web interface setup program.
 274+ * Small changes to the help files
 275+ * Minor bugfixes: in the HTML setup pages. Fixed!
 276+ * Minor bugfix: The PATH-variable was not always set when running
 277+ CGI-script. Fixed!
 278+ * Minor bugfix: Under certain circumstances Xerver did not send
 279+ the "302 Found" header when needed. Fixed!
 280+
 281+
 282+* 2003-01-11
 283+ Xerver 3.21 released for BETA testing.
 284+ * Minor bugfix: Under certain circumstances Xerver has to be restarted after
 285+ changes have been made using Xerver Setup. Fixed!
 286+
 287+
 288+* 2003-01-11
 289+ Xerver 3.22 released for BETA testing.
 290+ * Xerver is no longer cAsE sEnSiTiVe when looking for index-files.
 291+
 292+
 293+* 2003-01-13
 294+ Xerver 3.23 released for BETA testing.
 295+ * Xerver can now recognize and understand certain invalid script headers.
 296+ * Some major performance improvements has been done.
 297+
 298+
 299+* 2003-01-25
 300+ Xerver 3.30 released.
 301+ * This version is not considered BETA.
 302+ * A brand new installer has been created.
 303+ * HTTP Error pages updated.
 304+
 305+
 306+* 2003-02-06
 307+ Xerver 3.31 released.
 308+ * Minor update to the .exe-files for Windows users.
 309+
 310+
 311+* 2003-09-07
 312+ Xerver 4.00 released for BETA testing.
 313+ Xerver is bounded with Xerver Free FTP Server 1.00.
 314+ * Xerver Free FTP Server has been written and is now bounded
 315+ with Xerver Free Web Server.
 316+ * Minor bugfix: Under certain circumstances Xerver locked a visited file
 317+ during a longer time than what was necessary. Fixed!
 318+ * Minor changes to the Xerver Setup.
 319+ * Bugfix: Under certain circumstances php-scripts didn't
 320+ work with some versions of PHP. Fixed!
 321+ * For the first time Xerver comes as a jar-package.
 322+ * At startup, Xerver shows your outer IP.
 323+ * In statistic field, Xerver shows both IP and host
 324+ name on machines connecting to Xerver.
 325+
 326+
 327+* 2003-09-19
 328+ Xerver 4.01 released for BETA testing.
 329+ Xerver is bounded with Xerver Free FTP Server 1.01.
 330+ * Updated ReadMe.txt-file documentation.
 331+ * Minor improvements to FTP server.
 332+ * Minor bugfix: Under certain circumstances some scripts
 333+ could not run. Fixed!
 334+ * Bugfix: Xerver FTP-server did not correctly interpret paths given from client.
 335+ * Xerver FTP-server is now case sensitive to paths when needed.
 336+
 337+
 338+* 2003-10-25
 339+ Xerver 4.02 released.
 340+ Xerver is bounded with Xerver Free FTP Server 1.01.
 341+ * This version is not considered BETA.
 342+ * New format for server name when sent as response.
 343+ * More flags allowed when starting Xerver from prompt.
 344+ * Minor bugfix: Under Solaris, the setup would under certain circumstances
 345+ fail to work correctly. Fixed!
 346+ * Some stability improvements since last beta version.
 347+
 348+
 349+* 2003-10-30
 350+ Xerver 4.03 released.
 351+ Xerver is bounded with Xerver Free FTP Server 1.01.
 352+ * Minor bugfix: Xerver setup could stop work
 353+ during some setup steps. Fixed!
 354+
 355+
 356+* 2003-11-22
 357+ Xerver 4.04 released.
 358+ Xerver is bounded with Xerver Free FTP Server 1.01.
 359+ * Additional CGI environment variables are now generated
 360+ when running CGI scripts for Windows users.
 361+ * Xerver did not always tell its version number in responses.
 362+ Now Xerver do.
 363+
 364+
 365+* 2004-12-23
 366+ Xerver 4.10 released.
 367+ Xerver is bounded with Xerver Free FTP Server 1.02.
 368+ * A new GUI showing both the outer and local IP.
 369+ * StartXerver.exe updated (for Windows users).
 370+ * Setup.exe updated (for Windows users).
 371+ * Minor changes to the CGI environment has been made.
 372+ * Minor changes to the responses sent by the FTP server.
 373+ * WAP support added.
 374+ * Max limit for how long time CGI-scripts can run.
 375+ * Minor bugfix: Problems to read certain files with very long file names. Fixed!
 376+ * Shortcut to Xerver has a new icon for Windows users.
 377+
 378+
 379+* 2004-12-30
 380+ Xerver 4.11 released.
 381+ Xerver is bounded with Xerver Free FTP Server 1.03.
 382+ * New exe files for Windows users. The exe files will detect if Java
 383+ is not installed on the computer and inform the user that Java is required.
 384+ * FTP server now automatically detects what IP to show when
 385+ receiving a PASV command.
 386+ * New help pages added.
 387+
 388+
 389+* 2005-01-03
 390+ Xerver 4.12 released.
 391+ Xerver is bounded with Xerver Free FTP Server 1.03.
 392+ * New exe files for Windows users.
 393+ * Xerver install asks if user want autostart Xerver.
 394+ * Minor changes to GUI.
 395+ * Help pages updated.
 396+ * Minor bugfix: In Xerver Setup: Under certain circumstances,
 397+ some file extensions could not be added to the list. Fixed!
 398+
 399+
 400+* 2005-01-04
 401+ Xerver 4.13 released.
 402+ Xerver is bounded with Xerver Free FTP Server 1.03.
 403+ * Help pages updated.
 404+
 405+
 406+* 2005-01-10
 407+ Xerver 4.14 released.
 408+ Xerver is bounded with Xerver Free FTP Server 1.03.
 409+ * Minor changes to Xerver Setup.
 410+ * New comments added to source.
 411+ * Bugfix: When very large amount of data was sent using POST Xerver
 412+ could under certain circumstances have problems reading the data. Fixed!
 413+ * New exe files created.
 414+
 415+
 416+* 2005-01-22
 417+ Xerver 4.15 released.
 418+ Xerver is bounded with Xerver Free FTP Server 1.03.
 419+ * New Mime Types added.
 420+
 421+
 422+* 2005-04-10
 423+ Xerver 4.16 released.
 424+ Xerver is bounded with Xerver Free FTP Server 1.04.
 425+ * New Mime Types added.
 426+ * Bugfix: During some circumstances Xerver FTP Server
 427+ used more system resources than necessary. Fixed!
 428+
 429+
 430+* 2005-08-10
 431+ Xerver 4.17 released.
 432+ Xerver is bounded with Xerver Free FTP Server 1.05.
 433+ * FTP Server now recognizes more ways in which clients
 434+ can ask for a directory listing.
 435+ * Xerver now better handles scripts that are running for a very long time.
 436+ * Bugfix: Some menu items in the FTP web setup could under
 437+ certain circumstances stop working. Fixed!
 438+ * BETA users of Xerver will no longer be notified of that there is
 439+ an other version of Xerver to download.
 440+
 441+
 442+* 2005-10-08
 443+ Xerver 4.20 released.
 444+ Xerver is bounded with Xerver Free FTP Server 1.05.
 445+ * Bugfix: Bad or incorrect PATH:s are now handled better.
 446+
 447+
 448+* 2006-12-30
 449+ Xerver 4.30 released.
 450+ Xerver is bounded with Xerver Free FTP Server 2.00.
 451+ * A brand new installation for Windows users.
 452+ * Several new settings in the Setup.
 453+ * Xerver supports more file extensions.
 454+ * Log file for HTTP server.
 455+ * Log file for FTP server.
 456+ * Local IP can be specified manually.
 457+ * Outer IP can be specified manually.
 458+ * User can specify port range to be used for FTP server when
 459+ passive mode is used.
 460+ * Changes to how Xerver runs CGI scripts.
 461+ * Support for more commands in the FTP server.
 462+ * Changes to the LIST response the FTP server sends.
 463+ * The FTP server will be more robust to broken FTP clients.
 464+ * Xerver icon on all executable files in Windows.
 465+ * Bugfix: Certain file names couldn't be viewed. Fixed!
 466+ * Bugfix: Sometimes settings for the FTP server did not
 467+ show up correctly in the web setup pages. Fixed!
 468+ * Several other minor changes.
 469+
 470+
 471+* 2007-01-13
 472+ Xerver 4.31 released.
 473+ Xerver is bounded with Xerver Free FTP Server 2.00.
 474+ * Changes to the MIME types.
 475+
Index: trunk/ATTIC/wikiSDK/Xerver4/XerverSource.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/ATTIC/wikiSDK/Xerver4/XerverSource.zip
___________________________________________________________________
Added: svn:mime-type
1476 + application/octet-stream
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error403noaccessextension.html
@@ -0,0 +1,29 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>403 Forbidden</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 403 Forbidden</h1>
 10+<br>
 11+<br>
 12+You have tried to download a file with an extension that you are not allowed to download.
 13+<P>
 14+
 15+If you are the server administrator and believe that you have received
 16+this error by mistake, please visit
 17+<A HREF="http://www.JavaScript.nu/xerver/help/help403forbidden.html">Xerver Help</A>
 18+for more information.
 19+</FONT>
 20+
 21+<BR><BR><BR><BR><BR><BR>
 22+<HR>
 23+<FONT SIZE="-2" FACE="arial, verdana">
 24+<CENTER>
 25+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 26+</CENTER>
 27+</FONT>
 28+</BODY>
 29+</HTML>
 30+
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error403nodirectorylisting.html
@@ -0,0 +1,24 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>403 Forbidden</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 403 Forbidden</h1>
 10+<br>
 11+<br>
 12+You are not allowed to list the content of this directory.
 13+
 14+</FONT>
 15+
 16+<BR><BR><BR><BR><BR><BR>
 17+<HR>
 18+<FONT SIZE="-2" FACE="arial, verdana">
 19+<CENTER>
 20+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 21+</CENTER>
 22+</FONT>
 23+</BODY>
 24+</HTML>
 25+
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error400badrequest.html
@@ -0,0 +1,23 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>400 Bad Request</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 400 Bad Request</h1>
 10+<br>
 11+<br>
 12+The client has sent an invalid request.
 13+</FONT>
 14+
 15+<BR><BR><BR><BR><BR><BR>
 16+<HR>
 17+<FONT SIZE="-2" FACE="arial, verdana">
 18+<CENTER>
 19+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 20+</CENTER>
 21+</FONT>
 22+</BODY>
 23+</HTML>
 24+
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error401notauthorized.html
@@ -0,0 +1,25 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>401 Not Authorized</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 401 Not Authorized</h1>
 10+<br>
 11+<br>
 12+
 13+Your username/password is incorrect.
 14+<P>
 15+Please contact the webserver admin to ask for a username/password.
 16+
 17+<BR><BR><BR><BR><BR><BR>
 18+<HR>
 19+<FONT SIZE="-2" FACE="arial, verdana">
 20+<CENTER>
 21+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 22+</CENTER>
 23+</FONT>
 24+</BODY>
 25+</HTML>
 26+
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error505unknownhttp.html
@@ -0,0 +1,29 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>505 HTTP Version not supported</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 505 HTTP Version not supported</h1>
 10+<br>
 11+<br>
 12+It seems like you are using a very unusual HTTP-version which is not supported by Xerver.
 13+Xerver supports all existing HTTP versions by today (2003),
 14+which means HTTP/0.9, HTTP/1.0 and HTTP/1.1.
 15+<BR>
 16+Please upgrade your browser to Netscape 1.0, Internet Explorer 1.0 (or later)
 17+or another browser of your choice supporting HTTP/0.9, HTTP/1.0 or HTTP/1.1.
 18+
 19+</FONT>
 20+
 21+<BR><BR><BR><BR><BR><BR>
 22+<HR>
 23+<FONT SIZE="-2" FACE="arial, verdana">
 24+<CENTER>
 25+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 26+</CENTER>
 27+</FONT>
 28+</BODY>
 29+</HTML>
 30+
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error403hiddenfilenotshared.html
@@ -0,0 +1,25 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>403 Forbidden</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 403 Forbidden</h1>
 10+<br>
 11+<br>
 12+You have tried to reach a hidden file/folder.
 13+<BR>
 14+The web server admin has chosen not to share these files.
 15+
 16+</FONT>
 17+
 18+<BR><BR><BR><BR><BR><BR>
 19+<HR>
 20+<FONT SIZE="-2" FACE="arial, verdana">
 21+<CENTER>
 22+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 23+</CENTER>
 24+</FONT>
 25+</BODY>
 26+</HTML>
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error403webservercantreadfile.html
@@ -0,0 +1,25 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>403 Forbidden</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 403 Forbidden</h1>
 10+<br>
 11+<br>
 12+Unfortunately, the web server couldn't read the requested file.
 13+<BR>
 14+If you are server admin, make sure the web server has read permission for the file.
 15+
 16+</FONT>
 17+
 18+<BR><BR><BR><BR><BR><BR>
 19+<HR>
 20+<FONT SIZE="-2" FACE="arial, verdana">
 21+<CENTER>
 22+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 23+</CENTER>
 24+</FONT>
 25+</BODY>
 26+</HTML>
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error404filedoesnotexist.html
@@ -0,0 +1,24 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>404 Not Found</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 404 Not Found</h1>
 10+<br>
 11+<br>
 12+
 13+The file you have tried to reach doesn't exist.
 14+
 15+</FONT>
 16+
 17+<BR><BR><BR><BR><BR><BR>
 18+<HR>
 19+<FONT SIZE="-2" FACE="arial, verdana">
 20+<CENTER>
 21+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 22+</CENTER>
 23+</FONT>
 24+</BODY>
 25+</HTML>
\ No newline at end of file
Index: trunk/ATTIC/wikiSDK/Xerver4/errorHTML/error403noaccessfolder.html
@@ -0,0 +1,29 @@
 2+<HTML>
 3+<HEAD>
 4+<TITLE>403 Forbidden</TITLE>
 5+</HEAD>
 6+<BODY BGCOLOR="white" TEXT="black">
 7+<FONT SIZE="-1" FACE="arial,verdana">
 8+
 9+<h1>Error: 403 Forbidden</h1>
 10+<br>
 11+<br>
 12+You have tried to reach a folder you do not have permission to access.
 13+<P>
 14+
 15+If you are the server administrator and believe that you have received
 16+this error by mistake, please visit
 17+<A HREF="http://www.JavaScript.nu/xerver/help/help403forbidden.html">Xerver Help</A>
 18+for more information.
 19+</FONT>
 20+
 21+<BR><BR><BR><BR><BR><BR>
 22+<HR>
 23+<FONT SIZE="-2" FACE="arial, verdana">
 24+<CENTER>
 25+<A HREF="http://www.JavaScript.nu/xerver/" TARGET="_top">Hosted by Xerver</A>
 26+</CENTER>
 27+</FONT>
 28+</BODY>
 29+</HTML>
 30+
Property changes on: trunk/ATTIC/wikiSDK/configData
___________________________________________________________________
Added: svn:ignore
131 + *
Index: trunk/ATTIC/wikiSDK/setup
@@ -0,0 +1,25 @@
 2+#!/bin/sh
 3+
 4+case "$1" in
 5+ webdocs)
 6+ echo "Creating phpinfo.php"
 7+ echo "<?php phpinfo();" > "`cat configData/docroot`phpinfo.php"
 8+ ;;
 9+ phpmyadmin)
 10+ cd "`cat configData/docroot`"
 11+ if [ -e phpMyAdmin ]; then
 12+ echo "Updating copy of phpMyAdmin"
 13+ cd phpMyAdmin
 14+ svn update
 15+ else
 16+ echo "Downloading stable copy of phpMyAdmin"
 17+ svn checkout https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/tags/STABLE/phpMyAdmin phpMyAdmin
 18+ fi
 19+ ;;
 20+ *)
 21+ echo "Usage: $0 webdocs - Generate the helper documents into the webroot."
 22+ echo "Usage: $0 phpmyadmin - Download, or update, a copy of phpMyAdmin for administration of the databases."
 23+ ;;
 24+esac
 25+
 26+exit 0
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK/setup
___________________________________________________________________
Added: svn:eol-style
127 + LF
Index: trunk/ATTIC/wikiSDK/mediawiki
@@ -0,0 +1,34 @@
 2+#!/bin/sh
 3+
 4+case "$1" in
 5+ source)
 6+ cd sources
 7+ mkdir -p mw
 8+ cd mw
 9+ if [ $2 ]; then
 10+ VERSION=`echo "$2" | sed 's/\./_/g' - | sed 's/^\(1_[0-9]\+\).*$/\1/' -`
 11+ if [ -e $VERSION ]; then
 12+ echo "Updating $VERSION"
 13+ cd $VERSION
 14+ svn update
 15+ else
 16+ echo "Downloading mw$VERSION"
 17+ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/branches/REL$VERSION/phase3/ $VERSION
 18+ fi
 19+ else
 20+ if [ -e trunk ]; then
 21+ echo "Updating trunk"
 22+ cd trunk
 23+ svn update
 24+ else
 25+ echo "Downloading trunk"
 26+ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/ trunk
 27+ fi
 28+ fi
 29+ ;;
 30+ *)
 31+ echo "Usage: $0 source [version] - Download or update sources for trunk or a branch version of MediaWiki."
 32+ ;;
 33+esac
 34+
 35+exit 0
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK/mediawiki
___________________________________________________________________
Added: svn:eol-style
136 + LF
Property changes on: trunk/ATTIC/wikiSDK/sources
___________________________________________________________________
Added: svn:ignore
237 + *
Property changes on: trunk/ATTIC/wikiSDK/htdocs
___________________________________________________________________
Added: svn:ignore
338 + *
Index: trunk/ATTIC/wikiSDK/config
@@ -0,0 +1,43 @@
 2+#!/bin/sh
 3+
 4+config ()
 5+{
 6+ echo "$3"
 7+ echo -n "$1"
 8+ if [ -e ./configData/$1 ]; then
 9+ DEFAULT=$(cat ./configData/$1)
 10+ else
 11+ DEFAULT=$2
 12+ fi
 13+ echo -n " [$DEFAULT]: "
 14+ read -r VAL
 15+ if [ "$VAL" ]; then
 16+ if [ $CYGPATH ]; then
 17+ VAL=`cygpath -w "$VAL"`
 18+ fi
 19+ echo "$VAL" > ./configData/$1
 20+ else
 21+ if [ ! -e ./configData/$1 ]; then
 22+ VAL=$2
 23+ if [ $CYGPATH ]; then
 24+ VAL=`cygpath -w "$VAL"`
 25+ fi
 26+ echo "$VAL" > ./configData/$1
 27+ fi
 28+ fi
 29+ echo
 30+}
 31+
 32+CYGPATH=
 33+if [ -x /usr/bin/cygpath ]; then
 34+ echo "cygpath exists, using it to convert paths."
 35+ CYGPATH=1
 36+fi
 37+
 38+config mysqlroot /usr "The root where the MySQL installation can be found. %mysqlroot%/bin/mysqld should be valid."
 39+config phproot /usr/bin/ "The root where the PHP binaries can be found. %phproot%php and %phproot%php-cgi should be valid. Include the trailing slash."
 40+config phpini "$PWD" "The directory to find the php.ini configuration file to give to php-cgi for configuration info. Defaults to the SDK's diretory where one will be created with ./server config."
 41+config phpext "`cat configData/phproot`ext/" "The directory to find PHP extensions, defaults to the ext/ directory under the phproot. Include the trailing slash."
 42+config docroot "$PWD/htdocs/" "The web root for the wiki setups. Normally the htdocs subdirectory. Include the trailing slash."
 43+config logfile "`cat configData/docroot`server.log" "The logfile for the webserver to log to. Normally inside the htdocs so SVN doesn't catch it."
 44+config port 8000 "The port on which to run the webserver."
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK/config
___________________________________________________________________
Added: svn:eol-style
145 + LF
Index: trunk/ATTIC/wikiSDK/server
@@ -0,0 +1,41 @@
 2+#!/bin/sh
 3+
 4+case "$1" in
 5+ config)
 6+ echo "Configuring Xerver2.cfg"
 7+ cp -f scriptRes/Xerver2.cfg ./Xerver4/data/Xerver2.cfg
 8+ sed "s!%phproot%!`cat configData/phproot | sed 's/\\\\/\\\\\\\\/g' -`!" -i ./Xerver4/data/Xerver2.cfg
 9+ sed "s!%htdocs%!`cat configData/docroot | sed 's/\\\\/\\\\\\\\/g' -`!" -i ./Xerver4/data/Xerver2.cfg
 10+ sed "s!%logfile%!`cat configData/logfile | sed 's/\\\\/\\\\\\\\/g' -`!" -i ./Xerver4/data/Xerver2.cfg
 11+ sed "s!%port%!`cat configData/port | sed 's/\\\\/\\\\\\\\/g' -`!" -i ./Xerver4/data/Xerver2.cfg
 12+ sed "s!%phpini%!`cat configData/phpini | sed 's/\\\\/\\\\\\\\/g' -`!" -i ./Xerver4/data/Xerver2.cfg
 13+
 14+ if [ -x /usr/bin/cygpath ]; then
 15+ echo "Configuring php.ini for windows mode."
 16+ cp -f scriptRes/php.ini-win ./php.ini
 17+ sed "s!%phproot%!`cat configData/phproot | sed 's/\\\\/\\\\\\\\/g' -`!" -i ./php.ini
 18+ else
 19+ echo "Non-windows mode has not been setup yet."
 20+ fi
 21+ ;;
 22+ web)
 23+ cd Xerver4
 24+ java -jar xerver.jar Server
 25+ ;;
 26+ sql)
 27+ cd "`cat configData/mysqlroot`"
 28+ cd bin
 29+ ./mysqld --standalone
 30+ ;;
 31+ server)
 32+ $0 web&
 33+ $0 sql
 34+ *)
 35+ echo "Usage: $0 config - Build configfiles from settings"
 36+ echo "Usage: $0 web - Run webserver, use ctrl+c or close window to kill"
 37+ echo "Usage: $0 sql - Run sql server, use ctrl+c to kill"
 38+ echo "Usage: $0 server - Run the webserver and sql server, use ctrl+c to kill both"
 39+ ;;
 40+esac
 41+
 42+exit 0
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK/server
___________________________________________________________________
Added: svn:eol-style
143 + LF
Index: trunk/ATTIC/wikiSDK/README
@@ -0,0 +1,35 @@
 2+$Date$
 3+
 4+== wikiSDK ==
 5+wikiSDK is an attempt at creating a developer frendly SDK (Software Development Kit) for MediaWiki.
 6+
 7+== Included ==
 8+Included in the SDK are the scripts for use with the SDK and a copy of Xerver4 [1] to act as the WebServer.
 9+
 10+ [1] http://www.javascript.nu/xerver/
 11+
 12+== Usage ==
 13+=== Use on Windows ===
 14+Requirements:
 15+* Python (The latest version can be installed from http://python.org/download/)
 16+* cygwin (SDK Scripts are written in Bash; Use the setup.exe script downloaded from http://cygwin.com/)
 17+* Subversion (TortoiseSVN is helpfull for a UI form, but you will need the cygwin package for the bash scripts)
 18+* PHP Binaries (Recomended package is the PHP zip package from http://www.php.net/downloads.php#v5)
 19+* MySQL binaries (Recomended package is the one Without installer from http://dev.mysql.com/downloads/mysql/5.0.html#win32
 20+ You can unzip that into a directory then copy the my-medium.ini to my.ini in the same directory and you're good to go)
 21+
 22+Setup:
 23+[1] Checkout the SDK from Subversion.
 24+ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/wikiSDK/ wikiSDK/
 25+[2] cd into your wikiSDK directory using the Cygwin terminal.
 26+[3] Run `./config` and enter in the paths and data needed. Remember to run from the cygwin terminal so cygpath is used to correct things.
 27+[4] Run `./server config` to create a new webserver configuration file.
 28+[5] Run `./setup webdocs` to create the basic helper documents in the webroot and `./setup phpmyadmin` to get a copy of pypMyAdmin for
 29+ administration of your sql server.
 30+[6] When you need to use the webserver to view things, just type `./server web` to start it up. ctrl+c or close the window to shutdown.
 31+[7] When you need to use the sql server, just type `./server sql` to start it up. ctrl+c to shutdown.
 32+
 33+=== Use on Mac OS X ===
 34+
 35+
 36+=== Use on Linux ===
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK/README
___________________________________________________________________
Added: svn:eol-style
137 + native
Index: trunk/ATTIC/wikiSDK/scriptRes/php.ini-win
@@ -0,0 +1,1289 @@
 2+[PHP]
 3+
 4+;;;;;;;;;;;
 5+; WARNING ;
 6+;;;;;;;;;;;
 7+; This is the default settings file for new PHP installations.
 8+; By default, PHP installs itself with a configuration suitable for
 9+; development purposes, and *NOT* for production purposes.
 10+; For several security-oriented considerations that should be taken
 11+; before going online with your site, please consult php.ini-recommended
 12+; and http://php.net/manual/en/security.php.
 13+
 14+
 15+;;;;;;;;;;;;;;;;;;;
 16+; About php.ini ;
 17+;;;;;;;;;;;;;;;;;;;
 18+; This file controls many aspects of PHP's behavior. In order for PHP to
 19+; read it, it must be named 'php.ini'. PHP looks for it in the current
 20+; working directory, in the path designated by the environment variable
 21+; PHPRC, and in the path that was defined in compile time (in that order).
 22+; Under Windows, the compile-time path is the Windows directory. The
 23+; path in which the php.ini file is looked for can be overridden using
 24+; the -c argument in command line mode.
 25+;
 26+; The syntax of the file is extremely simple. Whitespace and Lines
 27+; beginning with a semicolon are silently ignored (as you probably guessed).
 28+; Section headers (e.g. [Foo]) are also silently ignored, even though
 29+; they might mean something in the future.
 30+;
 31+; Directives are specified using the following syntax:
 32+; directive = value
 33+; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
 34+;
 35+; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
 36+; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
 37+; (e.g. E_ALL & ~E_NOTICE), or a quoted string ("foo").
 38+;
 39+; Expressions in the INI file are limited to bitwise operators and parentheses:
 40+; | bitwise OR
 41+; & bitwise AND
 42+; ~ bitwise NOT
 43+; ! boolean NOT
 44+;
 45+; Boolean flags can be turned on using the values 1, On, True or Yes.
 46+; They can be turned off using the values 0, Off, False or No.
 47+;
 48+; An empty string can be denoted by simply not writing anything after the equal
 49+; sign, or by using the None keyword:
 50+;
 51+; foo = ; sets foo to an empty string
 52+; foo = none ; sets foo to an empty string
 53+; foo = "none" ; sets foo to the string 'none'
 54+;
 55+; If you use constants in your value, and these constants belong to a
 56+; dynamically loaded extension (either a PHP extension or a Zend extension),
 57+; you may only use these constants *after* the line that loads the extension.
 58+;
 59+;
 60+;;;;;;;;;;;;;;;;;;;
 61+; About this file ;
 62+;;;;;;;;;;;;;;;;;;;
 63+; All the values in the php.ini-dist file correspond to the builtin
 64+; defaults (that is, if no php.ini is used, or if you delete these lines,
 65+; the builtin defaults will be identical).
 66+
 67+
 68+;;;;;;;;;;;;;;;;;;;;
 69+; Language Options ;
 70+;;;;;;;;;;;;;;;;;;;;
 71+
 72+; Enable the PHP scripting language engine under Apache.
 73+engine = On
 74+
 75+; Enable compatibility mode with Zend Engine 1 (PHP 4.x)
 76+zend.ze1_compatibility_mode = Off
 77+
 78+; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
 79+; NOTE: Using short tags should be avoided when developing applications or
 80+; libraries that are meant for redistribution, or deployment on PHP
 81+; servers which are not under your control, because short tags may not
 82+; be supported on the target server. For portable, redistributable code,
 83+; be sure not to use short tags.
 84+short_open_tag = On
 85+
 86+; Allow ASP-style <% %> tags.
 87+asp_tags = Off
 88+
 89+; The number of significant digits displayed in floating point numbers.
 90+precision = 12
 91+
 92+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
 93+y2k_compliance = On
 94+
 95+; Output buffering allows you to send header lines (including cookies) even
 96+; after you send body content, at the price of slowing PHP's output layer a
 97+; bit. You can enable output buffering during runtime by calling the output
 98+; buffering functions. You can also enable output buffering for all files by
 99+; setting this directive to On. If you wish to limit the size of the buffer
 100+; to a certain size - you can use a maximum number of bytes instead of 'On', as
 101+; a value for this directive (e.g., output_buffering=4096).
 102+output_buffering = Off
 103+
 104+; You can redirect all of the output of your scripts to a function. For
 105+; example, if you set output_handler to "mb_output_handler", character
 106+; encoding will be transparently converted to the specified encoding.
 107+; Setting any output handler automatically turns on output buffering.
 108+; Note: People who wrote portable scripts should not depend on this ini
 109+; directive. Instead, explicitly set the output handler using ob_start().
 110+; Using this ini directive may cause problems unless you know what script
 111+; is doing.
 112+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
 113+; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
 114+; Note: output_handler must be empty if this is set 'On' !!!!
 115+; Instead you must use zlib.output_handler.
 116+;output_handler =
 117+
 118+; Transparent output compression using the zlib library
 119+; Valid values for this option are 'off', 'on', or a specific buffer size
 120+; to be used for compression (default is 4KB)
 121+; Note: Resulting chunk size may vary due to nature of compression. PHP
 122+; outputs chunks that are few hundreds bytes each as a result of
 123+; compression. If you prefer a larger chunk size for better
 124+; performance, enable output_buffering in addition.
 125+; Note: You need to use zlib.output_handler instead of the standard
 126+; output_handler, or otherwise the output will be corrupted.
 127+zlib.output_compression = Off
 128+;zlib.output_compression_level = -1
 129+
 130+; You cannot specify additional output handlers if zlib.output_compression
 131+; is activated here. This setting does the same as output_handler but in
 132+; a different order.
 133+;zlib.output_handler =
 134+
 135+; Implicit flush tells PHP to tell the output layer to flush itself
 136+; automatically after every output block. This is equivalent to calling the
 137+; PHP function flush() after each and every call to print() or echo() and each
 138+; and every HTML block. Turning this option on has serious performance
 139+; implications and is generally recommended for debugging purposes only.
 140+implicit_flush = Off
 141+
 142+; The unserialize callback function will be called (with the undefined class'
 143+; name as parameter), if the unserializer finds an undefined class
 144+; which should be instantiated.
 145+; A warning appears if the specified function is not defined, or if the
 146+; function doesn't include/implement the missing class.
 147+; So only set this entry, if you really want to implement such a
 148+; callback-function.
 149+unserialize_callback_func=
 150+
 151+; When floats & doubles are serialized store serialize_precision significant
 152+; digits after the floating point. The default value ensures that when floats
 153+; are decoded with unserialize, the data will remain the same.
 154+serialize_precision = 100
 155+
 156+; Whether to enable the ability to force arguments to be passed by reference
 157+; at function call time. This method is deprecated and is likely to be
 158+; unsupported in future versions of PHP/Zend. The encouraged method of
 159+; specifying which arguments should be passed by reference is in the function
 160+; declaration. You're encouraged to try and turn this option Off and make
 161+; sure your scripts work properly with it in order to ensure they will work
 162+; with future versions of the language (you will receive a warning each time
 163+; you use this feature, and the argument will be passed by value instead of by
 164+; reference).
 165+allow_call_time_pass_reference = On
 166+
 167+;
 168+; Safe Mode
 169+;
 170+safe_mode = Off
 171+
 172+; By default, Safe Mode does a UID compare check when
 173+; opening files. If you want to relax this to a GID compare,
 174+; then turn on safe_mode_gid.
 175+safe_mode_gid = Off
 176+
 177+; When safe_mode is on, UID/GID checks are bypassed when
 178+; including files from this directory and its subdirectories.
 179+; (directory must also be in include_path or full path must
 180+; be used when including)
 181+safe_mode_include_dir =
 182+
 183+; When safe_mode is on, only executables located in the safe_mode_exec_dir
 184+; will be allowed to be executed via the exec family of functions.
 185+safe_mode_exec_dir =
 186+
 187+; Setting certain environment variables may be a potential security breach.
 188+; This directive contains a comma-delimited list of prefixes. In Safe Mode,
 189+; the user may only alter environment variables whose names begin with the
 190+; prefixes supplied here. By default, users will only be able to set
 191+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
 192+;
 193+; Note: If this directive is empty, PHP will let the user modify ANY
 194+; environment variable!
 195+safe_mode_allowed_env_vars = PHP_
 196+
 197+; This directive contains a comma-delimited list of environment variables that
 198+; the end user won't be able to change using putenv(). These variables will be
 199+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
 200+safe_mode_protected_env_vars = LD_LIBRARY_PATH
 201+
 202+; open_basedir, if set, limits all file operations to the defined directory
 203+; and below. This directive makes most sense if used in a per-directory
 204+; or per-virtualhost web server configuration file. This directive is
 205+; *NOT* affected by whether Safe Mode is turned On or Off.
 206+;open_basedir =
 207+
 208+; This directive allows you to disable certain functions for security reasons.
 209+; It receives a comma-delimited list of function names. This directive is
 210+; *NOT* affected by whether Safe Mode is turned On or Off.
 211+disable_functions =
 212+
 213+; This directive allows you to disable certain classes for security reasons.
 214+; It receives a comma-delimited list of class names. This directive is
 215+; *NOT* affected by whether Safe Mode is turned On or Off.
 216+disable_classes =
 217+
 218+; Colors for Syntax Highlighting mode. Anything that's acceptable in
 219+; <span style="color: ???????"> would work.
 220+;highlight.string = #DD0000
 221+;highlight.comment = #FF9900
 222+;highlight.keyword = #007700
 223+;highlight.bg = #FFFFFF
 224+;highlight.default = #0000BB
 225+;highlight.html = #000000
 226+
 227+; If enabled, the request will be allowed to complete even if the user aborts
 228+; the request. Consider enabling it if executing long request, which may end up
 229+; being interrupted by the user or a browser timing out.
 230+; ignore_user_abort = On
 231+
 232+; Determines the size of the realpath cache to be used by PHP. This value should
 233+; be increased on systems where PHP opens many files to reflect the quantity of
 234+; the file operations performed.
 235+; realpath_cache_size=16k
 236+
 237+; Duration of time, in seconds for which to cache realpath information for a given
 238+; file or directory. For systems with rarely changing files, consider increasing this
 239+; value.
 240+; realpath_cache_ttl=120
 241+
 242+;
 243+; Misc
 244+;
 245+; Decides whether PHP may expose the fact that it is installed on the server
 246+; (e.g. by adding its signature to the Web server header). It is no security
 247+; threat in any way, but it makes it possible to determine whether you use PHP
 248+; on your server or not.
 249+expose_php = On
 250+
 251+
 252+;;;;;;;;;;;;;;;;;;;
 253+; Resource Limits ;
 254+;;;;;;;;;;;;;;;;;;;
 255+
 256+;;wikiSDK: Modified from 30 to 60 and 60 to 120 for leniency in development.
 257+max_execution_time = 60 ; Maximum execution time of each script, in seconds
 258+max_input_time = 120 ; Maximum amount of time each script may spend parsing request data
 259+;max_input_nesting_level = 64 ; Maximum input variable nesting level
 260+memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
 261+
 262+
 263+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 264+; Error handling and logging ;
 265+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 266+
 267+; error_reporting is a bit-field. Or each number up to get desired error
 268+; reporting level
 269+; E_ALL - All errors and warnings (doesn't include E_STRICT)
 270+; E_ERROR - fatal run-time errors
 271+; E_RECOVERABLE_ERROR - almost fatal run-time errors
 272+; E_WARNING - run-time warnings (non-fatal errors)
 273+; E_PARSE - compile-time parse errors
 274+; E_NOTICE - run-time notices (these are warnings which often result
 275+; from a bug in your code, but it's possible that it was
 276+; intentional (e.g., using an uninitialized variable and
 277+; relying on the fact it's automatically initialized to an
 278+; empty string)
 279+; E_STRICT - run-time notices, enable to have PHP suggest changes
 280+; to your code which will ensure the best interoperability
 281+; and forward compatibility of your code
 282+; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
 283+; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
 284+; initial startup
 285+; E_COMPILE_ERROR - fatal compile-time errors
 286+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
 287+; E_USER_ERROR - user-generated error message
 288+; E_USER_WARNING - user-generated warning message
 289+; E_USER_NOTICE - user-generated notice message
 290+;
 291+; Examples:
 292+;
 293+; - Show all errors, except for notices and coding standards warnings
 294+;
 295+;error_reporting = E_ALL & ~E_NOTICE
 296+;
 297+; - Show all errors, except for notices
 298+;
 299+;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
 300+;
 301+; - Show only errors
 302+;
 303+;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
 304+;
 305+; - Show all errors except for notices and coding standards warnings
 306+;
 307+;;wikiSDK: modified to all errors to help developers catch even the minor mistakes to fix.
 308+error_reporting = E_ALL | E_STRICT
 309+
 310+; Print out errors (as a part of the output). For production web sites,
 311+; you're strongly encouraged to turn this feature off, and use error logging
 312+; instead (see below). Keeping display_errors enabled on a production web site
 313+; may reveal security information to end users, such as file paths on your Web
 314+; server, your database schema or other information.
 315+;
 316+; possible values for display_errors:
 317+;
 318+; Off - Do not display any errors
 319+; stderr - Display errors to STDERR (affects only CGI/CLI binaries!)
 320+;
 321+;display_errors = "stderr"
 322+;
 323+; stdout (On) - Display errors to STDOUT
 324+;
 325+display_errors = On
 326+
 327+; Even when display_errors is on, errors that occur during PHP's startup
 328+; sequence are not displayed. It's strongly recommended to keep
 329+; display_startup_errors off, except for when debugging.
 330+display_startup_errors = Off
 331+
 332+; Log errors into a log file (server-specific log, stderr, or error_log (below))
 333+; As stated above, you're strongly advised to use error logging in place of
 334+; error displaying on production web sites.
 335+log_errors = Off
 336+
 337+; Set maximum length of log_errors. In error_log information about the source is
 338+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
 339+log_errors_max_len = 1024
 340+
 341+; Do not log repeated messages. Repeated errors must occur in same file on same
 342+; line until ignore_repeated_source is set true.
 343+ignore_repeated_errors = Off
 344+
 345+; Ignore source of message when ignoring repeated messages. When this setting
 346+; is On you will not log errors with repeated messages from different files or
 347+; source lines.
 348+ignore_repeated_source = Off
 349+
 350+; If this parameter is set to Off, then memory leaks will not be shown (on
 351+; stdout or in the log). This has only effect in a debug compile, and if
 352+; error reporting includes E_WARNING in the allowed list
 353+report_memleaks = On
 354+
 355+;report_zend_debug = 0
 356+
 357+; Store the last error/warning message in $php_errormsg (boolean).
 358+track_errors = Off
 359+
 360+; Disable the inclusion of HTML tags in error messages.
 361+; Note: Never use this feature for production boxes.
 362+;html_errors = Off
 363+
 364+; If html_errors is set On PHP produces clickable error messages that direct
 365+; to a page describing the error or function causing the error in detail.
 366+; You can download a copy of the PHP manual from http://www.php.net/docs.php
 367+; and change docref_root to the base URL of your local copy including the
 368+; leading '/'. You must also specify the file extension being used including
 369+; the dot.
 370+; Note: Never use this feature for production boxes.
 371+;docref_root = "/phpmanual/"
 372+;docref_ext = .html
 373+
 374+; String to output before an error message.
 375+;error_prepend_string = "<font color=#ff0000>"
 376+
 377+; String to output after an error message.
 378+;error_append_string = "</font>"
 379+
 380+; Log errors to specified file.
 381+;error_log = filename
 382+
 383+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
 384+;error_log = syslog
 385+
 386+
 387+;;;;;;;;;;;;;;;;;
 388+; Data Handling ;
 389+;;;;;;;;;;;;;;;;;
 390+;
 391+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
 392+
 393+; The separator used in PHP generated URLs to separate arguments.
 394+; Default is "&".
 395+;arg_separator.output = "&amp;"
 396+
 397+; List of separator(s) used by PHP to parse input URLs into variables.
 398+; Default is "&".
 399+; NOTE: Every character in this directive is considered as separator!
 400+;arg_separator.input = ";&"
 401+
 402+; This directive describes the order in which PHP registers GET, POST, Cookie,
 403+; Environment and Built-in variables (G, P, C, E & S respectively, often
 404+; referred to as EGPCS or GPC). Registration is done from left to right, newer
 405+; values override older values.
 406+variables_order = "EGPCS"
 407+
 408+; Whether or not to register the EGPCS variables as global variables. You may
 409+; want to turn this off if you don't want to clutter your scripts' global scope
 410+; with user data. This makes most sense when coupled with track_vars - in which
 411+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
 412+; variables.
 413+;
 414+; You should do your best to write your scripts so that they do not require
 415+; register_globals to be on; Using form variables as globals can easily lead
 416+; to possible security problems, if the code is not very well thought of.
 417+register_globals = Off
 418+
 419+; Whether or not to register the old-style input arrays, HTTP_GET_VARS
 420+; and friends. If you're not using them, it's recommended to turn them off,
 421+; for performance reasons.
 422+register_long_arrays = On
 423+
 424+; This directive tells PHP whether to declare the argv&argc variables (that
 425+; would contain the GET information). If you don't use these variables, you
 426+; should turn it off for increased performance.
 427+register_argc_argv = On
 428+
 429+; When enabled, the SERVER and ENV variables are created when they're first
 430+; used (Just In Time) instead of when the script starts. If these variables
 431+; are not used within a script, having this directive on will result in a
 432+; performance gain. The PHP directives register_globals, register_long_arrays,
 433+; and register_argc_argv must be disabled for this directive to have any affect.
 434+auto_globals_jit = On
 435+
 436+; Maximum size of POST data that PHP will accept.
 437+;;wikiSDK: changed from 8M to 20M for imports and such other large posts developers may be making.
 438+post_max_size = 20M
 439+
 440+; Magic quotes
 441+;
 442+
 443+; Magic quotes for incoming GET/POST/Cookie data.
 444+magic_quotes_gpc = On
 445+
 446+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
 447+magic_quotes_runtime = Off
 448+
 449+; Use Sybase-style magic quotes (escape ' with '' instead of \').
 450+magic_quotes_sybase = Off
 451+
 452+; Automatically add files before or after any PHP document.
 453+auto_prepend_file =
 454+auto_append_file =
 455+
 456+; As of 4.0b4, PHP always outputs a character encoding by default in
 457+; the Content-type: header. To disable sending of the charset, simply
 458+; set it to be empty.
 459+;
 460+; PHP's built-in default is text/html
 461+default_mimetype = "text/html"
 462+;default_charset = "iso-8859-1"
 463+
 464+; Always populate the $HTTP_RAW_POST_DATA variable.
 465+;always_populate_raw_post_data = On
 466+
 467+
 468+;;;;;;;;;;;;;;;;;;;;;;;;;
 469+; Paths and Directories ;
 470+;;;;;;;;;;;;;;;;;;;;;;;;;
 471+
 472+; UNIX: "/path1:/path2"
 473+;include_path = ".:/php/includes"
 474+;
 475+; Windows: "\path1;\path2"
 476+;include_path = ".;c:\php\includes"
 477+
 478+; The root of the PHP pages, used only if nonempty.
 479+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
 480+; if you are running php as a CGI under any web server (other than IIS)
 481+; see documentation for security issues. The alternate is to use the
 482+; cgi.force_redirect configuration below
 483+doc_root =
 484+
 485+; The directory under which PHP opens the script using /~username used only
 486+; if nonempty.
 487+user_dir =
 488+
 489+; Directory in which the loadable extensions (modules) reside.
 490+extension_dir = "%phproot%ext\"
 491+
 492+; Whether or not to enable the dl() function. The dl() function does NOT work
 493+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
 494+; disabled on them.
 495+enable_dl = On
 496+
 497+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
 498+; most web servers. Left undefined, PHP turns this on by default. You can
 499+; turn it off here AT YOUR OWN RISK
 500+; **You CAN safely turn this off for IIS, in fact, you MUST.**
 501+; cgi.force_redirect = 1
 502+
 503+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
 504+; every request.
 505+; cgi.nph = 1
 506+
 507+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
 508+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
 509+; will look for to know it is OK to continue execution. Setting this variable MAY
 510+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
 511+; cgi.redirect_status_env = ;
 512+
 513+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
 514+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
 515+; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
 516+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting
 517+; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
 518+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
 519+; cgi.fix_pathinfo=0
 520+
 521+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
 522+; security tokens of the calling client. This allows IIS to define the
 523+; security context that the request runs under. mod_fastcgi under Apache
 524+; does not currently support this feature (03/17/2002)
 525+; Set to 1 if running under IIS. Default is zero.
 526+; fastcgi.impersonate = 1;
 527+
 528+; Disable logging through FastCGI connection
 529+; fastcgi.logging = 0
 530+
 531+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
 532+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
 533+; is supported by Apache. When this option is set to 1 PHP will send
 534+; RFC2616 compliant header.
 535+; Default is zero.
 536+;cgi.rfc2616_headers = 0
 537+
 538+
 539+;;;;;;;;;;;;;;;;
 540+; File Uploads ;
 541+;;;;;;;;;;;;;;;;
 542+
 543+; Whether to allow HTTP file uploads.
 544+file_uploads = On
 545+
 546+; Temporary directory for HTTP uploaded files (will use system default if not
 547+; specified).
 548+;upload_tmp_dir =
 549+
 550+; Maximum allowed size for uploaded files.
 551+;;wikiSDK: changed from 2M to 10M for uploads.
 552+upload_max_filesize = 10M
 553+
 554+
 555+;;;;;;;;;;;;;;;;;;
 556+; Fopen wrappers ;
 557+;;;;;;;;;;;;;;;;;;
 558+
 559+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
 560+allow_url_fopen = On
 561+
 562+; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
 563+allow_url_include = Off
 564+
 565+; Define the anonymous ftp password (your email address)
 566+;from="john@doe.com"
 567+
 568+; Define the User-Agent string
 569+; user_agent="PHP"
 570+
 571+; Default timeout for socket based streams (seconds)
 572+default_socket_timeout = 60
 573+
 574+; If your scripts have to deal with files from Macintosh systems,
 575+; or you are running on a Mac and need to deal with files from
 576+; unix or win32 systems, setting this flag will cause PHP to
 577+; automatically detect the EOL character in those files so that
 578+; fgets() and file() will work regardless of the source of the file.
 579+; auto_detect_line_endings = Off
 580+
 581+
 582+;;;;;;;;;;;;;;;;;;;;;;
 583+; Dynamic Extensions ;
 584+;;;;;;;;;;;;;;;;;;;;;;
 585+;
 586+; If you wish to have an extension loaded automatically, use the following
 587+; syntax:
 588+;
 589+; extension=modulename.extension
 590+;
 591+; For example, on Windows:
 592+;
 593+; extension=msql.dll
 594+;
 595+; ... or under UNIX:
 596+;
 597+; extension=msql.so
 598+;
 599+; Note that it should be the name of the module only; no directory information
 600+; needs to go here. Specify the location of the extension with the
 601+; extension_dir directive above.
 602+
 603+
 604+; Windows Extensions
 605+; Note that ODBC support is built in, so no dll is needed for it.
 606+; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
 607+; extension folders as well as the separate PECL DLL download (PHP 5).
 608+; Be sure to appropriately set the extension_dir directive.
 609+
 610+;extension=php_bz2.dll
 611+;extension=php_curl.dll
 612+;extension=php_dba.dll
 613+;extension=php_dbase.dll
 614+;extension=php_exif.dll
 615+;extension=php_fdf.dll
 616+;extension=php_gd2.dll
 617+;extension=php_gettext.dll
 618+;extension=php_gmp.dll
 619+;extension=php_ifx.dll
 620+;extension=php_imap.dll
 621+;extension=php_interbase.dll
 622+;extension=php_ldap.dll
 623+;;wikiSDK: multibyte strings enabled
 624+extension=php_mbstring.dll
 625+;;wikiSDK: mcrypt for phpMyAadmin
 626+extension=php_mcrypt.dll
 627+;extension=php_mhash.dll
 628+;extension=php_mime_magic.dll
 629+;extension=php_ming.dll
 630+;extension=php_msql.dll
 631+;extension=php_mssql.dll
 632+;;wikiSDK: mysql enabled for MediaWiki, mysqli enabled for phpMyAdmin.
 633+extension=php_mysql.dll
 634+extension=php_mysqli.dll
 635+;extension=php_oci8.dll
 636+;extension=php_openssl.dll
 637+;extension=php_pdo.dll
 638+;extension=php_pdo_firebird.dll
 639+;extension=php_pdo_mssql.dll
 640+;extension=php_pdo_mysql.dll
 641+;extension=php_pdo_oci.dll
 642+;extension=php_pdo_oci8.dll
 643+;extension=php_pdo_odbc.dll
 644+;extension=php_pdo_pgsql.dll
 645+;extension=php_pdo_sqlite.dll
 646+;extension=php_pgsql.dll
 647+;extension=php_pspell.dll
 648+;extension=php_shmop.dll
 649+;extension=php_snmp.dll
 650+;extension=php_soap.dll
 651+;extension=php_sockets.dll
 652+;extension=php_sqlite.dll
 653+;extension=php_sybase_ct.dll
 654+;extension=php_tidy.dll
 655+;extension=php_xmlrpc.dll
 656+;extension=php_xsl.dll
 657+;extension=php_zip.dll
 658+
 659+;;;;;;;;;;;;;;;;;;;
 660+; Module Settings ;
 661+;;;;;;;;;;;;;;;;;;;
 662+
 663+[Date]
 664+; Defines the default timezone used by the date functions
 665+;date.timezone =
 666+
 667+;date.default_latitude = 31.7667
 668+;date.default_longitude = 35.2333
 669+
 670+;date.sunrise_zenith = 90.583333
 671+;date.sunset_zenith = 90.583333
 672+
 673+[filter]
 674+;filter.default = unsafe_raw
 675+;filter.default_flags =
 676+
 677+[iconv]
 678+;iconv.input_encoding = ISO-8859-1
 679+;iconv.internal_encoding = ISO-8859-1
 680+;iconv.output_encoding = ISO-8859-1
 681+
 682+[sqlite]
 683+;sqlite.assoc_case = 0
 684+
 685+[xmlrpc]
 686+;xmlrpc_error_number = 0
 687+;xmlrpc_errors = 0
 688+
 689+[Pcre]
 690+;PCRE library backtracking limit.
 691+;pcre.backtrack_limit=100000
 692+
 693+;PCRE library recursion limit.
 694+;Please note that if you set this value to a high number you may consume all
 695+;the available process stack and eventually crash PHP (due to reaching the
 696+;stack size limit imposed by the Operating System).
 697+;pcre.recursion_limit=100000
 698+
 699+[Syslog]
 700+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
 701+; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
 702+; runtime, you can define these variables by calling define_syslog_variables().
 703+define_syslog_variables = Off
 704+
 705+[mail function]
 706+; For Win32 only.
 707+SMTP = localhost
 708+smtp_port = 25
 709+
 710+; For Win32 only.
 711+;sendmail_from = me@example.com
 712+
 713+; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
 714+;sendmail_path =
 715+
 716+; Force the addition of the specified parameters to be passed as extra parameters
 717+; to the sendmail binary. These parameters will always replace the value of
 718+; the 5th parameter to mail(), even in safe mode.
 719+;mail.force_extra_parameters =
 720+
 721+[SQL]
 722+sql.safe_mode = Off
 723+
 724+[ODBC]
 725+;odbc.default_db = Not yet implemented
 726+;odbc.default_user = Not yet implemented
 727+;odbc.default_pw = Not yet implemented
 728+
 729+; Allow or prevent persistent links.
 730+odbc.allow_persistent = On
 731+
 732+; Check that a connection is still valid before reuse.
 733+odbc.check_persistent = On
 734+
 735+; Maximum number of persistent links. -1 means no limit.
 736+odbc.max_persistent = -1
 737+
 738+; Maximum number of links (persistent + non-persistent). -1 means no limit.
 739+odbc.max_links = -1
 740+
 741+; Handling of LONG fields. Returns number of bytes to variables. 0 means
 742+; passthru.
 743+odbc.defaultlrl = 4096
 744+
 745+; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
 746+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
 747+; of uodbc.defaultlrl and uodbc.defaultbinmode
 748+odbc.defaultbinmode = 1
 749+
 750+[MySQL]
 751+; Allow or prevent persistent links.
 752+mysql.allow_persistent = On
 753+
 754+; Maximum number of persistent links. -1 means no limit.
 755+mysql.max_persistent = -1
 756+
 757+; Maximum number of links (persistent + non-persistent). -1 means no limit.
 758+mysql.max_links = -1
 759+
 760+; Default port number for mysql_connect(). If unset, mysql_connect() will use
 761+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
 762+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
 763+; at MYSQL_PORT.
 764+mysql.default_port =
 765+
 766+; Default socket name for local MySQL connects. If empty, uses the built-in
 767+; MySQL defaults.
 768+mysql.default_socket =
 769+
 770+; Default host for mysql_connect() (doesn't apply in safe mode).
 771+mysql.default_host =
 772+
 773+; Default user for mysql_connect() (doesn't apply in safe mode).
 774+mysql.default_user =
 775+
 776+; Default password for mysql_connect() (doesn't apply in safe mode).
 777+; Note that this is generally a *bad* idea to store passwords in this file.
 778+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
 779+; and reveal this password! And of course, any users with read access to this
 780+; file will be able to reveal the password as well.
 781+mysql.default_password =
 782+
 783+; Maximum time (in seconds) for connect timeout. -1 means no limit
 784+mysql.connect_timeout = 60
 785+
 786+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
 787+; SQL-Errors will be displayed.
 788+mysql.trace_mode = Off
 789+
 790+[MySQLi]
 791+
 792+; Maximum number of links. -1 means no limit.
 793+mysqli.max_links = -1
 794+
 795+; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
 796+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
 797+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
 798+; at MYSQL_PORT.
 799+mysqli.default_port = 3306
 800+
 801+; Default socket name for local MySQL connects. If empty, uses the built-in
 802+; MySQL defaults.
 803+mysqli.default_socket =
 804+
 805+; Default host for mysql_connect() (doesn't apply in safe mode).
 806+mysqli.default_host =
 807+
 808+; Default user for mysql_connect() (doesn't apply in safe mode).
 809+mysqli.default_user =
 810+
 811+; Default password for mysqli_connect() (doesn't apply in safe mode).
 812+; Note that this is generally a *bad* idea to store passwords in this file.
 813+; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
 814+; and reveal this password! And of course, any users with read access to this
 815+; file will be able to reveal the password as well.
 816+mysqli.default_pw =
 817+
 818+; Allow or prevent reconnect
 819+mysqli.reconnect = Off
 820+
 821+[mSQL]
 822+; Allow or prevent persistent links.
 823+msql.allow_persistent = On
 824+
 825+; Maximum number of persistent links. -1 means no limit.
 826+msql.max_persistent = -1
 827+
 828+; Maximum number of links (persistent+non persistent). -1 means no limit.
 829+msql.max_links = -1
 830+
 831+[OCI8]
 832+; enables privileged connections using external credentials (OCI_SYSOPER, OCI_SYSDBA)
 833+;oci8.privileged_connect = Off
 834+
 835+; Connection: The maximum number of persistent OCI8 connections per
 836+; process. Using -1 means no limit.
 837+;oci8.max_persistent = -1
 838+
 839+; Connection: The maximum number of seconds a process is allowed to
 840+; maintain an idle persistent connection. Using -1 means idle
 841+; persistent connections will be maintained forever.
 842+;oci8.persistent_timeout = -1
 843+
 844+; Connection: The number of seconds that must pass before issuing a
 845+; ping during oci_pconnect() to check the connection validity. When
 846+; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
 847+; pings completely.
 848+;oci8.ping_interval = 60
 849+
 850+; Tuning: This option enables statement caching, and specifies how
 851+; many statements to cache. Using 0 disables statement caching.
 852+;oci8.statement_cache_size = 20
 853+
 854+; Tuning: Enables statement prefetching and sets the default number of
 855+; rows that will be fetched automatically after statement execution.
 856+;oci8.default_prefetch = 10
 857+
 858+; Compatibility. Using On means oci_close() will not close
 859+; oci_connect() and oci_new_connect() connections.
 860+;oci8.old_oci_close_semantics = Off
 861+
 862+[PostgresSQL]
 863+; Allow or prevent persistent links.
 864+pgsql.allow_persistent = On
 865+
 866+; Detect broken persistent links always with pg_pconnect().
 867+; Auto reset feature requires a little overheads.
 868+pgsql.auto_reset_persistent = Off
 869+
 870+; Maximum number of persistent links. -1 means no limit.
 871+pgsql.max_persistent = -1
 872+
 873+; Maximum number of links (persistent+non persistent). -1 means no limit.
 874+pgsql.max_links = -1
 875+
 876+; Ignore PostgreSQL backends Notice message or not.
 877+; Notice message logging require a little overheads.
 878+pgsql.ignore_notice = 0
 879+
 880+; Log PostgreSQL backends Noitce message or not.
 881+; Unless pgsql.ignore_notice=0, module cannot log notice message.
 882+pgsql.log_notice = 0
 883+
 884+[Sybase]
 885+; Allow or prevent persistent links.
 886+sybase.allow_persistent = On
 887+
 888+; Maximum number of persistent links. -1 means no limit.
 889+sybase.max_persistent = -1
 890+
 891+; Maximum number of links (persistent + non-persistent). -1 means no limit.
 892+sybase.max_links = -1
 893+
 894+;sybase.interface_file = "/usr/sybase/interfaces"
 895+
 896+; Minimum error severity to display.
 897+sybase.min_error_severity = 10
 898+
 899+; Minimum message severity to display.
 900+sybase.min_message_severity = 10
 901+
 902+; Compatibility mode with old versions of PHP 3.0.
 903+; If on, this will cause PHP to automatically assign types to results according
 904+; to their Sybase type, instead of treating them all as strings. This
 905+; compatibility mode will probably not stay around forever, so try applying
 906+; whatever necessary changes to your code, and turn it off.
 907+sybase.compatability_mode = Off
 908+
 909+[Sybase-CT]
 910+; Allow or prevent persistent links.
 911+sybct.allow_persistent = On
 912+
 913+; Maximum number of persistent links. -1 means no limit.
 914+sybct.max_persistent = -1
 915+
 916+; Maximum number of links (persistent + non-persistent). -1 means no limit.
 917+sybct.max_links = -1
 918+
 919+; Minimum server message severity to display.
 920+sybct.min_server_severity = 10
 921+
 922+; Minimum client message severity to display.
 923+sybct.min_client_severity = 10
 924+
 925+[bcmath]
 926+; Number of decimal digits for all bcmath functions.
 927+bcmath.scale = 0
 928+
 929+[browscap]
 930+;browscap = extra/browscap.ini
 931+
 932+[Informix]
 933+; Default host for ifx_connect() (doesn't apply in safe mode).
 934+ifx.default_host =
 935+
 936+; Default user for ifx_connect() (doesn't apply in safe mode).
 937+ifx.default_user =
 938+
 939+; Default password for ifx_connect() (doesn't apply in safe mode).
 940+ifx.default_password =
 941+
 942+; Allow or prevent persistent links.
 943+ifx.allow_persistent = On
 944+
 945+; Maximum number of persistent links. -1 means no limit.
 946+ifx.max_persistent = -1
 947+
 948+; Maximum number of links (persistent + non-persistent). -1 means no limit.
 949+ifx.max_links = -1
 950+
 951+; If on, select statements return the contents of a text blob instead of its id.
 952+ifx.textasvarchar = 0
 953+
 954+; If on, select statements return the contents of a byte blob instead of its id.
 955+ifx.byteasvarchar = 0
 956+
 957+; Trailing blanks are stripped from fixed-length char columns. May help the
 958+; life of Informix SE users.
 959+ifx.charasvarchar = 0
 960+
 961+; If on, the contents of text and byte blobs are dumped to a file instead of
 962+; keeping them in memory.
 963+ifx.blobinfile = 0
 964+
 965+; NULL's are returned as empty strings, unless this is set to 1. In that case,
 966+; NULL's are returned as string 'NULL'.
 967+ifx.nullformat = 0
 968+
 969+[Session]
 970+; Handler used to store/retrieve data.
 971+session.save_handler = files
 972+
 973+; Argument passed to save_handler. In the case of files, this is the path
 974+; where data files are stored. Note: Windows users have to change this
 975+; variable in order to use PHP's session functions.
 976+;
 977+; As of PHP 4.0.1, you can define the path as:
 978+;
 979+; session.save_path = "N;/path"
 980+;
 981+; where N is an integer. Instead of storing all the session files in
 982+; /path, what this will do is use subdirectories N-levels deep, and
 983+; store the session data in those directories. This is useful if you
 984+; or your OS have problems with lots of files in one directory, and is
 985+; a more efficient layout for servers that handle lots of sessions.
 986+;
 987+; NOTE 1: PHP will not create this directory structure automatically.
 988+; You can use the script in the ext/session dir for that purpose.
 989+; NOTE 2: See the section on garbage collection below if you choose to
 990+; use subdirectories for session storage
 991+;
 992+; The file storage module creates files using mode 600 by default.
 993+; You can change that by using
 994+;
 995+; session.save_path = "N;MODE;/path"
 996+;
 997+; where MODE is the octal representation of the mode. Note that this
 998+; does not overwrite the process's umask.
 999+;session.save_path = "/tmp"
 1000+
 1001+; Whether to use cookies.
 1002+session.use_cookies = 1
 1003+
 1004+;session.cookie_secure =
 1005+
 1006+; This option enables administrators to make their users invulnerable to
 1007+; attacks which involve passing session ids in URLs; defaults to 0.
 1008+; session.use_only_cookies = 1
 1009+
 1010+; Name of the session (used as cookie name).
 1011+session.name = PHPSESSID
 1012+
 1013+; Initialize session on request startup.
 1014+session.auto_start = 0
 1015+
 1016+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
 1017+session.cookie_lifetime = 0
 1018+
 1019+; The path for which the cookie is valid.
 1020+session.cookie_path = /
 1021+
 1022+; The domain for which the cookie is valid.
 1023+session.cookie_domain =
 1024+
 1025+; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
 1026+session.cookie_httponly =
 1027+
 1028+; Handler used to serialize data. php is the standard serializer of PHP.
 1029+session.serialize_handler = php
 1030+
 1031+; Define the probability that the 'garbage collection' process is started
 1032+; on every session initialization.
 1033+; The probability is calculated by using gc_probability/gc_divisor,
 1034+; e.g. 1/100 means there is a 1% chance that the GC process starts
 1035+; on each request.
 1036+
 1037+session.gc_probability = 1
 1038+session.gc_divisor = 100
 1039+
 1040+; After this number of seconds, stored data will be seen as 'garbage' and
 1041+; cleaned up by the garbage collection process.
 1042+session.gc_maxlifetime = 1440
 1043+
 1044+; NOTE: If you are using the subdirectory option for storing session files
 1045+; (see session.save_path above), then garbage collection does *not*
 1046+; happen automatically. You will need to do your own garbage
 1047+; collection through a shell script, cron entry, or some other method.
 1048+; For example, the following script would is the equivalent of
 1049+; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
 1050+; cd /path/to/sessions; find -cmin +24 | xargs rm
 1051+
 1052+; PHP 4.2 and less have an undocumented feature/bug that allows you to
 1053+; to initialize a session variable in the global scope, albeit register_globals
 1054+; is disabled. PHP 4.3 and later will warn you, if this feature is used.
 1055+; You can disable the feature and the warning separately. At this time,
 1056+; the warning is only displayed, if bug_compat_42 is enabled.
 1057+
 1058+session.bug_compat_42 = 1
 1059+session.bug_compat_warn = 1
 1060+
 1061+; Check HTTP Referer to invalidate externally stored URLs containing ids.
 1062+; HTTP_REFERER has to contain this substring for the session to be
 1063+; considered as valid.
 1064+session.referer_check =
 1065+
 1066+; How many bytes to read from the file.
 1067+session.entropy_length = 0
 1068+
 1069+; Specified here to create the session id.
 1070+session.entropy_file =
 1071+
 1072+;session.entropy_length = 16
 1073+
 1074+;session.entropy_file = /dev/urandom
 1075+
 1076+; Set to {nocache,private,public,} to determine HTTP caching aspects
 1077+; or leave this empty to avoid sending anti-caching headers.
 1078+session.cache_limiter = nocache
 1079+
 1080+; Document expires after n minutes.
 1081+session.cache_expire = 180
 1082+
 1083+; trans sid support is disabled by default.
 1084+; Use of trans sid may risk your users security.
 1085+; Use this option with caution.
 1086+; - User may send URL contains active session ID
 1087+; to other person via. email/irc/etc.
 1088+; - URL that contains active session ID may be stored
 1089+; in publically accessible computer.
 1090+; - User may access your site with the same session ID
 1091+; always using URL stored in browser's history or bookmarks.
 1092+session.use_trans_sid = 0
 1093+
 1094+; Select a hash function
 1095+; 0: MD5 (128 bits)
 1096+; 1: SHA-1 (160 bits)
 1097+session.hash_function = 0
 1098+
 1099+; Define how many bits are stored in each character when converting
 1100+; the binary hash data to something readable.
 1101+;
 1102+; 4 bits: 0-9, a-f
 1103+; 5 bits: 0-9, a-v
 1104+; 6 bits: 0-9, a-z, A-Z, "-", ","
 1105+session.hash_bits_per_character = 4
 1106+
 1107+; The URL rewriter will look for URLs in a defined set of HTML tags.
 1108+; form/fieldset are special; if you include them here, the rewriter will
 1109+; add a hidden <input> field with the info which is otherwise appended
 1110+; to URLs. If you want XHTML conformity, remove the form entry.
 1111+; Note that all valid entries require a "=", even if no value follows.
 1112+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
 1113+
 1114+[MSSQL]
 1115+; Allow or prevent persistent links.
 1116+mssql.allow_persistent = On
 1117+
 1118+; Maximum number of persistent links. -1 means no limit.
 1119+mssql.max_persistent = -1
 1120+
 1121+; Maximum number of links (persistent+non persistent). -1 means no limit.
 1122+mssql.max_links = -1
 1123+
 1124+; Minimum error severity to display.
 1125+mssql.min_error_severity = 10
 1126+
 1127+; Minimum message severity to display.
 1128+mssql.min_message_severity = 10
 1129+
 1130+; Compatibility mode with old versions of PHP 3.0.
 1131+mssql.compatability_mode = Off
 1132+
 1133+; Connect timeout
 1134+;mssql.connect_timeout = 5
 1135+
 1136+; Query timeout
 1137+;mssql.timeout = 60
 1138+
 1139+; Valid range 0 - 2147483647. Default = 4096.
 1140+;mssql.textlimit = 4096
 1141+
 1142+; Valid range 0 - 2147483647. Default = 4096.
 1143+;mssql.textsize = 4096
 1144+
 1145+; Limits the number of records in each batch. 0 = all records in one batch.
 1146+;mssql.batchsize = 0
 1147+
 1148+; Specify how datetime and datetim4 columns are returned
 1149+; On => Returns data converted to SQL server settings
 1150+; Off => Returns values as YYYY-MM-DD hh:mm:ss
 1151+;mssql.datetimeconvert = On
 1152+
 1153+; Use NT authentication when connecting to the server
 1154+mssql.secure_connection = Off
 1155+
 1156+; Specify max number of processes. -1 = library default
 1157+; msdlib defaults to 25
 1158+; FreeTDS defaults to 4096
 1159+;mssql.max_procs = -1
 1160+
 1161+; Specify client character set.
 1162+; If empty or not set the client charset from freetds.comf is used
 1163+; This is only used when compiled with FreeTDS
 1164+;mssql.charset = "ISO-8859-1"
 1165+
 1166+[Assertion]
 1167+; Assert(expr); active by default.
 1168+;assert.active = On
 1169+
 1170+; Issue a PHP warning for each failed assertion.
 1171+;assert.warning = On
 1172+
 1173+; Don't bail out by default.
 1174+;assert.bail = Off
 1175+
 1176+; User-function to be called if an assertion fails.
 1177+;assert.callback = 0
 1178+
 1179+; Eval the expression with current error_reporting(). Set to true if you want
 1180+; error_reporting(0) around the eval().
 1181+;assert.quiet_eval = 0
 1182+
 1183+[COM]
 1184+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
 1185+;com.typelib_file =
 1186+; allow Distributed-COM calls
 1187+;com.allow_dcom = true
 1188+; autoregister constants of a components typlib on com_load()
 1189+;com.autoregister_typelib = true
 1190+; register constants casesensitive
 1191+;com.autoregister_casesensitive = false
 1192+; show warnings on duplicate constant registrations
 1193+;com.autoregister_verbose = true
 1194+
 1195+[mbstring]
 1196+; language for internal character representation.
 1197+;mbstring.language = Japanese
 1198+
 1199+; internal/script encoding.
 1200+; Some encoding cannot work as internal encoding.
 1201+; (e.g. SJIS, BIG5, ISO-2022-*)
 1202+;mbstring.internal_encoding = EUC-JP
 1203+
 1204+; http input encoding.
 1205+;mbstring.http_input = auto
 1206+
 1207+; http output encoding. mb_output_handler must be
 1208+; registered as output buffer to function
 1209+;mbstring.http_output = SJIS
 1210+
 1211+; enable automatic encoding translation according to
 1212+; mbstring.internal_encoding setting. Input chars are
 1213+; converted to internal encoding by setting this to On.
 1214+; Note: Do _not_ use automatic encoding translation for
 1215+; portable libs/applications.
 1216+;mbstring.encoding_translation = Off
 1217+
 1218+; automatic encoding detection order.
 1219+; auto means
 1220+;mbstring.detect_order = auto
 1221+
 1222+; substitute_character used when character cannot be converted
 1223+; one from another
 1224+;mbstring.substitute_character = none;
 1225+
 1226+; overload(replace) single byte functions by mbstring functions.
 1227+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
 1228+; etc. Possible values are 0,1,2,4 or combination of them.
 1229+; For example, 7 for overload everything.
 1230+; 0: No overload
 1231+; 1: Overload mail() function
 1232+; 2: Overload str*() functions
 1233+; 4: Overload ereg*() functions
 1234+;mbstring.func_overload = 0
 1235+
 1236+[FrontBase]
 1237+;fbsql.allow_persistent = On
 1238+;fbsql.autocommit = On
 1239+;fbsql.show_timestamp_decimals = Off
 1240+;fbsql.default_database =
 1241+;fbsql.default_database_password =
 1242+;fbsql.default_host =
 1243+;fbsql.default_password =
 1244+;fbsql.default_user = "_SYSTEM"
 1245+;fbsql.generate_warnings = Off
 1246+;fbsql.max_connections = 128
 1247+;fbsql.max_links = 128
 1248+;fbsql.max_persistent = -1
 1249+;fbsql.max_results = 128
 1250+
 1251+[gd]
 1252+; Tell the jpeg decode to libjpeg warnings and try to create
 1253+; a gd image. The warning will then be displayed as notices
 1254+; disabled by default
 1255+;gd.jpeg_ignore_warning = 0
 1256+
 1257+[exif]
 1258+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
 1259+; With mbstring support this will automatically be converted into the encoding
 1260+; given by corresponding encode setting. When empty mbstring.internal_encoding
 1261+; is used. For the decode settings you can distinguish between motorola and
 1262+; intel byte order. A decode setting cannot be empty.
 1263+;exif.encode_unicode = ISO-8859-15
 1264+;exif.decode_unicode_motorola = UCS-2BE
 1265+;exif.decode_unicode_intel = UCS-2LE
 1266+;exif.encode_jis =
 1267+;exif.decode_jis_motorola = JIS
 1268+;exif.decode_jis_intel = JIS
 1269+
 1270+[Tidy]
 1271+; The path to a default tidy configuration file to use when using tidy
 1272+;tidy.default_config = /usr/local/lib/php/default.tcfg
 1273+
 1274+; Should tidy clean and repair output automatically?
 1275+; WARNING: Do not use this option if you are generating non-html content
 1276+; such as dynamic images
 1277+tidy.clean_output = Off
 1278+
 1279+[soap]
 1280+; Enables or disables WSDL caching feature.
 1281+soap.wsdl_cache_enabled=1
 1282+; Sets the directory name where SOAP extension will put cache files.
 1283+soap.wsdl_cache_dir="/tmp"
 1284+; (time to live) Sets the number of second while cached file will be used
 1285+; instead of original one.
 1286+soap.wsdl_cache_ttl=86400
 1287+
 1288+; Local Variables:
 1289+; tab-width: 4
 1290+; End:
Index: trunk/ATTIC/wikiSDK/scriptRes/Xerver2.cfg
@@ -0,0 +1,14 @@
 2+%port%
 3+index.php,index.html,index.htm
 4+%htdocs%*
 5+
 6+%htdocs%
 7+php=%phproot%php-cgi -c "%phpini%"
 8+
 9+
 10+1
 11+0
 12+0
 13+1
 14+1
 15+%logfile%
\ No newline at end of file
Property changes on: trunk/ATTIC/wikiSDK
___________________________________________________________________
Added: svn:ignore
116 + php.ini

Status & tagging log