aboutsummaryrefslogtreecommitdiff
path: root/nfsn_auth.pl
blob: 6a4a282f92b93fe7b61f3e1c5cef0517d740fedb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env perl
use warnings;
use strict;
use WebService::NFSN;
print "nfsn_auth.pl, Copyright (C) 2020 Miquel Lionel";
###vvvEDIT THISvvv###
my $USER = 'username';
my $API_KEY = '12345678901';
my $ACCOUNT_ID = 'A1B2-C3D4E5F6';
###^^^EDIT THIS^^^###

my $nfsn = WebService::NFSN->new($USER, $API_KEY);
my $DOMAIN = $ENV{'CERTBOT_DOMAIN'};
my $TXT_DATA = $ENV{'CERTBOT_VALIDATION'};

my $i = rindex($DOMAIN, '.');
my $NOTGTLD = substr ($DOMAIN,0,$i);
my $GTLD = substr ($DOMAIN, $i+1);
my $i2 = rindex($NOTGTLD, '.');
my $SUBDOMAIN = substr ($NOTGTLD,0,$i2);
my $PART_HOSTNAME = substr ($NOTGTLD, $i2+1);
my $HOSTNAME = qq{$PART_HOSTNAME.$GTLD};

my $dnszone =  $nfsn->dns($HOSTNAME);
my $ACME_CHALLENGE_STR = "_acme-challenge";

if ($NOTGTLD =~ /\./){
    # subdomain detected
    $ACME_CHALLENGE_STR = qq{$ACME_CHALLENGE_STR.$SUBDOMAIN};
}
else {
    # no subdomain
    $SUBDOMAIN = '';
}

$dnszone->addRR(
    name => "$ACME_CHALLENGE_STR",
    type => 'TXT', 
    data => "$TXT_DATA"
);

my $nfsn_err = $nfsn->last_response->decoded_content;
if ( $nfsn_err =~ /^([\w0-9])$/ ){
    die "\nNFSN API ERROR: $nfsn_err\n";
}
else{
    print "\nThe DNS records have been updated.\n";
}
sleep 15;