#!/usr/bin/perl

open (STDERR, ">&STDOUT");
select ((select(STDOUT), $| = 1)[0]); # Synchronize STDOUT
select ((select(STDERR), $| = 1)[0]); # with STDERR

($dns_lib = $0) =~ s:(^|/)[^/]*$::;
($script=$0) =~ s:^.*/([^/]*)$:$1:;	# Get the simple name of this script.

push (@INC, $dns_lib);

require 5.0;
require 'dns_lib.perl';

use Getopt::Long;
$Getopt::Long::autoabbrev=1;    # Allow keyword abbreviations (to uniqueness).
$Getopt::Long::getopt_compat=1; # Allow both "--foo=bar" and "+foo=bar" style.
#$Getopt::Long::option_start='(--|-|\+)';       # [Use the defaults]
#$Getopt::Long::order=$Getopt::Long::REQUIRE_ORDER; # Options can't intermingle
$Getopt::Long::order=$Getopt::Long::PERMUTE;    # or options may intermingle.
$Getopt::Long::ignorecase=1;    # Don't consider case in options.
$Getopt::Long::debug=0;         ### Debug ###

$opt_help = ($#ARGV < 0);

&GetOptions ('help') || die "\nTry: $script --help for more information.\n\n";

if ($opt_help) { 
 
    print <<"EndOfHelp";
Usage: $script [OPTION] host pref ip
 
  --help   This page.

  host     The fully qualified DNS name of the alias you want to remove.
  cname    The canonical name of the host you are removing an alias for.
 
EndOfHelp
    
    exit;

} # End if - help

$name = $ARGV[0];

if (! $name) {

    die "\nError.  Try: $script --help for more information.\n\n";

} else {

    $name = &verify_name ($name);

}

$server = $ARGV[1];

if (! $server) {

    die "\nError.  Try: $script --help for more information.\n\n";

} else {

    $server = &verify_name ($server);

}

if ((($x = &verify_zone ($name)) eq 'PRIMARY') || ($x eq 'SEC_W_GLUE')) {

    $host = '@';
    $zone = $name;

} else {

    ($host, $zone) = split ('\.', $name, 2);
    die "Error: Cannot remove CNAME for $host from $zone -- no .primary file, use new_primary.\n" unless (($x = &verify_zone ($zone)) eq 'PRIMARY') || ($x eq 'SEC_W_GLUE');

}

&rcs_co ($zone, '.primary');
@file = &read_file ($zone, '.primary');
$record = &build_record ($host, 'CNAME', $server, '');
@recs = &find_record ($record, @file);

if ($#recs < 0) {

    $output = "\nError: No matching record.\nTry show_primary $zone\n";

} else {

    ($result, @file) = &remove_record ($record, @file);

    if ($result eq 'REMOVED') {

	&write_file ($zone, '.primary', @file);
	$output = "\nRecord Removed: CNAME for $host removed from $zone that pointed at $server\n";
	$change = 1;

    } else {

	$output = "\nError: This isn't supposed to happen...\n";
	
    }

}

&rcs_ci ($zone, '.primary', "Script $script: removed CNAME record for $host", $change);
print "$output\n";

exit;

