README for Unbound on Windows.

(C) 2009, W.C.A. Wijngaards, NLnet Labs.

See LICENSE for the license text file.


+++ Introduction

Unbound is a recursive DNS server.  It does caching, full recursion, stub
recursion, DNSSEC validation, NSEC3, IPv6.  More information can be found 
at the http://unbound.net site.  Unbound has been built and tested on 
Windows XP, Vista and 7.

At http://unbound.net/documentation is an install and configuration manual
for windows.

email: unbound-bugs@nlnetlabs.nl


+++ How to use it

In ControlPanels\SystemTasks\Services you can start/stop the daemon.
In ControlPanels\SystemTasks\Logbooks you can see log entries (unless you
configured unbound to log to file).

By default the daemon provides service only to localhost.  See the manual
on how to change that (you need to edit the config file).

To change options, edit the service.conf file.  The example.conf file 
contains information on the various configuration options.  The config
file is the same as on Unix.  The options log-time-ascii, chroot, username
and pidfile are not supported on windows.


+++ How to compile

Unbound is open source under the BSD license.  You can compile it yourself.

1. Install MinGW and MSYS.  http://www.mingw.org
This is a free, open source, compiler and build environment.
Note, if your username contains a space, create a directory
C:\msys\...\home\user to work in (click on MSYS; type: mkdir /home/user ).

2. Install openssl, or compile it yourself.  http://www.openssl.org
Ldns and unbound need the header files and libraries.  Static linking makes
things easier.  This is an open source library for cryptographic functions.

3. Compile LDNS
Get the source code tarball  http://nlnetlabs.nl/ldns
Move it into the C:\msys\...\home\user directory.
Double click on the MSYS icon and give these commands
$ cd /home/user
$ tar xzvf ldns-xxx.tar.gz
$ cd ldns-xxx
$ ./configure
If you compiled openssl yourself, pass --with-ssl=../openssl-xxx
$ make

4. Compile Unbound
Get the source code tarball  http://unbound.net
Move it into the C:\msys\...\home\user directory.
Double click on the MSYS icon and give these commands
$ cd /home/user
$ tar xzvf unbound-xxx.tar.gz
$ cd unbound-xxx
$ ./configure --enable-static-exe --with-ldns=../ldns-xxx
If you compiled openssl yourself, pass --with-ssl=../openssl-xxx too.
If you compiled libexpat yourself, pass --with-libexpat=../expat-install too.
The configure options for libevent or threads are not applicable for 
windows, because builtin alternatives for the windows platform are used.
$ make
And you have unbound.exe

If you run unbound-service-install.exe (double click in the explorer),
unbound is installed as a service in the controlpanels\systemtasks\services,
from the current directory. unbound-service-remove.exe uninstalls the service.

Unbound and its utilities also work from the commandline (like on unix) if 
you prefer.


+++ Cross compile

You can crosscompile unbound.  This results in .exe files.
Install the packages: mingw32-binutils mingw32-cpp mingw32-filesystem 
mingw32-gcc mingw32-openssl mingw32-openssl-static mingw32-runtime zip
mingw32-termcap mingw32-w32api mingw32-zlib mingw32-zlib-static mingw32-nsis
(package names for fedora 11).

For dynamic linked executables
$ mingw32-configure
$ make
$ mkdir /home/user/installdir
$ make install DESTDIR=/home/user/installdir
Find the dlls and exes in /home/user/installdir and
crypto in /usr/i686-pc-mingw32/sys-root/mingw/bin

For static linked executables
Use --enable-staticexe for mingw32-configure, see above. Or use makedist.sh,
copy System.dll from the windows dist of NSIS to /usr/share/nsis/Plugins/
Then do ./makedist.sh -w and the setup.exe is created using nsis.


+++ CREDITS

Unbound was written in portable C by Wouter Wijngaards (NLnet Labs).
See the CREDITS file in the source package for more contributor information.
Email unbound-bugs@nlnetlabs.nl

