From 4cd29f3eb0dced257a57d1313576513a574fd229 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 25 Jul 2002 05:24:56 +0000 Subject: [PATCH] Version 1.0 --- COPYING.TXT | 340 +++++++++++++++++++++++++++++++++++ README.TXT | 129 +++++++++++++ Whois.java | 147 +++++++++++++++ Whois.properties | 1 + release/1.0/Whois-1.0.tar.gz | Bin 0 -> 11627 bytes release/1.0/Whois-1.0.zip | Bin 0 -> 13268 bytes whois | 72 ++++++++ whois.bat | 50 ++++++ 8 files changed, 739 insertions(+) create mode 100644 COPYING.TXT create mode 100644 README.TXT create mode 100644 Whois.java create mode 100644 Whois.properties create mode 100644 release/1.0/Whois-1.0.tar.gz create mode 100644 release/1.0/Whois-1.0.zip create mode 100644 whois create mode 100644 whois.bat diff --git a/COPYING.TXT b/COPYING.TXT new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/COPYING.TXT @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/README.TXT b/README.TXT new file mode 100644 index 0000000..07de513 --- /dev/null +++ b/README.TXT @@ -0,0 +1,129 @@ + README + + GeekTools Whois Java Client + Version 1.0 + +GeekTools Whois Java Client is a finger-style whois which uses the GeekTools +Whois Proxy server () provided by CenterGate Research +Group, LLC. + +This program was developed by Erik C. Thauvin and is +distributed under the terms of the GNU General Public License. See the +enclosed COPYING.TXT file for more information. + + +Components: +----------- + +Whois.class : Compiled Java class (required) +Whois.java : Java Source code + +whois : Bourne shell script (launcher) +whois.bat : Batch file (launcher) + +README.TXT : This file! +COPYING.TXT : GNU General Public License + + +Java Requirements: +------------------ + +A Java VM (Virtual Machine) supporting Java 2, e.g., Sun's JDK or JRE 1.3. +As the source is also provided, you maybe able to recompile for earlier +versions of Java. + + +Usage: +------ + + java Whois query[@] + + +Launchers: +---------- + +A batch file (whois.bat) and Bourne shell script (whois) are provided to make +performing whois queries even more intuitive. + +For example, under Windows, you can simply use: + + whois example.com + +Under UNIX (Linux, Mac OS X, Solaris, etc.) use: + + ./whois example.com + +The launchers will report errors if the Whois.class or a valid Java Virtual +Machine cannot be located. + + +Examples: +--------- + +GeekTools Whois Java Client usage emulates the functionality found in various +BSD systems tools such as Chris Cappuccio's fwhois. For example: + + java Whois example.com + +will look for the example.com domain name registration record using the +GeekTools Whois Proxy server located at whois.geektools.com. + + java Whois example.com@whois.networksolutions.com + +will look for the example.com domain name registration record using the whois +server located at whois.networksolutions.com. + + java Whois summary example.com + +will look for the example.com domain name registration summary using the whois +proxy server located at whois.geektools.com. + + java Whois summary example.com@whois.networksolutions.com + +will look for the example.com domain name registration summary using the whois +server located at whois.networksolutions.com. + + java Whois handle IANA + +will look for the specified (IANA) NIC handle/contact record using the +GeekTools Whois Proxy server located at whois.geektools.com. + + java Whois handle IANA@whois.networksolutions.com + +will look for the specified (IANA) NIC handle/contact record using the whois +server located at whois.networksolutions.com. + + java Whois iana@iana.org@ + +(Note: The trailing at sign (@) is REQUIRED to specify an e-mail address +query.) + +will look for the NIC handle/contact record for the specified e-mail address +(iana@iana.org) using the GeekTools Whois Proxy server. + + java Whois iana@iana.org@whois.networksolutions.com + +will look for the NIC handle/contact record for the specified e-mail address +(iana@iana.org) using whois.networksolutions.com. + + +Properties +---------- + +The Whois.properties file can also be used to change the default whois server +and port. The Whois.properties file must be located in the same directory as +the Whois.class file. + +For example, to change the default server from whois.geektools.com to +whois.networksolutions.com, add the following to the properties file: + + server=whois.networksolutions.com + +Similarly, to change the default port from 43 to 46: + + port=46 + + + + +Copyright (C) 2000 by SkyTouch Communications. All Rights Reserved. diff --git a/Whois.java b/Whois.java new file mode 100644 index 0000000..f354033 --- /dev/null +++ b/Whois.java @@ -0,0 +1,147 @@ +/* + + Package: GeekTools Whois Java Client 1.0 + File: Whois.java (Java source file) + Author: Erik C. Thauvin + Comments: Part of the GeekTools Whois Java Client package. + See the README.TXT file for more information. + + Copyright (C) 2000 SkyTouch Communications. All Rights Reserved. + + This program is distributed under the terms of the GNU General + Public License as published by the Free Software Foundation. + See the COPYING.TXT file for more information. + + $Id$ + +*/ + +import java.net.Socket; +import java.io.*; +import java.util.Properties; + + +public class Whois +{ + // The truth is out there! + public static void main(String[] args) + { + // Display usage if there are no command line arguments + if (args.length < 1) + { + System.out.println( + "Usage: java Whois query[@]"); + + return; + } + + // Default server is whois.geektools.com + String server = "whois.geektools.com"; + // Default server port is 43 + int port = 43; + + // Load the properties file. + try + { + FileInputStream in = + new FileInputStream("Whois.properties"); + Properties app = new Properties(); + + app.load(in); + + // Get the server property + server = (app.getProperty("server", server)); + + // Get the port property + String tmp = app.getProperty("port"); + + try + { + port = Integer.parseInt(tmp); + } + catch (NumberFormatException e) + { + // Do nothing! + } + + in.close(); + } + catch (FileNotFoundException e) + { + // Do nothing! + } + catch (IOException e) + { + System.err.println( + "Whois: an error occurred while loading the properties file: " + + e); + } + + // Build the whois query using command line arguments + String query = args[0]; + + for (int i = 1; i < args.length; i++) + { + query += (" " + args[i]); + } + + // The whois server can be specified after "@" + // e.g.: query@whois.networksolutions.com + int at = query.lastIndexOf("@"); + int len = query.length(); + + if ((at != -1)) + { + // Remove the @ if last character in query + // e.g.: john@doe.com@ + if (at == (len - 1)) + { + query = query.substring(0, len - 1); + } + else + { + // The whois server is specified after "@" + server = query.substring(at + 1, len); + // The whois query is specified before "@" + query = query.substring(0, at); + } + } + + try + { + // Establish connection to whois server & port + Socket connection = new Socket(server, port); + PrintStream out = + new PrintStream(connection.getOutputStream()); + BufferedReader in = new BufferedReader( + new InputStreamReader( + connection.getInputStream())); + String line = ""; + + // Send the whois query + out.println(query); + // Display the whois server's address & port + System.out.println("[" + server + ":" + port + "]"); + + // Read/display the query's result + while ((line = in.readLine()) != null) + { + System.out.println(line); + } + } + catch (java.net.UnknownHostException e) + { + // Unknown whois server + System.err.println("Whois: unknown host: " + server); + + return; + } + catch (IOException e) + { + // Could not connect to whois server + System.err.println("Whois: " + e); + + return; + } + } +} diff --git a/Whois.properties b/Whois.properties new file mode 100644 index 0000000..cb6518e --- /dev/null +++ b/Whois.properties @@ -0,0 +1 @@ +server=whois.geektools.com diff --git a/release/1.0/Whois-1.0.tar.gz b/release/1.0/Whois-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5d01f397c9e516b5bb6ae94a6ff3f0f0fa163d5c GIT binary patch literal 11627 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 p^>{sAkJsb%cs*W^*W>kgJzkI3=gsLINSd{$*t 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 O`UwmKw952X?f(H??X1QC literal 0 HcmV?d00001 diff --git a/whois b/whois new file mode 100644 index 0000000..22a02d9 --- /dev/null +++ b/whois @@ -0,0 +1,72 @@ +#!/bin/sh + +# Package: GeekTools Whois Java Client 1.0 +# File: whois (Bourne shell script) +# Author: Erik C. Thauvin +# Comments: Part of the GeekTools Whois Java Client package. See +# the README.TXT file for more information. +# +# Copyright (C) 2000 SkyTouch Communications - All Rights Reserved +# +# This program is distributed under the terms of the GNU General +# Public License as published by the Free Software Foundation. +# See the COPYING.TXT file for more information. + +args="" +for arg in "$@" +do + if [ "$arg" != "" ] + then + args="$args \"$arg\"" + fi +done + +if [ -e Whois.class ] +then + JAVA_EXE=/bin/java + if [ "$JAVA_PATH" = "" ] + then + # Linux JDK + JAVA_PATH=/usr/java/jdk1.3 + if [ ! -x ${JAVA_PATH}${JAVA_EXE} ] + then + # Linux JRE + JAVA_PATH=/usr/java/jre1.3 + if [ ! -x ${JAVA_PATH}${JAVA_EXE} ] + then + # Solaris JDK + JAVA_PATH=/usr/j2se + if [ ! -x ${JAVA_PATH}${JAVA_EXE} ] + then + # Solaris JRE + JAVA_PATH=/usr/j2se/jre + if [ ! -x ${JAVA_PATH}${JAVA_EXE} ] + then + # Mac OS X + JAVA_PATH= + JAVA_EXE=/System/Library/Frameworks/JavaVM.framework/Versions/1.2/Commands/java + if [ ! -x ${JAVA_EXE} ] + then + JAVA_EXE=`which java` + if [ ! -x $JAVA_EXE ] + then + JAVA_EXE=java + fi + fi + fi + fi + fi + fi + fi + eval ${JAVA_PATH}${JAVA_EXE} Whois $args + if [ $? != 0 ] + then + echo " +Please make sure that the JDK or JRE bin directory is included +in your system PATH environment variable." + fi +else + echo " +The Whois.class could not be found. It must be located in the +same directory as the one this shell script was called from." +fi diff --git a/whois.bat b/whois.bat new file mode 100644 index 0000000..9e7c514 --- /dev/null +++ b/whois.bat @@ -0,0 +1,50 @@ +@echo off + +rem Package: GeekTools Whois Java Client 1.0 +rem File: whois.bat (Batch file) +rem Author: Erik C. Thauvin +rem Comments: Part of the GeekTools Whois Java Client package. +rem See the README.TXT file for more information. +rem +rem Copyright (C) 2000 SkyTouch Communications - All Rights Reserved +rem +rem This program is distributed under the terms of the GNU General +rem Public License as published by the Free Software Foundation. +rem See the COPYING.TXT file for more information. + +if not exist Whois.class goto WHOIS_ERROR + +set JAVA_EXE=\bin\java.exe + +if not %JAVA_PATH%.==. goto JAVA_RUN +set JAVA_PATH=%HOMEDRIVE%\jdk1.3 +if exist %JAVA_PATH% goto JAVA_RUN +set JAVA_PATH=%HOMEDRIVE%\Progra~1\JavaSoft\JRE\1.3 +if exist %JAVA_PATH% goto JAVA_RUN +set JAVA_PATH= +set JAVA_EXE=java.exe + +:JAVA_RUN +%JAVA_PATH%%JAVA_EXE% Whois %1 %2 %3 %4 %5 %6 %7 %8 %9 +if errorlevel 2 goto JAVA_ERROR +goto DONE + +:JAVA_ERROR +set JAVA_PATH= +echo. +echo Please make sure that the JDK or JRE bin directory is included +echo in your system PATH environment variable. +echo. +pause +goto DONE + +:WHOIS_ERROR +echo. +echo The Whois.class could not be found. It must be located in the +echo same directory as the one this batch file was called from. +echo. +pause + +:DONE +set JAVA_EXE= +@echo on