Implement CAA record
Docs say caa_property but implementation uses caa_tag (support both) Ref: #3
This commit is contained in:
		| @@ -33,7 +33,7 @@ sub _notice { | ||||
| my %supported_types = ( | ||||
|     A => "yes", | ||||
|     AAAA => "yes", | ||||
|     CAA => "not yet implemented", | ||||
|     CAA => "yes", | ||||
|     CNAME => "yes", | ||||
|     DNAME => "yes", | ||||
|     MX => "yes", | ||||
| @@ -127,6 +127,12 @@ sub format_record($$$$) { | ||||
|         $record->{srv_weight} = $weight; | ||||
|         $record->{srv_port} = $port; | ||||
|         $record->{data} = $data; | ||||
|     } elsif ($type eq 'CAA') { | ||||
|         my ($flags, $property, $data) = split(/\s+/, $value); | ||||
|         $record->{caa_flags} = $flags; | ||||
|         $record->{caa_property} = $property; | ||||
|         $record->{caa_tag} = $property; | ||||
|         $record->{data} = $data; | ||||
|     } | ||||
|  | ||||
|     return $record; | ||||
| @@ -143,6 +149,12 @@ sub reformat_data($$) { | ||||
|             $data->{srv_port}, | ||||
|             $data->{data} | ||||
|         ); | ||||
|     } elsif($type eq 'CAA') { | ||||
|         return sprintf('%d %s %s', | ||||
|             $data->{caa_flags}, | ||||
|             $data->{caa_property} || $data->{caa_tag}, | ||||
|             $data->{data} | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     return $data->{data}; | ||||
| @@ -177,6 +189,7 @@ sub check_and_update_record($$$$$) { | ||||
|         # Create new record | ||||
|         my $new = format_record($zone, $type, $host, $value); | ||||
|         _notice("Created new record: %s %s %s", $host, $type, $value); | ||||
|         _debug($new); | ||||
|         my $res = $ua->post( | ||||
|             $url, | ||||
|             "Content-Type" => "application/json", | ||||
| @@ -231,6 +244,7 @@ foreach my $z (keys %{$in->[0]->{zones}}) { | ||||
|         unless (defined $seen{$record}) { | ||||
|             # _info("Considering %s %s", $record->{host}, $record->{type}); | ||||
|             my $skip; | ||||
|             $skip = 1 if is_unsupported($record->{type}); | ||||
|             if ($in->[0]->{ignore}->{$z}->{$record->{host}}) { | ||||
|                 # check if type is specified | ||||
|                 if(keys %{$in->[0]->{ignore}->{$z}->{$record->{host}}}) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user