mwhois/ChangeLog0100600000175000017500000001426507615523045012642 0ustar mattmatt28/01/2003 Matt Wilson * Script no longer throws an error if an extension is specified and either global or wizard mode is "on". 23/01/2003 Matt Wilson * Perl: another small fix re: below 23/01/2003 Matt Wilson * Perl: domain names with spaces were not raising errors! 11/01/2003 Matt Wilson * Perl: "our" was introduced in 5.6.0 not 5.1.0! 11/12/2002 Matt Wilson * PHP: *.au TLDs should again function correctly. 28/11/2002 Matt Wilson * Fixes for dir_split... again. 25/11/2002 Matt Wilson * PHP: several register_globals="off" updates and fixes for the script. * PHP/Perl: end-of-line fixes 04/11/2002 Matt Wilson * Perl: made several fixes to hopefully ensure correct functionality across perl versions * PHP/Perl: made a couple of alterations to theme loading (hopefully fix your problems!) * PHP/Perl: changes to the config file (vague) and admin script to create them (people were having troubles) * German template problems were resolved 13/10/2002 Matt Wilson * Perl: fixed a problem relating to show raw output 22/08/2002 Matt Wilson * hopefully works with all versions of perl now, including mod_perl * resorted back to simple substring searches for availability checks 30/07/2002 Matt Wilson * On startup, Matt's Whois ads "." to @INC to ensure config.cgi is found * updated availability code to introduce regular expression checking (previously just string checks), this is in light of the *.au TLDs * also made a few other scoping alterations 21/07/2002 Matt Wilson * Made whois request as "domainname\r\n" rather than just "domainname\n" (sorry, missed this in the whois RFC!) 12/07/2002 Matt Wilson * Perl: fixed a couple of backward compatability bugs. 29/06/2002 Matt Wilson * Perl: fixed an error when attempting to identify and connect to information servers (effected com/net/org) 04/06/2002 Matt Wilson * PHP: updated admin script to work correctly with all PHP versions * PHP: updated main script and admin script to not call variables directly, but via $GLOBALS, $_POST or $_GET 18/04/2002 Matt Wilson * Perl: small typo fixed (thanks to David Stone) 12/04/2002 Matt Wilson * Perl: updated the domain name checking sub-routine to (hopefully) make it work properly! 05/04/2002 Matt Wilson * Forgot to add the [>FULLDOMAIN<] text replacement in the PHP version, fixed! 23/03/2002 Matt Wilson * Added an option to simple enter the full domain name instead of having a domain and extension field, it is called fulldomain (rather than domain and ext), see the usual place for info (the script). * Perl: checked the main script and admin script possible problems (perl -W -T) 21/03/2002 Matt Wilson * Added a link to the servers.lst file in the admin script * Added an attachment header to the admin script 10/03/2002 Matt Wilson * PHP: fix fatal_theme() subroutine to see $theme variable 08/03/2002 Matt Wilson * PHP: fixed a bug relating to the wizard search * Perl: a couple of wizard related bugs 29/06/2001 Matt Wilson * Added "if no data is returned then report as available" for the sake of .ie domains! * Removed an error when $domain was blank in check_domain 07/06/2001 Matt Wilson * Completed some basic documentation - hope its some use! 06/06/2001 Matt Wilson * Added a new admin script 05/06/2001 Matt Wilson * Disabled a couple of domain name checks (length and numbers only on 2 letter domains) 01/06/2001 Matt Wilson * Just finished restructuring the script for multi-language use, or more accurately, easily downloading and using new templates. So if anyone out there wants to submit a template for everyone to use then that would be great! 30/05/2001 Matt Wilson * I just recieved a german translation from Tom Nickels so I figure a language selection system would be a good idea 23/05/2001 Matt Wilson * A couple of servers.lst changes, nothing to worry about 09/05/2001 Matt Wilson * After a couple of bug reports from Wilfried (See Perl Changelog) I realised that the provided templates were broken and there now fixed, applies to global searches and wizard searches. 28/03/2001 Matt Wilson * Fixed a bug for whois info server raw displays * Converted all the server list into a single list file * Development split into PHP and Perl versions for non-PHP people 13/03/2001 Matt Wilson * Fixed up some server responses that had changed 14/11/2000 Matt Wilson - 0.4.4 * The script now looks up which whois info server to use if there is a server available for this (com/net/org) * Hopefully fixed a bug causing domains information to be wrong/mis-interpreted 08/11/2000 Matt Wilson * Hooray! I fixed that damned annoying bug regarding the global whois search ;) 07/11/2000 Matt Wilson * Hmm, not sure if I uploaded the fully patched version, i'll do it again to make sure ;) 06/11/2000 Matt Wilson * Added support for loads more domain types because people were complaining that it was hard to add new domain types * Fixed a problem regarding whois.bulkregister.com which was reporting wrongly, so we don't use it anymore ;) 19/10/2000 Matt Wilson * Added `--' support 26/9/2000 Matt Wilson - version 0.4 (2) * Added a patch for PHP4 users * Fixed a minor problem calling an undefined function (oops) 26/9/2000 Matt Wilson - version 0.4 mwhois/config.cgi0100755000175000017500000000125607561567522013040 0ustar mattmatt# This is the Matt's Whois Perl version configuration file, lets keep it simple # folks! # This variable should be set to the name of the directory which contains your # titles config file, your template config file and the rest of the stuff like # that! (ie, there's a directory called "english/" so we put "english") this # is the standard boring old template $theme = "english"; # this a list of the whois extensions to use, edit them as you need them @whois_exts = ( "com", "net", "org", "co.uk", "biz", "info", "be" ); # should we use the global header and footer templates? (this can be over ridden # by a POST or GET variable) $use_global_templates_by_default = 1; 1; mwhois/COPYING0100600000175000017500000004406307453163210012114 0ustar mattmatt NOTE! This copyright does *not* cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does *not* fall under the heading of "derived work". Also note that the GPL below is copyrighted by the Free Software Foundation, but the instance of code that it refers to (the Linux kernel) is copyrighted by me and others who actually wrote it. Linus Torvalds ---------------------------------------- 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) 19yy 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) 19yy 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. mwhois/FAQ0100644000175000000350000000150307615477725011565 0ustar mattaudioFrequently Asked Questions -------------------------- Q. How can I use PHP code in the templates? A. At the moment, you can't. Q. When I use SSI to include mwhois, the HTML after my include doesn't show, why? A. MWhois.php (or .cgi) exits after doing it's job, this is why. Q. How can I show the results of a whois search on my pages? A. Use the templates, this is what they're there for. Q. Is there any way of performing a search on all Top Level Domains using the drop down menu that is used to select the extension? A. You can't. Well, not entirely true, using some javascript it can be achieved I believe. Q. Top Level Domain ??? doesn't work! What should I do? Q. The script doesn't support Top Level Domain ???, help! A. E-Mail me with the Top Level Domain and any information you have, I'll see what I can do! mwhois/english/0040777000175000017500000000000007561567054012540 5ustar mattmattmwhois/english/gheader.tml0100644000175000017500000000011707453163210014627 0ustar mattmatt Matt's Whois lookup mwhois/english/templates.cfg0100644000175000017500000000151207453163210015171 0ustar MatildaMatilda; This file contains the pathnames for the templates of the ; various pages of the script each line begins with a flag ; and then a |, after the `|' is the pathname, ie if a line was ; ; search|search.tml ; then the template file for the page with flag "search" (the ; search page) is "search.tml" ; the main page header header|gheader.tml ; the main page footer footer|gfooter.tml ; the search mini template searchmini|searchform.tml ; the search template search|searchmain.tml ; the raw output template raw|rawoutput.tml ; the available template avail|isavail.tml ; the taken template taken|istaken.tml ; the wizard template wizard|wizard.tml ; wizard results wizres|wizardres.tml ; error page error|error.tml ; extension list extlist|exts_list.tml ; global search global|global.tml ; global results page globalres|globres.tmlmwhois/english/searchform.tml0100644000175000017500000000037107453163210015363 0ustar MatildaMatilda
[>EXT_HTML_LIST<]
mwhois/english/isavail.tml0100644000175000017500000000072707453163210014667 0ustar MatildaMatilda
Congratulations!
The domain [>DOMAIN<].[>EXT<] is available!

