About site: Software/Freeware/Internet - Dnsupdate
Return to Computers
  About site: http://dnsupdate.sourceforge.net/

Title: Software/Freeware/Internet - Dnsupdate Create DNS tables from hosts file and configuration file. Also add/delete hosts, aliases, nameservers, forward and reverse zones. Hosts and aliases added using dynamic update.
DownloadPlus! Windows download manager and accelerator, which improve the downloading speed using file segmentation. Provides HTTP and FTP supports (even through proxies). Has a built-in "Online-Zip viewer" that al

DownloadsLister A utility that keeps track of downloaded files.

DuTraffic A dial-up that records statistics and automates starting and closing applications depending on a status of connection. [Win32]

EarthNavigator_com 3D interactive globe which floats on the desktop and has visual links to websites around the world. [Windows]

EldoS_TimelyWeb Monitors FTP and WWW resources and gives notices of updates.

Elgorithms Developers of Chaos Wallpaper, an RSS aggregator that allows the Windows wallpaper to display RSS and Atom news links.


  Alexa statistic for http://dnsupdate.sourceforge.net/





Get your Google PageRank






Please visit: http://dnsupdate.sourceforge.net/


  Related sites for http://dnsupdate.sourceforge.net/
    eXpress_IP_Locator_utility A small Windows GUI utility for offline retrieving the country information for IP-address or hostname, viewing IP-address blocks allocated for specified countries and seeking the country by code or co
    Fake_FTP_Watcher A powerful utility for downloading over satellite DVB cards like SkyStar (B2C2).
    FileChecker Notifies the user if important system files are being tampered .
    Free_Auction_Submit_Software For submitting inventory to online auctions and for tracking inventory. Supports Ebay and Amazon.com.
    Free_Day_Trading Stock quote retriever and HTML calendar generator.
    Free_NetMeeting_Proxy_for_Linux Source code for a proxy for NetMeeting that allows calls in both directions through a masquerading or address translating firewall.
    Free_Search_Software PLS's search engine and products, accompanied by complete documentation, are available for download from this website.
    FREEping A tool to ping windows 2003 and 2000 servers. Includes multiple ping address with alarm actions.
    Fresh_Download Download manager with multiple connections/split file, pause/resume broken download, and integration with Internet Explorer.
    FTP_Web_Projects_Publisher Monitors changes to a local web site's folders and files and flags them ready for upload in one click.
    Ftrace GUI and command line replacement for Windows tracert. Works faster then standard tracert and provides UDP support on Win2k/XP to bypass routers that filter ICMP.
    GG_Relaying_Agent A simple Gadu-Gadu relaying agent.
    Glooton_Meta_Searcher An adware meta searcher compatible with Macintosh and Windows. It is an application which makes possible any search on Internet using the sites and search engines existing on the web. Glooton uses th
    Google_sitemap_generator Generates the Google SiteMaps XML needed in order to provide information about a site to Google.
    Go!Zilla Recover from download errors and resume failed downloads, manage and categorize files to download later and get those files from the most responsive site with Go!Zilla.
    Happles_Free_Software Software for telnet, timers and encryption.
    HREFParser A program that can extract the links from an HTML file.
    Image_Explorer Scans the internet for images and automatically downloads it directly to your computer. [Win32]
    InetBench Internet benchmark program measures exactly how fast your internet connection really is by downloading the website you specify.
    IP-Country A program that can analyze IP lists offline and determine which country each IP belongs to.
    Javascript_Website_Manager Web design and management for Linux and Windows 95. 200K Javascript source. Global edits, uploading changed files across subdirectories.
    JOC_Web_Finder Web search tool, conducts multiple search-engine searches.
    JSig Signature image creation software. For online forums and message boards or anywhere where the image posting is possible.
    Kgareth_com Msn 6 Picture Viewer, which allows users to view or save buddies display pictures, and Tweaker which adds some special effects to MSN Messenger screen names.
    KickAgent Software that resumes aborted message retrievals in Forté's News Agent.
    KidKey_NG Allows parents to control the an exact time of monthly connection to the Internet of up to 10 users.
    Kill_The_Popup A popup blocker, cookies filter and ads filter that works with multiple web browsers.
    LookOut! Automatic web image downloader to retrieve automatic downloads of favorite images. Displays images found on the Internet as a slide show, screen saver or desktop wallpaper. Requires Microsoft Internet
    LookWAYup A dictionary and search tool designed to be embedded into web pages.
    The_Lost_Empire OFfers scanners, mailers, bots, and port watchers.
    Luke\'s_Website Free utilities programmed by the site owner, along with links to other valuable programs.
    Maileet A powerful and secure file transfer tool designed to be used behind strict firewalls. [Windows NT, 2K. XP+]
    MarmotSearch_Home Automatically surfs your URLs to desired depth and ranks found pages based on your keywords
    Maz-e_Productions Offers Microspy, a stealth remote administration tool.
    Metagenerator Program which checks the meta tag author, keywords, description, Identifier-URL, copyright, robots, and the title in your HTML files. Use it to modify, create or duplicate the meta tag on one or more
    Middleman_filtering_proxy A HTTP/1.1 proxy server with features designed to increase privacy and remove unwanted content.
    Mihov_Picture_Downloader A special download manager that is designed specially for downloading images in batch mode. [Win32]
    Mozilla_Cleaner A utility to clean the internet history, E-Mail, and MS Windows most recently used items. [Requires .NET Runtime]
    Net_Send_Lite Send network messages instantly. Its a wrapper around Microsoft's net send command line utility. It resolves the senders username within the sent message.
    NetAnts Maximizes throughput by making multiple connections. [Win32]
