#!/usr/bin/eperl -w ### # # Copyright (c) Ensim Corporation 2000, 2001 All Rights Reserved. # # This software is furnished under a license and may be used and copied # only in accordance with the terms of such license and with the # inclusion of the above copyright notice. This software or any other # copies thereof may not be provided or otherwise made available to any # other person. No title to and ownership of the software is hereby # transferred. # # The information in this software is subject to change without notice # and should not be construed as a commitment by Ensim Corporation. # Ensim assumes no responsibility for the use or reliability of its # software on equipment which is not supplied by Ensim. # # Exit codes (on failure error message goes to stderr): # 0 - success # 0-16 -> DNS Update error # 0x80 and up -> other error # # Boolean arguments on the command line are given as 0 or 1. All the # command line arguments are encoded to avoid problems with escapes. # # All functions defined here either return an error message if an # error occured and "" if everything went well or allways return a # valid value, but exit (with code 1) printing an error message if an # error occurs. This second type of functions have _e appended to # their name. Functions are allowed to print results onto stdout, but # errors are printed only in the main program. # ---------------------------------------------------------------------- use lib ($ENV{'OCW_SVCPATH'} || "/usr/lib/opcenter")."/bind"; use lib ($ENV{'OCW_SVCPATH'} || "/usr/lib/opcenter")."/cmdline_common"; use strict; use Getopt::Std; use DnsCommon; use DnsUpdate; use CmdLineCoder; use lib ($ENV{OCW_SVCPATH} or "/usr/lib/opcenter") . "/bind"; use lib ($ENV{OCW_SVCPATH} or "/usr/lib/opcenter") . "/cmdline_common"; use ERRORS; use Carper; CmdLineCoder::decode_args(); my $args = join ' ', @ARGV; my($usage) = "Usage: add_txt [ -z ] \n"; # Read the command line my(%options); die $usage unless ( Getopt::Std::getopts("z:",\%options) ); my $txt_zone = shift || die $usage; my $text = shift || die $usage; die $usage if @ARGV; # Should be no more arguments my $zone = ""; if ( $options{z} ) { $zone = $options{z}; # Check if $hostname contains the domain name (as used) DnsCommon::dieInZone ($zone, $txt_zone); } # check args die "Invalid freeform text: '$text'" if( $text !~ /^\"[^\\\'\"]*\"$/) ; my $updater = new DnsUpdate($zone); $updater->pushUpdate ("add", $txt_zone, DnsCommon::getDefaultRRTTL(), "TXT", "$text"); DnsCommon::handleUpdate ($updater);