BTW - domain locking is only broken for .us names (fixed, promotion coming
wednesday, I can manage one-off requests if required in the interim)

Charles Daminato
TUCOWS Product Manager
[EMAIL PROTECTED]

On Sun, 5 May 2002, Christopher Hicks wrote:

> On Sun, 5 May 2002, Jonathan wrote:
> > If you really want a change-all nameservers feature,
> > that can be done readily by modifying
> > the manage.cgi code from your end.
>
> I've written a bit of code specifically to fix nameservers.  It doesn't
> handle locking yet, but since that's apparently broken at the moment,
> hopefully all of your domains are unlocked.
>
> sub fixns {
>       my(%givendoms,$givendoms);
>       if (scalar @_) {
>               $givendoms = 1;
>               %givendoms = map {($_,1)} @_;
>       }
>         my $sql = "select * from domain where opensrs=1 and dead=0";
>         my $sth = $dbh->prepare($sql) or die "bad << $sql >>";
>         $sth->execute or die;
>
>       my %attr = %defattr;
>       $attr{type} = 'nameservers';
>
>       my $row;
>       while ($row = $sth->fetchrow_hashref) {
>               my $domain = $row->{name};
>               my $nssetid = $row->{nssetid};
>
>               if ($givendoms) {
>                       next unless $givendoms{$domain};
>               }
>               print "processing $domain: ";
>
>               my @ns_shouldbe;
>               $sql = "select * from nameserversetitem
>                               where nssetid=$nssetid
>                               order by lookorder
>               ";
>               my $sth2 = $dbh->prepare($sql) or die "bad << $sql >>";
>               $sth2->execute or die;
>               if ($sth2->rows == 0) {
>                       print "no nssetitems\n";
>                       next;
>               }
>               while (my $nsrow = $sth2->fetchrow_hashref) {
>                       push(@ns_shouldbe,$nsrow->{name});
>               }
>
>               my $rv = $XCP->send({
>                       action => 'set',
>                       object => 'cookie',
>                       attributes => {
>                               domain => $domain,
>                               reg_username => $defattr{reg_username},
>                               reg_password => $defattr{reg_password}
>                       },
>               });
>
>               if ($rv->{is_success}) {
>                       print "login,";
>               } else {
>                       warn $rv->{response_text};
>                       next;
>               }
>
>               $cookie = $rv->{attributes}{cookie};
>
>               %attr = %defattr;
>               $attr{type} = 'nameservers';
>
>               $rv = $XCP->send({
>                       action => 'get',
>                       object => 'domain',
>                       cookie => $cookie,
>                       attributes => \%attr,
>               });
>
>               if ($rv->{is_success}) {
>                       print "got curr,";
>               } else {
>                       die $rv->{response_text};
>               }
>
>               my @ns_is;
>               foreach my $listent (@{$rv->{attributes}->{nameserver_list}}) {
>                       push(@ns_is,$listent->{name});
>               }
>
>               #print Dumper(\@ns_is,\@ns_shouldbe),"\n";die;
>
>               my $x = 0;
>               foreach my $is (@ns_is) {
>                       my $sb = $ns_shouldbe[$x];
>                       if ($is eq $sb) {
>                               $x++;
>                               next;
>                       } else {
>                               print "ns[$x] mismatch,";
>                               #print "\n\t($is<>$sb),";
>                               last;
>                       }
>               }
>
>               if ($x == scalar(@ns_shouldbe)) {
>                       print " good.  :-)\n";
>                       next;
>               }
>
>               print "fixing...";
>
>               my $nsremovelist;
>               my $y=1;
>               foreach my $is (@ns_is) {
>                       my $racedom = $UTIL->do_race($is);
>                       push(@$nsremovelist, {
>                                       name => $racedom->{ConvertedDomain},
>                                       sortorder => $y,
>                                       action => 'remove',
>                               });
>                       $y++;
>               }
>
>               #print Dumper($nslist),"\n";die;
>
>               %attr = ();
>               $attr{data} = 'nameserver_list';
>               $attr{nameserver_list} = $nsremovelist;
>               $rv = $XCP->send({
>                       action => 'modify',
>                       object => 'domain',
>                       cookie => $cookie,
>                       attributes => \%attr,
>               });
>
>               if ($rv->{is_success}) {
>                       print "removed,"
>               } else {
>                       die "\nOpenSRS: $rv->{response_text}\n"
>                               . Dumper($rv)
>                               . Dumper(\%attr)
>                               . ' ';
>               }
>
>               $y = 1;
>               foreach my $sb (@ns_shouldbe) {
>                       my $racedom = $UTIL->do_race($sb);
>
>                       %attr = ();
>                       $attr{data} = 'nameserver_list';
>                       $attr{nameserver_list} = [ {
>                                       name => $racedom->{ConvertedDomain},
>                                       action => 'add',
>                               } ];
>
>                       $rv = $XCP->send({
>                               action => 'modify',
>                               object => 'domain',
>                               cookie => $cookie,
>                               attributes => \%attr,
>                       });
>
>                       if ($rv->{is_success}) {
>                               print "$y,"
>                       } else {
>                               die "\nOpenSRS: $rv->{response_text}\n"
>                                       . Dumper($rv)
>                                       . Dumper(\%attr)
>                                       . ' ';
>                       }
>
>                       $y++;
>               }
>
>               print "done.\n";
>       }
>         $sth->finish if defined($sth);
> }
>
> --
> </chris>
>
> "The first rule of Perl club is you do not talk about Perl club."
> -- Chip Salzenberg
>
>

Reply via email to