This is now2007.com cache of m/ as retrieved on 2009.01.07 now2007.com's cache is the snapshot that we took of the page as we crawled the web. The page may have changed since that time.
dnsupdate dnsupdate Powered By     Revision History   Description Name Date (mm/dd/yyyy) Comments Created Gopakumar H. Pillai 05/01/2001 Original – first draft                                   Project Home page: http://www.sourceforge.net/projects/dnsupdate   You could help me find another job, click on my name for more details.   Table of Contents 1     Preface.. 3 2     Introduction.. 3 3     Requirements.. 3 4     Design.. 3 4.1     Dynamic Update. 4 4.2     dnsupdate. 4 5     Compilation.. 5 5.1     libnsupdate.a. 5 6     Implementation.. 5 6.1     Source Structure. 5 6.2     nsupdate. 6 6.3     dnsupdate. 6 6.4     dnsupdate.cfg. 6 6.5     Usage. 7 7     Known Issues.. 8 8     Special Notes.. 8 9     Appendix A: Default Values.. 8 10   Appendix B: Timing comparison with h2n.. 9 11   Appendix C: dnsupdate.cfg - Configuration File.. 9 12   Appendix D: Definitions, acronyms & abbreviations.. 11 13   Reference.. 11  

1       Preface

I, Gopakumar H. Pillai (Gopu), am dedicating the software dnsupdate to my country, INDIA. This project was entirely created from my home on my own time.   In search for a program that would help me create and maintain the DNS databases, my efforts were in vain. The nearest ones I could find were written in perl. The last thing I wanted to do from my program was to do a "system" call. I started playing with BIND 8.2.2 P7 and converted the nsupdate program to a function. That actually made me write the rest of the program.   My benchmark program was the famous h2n perl script. dnsupdate seems to be much faster than h2n. I have given a timing comparison table between dnsupdate and h2n in Appendix B.   With my highly limited knowledge about DNS or its configuration files (DNS tables or DNS databases) I am requesting users of this program to pinpoint any errors or suggestions to make dnsupdate a better one.  

2       Introduction

BIND is the most widely used implementation of DNS. For an explanation of the abbreviations, please check Appendix D. The configuration and data files to BIND named have a very complex format.   The objective was to create software that can be used with ease without knowing the format of  the DNS tables. Also write it in a language other than scripts so that one can make use of it by calling a function instead of executing an external program (bad for security reasons). This also should make it faster than a script doing the same thing. In short the objective was to create and maintain the DNS tables (database) in an easy, fast and efficient manner.   All said one can't get away without knowing anything about the concepts of DNS and still get it to work.  

3       Requirements

The basic requirement of dnsupdate is that it should be able to create all DNS tables from a hosts file and a configuration file and should be able to maintain it. After creating if any changes are made to the tables through dnsupdate, a future recreation of the tables should reflect it.  

4       Design