A search performed on [>WHOIS_SERVER<] has revealed that the domain "[>DOMAIN<].[>EXT<]" is available.

mwhois/english/searchmain.tml0100644000175000017500000000222507453163210015344 0ustar MatildaMatildaPlease use the following form to check the availability of a domain name. Please provide a value for a domain name and select one of the extensions (i.e., ".com", ".net", ".org", "co.uk", etc.). A query will be performed on the appropriate WHOIS database.

You can use our Domain Name Wizard to assist you in selecting a domain name.

You can also search globally using our Global Domain Name Search.

DOMAIN NAME:
. [>EXT_HTML_LIST<]

mwhois/english/globres.tml0100644000175000017500000000161407453163210014670 0ustar MatildaMatilda The following are the results from the Global Domain Name Search. You can click on any available domain below to go to the ordering page. You can also click on any of the taken domain names to find out some information on the owner of that domain. Click here to return to our Global Domain Name Search.

The following domains are available: The following domains are unavailable:

[>AVAIL_LIST<] [>UNAVAIL_LIST<]
mwhois/english/rawoutput.tml0100644000175000017500000000032107453163210015277 0ustar MatildaMatildaHere is the raw output for domain [>DOMAIN<].[>EXT<].

Click here to return to the WHOIS lookup.

[>RAWOUTPUT<]

mwhois/english/exts_list.tml0100644000175000017500000000047607453163210015256 0ustar MatildaMatilda The following is a list of Top Level Domains (and Second Level Domains, where appropriate) that are supported by our Domain Name Search. Please click here when you are ready to return to the Domain Name Search.
[>EXT_LIST<] mwhois/english/global.tml0100644000175000017500000000174207453163210014475 0ustar MatildaMatildaYou can use this form to check the availability of domain names all over the world. Simply enter a single word below and a search will begin. Please be sure not to enter any punctuation characters or TLDs below. Please note that this search may take several minutes.

Click here to return to the normal Domain Name Lookup.

