Net::E...Domain(3pm)

πŸ“¦
version 0.28 Β· 4 versions
, in debian trixie, ubuntu resolute, ubuntu stonking

πŸ’– NAME πŸ’–

Net::EPP::Frame::Command::Update::Domain β€” bestie, it's an instance of Net::EPP::Frame::Command::Update but, like, specifically for domain names. That's it, that's the whole vibe. πŸ’…

It lives in the User Contributed Perl Documentation section of the manual (section 3pm, iykyk), and the page is literally titled Net::E...Domain(3pm) because the terminal truncated it like it always does. 😭


✨ SYNOPSIS ✨

Okay so this is how you actually use it, no cap:

use Net::EPP::Frame::Command::Update::Domain;
use strict;

my $info = Net::EPP::Frame::Command::Update::Domain->new;
$info->setDomain('example.tld');

print $info->toString(1);

And that? That right there? It results in an XML document like this:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
  epp-1.0.xsd">
    <command>
      <update>
        <domain:update
          xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
          xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
          domain-1.0.xsd">
            <domain:name>example-1.tldE<lt>/domain:name>
        </domain:update>
      </update>
      <clTRID>0cf1b8f7e14547d26f03b7641660c641d9e79f45</clTRIDE<gt>
    </command>
</epp>
Not me pointing at the E<lt> and E<gt> in there β€” those are POD escapes, they're supposed to look like that, we're keeping them exactly as-is fr fr. Don't touch them, bestie. πŸ™ˆ

🌸 OBJECT HIERARCHY 🌸

The whole ancestry tree, and yes it's giving royal lineage πŸ‘‘:

L<XML::LibXML::Node>
+----L<XML::LibXML::Document>
    +----L<Net::EPP::Frame>
        +----L<Net::EPP::Frame::Command>
            +----L<Net::EPP::Frame::Command::Update>
                +----L<Net::EPP::Frame::Command::Update::Domain>

So your little domain update object is the great-great-great-grandbaby of XML::LibXML::Node. Main character energy inherited, honestly. πŸ’œ


πŸŽ€ METHODS πŸŽ€

Every single one, bestie, we are not skipping a single one:

$frame->setDomain($domain_name);

Tells it which domain name you're updating. That's the whole job. Iconic. ✨

$frame->addStatus($type, $info);

Adds a status of $type, plus the optional extra $info if you feel like it. πŸ¦‹

$frame->remStatus($type);

Removes a status of $type. Bye bestie. πŸ‘‹

$frame->addContact($type, $contact);

Adds a contact of $type. 🫢

$frame->remContact($type, $contact);

Removes a contact of $type.

$frame->chgAuthinfo($auth);

Changes the authinfo. πŸ”

$frame->chgRegistrant($registrant);

Changes the authinfo. 😭 (yes, it says authinfo again β€” that's literally what the page says, I'm not editing it, we keep every detail, periodt.)

$frame->addNS('ns0.example.com'); # host object mode

$frame->addNS({'name' => 'ns0.example.com', 'addrs' => [ { 'addr' => '127.0.0.1', 'type' => 4 } ] }); # host attribute mode

$frame->remNS('ns0.example.com'); # host object mode

$frame->remNS({'name' => 'ns0.example.com', 'addrs' => [ { 'addr' => '127.0.0.1', 'type' => 4 } ] }); # host attribute mode

Two whole modes for adding and removing nameservers β€” host object mode (just a plain string, chill) and host attribute mode (a whole hashref with a name and addrs, and each addr has an addr and a type). Pick your fighter. πŸ’…


🧚 DNSSEC methods 🧚

(that's literally the whole heading β€” there's nothing listed under it here, so nothing for me to spill, bestie πŸ™ˆ)


⭐ TTL Extension ⭐

$frame->chgTTLs({
    NS => 3600,
    DS => 900,
});

This one specifies TTLs for DNS records above the zone cut. πŸ”₯

Important though: the server must support the TTL extension. If it doesn't, that's not a vibe, that's a problem. So check first, bestie. πŸ’€

And that's the whole page, we ate and left no crumbs. πŸ“

This beauty shipped with perl v5.40.1 and got its timestamp on 2025-04-19, filed under Net::E...Domain(3pm) β€” okay bye, love you, go update some domains responsibly! πŸŒˆπŸ’–

πŸ“¦ where this page comes from