Looking at single entry addition/deletion to the DNS tables, dnsupdate should be using the Dynamic update feature of BIND 8 or higher as much as possible. Since dynamic update happens over a UDP connection, it is slow to be used for recreation of the DNS databases (tables). Recreation could be made much faster by carefully writing directly to the files. Figure 3.1.1 illustrates the overall design of dnsupdate. Figure 3.1.1  

4.1    Dynamic Update

dnsupdate program should use the dynamic update feature of BIND (version 8 or higher). A request could be sent to the DNS server (named) for adding or deleting a host or alias. The server would update its memory and at particular intervals, it would update the DNS databases. Adding/deleting a name server could also be done dynamically, but BIND 8 has some limitations. Future releases supporting BIND 9 or higher should have it that way.

4.2    dnsupdate

dnsupdate should use a configuration file, so that, with the information from the configuration file and the hosts file provided, it should be able to recreate the DNS databases. A request for certain single entry updations should also be added to the configuration file so that it could be used for the next recreation of the entire databases.   Only one copy of the program should be running on the system at any given instance. This can avoid any problems with synchronization, thus save the databases from getting corrupted.  

5       Compilation

dnsupdate is written so that it can be used in any system running a DNS server (BIND version 8 or above). It can be compiled in Solaris 8 and FreeBSD 4.2. I am sure it can be compiled in a variety of operating systems with the minimal change.   Use make utility to compile the software. Here are the different commands one can use to compile dnsupdate: *   "make clean" would clean all the object files and executables. *   "make" or "make all" would compile the related libraries and source for dnsupdate. *   "make nsupdatelib" would compile nsupdate.c and create libnsupdate.a. *   "make nsupdtest" would compile nsupdate.c and create nsupdtest executable to test the nsupdate functio. *   "make Dprintf" would create the library libDprintf.a. *   "make dnsupdate" would compile dnsupdate sources and give out dnsupdate executable. If you have already compiled libraries, this might be the command you would want to use.   There are SYSTYPE lines in the Makefile. Ensure that the line containing the operating system you use should come as the last line in that bunch. For example, SYSTYPE = freebsd line appearing as the last line that section would give compilation errors if compiled on a Solaris system.  

5.1    libnsupdate.a

To create libnsupdate.a one needs to have the compiled code for BIND 8.2.2 P7. In the Makefile, specify the BINDDIR as the directory containing the compiled BIND code. If it is difficult for you to compile BIND, I have provided the libraries for Solaris 8 and FreeBSD 4.2 with the Release 1.0. libnsupdate.a need libbind.a and libbind_r.a to link without errors.  

6       Implementation

dnsupdate has two different modes - create mode and update mode. In create mode, it creates the DNS databases from a hosts file and the configuration file. Create mode can be invoked with the -f option. In update mode it adds or deletes individual entries. In update mode, it doesn't necessarily need the configuration file, unless one wants to override the default values.   The default configuration file is /etc/dnsupdate.cfg. One can use an alternate configuration file with the -c option. Default values for all parameters in dnsupdate are specified in Appendix A.

6.1    Source Structure

Table 4.1.1 describes the source files. All functions would have a brief explanation about what it does, above their definitions in their source files.   File Name Description dnsupdate.c Main source file which parses the user parameters, checks for another copy etc.. dnsupdate.h Main header file which has all dnsupdate related defines and declarations. config.c Contains functions to manipulate or read the configuration file. config.h Configuration related defines and declarations. processcmd.c The brain of dnsupdate. This file has all functions, which does the real work. util.c Utility functions. These are mostly used by functions in processcmd.c nsupdate.c This file contains the nsupdate function, copied from BIND source. This file has been edited and formatted. dnsupdate.cfg The configuration file to dnsupdate. Table 3.1.1   Logging is done using the static library named libDprintf.a. The library is a result of two files that are described in Table 4.1.2   File Name Description Dprintf.c Source file for the logging interface. Dprintf.h Header file for the logging interface. Table 4.1.2  

6.2    nsupdate

The key portion of dnsupdate is the dynamic update to the name server. BIND 8 and above supports dynamic update. I have used nsupdate.c from the BIND distribution  (BIND 8.2.2 P7) and created a nsupdate function. The nsupdate function can be used to update a single line of command or to update from a file specified. Usage:             nsupdate( cmd, flag);               flag -   if TRUE (other than 0) cmd should be a filename with the update strings                         else cmd should be a single string  (with or without trailing newline). If TEST_UPDATE is defined, nsupdate can be tested as a standalone program.

