#!/usr/bin/perl

# dnsman 0.66 - createzone.cgi
#
# Copyright (C) 2000,2001 Hampton Maxwell
# See COPYRIGHT for details
#
# 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; under version 2 of the License. If you
# wish to use a later version, you must obtain permission from the author.
#
# 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::Carp qw(fatalsToBrowser); # log errors to browser window

require './config.cgi';
require './functions.cgi';

# set values before parsing so they can't be overridden
use vars qw ($basedir $chroot $dnsconf);

$basedir = $FORM{'BASEDIR'};
$chroot = $FORM{'CHROOT'};

if ($FORM{'CONFLOCATION'}) { $::dnsconf = $FORM{'CONFLOCATION'}; }
elsif ($FORM{'CONFIGFILE'}) { $::dnsconf = "$FORM{'CONFIGFILE'}"; }
else { $::dnsconf = "named.conf"; }
$::dnsconf = &clean_filename($::dnsconf);

&parse_form;

my @validviews;
if ($FORM{'BINDVERSION'} eq "BIND9") { @validviews = get_views(); }

&html_header("DNS Header creation");

print "
<FORM Method=post Action=writezone.cgi>

<INPUT TYPE=submit NAME=SUBMITTYPE VALUE=Create><BR>
";

if ($FORM{'SHOWNS'} eq "yes") { &showns; }
if ($FORM{'SHOWTIMEOUTS'} eq "yes") { &showtimeouts; }

print "Record filename: (blank to use domain name) ";
&enter_filename("forward", "RECDIR", "RECORDFILE", "", "");
print "<BR>

<B>Domain:</B> <INPUT TYPE=text SIZE=20 NAME=DOMAIN>
<BR>

<B>IP address for main host of domain.com: </B><INPUT TYPE=text SIZE=18 NAME=ROOTIP><BR>
";

if (@validviews) {
    print "Assign to the view:\n";
    print "<FONT SIZE=-1><A HREF=usageguide.html#createviews>help</A></FONT>\n";
    print "<SELECT NAME=VIEW>\n";
    my $view = shift(@validviews);
    print "<OPTION VALUE=\"\">Default View</OPTION>\n";
    print "<OPTION SELECTED>$view</OPTION>\n";
    foreach $view (@validviews) {
        print "<OPTION>$view</OPTION>\n";
    }
    print "</SELECT><BR><BR>\n";
}

# set default type of record for mail, www, ftp and smtp records if not specified to A
if (!$FORM{'WWWIPTYPE'}) { $FORM{'WWWIPTYPE'} = "A"; }
if (!$FORM{'FTPIPTYPE'}) { $FORM{'FTPIPTYPE'} = "A"; }
if (!$FORM{'MAILIPTYPE'}) { $FORM{'MAILIPTYPE'} = "A"; }
if (!$FORM{'SMTPIPTYPE'}) { $FORM{'SMTPIPTYPE'} = "A"; }

if (!$FORM{'MX1PRI'}) { $FORM{'MX1PRI'} = "10"; }
if (!$FORM{'MX2PRI'}) { $FORM{'MX2PRI'} = "20"; }
if (!$FORM{'MX3PRI'}) { $FORM{'MX3PRI'} = "30"; }

print <<CREATEZONE;
MX 1: <INPUT TYPE=text SIZE=20 NAME=MX1 VALUE="$FORM{'MX1'}"> 
Priority: <INPUT TYPE=text SIZE=5 NAME=MX1PRI VALUE="$FORM{'MX1PRI'}"><BR>
MX 2: <INPUT TYPE=text SIZE=20 NAME=MX2 VALUE="$FORM{'MX2'}">
Priority: <INPUT TYPE=text SIZE=5 NAME=MX2PRI VALUE="$FORM{'MX2PRI'}"><BR>
MX 3: <INPUT TYPE=text SIZE=20 NAME=MX3 VALUE="$FORM{'MX3'}">
Priority: <INPUT TYPE=text SIZE=5 NAME=MX3PRI VALUE="$FORM{'MX3PRI'}"><BR>

<BR>

<I>Leave target blank to create CNAME records that point to domain.com.</I>&nbsp;
<FONT SIZE=-1><A HREF=usageguide.html#createcnames>Help</A></FONT><BR>

www record target: &nbsp;<INPUT TYPE=text SIZE=20 NAME=WWWIP VALUE="$FORM{'WWWIP'}">
Type: <SELECT NAME=WWWIPTYPE>
<OPTION SELECTED>$FORM{'WWWIPTYPE'}</OPTION>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
<OPTION>Don't Create</OPTION>
</SELECT>
<BR>

ftp record address: &nbsp;<INPUT TYPE=text SIZE=20 NAME=FTPIP VALUE="$FORM{'FTPIP'}">
Type: <SELECT NAME=FTPIPTYPE>
<OPTION SELECTED>$FORM{'FTPIPTYPE'}</OPTION>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
<OPTION>Don't Create</OPTION>
</SELECT>
<BR>

mail record address: <INPUT TYPE=text SIZE=20 NAME=MAILIP VALUE="$FORM{'MAILIP'}">
Type: <SELECT NAME=MAILIPTYPE>
<OPTION SELECTED>$FORM{'MAILIPTYPE'}</OPTION>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
<OPTION>Don't Create</OPTION>
</SELECT>
<BR>

smtp record address: <INPUT TYPE=text SIZE=20 NAME=SMTPIP VALUE="$FORM{'SMTPIP'}">
Type: <SELECT NAME=SMTPIPTYPE>
<OPTION SELECTED>$FORM{'SMTPIPTYPE'}</OPTION>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
<OPTION>Don't Create</OPTION>
</SELECT>
<BR>

<BR>
<B>Extra record creation: (CNAME or A record)</B><BR>

Extra 1 Name: <INPUT TYPE=text SIZE=20 NAME=EXTRA1>
Target: <INPUT TYPE=text SIZE=15 NAME=EXTRA1IP>
Type: <SELECT NAME=EXTRA1TYPE>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
</SELECT>
<BR>

Extra 2 Name: <INPUT TYPE=text SIZE=20 NAME=EXTRA2>
Target: <INPUT TYPE=text SIZE=15 NAME=EXTRA2IP>
Type: <SELECT NAME=EXTRA2TYPE>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
</SELECT>
<BR>

Extra 3 Name: <INPUT TYPE=text SIZE=20 NAME=EXTRA3>
Target: <INPUT TYPE=text SIZE=15 NAME=EXTRA3IP>
Type: <SELECT NAME=EXTRA3TYPE>
<OPTION>A</OPTION>
<OPTION>CNAME</OPTION>
</SELECT>
CREATEZONE

print "<BR><BR>
<INPUT TYPE=submit NAME=SUBMITTYPE VALUE=Create>
</FORM>\n";

&html_footer;
exit;
