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
>
>