6.3    dnsupdate

dnsupdate, when executed, checks for another copy of itself running. This checking is done using a semaphore with the key 492743 (0x784c7). If another copy is found, in create mode (-f option), dnsupdate would wait until other program exits. In update mode it would exit immediately, but can be made to wait with the -w option.   Then it reads the configuration file and checks whether named is running or not. In case of a failure the program exits immediately.   In create mode, updates are written to the DNS databases directly. In update mode, adding/deleting hosts and aliases (CNAME) are done using dynamic update. Rest all is directly written to databases.   All direct writings are done on temporary files in the same directory as the file being worked on. Then the temporary file is moved to the original file.   In create mode, dnsupdate restarts named, since the dynamic update cannot be triggered on with a HUP signal. But in update mode a HUP signal is sent to named after updating the databases, so that, named can re-read the DNS tables. If the update is only for a host or alias no signals are sent to named.   In create mode, dnsupdate creates /etc/resolv.conf file too. It overwrites the existing /etc/resolv.conf file.   In update mode, dnsupdate adds the requested information to the configuration file so that it can be used for the next run with -f option. It adds or deletes the NETWORK, NAMESERVER and ALIAS lines dynamically.

6.4    dnsupdate.cfg

/etc/dnsupdate.cfg is the default configuration file used by dnsupdate. It could be overridden with the -c option. Appendix C displays a copy of the configuration file. Here is an explanation of all fields that can be found in the cfg file:   Key Description DOMAIN The domain name. If not specified it would read from /etc/defaultdomain file. DNSDIR Directory where DNS databases reside. Default is /var/named in case of Solaris and /etc/namedb for FreeBSD. NAMEDCONF Full path name of named.conf file. If not specified DNSDIR/named.conf would be used. LOGFILE Full path name of the log file. Default is /tmp/dnsupdate.log. LOGLEVEL Log level. 0 = None. 1 = Minimum. 9 = Maximum. NETWORK Network addresses. Format is NetworkAddress:Netmask. e.g. 166.117.12:255.255.255.0 NAMESERVER Additional name servers. Format is NameServerHostName:NameServerIPAddress. e.g. ns1.gopu.com:192.168.0.1 CONTACT Contact address to be added to the DNS databases. Default is root.DOMAIN, where DOMAIN is the domain name. NAMEDPID Full path of the named PID file. Default is /etc/named.pid in case of Solaris and /var/run/named.pid in case of FreeBSD. NAMEDEXE Full path of the named executable. Default is /usr/sbin/named in case of FreeBSD and /usr/sbin/in.named in case of Solaris. HOSTSFILE Hosts file to create the DNS databases from. Default is /etc/hosts ALIAS Alias name for an existing host. Fomat is AliasName:HostName. e.g. www:gopu.com   *   Comment lines start with a # character. *   Blank lines are ignored. *   File follows a format of KEY=VALUE *   There should not be any spaces before or after the = sign. *   NETWORK, NAMESERVER and ALIAS key-value pairs are updated dynamically by dnsupdate.  

6.5    Usage

dnsupdate <-a|-d> -n HostName -i IPAddress dnsupdate <-a|-d> -z ForwardZone dnsupdate <-a|-d> -r ReverseZone(NetworkAddress) -mNetMask dnsupdate <-a|-d> -s NameServer -i IPAddressOfServer dnsupdate <-a|-d> -p AliasName(CNAME) -n HostName dnsupdate -f dnsupdate -h Additional options:             [-c ConfigFile] [-w] Defaults:             Config File: /usr/hb/cfg/dnsupdate.cfg             DNS Directory: /var/named             Log File: /usr/hb/log/dnsupdate.log Example: dnsupdate -h             displays this help screen dnsupdate -a -n foo -i 192.168.0.1             Add the host specified to the DNS table. dnsupdate -d -i 192.168.0.1 -n foo -w             Delete the host specified from the DNS table.             But wait until any running dnsupdate exits instead of             quitting immediately. dnsupdate -a -z gopu.com             Add the forward lookup zone, gopu.com. dnsupdate -a -r 192.168.5 -m 255.255.255.0             Add the reverse zone 5.168.192.in-addr.arpa dnsupdate -a -s ns1.gopu.com -i 192.168.0.1             Add the name server ns1.gopu.com dnsupdate -a -p www.gopu.com -n gopu.com             Add the alias name (CNAME) www.gopu.com for gopu.com dnsupdate -f             Recreate the whole DNS database from the hosts file             and the default configuration file. Note:             1. DO NOT specify network address for a reverse lookup                in reverse order.             2. If specified -f option the program waits for any running                dnsupdate to exit. Without the -f option the program would exit                saying "Another copy running". This can be overridden with                with the -w option, which will force the program to wait  