ENTER A WORD:
mwhois/english/wizard.tml0100644000175000017500000000331107453163210014527 0ustar MatildaMatilda Welcome to the Matilda's Whois domain name wizard, the wizard can help you find a good domain name for your company by combining descriptive words associated with your company, also the domain wizard will automatically check each of these domains for availability and create a report for you to view. Please note however that this process can take upto a minute to complete depending on the current speed of the internet. In order for the internet domain name wizard to be able to perform this search, you are required to fill in the details below as best you can.

Click here to return to the standard lookup.

Enter your business, product or service name:
Enter a word that describes your business:
Enter another word that describes your business:
Select a Top Level Domain: [>EXT_HTML_LIST<]
mwhois/english/titles.cfg0100644000175000017500000000134207453163210014500 0ustar MatildaMatilda; This file contains the titles for the various pages of the script ; each line begins with a flag and then a |, after the `|' is the ; title, ie if a line was ; ; search|Search page ; then the title for the page with flag "search" (the search page) ; is "Search page" ; Default title, if none other are available default|MWhois written by ; Search title search|Find a domain ; Raw output title raw|RAW output ; Available title avail|The domain name is available! ; Taken title taken|The domain name is taken ; Wizard title wiz|MWhois name wizard ; Error title error|MWhois encountered an error! ; Extension list exts|MWhois supports the following extensions ; Global search title global|Let MWhois do the hard work! mwhois/english/gfooter.tml0100644000175000017500000000002107453163210014667 0ustar MatildaMatilda mwhois/english/istaken.tml0100644000175000017500000000135107453163210014667 0ustar mattmatt
Sorry, the domain [>DOMAIN<].[>EXT<] is already taken.
A search on [>WHOIS_SERVER<] has revealed that the domain name [>DOMAIN<].[>EXT<] is in use by another company or individual. You cannot register this domain. Please click here to choose another domain. Or, you may click below to see who the domain is registered to.

mwhois/english/wizardres.tml0100644000175000017500000000165207453163210015247 0ustar mattmatt The following are the results from the Domain Name Wizard. These results where obtained from [>WHOIS_SERVER<]. Click on any available domain below to goto the order page. You can also click on any unavailable domain name to find out some information on the owner of the domain. Click here to return to our Domain Name Wizard.

The following domains are available: The following domains are unavailable:

[>AVAIL_LIST<] [>UNAVAIL_LIST<]
mwhois/english/error.tml0100644000175000017500000000530007453163210014360 0ustar mattmatt Your search on [>DOMAIN<].[>EXT<] produced the following error:
[>ERROR_MSG<]

The Rules:
  • Unless the Top Level Domain you are using requires or supports a Second Level Domain for classification (the "co" in .co.uk), you should not enter anything but a domain name and a Top Level Domain.
  • Don't put "www." in front of the domain. "www." is a host name, not a domain name. You should not use "www" anywhere unless it part of the actual domain name you are looking for.
  • Legal characters are 0-9, a-z and "-". Underscores (_) and spaces are not permitted in domains.
Please click here to return to the search.
A list of errors and their meanings follows:

  • Domain name too long/short This means that the domain name that you entered was either too long or too short, legal sdomain name lengths are between 2 characters and 57 characters.
  • Domain name cannot contain any letters of hyphens in 2 character domain names This error message is returned if your domain name was only 2 characters long and it contained either a hyphen or a letter, this is because 2 character domain names are only allowed to contain numbers.
  • Domain names cannot begin or end in a hyphen or contain double hyphens A domain name can contain hyphens, however the hyphens cannot be neighbours (ie "--") and they also cannot begin the domain name or end it, ie "-mwhois.xxx" is illegal as it begins with a hyphen.
  • Domain names must only contain alphanumerical characters and hyphens Domain names must only consist of numbers, letter and hyphens - this means that no spaces, periods, commas or any other kind of punctuation is allowed. This is common when people begin the domain name with "www." - this is not part of the domain name and should not be used.
  • Cannot connect to [server name] If you recieve this message then the whois server that I am trying to connect to in order to perform your query is either refusing my network connection or for some other reason I am unable to connect to it, the best course of action when this occurs is to simply try again later.
  • No top level domain selected This means that you failed to select a top level domain for your domain name, for example `co.uk', `com', `net' etc.
  • Top level domain not supported This error message means that whichever top level domain extension you chose is not supported by this scripts configuration, in other words, I do not have the information required to search for this top level domain.

mwhois/mwhois_admin.cgi0100755000175000017500000001327707561567610014255 0ustar mattmatt#!/usr/bin/perl # MWhois Admin - a quick admin front end to MWhois by Matt Wilson # # MWhois - a Whois lookup script written in PHP and Perl # Copyright (C) 2000 Matt Wilson # # 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 use CGI qw/:standard/; if(!defined $^V or $^V lt v5.1.0) { local @whois_exts; local @theme_list; local $dir_split; } else { our @whois_exts; our @theme_list; our $dir_split; } if($ENV{'PATH'} =~ m/^\//) { $dir_split = "/"; } else { $dir_split = "\\"; } sub my_in_array { ($val, @arg) = @_; foreach (@arg) { if($val eq $_) { return 1; } } return 0; } # if the servers.lst file could not be loaded then give an error sub fatal_servers_lst { print < MWhois could not locate the `servers.lst' file in the current directory! END exit 0; } # get a list of the directory names so that we can list them sub list_themes { opendir $cdir, '.'; while($name = readdir $cdir) { if($name eq '..' or $name eq '.') { next; } if(-d $name){ if(-r $name.$dir_split."templates.cfg") { push @theme_list, $name; } } } closedir $cdir ; } # this loads the server info for the extensions in $whois_exts; sub load_server_info { # load the servers.lst file if(!open $dat,'; close $dat; foreach (@tlds) { # get rid of any trailing whitspace and EOLs chomp; # filter out any comments or empty lines if($_ =~ m/^#/ or !length) { next; } # split the data into chunks that we want ($tld, undef, undef, undef, undef, undef) = split /\|/, $_; # check whether this is one we want if(my_in_array($tld, @whois_exts)) { next; } push @whois_exts, $tld; # that should do :) } } &load_server_info; &list_themes; sub show_admin_menu { print header, < MWhois Admin menu Welcome to the quick admin section of Matt's Whois by Matt Wilson.
Here you have the option to select which theme you would like to use with Matt's Whois, which Top Level Domains you would like to use and possibly a couple of other miscellaneous options as the script progresses.
For the latest servers.lst file, click here to download it.

Please choose the theme you would like to use :-
Below is a list of all the TLDs that are supported by the version of servers.lst you have installed, please check the ones you would like to use;

END for($l=0; $l<@whois_exts; $l+=3){ print ""; } print <

Click the button below to retrieve the config file, simply rename it to "config.cgi" and put it in the same directory as the main "mwhois.cgi" script;
END } sub get_config_file { $global = param('global'); $theme = param('theme'); print header(-type => 'octet/stream', 'Content-Disposition' => 'attachment; filename=config.cgi' ), "# This is the Matt's Whois Perl version configuration file, lets keep it simple\r\n", "# folks!\r\n", "\r\n", "# This variable should be set to the name of the directory which contains your\r\n", "# titles config file, your template config file and the rest of the stuff like\r\n", "# that! (ie, there's a directory called \"english/\" so we put \"english\") this\r\n", "# is the standard boring old template\r\n", "\$theme = \"", $theme, "\";\r\n", "\r\n", "# this a list of the whois extensions to use, edit them as you need them\r\n", "\@whois_exts = (\r\n"; my @use_exts; foreach $ext (@whois_exts) { if(param($ext)) { push @use_exts, $ext; } } print "\t\"", join ("\",\r\n\t\"", @use_exts), "\"\r\n", ");\r\n", "\r\n", "# should we use the global header and footer templates? (this can be over ridden\r\n", "# by a POST or GET variable)\r\n", "\$use_global_templates_by_default = ", (int $global), ";\r\n", "\r\n", "1;\r\n"; } if(!param('action')) { &show_admin_menu; } else { &get_config_file; } mwhois/mwhois.cgi0100755000175000017500000004672007615523435013101 0ustar mattmatt#!/usr/bin/perl use CGI qw/:standard/; use Socket; # MWhois - a Whois lookup script written in PHP and Perl # Copyright (C) 2000 Matt Wilson # # 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 # Template information stuff # ---------------------------- # The following strings in your templates are replaced with the description; # # [>DOMAIN<] = domain searching for # [>FULLDOMAIN<] = the full domain name searching for # [>RAWOUTPUT<] = the raw output of the whois query # [>WHOIS_SERVER<] = the whois server used # [>AVAIL_LIST<] = a list of the available domains (in global/wizard search mode) # [>UNAVAIL_LIST<] = a list of the unavailable domains (in global/wizard search mode) # [>ERROR_MSG<] = the error message produced # [>EXT<] = the extension if it is set # [>EXT_HTML_LIST<] = a list of the extensions supported in a html list # [>EXT_LIST<] = a list of extensions supported # # parameters to the script (no parameters brings up normal search script); # # show_raw=1 = wherther to show the raw output page # do_wizard=1 = whether the information being passed is for the wizard # fulldomain=(string) = the full domain to lookup (don't set domain and ext) # domain=(string) = do a search for the domain (string) # list_exts=1 = show the extensions supported page # do_global=1 = goto the global search page # do_mini_search=1 = just show the search form without anything else # company=(string) = used for the wizard, needed in order to search # keyword1=(string) = used for the wizard, needed in order to search # keyword2=(string) = used for the wizard, needed in order to search # # If any of this is unclear, see the provided example templates if(!defined $^V or $^V < v5.6.0) { # some extensions (com/net/org) have a server which contains the name of # the server which should be used for the information, this simply tells #the script to use the whois server as a source for the server info... # ;) local %whois_si_servers; # an array of the `whois' servers local %whois_servers; # default whois servers for info local %whois_info_servers; # the backup whois servers to try local %whois_info_servers_backup; # the strings that are returned if the domain is available local %whois_avail_strings; # the page titles local %whois_page_titles; # the template list local %whois_templates; # some substitution strings follow local $errormsg = ""; local $titlebar = "MWhois written by Matt Wilson"; # the defatul title bar local $rawoutput = ""; local @avail; local @unavail; local $whois_server = ""; # the script name local $script_name = "mwhois.cgi"; # extras local $domain; local $ext; local $fulldomain; # and more local $do_wizard; local $do_global; local $list_exts; local $do_mini_search; local $show_raw; local $company; local $keyword1; local $keyword2; local $use_global_templates; local $dir_split; } else { our %whois_si_servers; # an array of the `whois' servers our %whois_servers; # default whois servers for info our %whois_info_servers; # the backup whois servers to try our %whois_info_servers_backup; # the strings that are returned if the domain is available our %whois_avail_strings; # the page titles our %whois_page_titles; # the template list our %whois_templates; # some substitution strings follow our $errormsg = ""; our $titlebar = "MWhois written by Matt Wilson"; # the defatul title bar our $rawoutput = ""; our @avail; our @unavail; our $whois_server = ""; # the script name our $script_name = "mwhois.cgi"; # extras our $domain; our $ext; our $fulldomain; # and more our $do_wizard; our $do_global; our $list_exts; our $do_mini_search; our $show_raw; our $company; our $keyword1; our $keyword2; our $use_global_templates; our $dir_split; } # load the config file require "config.cgi"; print header, "\n"; # try figure out the directory seperation character if(exists $ENV{'DOCUMENT_ROOT'} and $ENV{'DOCUMENT_ROOT'} =~ m/^\//) { $dir_split = "/"; } else { $dir_split = "\\"; } &load_server_info; &load_template_names; &load_page_titles; $use_global_templates = param('use_global_templates'); if(!length $use_global_templates) { $use_global_templates = $use_global_templates_by_default; } # whether to use the global templates $domain = param('domain'); $ext = param('ext'); $fulldomain = ''; if(!$domain and !$ext and $fulldomain) { $domain = $fulldomain; $domain =~ s/\.*$//g; $ext = substr $fulldomain, index($fulldomain, '.'); } $fulldomain = param('fulldomain'); if(!$fulldomain and $domain and $ext) { $fulldomain = $domain.'.'.$ext; } # if the $domain and $ext variables aren't set but $fulldomain is then update $domain and $ext with it's contents if(!$domain and !$ext and $fulldomain) { ($domain, $ext) = split /\./, $fulldomain, 2; } $do_wizard = param('do_wizard'); $do_global = param('do_global'); $list_exts = param('list_exts'); $do_mini_search = param('do_mini_search'); $show_raw = param('show_raw'); $company = param('company'); $keyword1 = param('keyword1'); $keyword2 = param('keyword2'); if(!check_domain($domain, $ext)) { &do_error; } if($do_wizard) { &do_wiz; } if($do_global) { &do_glob; } if($list_exts) { &do_exts; } if($do_mini_search) { &do_getsearch_mini; } if(!$domain) { &do_getsearch; } if($show_raw){ if(perform_whois($domain,$ext,1) eq -1) { $errormsg = "MWhois internal error"; &do_error; } } my $ret = perform_whois($domain,$ext,0); if($ret == -1) { &do_error; } if(!$ret) { &do_taken; } else { &do_avail; } exit; sub my_in_array { my ($val, @arg) = @_; foreach (@arg) { if($val eq $_) { return 1; } } return 0; } # a test subroutine to open a connection to a server on a port and return a handler sub my_opensock { my ($host, $port) = @_; my $iaddr = inet_aton($host) or return -1; my $proto = getprotobyname('tcp') or return -1; my $sock; socket($sock, PF_INET, SOCK_STREAM, $proto) or return -1; my $sin = sockaddr_in($port, $iaddr) or return -1; connect $sock, $sin or return -1; return $sock; } # loads the page titles into a hash sub load_page_titles { # load the titles.cfg file (default) open(TITCFG, '<'.$theme.$dir_split.'titles.cfg') or print "\n"; my @title_cfg_file = ; close(TITCFG); # loop through each line of the titles.cfg file and grab what we want my $titline; foreach $titline (@title_cfg_file) { # trim each line and see if its a comment chomp $titline; $titline =~ s/(^\s+)(\s+$)//g; if($titline =~ m/^\;/g) { next; } # explode the seperate bits my @bits = split /\|/, $titline; # check to make sure there at least 2 bits if(@bits < 2) { next; } # glue the appropriate bits together my $flag = $bits[0]; my $title = $bits[1]; my $t; for($t=0; $t<@bits-2; $t++) { $title .= '|'.$bits[$t]; } # put the page title into the hash $whois_page_titles{$flag} = $title; # for the sake of debugging show whats happening print "\n"; } } # loads the page templates sub load_template_names { # load the templates.cfg file (default) open(TEMCFG, '<'.$theme.$dir_split.'templates.cfg') or &fatal_theme; my @template_cfg_file = ; close(TEMCFG); # loop through each line of the templates.cfg file and grab what we want my $temline; foreach $temline (@template_cfg_file) { # trim each line and see if its a comment chomp $temline; $temline =~ s/(^\s+)(\s+$)//g; if($temline =~ m/^\;/g) { next; } # explode the seperate bits my @bits = split /\|/, $temline; # check to make sure there at least 2 bits if(@bits < 2) { next; } # glue the appropriate bits together my $flag = $bits[0]; my $template = $bits[1]; my $t; for($t=0; $t<@bits-2; $t++) { $template .= '|'.$bits[$t]; } # put the page template into the hash $whois_templates{$flag} = $theme.$dir_split.$template; # for the sake of debugging show whats happening print "\n"; } } # this loads the server info for the extensions in $whois_exts; sub load_server_info { # load the servers.lst file if(!open(DAT,'; close(DAT); foreach (@tlds) { # get rid of any trailing whitspace and EOLs chomp; # filter out any comments or empty lines if($_ =~ m/^#/ or !length) { next; } # split the data into chunks that we want my ($tld, $ws, $as, $in, $inb, $si) = split /\|/, $_; # check whether this is one we want if(!my_in_array($tld, @whois_exts)) { next; } # yes we do, so store all the details in the appropriate hashes/array print "\n"; $whois_servers{$tld} = $ws; $whois_si_servers{$tld} = $si; $whois_info_servers{$tld} = $in; $whois_info_servers_backup{$tld} = $inb; $whois_avail_strings{$ws} = $as; # that should do :) } } # debugging purposes sub dump_server_info { print "\n"; } # if the theme could not be found (ie no templates exist!) show an error sub fatal_theme { print < MWhois could not load the specified theme ` END print $theme.$dir_split, <', check the directory exists and try again! END exit 0; } # if the servers.lst file could not be loaded then give an error sub fatal_servers_lst { print < MWhois could not locate the `servers.lst' file in the current directory! END exit 0; } # choose the info server for our query sub choose_info_server { my ($domain, $ext) = @_; my $whois_server = ''; if(length $whois_si_servers{$ext}) { my $sock = my_opensock($whois_servers{$ext}, 43); if($sock == -1) { print "\n"; $whois_server = $whois_servers{$ext}; return 1; } print "\n"; # put the data to the whois server my $offset = 0; my $buff = $domain.".".$ext."\r\n"; my $len = length($buff); while($len) { my $written = syswrite($sock,$buff,$len,$offset); $len -= $written; $offset += $written; } # retrieve the data my $output = join '', <$sock>; # retrieve the whois info server my $he = index($output, $whois_si_servers{$ext}) + length($whois_si_servers{$ext}); my $le = index($output, "\n", $he); $whois_server = substr($output, $he, $le-$he); print "\n"; } else { $whois_server = $whois_info_servers{$ext}; } $whois_server =~ s/^(\s+)|(\s+)$//g; } # make all the changes sub make_changes { my ($fil) = @_; open(DAT, '<'.$fil); my $f = join '', ; close(DAT); $f =~ s/\[>WHOIS_SERVER<\]/$whois_servers{$ext}/g; $f =~ s/\[>TITLE_BAR<\]/$titlebar/g; $f =~ s/\[>DOMAIN<\]/$domain/g; $f =~ s/\[>FULLDOMAIN<\]/$fulldomain/g; $f =~ s/\[>ERROR_MSG<\]/$errormsg/g; $f =~ s/\[>RAWOUTPUT<\]/$rawoutput/g; my $avail_s = ''; foreach (@avail) { my $spb = substr($_, index($_, ".")+1); my $spa = substr($_, 0, index($_, ".")); $avail_s .= ''.$_.'
'; } my $unavail_s = ''; foreach (@unavail) { my $spb = substr($_, index($_, ".")+1); my $spa = substr($_, 0, index($_, ".")); $unavail_s .= ''.$_.'
'; } $f =~ s/\[>SCRIPT_NAME<\]/$script_name/g; $f =~ s/\[>AVAIL_LIST<\]/$avail_s/g; $f =~ s/\[>UNAVAIL_LIST<\]/$unavail_s/g; $f =~ s/\[>EXT<\]/$ext/g; my $wel = join '
', @whois_exts; $f =~ s/\[>EXT_LIST<\]/$wel/g; my $sel = ''; $f =~ s/\[>EXT_HTML_LIST<\]/$sel/g; return $f; } # show the error page sub do_error { $titlebar = $whois_page_titles{'error'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } print make_changes($whois_templates{'error'}); if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } # checks the domain is legal sub check_domain { if($ext ne "" and $do_global != 1 and $do_wizard != 1){ #if(!length $ext){ # $errormsg = "No top level domain selected"; # return 0; #} if(!my_in_array($ext, @whois_exts)){ $errormsg = "Top level domain not supported"; return 0; } } if($domain ne ""){ my $ldomain = length $domain; if($ldomain < 2 or $ldomain > 57){ $errormsg = "Domain name too long/short"; return 0; } if($ldomain eq 2 and $domain !~ m/([0-9]){2}/gs){ $errormsg = "Domain name cannot contain any letters or hyphens in 2 character domain names"; return 0; } if($domain =~ m/(^\-)|(\-$)/gs){ $errormsg = "Domain names cannot begin or end in a hyphen or contain double hyphens"; return 0; } if($domain !~ m/^([a-z]|[A-Z]|[0-9]|\-)+$/gs){ $errormsg = "Domain names must only contain alphanumerical characters and hyphens"; return 0; } } $errormsg = ""; return 1; } # perform_whois function returns 1 if domain is available otherwise returns either the raw info or 0 sub perform_whois { my ($domainname, $ext, $raw) = @_; print "\n"; my $rawoutput = ""; if($raw eq 1) { return do_raw($domainname,$ext); } my $sock = my_opensock($whois_servers{$ext}, 43); if($sock == -1) { $errormsg = "Cannot connect to ".$whois_servers{$ext}.""; return -1; } print "\n"; my $offset = 0; my $buff = $domainname.".".$ext."\r\n"; my $len = length($buff); while($len) { my $written = syswrite($sock,$buff,$len,$offset); $len -= $written; $offset += $written; } $rawoutput = join "", <$sock>; close $sock; my $as = $whois_avail_strings{$whois_servers{$ext}}; # if(!length($rawoutput) or $rawoutput =~ m/$as/gxm) { return 1; } if(!length($rawoutput) or index($rawoutput, $as) != -1) { return 1; } return 0; } # this performs the whois lookup and then shows the data returned sub do_raw { my ($domainname, $ext) = @_; choose_info_server($domainname, $ext); my $sock; if(($sock = my_opensock($whois_server, 43)) == -1) { if(($sock = my_opensock($whois_info_servers{$ext}, 43)) == -1) { if(($sock = my_opensock($whois_info_servers_backup{$ext}, 43)) == -1) { return -1; } else { $whois_server = $whois_info_servers_backup{$ext}; } } else { $whois_server = $whois_info_servers{$ext}; } } print "\n"; my $offset = 0; my $buff = $domain.".".$ext."\r\n"; my $len = length($buff); while($len) { my $written = syswrite($sock,$buff,$len,$offset); $len -= $written; $offset += $written; } $rawoutput = join "", <$sock>; close $sock; my $titlebar = $whois_page_titles{'raw'}; if($use_global_templates){ print make_changes($whois_templates{'header'}); } print make_changes($whois_templates{'raw'}); if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } sub do_getsearch_mini { print make_changes($whois_templates{'searchmini'}); exit 0; } sub do_getsearch { $titlebar = $whois_page_titles{'search'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } print make_changes($whois_templates{'search'}); if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } sub do_avail { $titlebar = $whois_page_titles{'avail'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } print make_changes($whois_templates{'avail'}); if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } sub do_taken { $titlebar = $whois_page_titles{'taken'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } print make_changes($whois_templates{'taken'}); if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } sub do_exts { $titlebar = $whois_page_titles{'exts'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } print make_changes($whois_templates{'extlist'}); if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } sub do_glob { $titlebar = $whois_page_titles{'global'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } if(!$domain){ print make_changes($whois_templates{'global'}); } else{ foreach (@whois_exts) { my $r; if(($r = perform_whois($domain,$_,0)) != -1){ print "\n"; if($r eq 0) { print "\n"; push @unavail, $domain.".".$_; } else { push @avail, $domain.".".$_; } } } print make_changes($whois_templates{'globalres'}); } if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } sub do_wiz { $titlebar = $whois_page_titles{'wiz'}; if($use_global_templates) { print make_changes($whois_templates{'header'}); } if(!length $company && !length $keyword1 && !length $keyword2){ print make_changes($whois_templates{'wizard'}); } else { # trim the white space from either side of each variable $company =~ s/(^\s+)|(\s+$)//g; $keyword1 =~ s/(^\s+)|(\s+$)//g; $keyword2 =~ s/(^\s+)|(\s+$)//g; my @domains = ( $company, $company.$keyword1, $company."-".$keyword1, $keyword1.$company, $keyword1."-".$company, $company.$keyword2, $company."-".$keyword2, $keyword2.$company, $keyword2."-".$company, $keyword1, $keyword2, $keyword1.$keyword2, $keyword2.$keyword1, $keyword1."-".$keyword2, $keyword2."-".$keyword1 ); # an array of "checked" domains my @done_domains; foreach (@domains) { $domain = lc; if(my_in_array($domain.'.'.$ext, @done_domains)) { next; } push @done_domains, $domain.'.'.$ext; if(check_domain($domain, $ext) and length($domain) gt 0){ my $r; if(($r = perform_whois($domain, $ext, 0)) != -1){ if($r eq 0) { push @unavail, $domain.".".$ext; } else { push @avail, $domain.".".$ext; } } } } print make_changes($whois_templates{'wizres'}); } if($use_global_templates) { print make_changes($whois_templates{'footer'}); } exit 0; } mwhois/README0100600000175000017500000002262107522062504011736 0ustar mattmattMatt's Whois (C) Matt Wilson 2001 ================================= Introduction =----------- Matt's Whois (MWhois) is a free whois lookup script licensed under the GNU Public License (GPL - see COPYING for more details) written for both PHP and Perl to make sure that almost anyone can use it on their site. The script uses a template system so it can integrate easily with existing web pages and sites. Contents =------- This document is split into various sections, they are; 1. Getting started 2. Simple configuration 3. Custom configuration 4. Additional templates 5. Customising templates 6. Updated servers.lst files 7. Credits and contact 1. Getting started =----------------- The first thing that you need to do in order to use this script is to download it, but as you are reading this document i'm guessing that you've already downloaded it, I can also assume that you have succesfully extracted the files from within the mwhois archive. The next thing to do in order to make sure that the script works on your site is to upload the files that you have got onto the web server, most people will use an FTP client to do this and i'm not here to teach you how to do that, so thats upto you to discover (if you don't already know how to do it). Upload all the files in this archive onto your webserver into a directory (mwhois/ would be a good choice I feel) that is accessible via the internet (ie https://mydomainname/mwhois/). If you are using the Perl version of this script and your website is hosted on a Unix webserver then you need to change the file mode/permissions to 0755 (CHMOD or Change file mode) in order for the script to execute, you may also wish to perform this operation for the mwhois_admin.cgi file. For the Perl version to function correctly you may also need to set the "$base_directory" variable at the top of the script to the same directory in which you have place the other Matt's Whois files (the themes and config.cgi), otherwise Matt's Whois will not be able to locate them. The PHP version should not require this alteration. By now visiting the script in a browser (https://mydomainname/mwhois/mwhois.cgi for Perl users and https://mydomainname/mwhois/mwhois.php for PHP users) you should be presented with the default template's search screen. If this does not happen you can check the file permissions etc and then if all else fails you may e-mail me for assitance at matt@mattsscripts.co.uk. 2. Simple configuration =---------------------- Basic configuration of the script can be achieved via the MWhois admin script, if you are using the Perl version then this script is called mwhois_admin.cgi, if you are using the PHP version then this script is called mwhois_admin.php. Whichever version of the script you are using the admin script is located in the same directory as the main script (mwhois.php or mwhois.cgi) and should be accessed in the same way. Once the page loads you can follow the instructions and easily configure the script using the form provided. By using the first drop down menu you can select which template you would like to use with the script (see section 4. Additional templates and section 5. Customising templates for more information on templates). Secondly is the option of whether or not to use the global header and footer templates, when turned on they appear at the beginning and end of every page the script handles. Finally and most importantly the script displays a list of all the top level domains supported by the version of the servers.lst file you have installed (see 6. Updated servers.lst files), simply check the box next to each top level domain you would like to use and the script will be configured for use with it. When all this is done click the "Get config file" button located at the bottom of the page and you will prompted to download a file, download the file and save it as either "config.cgi" for the Perl version of the script, or "config.php" for the PHP version of the script. The final step in configuring MWhois is to upload this downloaded file onto the webserver in the same directory as the main script (either mwhois.cgi for the Perl version of mwhois.php for the PHP version), the file will already exist so you may be asked whether or not to overwrite the file on the server, you should overwrite the file on the server with the local file. 3. Custom configuration =---------------------- Custom configuration involves manually editing the config.cgi or config.php and changing the values that are present to one's more suiting to your needs. This is a generally easy process but can cause problems with the script's execution if performed incorrectly and so I am going to suggest that only more advanced users should perform this step. At present there are not very many options that could be changed, either manually or with the administration script and the only option I would imagine people would want to change manually is the order in which the Top Level Domains appear in the drop down menu on the search page. This is merely set using an array within the config file and is easily altered providing you know how to alter it. If anything goes desperately wrong you can use the admin script and produce another config file or simply reupload an existing file. 4. Additional templates =---------------------- Additional templates are available for download from the Matt's Whois script main page, as of writing the only templates that are available are the default templates for English and German. To use one of the extra templates all you need to do is to download the archive containing the template, extract it into a temporary directory on your computer and then to upload all the extracted file into a sub-directory (english/ for the default English template and deutsch/ for the default German template) within the main MWhois directory (ie you will have /mwhois/english/ or /mwhois/deutsch/ with all the files within these directories). After you have done this you can either use the admin script to generate a config file as the admin script will automatically recognise the newly installed templates provided that they have been installed correctly, or you can manually edit the config file to use the new template. 5. Customising templates =----------------------- The template's config files (templates.cfg and titles.cfg) are plain text files which contain information for the usage of the template, within the templates.cfg are a list of "flags" corresponding to various pages of the script , along with each of these there is a filename which should be loaded as that page's template. The titles.cfg file is very similar although it contains what the title should be for each page. While these files can be changed to accomodate new file names and page titles, I would recommend that they are left with there current values. The main part with customising templates are the template files themselves (*.tml) which contain plain HTML with a few inserted extras that are used by the main script to decide where to place information obtained during the process such as RAW whois data etc. A list of these and what the script uses them for are shown below; [>DOMAIN<] -> The domain name specified to search for. [>EXT<] -> The top level domain of the name to search for. [>RAWOUTPUT<] -> The raw output from the whois server. [>WHOIS_SERVER<] -> The host name of the whois server used for this query. [>AVAIL_LIST<] -> A list of the available domains obtained from a global search or wizard search. [>UNAVAIL_LIST<] -> Same as [>AVAIL_LIST<] except this is a list of the domains that are unavailable. [>ERROR_MSG<] -> When an error occurs the script (by default) shows error.tml as the main template file and replaces this with the error message produced by the script. [>EXT_HTML_LIST<] -> A
", ".".$whois_exts[$l], ""; if($whois_exts[$l+1]) { print ".",$whois_exts[$l+1]; } else { print " "; } print ""; if($whois_exts[$l+2]) { print ".",$whois_exts[$l+2]; } else { print " "; } print "