�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �% [--verbose] =head1 DESCRIPTION This script performs a DNS query using cPanel’s DNS resolver. Its output should yield the same end results as C. cPanel provides this script solely for diagnostic purposes; no cPanel & WHM feature requires its use. =cut use parent qw( Cpanel::HelpfulScript ); use Cpanel::DNS::Unbound (); use Cpanel::NameServers (); use constant _OPTIONS => ('verbose'); use constant _ACCEPT_UNNAMED => 1; exit( __PACKAGE__->new(@ARGV)->run() // 0 ) unless caller; sub run { my ($self) = @_; my ( $name, $type ) = $self->getopt_unnamed(); die $self->help() if grep { !$_ } $name, $type; $type = uc($type); if ( $type eq 'NS' ) { # requesting DNS::Unbound is not complete when the NS are not setup correctly my $list = Cpanel::NameServers::get_nameservers_for_domain($name) // []; say $_ for @$list; return; } my $dns = Cpanel::DNS::Unbound->new(); my $ret = $dns->recursive_queries( [ [ $name, $type ] ] )->[0]; if ( $self->getopt('verbose') ) { print STDERR $ret->{debug}; } my $data_ar = $ret->{'decoded_data'} || $ret->{result}{data}; my %FORMATTERS = ( 'ARRAY' => sub { "@{$_[0]}" }, 'HASH' => sub { join ' ', map { "$_=$_[0]->{$_}" } sort keys %{ $_[0] }; } ); foreach my $item ( @{$data_ar} ) { my $type = ref $item; if ( $type ne '' && defined $FORMATTERS{$type} ) { $self->_print( $FORMATTERS{$type}->($item) . "\n" ); } else { $self->_print("$item\n"); } } return; } 1;