7       Known Issues

*   Does not roll back the DNS databases to its previous good state in case of a failure. As a work around, a script can do this work. If dnsupdate returns a non-zero value, then the database needs to be restored. *   dnsupdate can support only one domain. *   Normally named expects the named.conf file to be in /etc. But FreeBSD creates a symbolic link from /etc/named.conf to /etc/namedb/named.conf. So it solves the problem. Solaris does not. One has to do it manually or copy the file from /var/named each time it is modified. *   dnsupdate, in update mode, does not add host details to the configuration file. So the hosts information should be maintained external to dnsupdate or a script could create a hosts file from the DNS databases.  

8       Special Notes

*   For the first time one needs to run dnsupdate -f so that things are in place for a dynamic update. *   To force writing the updated information, one can send the TERM signal to named. Don't forget to restart named after that. *   To compile dnsupdate, one should get the source code for BIND 8.2.2 P7 and compile it first. Then edit the Makefile to specify the BIND dir. Alternatively, use the already compiled libraries found on the project home page. *   Ideally Name servers could have been added dynamically. BIND 8 has some restrictions, so it adds/deletes only the first nameserver. But BIND 9 seems to support adding name servers dynamically. Currently dnsupdate directly write to the DNS database and later versions supporting BIND 9 can do it dynamically. *   In nsupdate.c some variables have been moved to global variable section, since stack based arrays were failing. *   While processing the hosts file with -f option, dnsupdate processes alias names (names from the third column in the hosts file) too and treats them as though they are valid host names. So an MX record is also added for each entry. Probably it would have been right to consider them as aliases.

9       Appendix A: Default Values

KEY/Description FreeBSD Solaris Configuration File /etc/dnsupdate.cfg /etc/dnsupdate.cfg DOMAIN contents of /etc/defaultdomain contents of /etc/defaultdomain DNSDIR /etc/namedb /var/named NAMEDCONF $DNSDIR/named.conf $DNSDIR/named.conf LOGFILE /tmp/dnsupdate.log /tmp/dnsupdate.log LOGLEVEL MAX (9) MAX (9) CONTACT root.$DOMAIN root.$DOMAIN NAMEDPID /var/run/named.pid /etc/named.pid NAMEDEXE /usr/sbin/named /usr/sbin/in.named HOSTSFILE /etc/hosts /etc/hosts Semaphore Key 492743 (0x784c7) 492743 (0x784c7)  

10        Appendix B: Timing comparison with h2n

Number of hosts dnsupdate -f h2n 100 0.132s 0.113s 1,000 0.300s 0.439s 5,000 0.862s 2.244s 10,000 1.626s 6.552s 50,000 7.807s 4m20.457s   Benchmark was done on a Sun Sparc system running Solaris 8, Perl 5.005_3 and h2n 1.29.

11        Appendix C: dnsupdate.cfg - Configuration File

# Configuration file for dnsupdate # This is a comment, blank lines are ok.   # Your domain name. Only 1 DOMAIN line is allowed. If not specified # /etc/defaultdomain would be read. #DOMAIN=gopu.com   # named.conf file to be used. This is a must. Only one line is allowed. # If not specified /var/named/named.conf would be used in case of Solaris # systems or /etc/namedb/named.conf would be used in case of FreeBSD. #NAMEDCONF=/var/named/named.conf   # DNS Directory. If not specified /var/named would be used in Solaris. # /etc/namedb in FreeBSD. Only one such line is permitted. #DNSDIR=/var/named   # Log file. If not specified /tmp/dnsupdate.log would be used. Only # one line is allowed. #LOGFILE=/users/gopu/dnsupdate/dnsupdate.log   # Log Level - NONE=0, MIN=1, MED=5, MAX=9. If not specified # MED=5 would be used. Only one such line is allowed. LOGLEVEL=9   # named.pid file. If not specified /var/run/named.pid would be used # in FreeBSD systems and /etc/named.pid would be used in Solaris. # Only one such line is permitted. #NAMEDPID=/etc/named.pid   # named executable path. This is used to restart named. # If not specified /usr/sbin/named would be used in FreeBSD systems and # /usr/sbin/in.named would be used in Solaris systems. # named restarts are done with -f option, to enable the dynamic # update NAMEDEXE=/usr/sbin/in.named   # Hosts file to read for -f option. If not specified, /etc/hosts file # would be used. Only one such line is allowed. HOSTSFILE=/tmp/hosts   # NETWORK : Network without the trailing zeros. # Format NET:SUBNETMASK # More than one line is allowed. # These entries are dynamically updated by dnsupdate, hence would # be moved to the bottom of the file. NETWORK=192.168.2:255.255.255.0 NETWORK=10.1:255.255.0.0   # ALIAS - Alias for an existing host. Also known as CNAME record. # Format: ALIASNAME:HOSTNAME # Multiple lines are allowed. # These entries are dynamically updated by dnsupdate, hence would # be moved to the bottom of the file. ALIAS=www:gopu.com   # NAMESERVER - Name server in each domain's NS records. No expansion # of names would be done if a trailing dot is present. A colon separated # IP address must be provided for each server. # Format: HOSTNAME:IPADDRESS # More than one line is allowed. # These entries are dynamically updated by dnsupdate, hence would # be moved to the bottom of the file. NAMESERVER=ns1.gopu.com.:192.168.0.1 NAMESERVER=ns2:10.1.0.2   # CONTACT - Name or email address of the contact person in the SOA # mail address. Default is root.DOMAIN. Only one line is allowed. # If not specified, root.$DOMAIN would be used. #CONTACT=root.gopu.com      

12         Appendix D: Definitions, acronyms & abbreviations

DNS Domain Name Service. The service which provides the IP address of a host given its name and vice-versa. Name Server DNS. BIND Berkeley Internet Name Domain. This is an implementation of DNS, a public domain software, which is used by almost all of the domain name servers around the world. hosts file /etc/hosts file. It contains the names of hosts and their IP addresses. h2n a public domain perl script which can be used to create the DNS databases (tables) from a hosts file. named DNS server executable in.named In solaris the name server is named in.named. IP Internet Protocol. The whole Internet communicates using this network protocol. UDP Unified Datagram Protocol. A connectionless protocol built over IP. TCP/IP Trasmission Control Protocol / Internet Protocol. The most common protocol used on the Internet. IP Address The addressing scheme used by systems on the Internet to communicate each other. It is of the form n.n.n.n where n could range from 0 to 255 (certain restrictions apply). /etc/resolv.conf The file which tells the system where the DNS is, so that a name like dnsupdate.sourceforge.net could be translated to its IP address.    

13        Reference

Description Author Publication ISBN http://sourceforge.net/projects/dnsupdate Project Home Page with downloads     http://dnsupdate.sourceforge.net Project Web Page     http://www.dns.net/dnsrd DNS Resources Directory     DNS and BIND, 3rd edition Paul Albitz, Cricket Liu, Mike Loukides O'REILLY 1-56592-512-2    
 

Create

DNS

tables

from

hosts

file

and

configuration

file.

Also

add/delete

hosts,

aliases,

nameservers,

forward

and

reverse

zones.

Hosts

and

aliases

added

using

dynamic

update.

http://dnsupdate.sourceforge.net/

Dnsupdate 2009 January

dvd rental

dvd


Create DNS tables from hosts file and configuration file. Also add/delete hosts, aliases, nameservers, forward and reverse zones. Hosts and aliases added using dynamic update.

Rules




© 2005 Internet Explorer 5+ or Netscape 6+

Recommended Sites: 1. Arts - Business - Computers - Games - Health - Home - Kids and Teens - News - Recreation - Reference - Regional - Science - Shopping - Society - Sports - World Miss Gallery - Top Anime Hentai - DVD rental by mail - Credit Card - Secured Loans - Bankruptcy - Remortgages - Debt Consolidation
2009-01-07 17:07:02

Copyright 2005, 2006 by Webmaster
Websites is cool :)