Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pdns for openSUSE:Factory checked in at 2021-11-10 21:46:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pdns (Old) and /work/SRC/openSUSE:Factory/.pdns.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdns" Wed Nov 10 21:46:40 2021 rev:77 rq:930627 version:4.5.2 Changes: -------- --- /work/SRC/openSUSE:Factory/pdns/pdns.changes 2021-07-27 14:32:22.915465085 +0200 +++ /work/SRC/openSUSE:Factory/.pdns.new.1890/pdns.changes 2021-11-10 21:47:22.099835511 +0100 @@ -1,0 +2,11 @@ +Wed Nov 10 10:04:17 UTC 2021 - Michael Str??der <mich...@stroeder.com> + +- Update to 4.5.2 with bug fixes: + * bindbackend: skip rejected zones during list and search PR#10968 + * make the zone cache more robust for bad data and save some SOA queries for DNSSEC zones PR#10964 + * api, check SOA location PR#10962 + * improve dnsname exception handling for SOA records PR#10952 + * improve SOA parse exception handling PR#10792 + * try to reload rejected zones in bind-backend once every bind-check-interval PR#10778 + +------------------------------------------------------------------- Old: ---- pdns-4.5.1.tar.bz2 pdns-4.5.1.tar.bz2.sig New: ---- pdns-4.5.2.tar.bz2 pdns-4.5.2.tar.bz2.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pdns.spec ++++++ --- /var/tmp/diff_new_pack.F6esgr/_old 2021-11-10 21:47:22.807835820 +0100 +++ /var/tmp/diff_new_pack.F6esgr/_new 2021-11-10 21:47:22.811835822 +0100 @@ -55,7 +55,7 @@ %endif Name: pdns -Version: 4.5.1 +Version: 4.5.2 Release: 0 Summary: Authoritative-only nameserver License: GPL-2.0-only ++++++ pdns-4.5.1.tar.bz2 -> pdns-4.5.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/configure new/pdns-4.5.2/configure --- old/pdns-4.5.1/configure 2021-07-22 13:27:53.000000000 +0200 +++ new/pdns-4.5.2/configure 2021-11-10 00:16:40.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for pdns 4.5.1. +# Generated by GNU Autoconf 2.69 for pdns 4.5.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='pdns' PACKAGE_TARNAME='pdns' -PACKAGE_VERSION='4.5.1' -PACKAGE_STRING='pdns 4.5.1' +PACKAGE_VERSION='4.5.2' +PACKAGE_STRING='pdns 4.5.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1641,7 +1641,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures pdns 4.5.1 to adapt to many kinds of systems. +\`configure' configures pdns 4.5.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1712,7 +1712,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of pdns 4.5.1:";; + short | recursive ) echo "Configuration of pdns 4.5.2:";; esac cat <<\_ACEOF @@ -1965,7 +1965,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -pdns configure 4.5.1 +pdns configure 4.5.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2682,7 +2682,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by pdns $as_me 4.5.1, which was +It was created by pdns $as_me 4.5.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3552,7 +3552,7 @@ # Define the identity of the package. PACKAGE='pdns' - VERSION='4.5.1' + VERSION='4.5.2' cat >>confdefs.h <<_ACEOF @@ -29285,7 +29285,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by pdns $as_me 4.5.1, which was +This file was extended by pdns $as_me 4.5.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29351,7 +29351,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -pdns config.status 4.5.1 +pdns config.status 4.5.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/configure.ac new/pdns-4.5.2/configure.ac --- old/pdns-4.5.1/configure.ac 2021-07-22 13:27:41.000000000 +0200 +++ new/pdns-4.5.2/configure.ac 2021-11-10 00:16:26.000000000 +0100 @@ -1,6 +1,6 @@ AC_PREREQ([2.69]) -AC_INIT([pdns], [4.5.1]) +AC_INIT([pdns], [4.5.2]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar -Wno-portability subdir-objects parallel-tests 1.11]) AM_SILENT_RULES([yes]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/calidns.1 new/pdns-4.5.2/docs/calidns.1 --- old/pdns-4.5.1/docs/calidns.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/calidns.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "CALIDNS" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "CALIDNS" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME calidns \- A DNS recursor testing tool .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnsbulktest.1 new/pdns-4.5.2/docs/dnsbulktest.1 --- old/pdns-4.5.1/docs/dnsbulktest.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnsbulktest.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSBULKTEST" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSBULKTEST" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnsbulktest \- A debugging tool for intermittent resolver failures .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnsgram.1 new/pdns-4.5.2/docs/dnsgram.1 --- old/pdns-4.5.1/docs/dnsgram.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnsgram.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSGRAM" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSGRAM" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnsgram \- A debugging tool for intermittent resolver failures .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnspcap2calidns.1 new/pdns-4.5.2/docs/dnspcap2calidns.1 --- old/pdns-4.5.1/docs/dnspcap2calidns.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnspcap2calidns.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSPCAP2CALIDNS" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSPCAP2CALIDNS" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnspcap2calidns \- A tool to convert PCAPs of DNS traffic to calidns input .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnspcap2protobuf.1 new/pdns-4.5.2/docs/dnspcap2protobuf.1 --- old/pdns-4.5.1/docs/dnspcap2protobuf.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnspcap2protobuf.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSPCAP2PROTOBUF" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSPCAP2PROTOBUF" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnspcap2protobuf \- A tool to convert PCAPs of DNS traffic to PowerDNS Protobuf .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnsreplay.1 new/pdns-4.5.2/docs/dnsreplay.1 --- old/pdns-4.5.1/docs/dnsreplay.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnsreplay.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSREPLAY" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSREPLAY" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnsreplay \- A PowerDNS nameserver debugging tool .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnsscan.1 new/pdns-4.5.2/docs/dnsscan.1 --- old/pdns-4.5.1/docs/dnsscan.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnsscan.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSSCAN" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSSCAN" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnsscan \- List the amount of queries per qtype in a pcap .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnsscope.1 new/pdns-4.5.2/docs/dnsscope.1 --- old/pdns-4.5.1/docs/dnsscope.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnsscope.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSSCOPE" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSSCOPE" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnsscope \- A PowerDNS nameserver debugging tool .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnstcpbench.1 new/pdns-4.5.2/docs/dnstcpbench.1 --- old/pdns-4.5.1/docs/dnstcpbench.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnstcpbench.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSTCPBENCH" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSTCPBENCH" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnstcpbench \- tool to perform TCP benchmarking of nameservers .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dnswasher.1 new/pdns-4.5.2/docs/dnswasher.1 --- old/pdns-4.5.1/docs/dnswasher.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dnswasher.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DNSWASHER" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DNSWASHER" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dnswasher \- A PowerDNS nameserver debugging tool .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/dumresp.1 new/pdns-4.5.2/docs/dumresp.1 --- old/pdns-4.5.1/docs/dumresp.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/dumresp.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "DUMRESP" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "DUMRESP" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME dumresp \- A dumb DNS responder .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/ixfrdist.1 new/pdns-4.5.2/docs/ixfrdist.1 --- old/pdns-4.5.1/docs/ixfrdist.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/ixfrdist.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "IXFRDIST" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "IXFRDIST" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME ixfrdist \- An IXFR/AXFR-only server that re-distributes zones .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/ixfrdist.yml.5 new/pdns-4.5.2/docs/ixfrdist.yml.5 --- old/pdns-4.5.1/docs/ixfrdist.yml.5 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/ixfrdist.yml.5 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "IXFRDIST.YML" "5" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "IXFRDIST.YML" "5" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME ixfrdist.yml \- The ixfrdist configuration file .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/ixplore.1 new/pdns-4.5.2/docs/ixplore.1 --- old/pdns-4.5.1/docs/ixplore.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/ixplore.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "IXPLORE" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "IXPLORE" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME ixplore \- A tool that provides insights into IXFRs .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/nproxy.1 new/pdns-4.5.2/docs/nproxy.1 --- old/pdns-4.5.1/docs/nproxy.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/nproxy.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NPROXY" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "NPROXY" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME nproxy \- DNS notification proxy .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/nsec3dig.1 new/pdns-4.5.2/docs/nsec3dig.1 --- old/pdns-4.5.1/docs/nsec3dig.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/nsec3dig.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NSEC3DIG" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "NSEC3DIG" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME nsec3dig \- Show and validate NSEC3 proofs .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/pdns_control.1 new/pdns-4.5.2/docs/pdns_control.1 --- old/pdns-4.5.1/docs/pdns_control.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/pdns_control.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "PDNS_CONTROL" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "PDNS_CONTROL" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME pdns_control \- Control the PowerDNS nameserver .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/pdns_notify.1 new/pdns-4.5.2/docs/pdns_notify.1 --- old/pdns-4.5.1/docs/pdns_notify.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/pdns_notify.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "PDNS_NOTIFY" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "PDNS_NOTIFY" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME pdns_notify \- A simple DNS NOTIFY sender .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/pdns_server.1 new/pdns-4.5.2/docs/pdns_server.1 --- old/pdns-4.5.1/docs/pdns_server.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/pdns_server.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "PDNS_SERVER" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "PDNS_SERVER" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME pdns_server \- The PowerDNS Authoritative Nameserver .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/pdnsutil.1 new/pdns-4.5.2/docs/pdnsutil.1 --- old/pdns-4.5.1/docs/pdnsutil.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/pdnsutil.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "PDNSUTIL" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "PDNSUTIL" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME pdnsutil \- PowerDNS record and DNSSEC command and control .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/saxfr.1 new/pdns-4.5.2/docs/saxfr.1 --- old/pdns-4.5.1/docs/saxfr.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/saxfr.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SAXFR" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "SAXFR" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME saxfr \- Perform AXFRs and show information about it .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/sdig.1 new/pdns-4.5.2/docs/sdig.1 --- old/pdns-4.5.1/docs/sdig.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/sdig.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SDIG" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "SDIG" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME sdig \- Perform a DNS query and show the results .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/zone2json.1 new/pdns-4.5.2/docs/zone2json.1 --- old/pdns-4.5.1/docs/zone2json.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/zone2json.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "ZONE2JSON" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "ZONE2JSON" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME zone2json \- convert BIND zones to JSON .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/zone2ldap.1 new/pdns-4.5.2/docs/zone2ldap.1 --- old/pdns-4.5.1/docs/zone2ldap.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/zone2ldap.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "ZONE2LDAP" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "ZONE2LDAP" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME zone2ldap \- convert zonefiles to ldif .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/docs/zone2sql.1 new/pdns-4.5.2/docs/zone2sql.1 --- old/pdns-4.5.1/docs/zone2sql.1 2021-07-22 13:29:32.000000000 +0200 +++ new/pdns-4.5.2/docs/zone2sql.1 2021-11-10 00:18:54.000000000 +0100 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "ZONE2SQL" "1" "Jul 22, 2021" "" "PowerDNS Authoritative Server" +.TH "ZONE2SQL" "1" "Nov 09, 2021" "" "PowerDNS Authoritative Server" .SH NAME zone2sql \- convert BIND zones to SQL .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/modules/bindbackend/bindbackend2.cc new/pdns-4.5.2/modules/bindbackend/bindbackend2.cc --- old/pdns-4.5.1/modules/bindbackend/bindbackend2.cc 2021-07-22 13:23:48.000000000 +0200 +++ new/pdns-4.5.2/modules/bindbackend/bindbackend2.cc 2021-11-09 19:30:45.000000000 +0100 @@ -1041,12 +1041,12 @@ try { if (!safeGetBBDomainInfo(id, &bbold)) return; + bbold.d_checknow = false; BB2DomainInfo bbnew(bbold); /* make sure that nothing will be able to alter the existing records, we will load them from the zone file instead */ bbnew.d_records = LookButDontTouch<recordstorage_t>(); parseZoneFile(&bbnew); - bbnew.d_checknow = false; bbnew.d_wasRejectedLastReload = false; safePutBBDomainInfo(bbnew); g_log << Logger::Warning << "Zone '" << bbnew.d_name << "' (" << bbnew.d_filename << ") reloaded" << endl; @@ -1056,6 +1056,7 @@ msg << " error at " + nowTime() + " parsing '" << bbold.d_name << "' from file '" << bbold.d_filename << "': " << ae.reason; g_log << Logger::Warning << " error parsing '" << bbold.d_name << "' from file '" << bbold.d_filename << "': " << ae.reason << endl; bbold.d_status = msg.str(); + bbold.d_lastcheck = time(nullptr); bbold.d_wasRejectedLastReload = true; safePutBBDomainInfo(bbold); } @@ -1064,6 +1065,7 @@ msg << " error at " + nowTime() + " parsing '" << bbold.d_name << "' from file '" << bbold.d_filename << "': " << ae.what(); g_log << Logger::Warning << " error parsing '" << bbold.d_name << "' from file '" << bbold.d_filename << "': " << ae.what() << endl; bbold.d_status = msg.str(); + bbold.d_lastcheck = time(nullptr); bbold.d_wasRejectedLastReload = true; safePutBBDomainInfo(bbold); } @@ -1179,11 +1181,6 @@ d_handle.qtype = qtype; d_handle.domain = std::move(domain); - if (!bbd.d_loaded) { - d_handle.reset(); - throw DBException("Zone for '" + d_handle.domain.toLogString() + "' in '" + bbd.d_filename + "' temporarily not available (file missing, or master dead)"); // fsck - } - if (!bbd.current()) { g_log << Logger::Warning << "Zone '" << d_handle.domain << "' (" << bbd.d_filename << ") needs reloading" << endl; queueReloadAndStore(bbd.d_id); @@ -1191,6 +1188,11 @@ throw DBException("Zone '" + bbd.d_name.toLogString() + "' (" + bbd.d_filename + ") gone after reload"); // if we don't throw here, we crash for some reason } + if (!bbd.d_loaded) { + d_handle.reset(); + throw DBException("Zone for '" + d_handle.domain.toLogString() + "' in '" + bbd.d_filename + "' not loaded (file missing, corrupt or master dead)"); // fsck + } + d_handle.d_records = bbd.d_records.get(); if (d_handle.d_records->empty()) @@ -1299,6 +1301,10 @@ d_handle.reset(); DLOG(g_log << "Bind2Backend constructing handle for list of " << id << endl); + if (!bbd.d_loaded) { + throw PDNSException("zone was not loaded, perhaps because of: " + bbd.d_status); + } + d_handle.d_records = bbd.d_records.get(); // give it a copy, which will stay around d_handle.d_qname_iter = d_handle.d_records->begin(); d_handle.d_qname_end = d_handle.d_records->end(); // iter now points to a vector of pointers to vector<BBResourceRecords> @@ -1435,6 +1441,10 @@ continue; } + if (!h.d_loaded) { + continue; + } + shared_ptr<const recordstorage_t> rhandle = h.d_records.get(); for (recordstorage_t::const_iterator ri = rhandle->begin(); result.size() < static_cast<vector<DNSResourceRecord>::size_type>(maxResults) && ri != rhandle->end(); ri++) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/modules/tinydnsbackend/tinydnsbackend.cc new/pdns-4.5.2/modules/tinydnsbackend/tinydnsbackend.cc --- old/pdns-4.5.1/modules/tinydnsbackend/tinydnsbackend.cc 2021-07-22 13:23:48.000000000 +0200 +++ new/pdns-4.5.2/modules/tinydnsbackend/tinydnsbackend.cc 2021-11-09 19:30:46.000000000 +0100 @@ -173,17 +173,23 @@ while (get(rr)) { if (rr.qtype.getCode() == QType::SOA && dupcheck.insert(rr.qname).second) { - SOAData sd; - fillSOAData(rr.content, sd); - DomainInfo di; di.id = -1; //TODO: Check if this is ok. di.backend = this; di.zone = rr.qname; - di.serial = sd.serial; - di.notified_serial = sd.serial; di.kind = DomainInfo::Master; di.last_check = time(0); + + SOAData sd; + try { + fillSOAData(rr.content, sd); + di.serial = sd.serial; + } + catch (...) { + di.serial = 0; + } + + di.notified_serial = di.serial; domains->push_back(di); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/pdns/backends/gsql/gsqlbackend.cc new/pdns-4.5.2/pdns/backends/gsql/gsqlbackend.cc --- old/pdns-4.5.1/pdns/backends/gsql/gsqlbackend.cc 2021-07-22 13:23:48.000000000 +0200 +++ new/pdns-4.5.2/pdns/backends/gsql/gsqlbackend.cc 2021-11-09 19:30:46.000000000 +0100 @@ -1443,10 +1443,15 @@ } } - if(!row[2].empty()) { + if (!row[2].empty()) { SOAData sd; - fillSOAData(row[2], sd); - di.serial = sd.serial; + try { + fillSOAData(row[2], sd); + di.serial = sd.serial; + } + catch (...) { + di.serial = 0; + } } try { di.notified_serial = pdns_stou(row[5]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/pdns/dnsbackend.cc new/pdns-4.5.2/pdns/dnsbackend.cc --- old/pdns-4.5.1/pdns/dnsbackend.cc 2021-07-22 13:23:48.000000000 +0200 +++ new/pdns-4.5.2/pdns/dnsbackend.cc 2021-11-09 19:30:46.000000000 +0100 @@ -246,25 +246,31 @@ S.inc("backend-queries"); DNSResourceRecord rr; - rr.auth = true; - int hits=0; - while(this->get(rr)) { - if (rr.qtype != QType::SOA) throw PDNSException("Got non-SOA record when asking for SOA"); - hits++; - fillSOAData(rr.content, sd); - sd.domain_id=rr.domain_id; - sd.ttl=rr.ttl; - } - - if(!hits) - return false; + sd.db = nullptr; - sd.qname = domain; - sd.db=this; + try { + while (this->get(rr)) { + if (rr.qtype != QType::SOA) { + throw PDNSException("Got non-SOA record when asking for SOA, zone: '" + domain.toLogString() + "'"); + } + hits++; + sd.qname = domain; + sd.ttl = rr.ttl; + sd.db = this; + sd.domain_id = rr.domain_id; + fillSOAData(rr.content, sd); + } + } + catch (...) { + while (this->get(rr)) { + ; + } + throw; + } - return true; + return hits; } bool DNSBackend::get(DNSZoneRecord& dzr) @@ -348,6 +354,6 @@ data.minimum = pdns_stou(parts.at(6).c_str()); } catch(const std::out_of_range& oor) { - throw PDNSException("Out of range exception parsing "+content); + throw PDNSException("Out of range exception parsing '" + content + "'"); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/pdns/pdnsutil.cc new/pdns-4.5.2/pdns/pdnsutil.cc --- old/pdns-4.5.1/pdns/pdnsutil.cc 2021-07-22 13:23:48.000000000 +0200 +++ new/pdns-4.5.2/pdns/pdnsutil.cc 2021-11-09 19:30:46.000000000 +0100 @@ -250,7 +250,7 @@ DomainInfo di; try { - if (!B.getDomainInfo(zone, di)) { + if (!B.getDomainInfo(zone, di, false)) { cout << "[Error] Unable to get zone information for zone '" << zone << "'" << endl; return 1; } @@ -262,11 +262,27 @@ } SOAData sd; - if(!B.getSOAUncached(zone, sd)) { - cout<<"[Error] No SOA record present, or active, in zone '"<<zone<<"'"<<endl; + try { + if (!B.getSOAUncached(zone, sd)) { + cout << "[Error] No SOA record present, or active, in zone '" << zone << "'" << endl; + numerrors++; + cout << "Checked 0 records of '" << zone << "', " << numerrors << " errors, 0 warnings." << endl; + return 1; + } + } + catch (const PDNSException& e) { + cout << "[Error] SOA lookup failed for zone '" << zone << "': " << e.reason << endl; numerrors++; - cout<<"Checked 0 records of '"<<zone<<"', "<<numerrors<<" errors, 0 warnings."<<endl; - return 1; + if (!sd.db) { + return 1; + } + } + catch (const std::exception& e) { + cout << "[Error] SOA lookup failed for zone '" << zone << "': " << e.what() << endl; + numerrors++; + if (!sd.db) { + return 1; + } } NSEC3PARAMRecordContent ns3pr; @@ -366,7 +382,7 @@ stringtok(parts, rr.content); if(parts.size() < 7) { - cout<<"[Warning] SOA autocomplete is deprecated, missing field(s) in SOA content: "<<rr.qname<<" IN " <<rr.qtype.toString()<< " '" << rr.content<<"'"<<endl; + cout << "[Info] SOA autocomplete is deprecated, missing field(s) in SOA content: " << rr.qname << " IN " << rr.qtype.toString() << " '" << rr.content << "'" << endl; } ostringstream o; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/pdns/ueberbackend.cc new/pdns-4.5.2/pdns/ueberbackend.cc --- old/pdns-4.5.1/pdns/ueberbackend.cc 2021-07-22 13:24:20.000000000 +0200 +++ new/pdns-4.5.2/pdns/ueberbackend.cc 2021-11-09 19:30:46.000000000 +0100 @@ -352,20 +352,32 @@ if(cachedOk && g_zoneCache.isEnabled()) { if (g_zoneCache.getEntry(shorter, zoneId)) { // Zone exists in zone cache, directly look up SOA. - // XXX: this code path and the cache lookup below should be merged; but that needs the code path below to also use ANY. - // Or it should just also use lookup(). DNSZoneRecord zr; lookup(QType(QType::SOA), shorter, zoneId, nullptr); if (!get(zr)) { - // zone has somehow vanished DLOG(g_log << Logger::Info << "Backend returned no SOA for zone '" << shorter.toLogString() << "', which it reported as existing " << endl); continue; } if (zr.dr.d_name != shorter) { throw PDNSException("getAuth() returned an SOA for the wrong zone. Zone '"+zr.dr.d_name.toLogString()+"' is not equal to looked up zone '"+shorter.toLogString()+"'"); } + // fill sd sd->qname = zr.dr.d_name; - fillSOAData(zr, *sd); + try { + fillSOAData(zr, *sd); + } + catch (...) { + g_log << Logger::Warning << "Backend returned a broken SOA for zone '" << shorter.toLogString() << "'" << endl; + while (get(zr)) + ; + continue; + } + if (backends.size() == 1) { + sd->db = *backends.begin(); + } + else { + sd->db = nullptr; + } // leave database handle in a consistent state while (get(zr)) ; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.5.1/pdns/ws-auth.cc new/pdns-4.5.2/pdns/ws-auth.cc --- old/pdns-4.5.1/pdns/ws-auth.cc 2021-07-22 13:23:48.000000000 +0200 +++ new/pdns-4.5.2/pdns/ws-auth.cc 2021-11-09 19:30:46.000000000 +0100 @@ -58,6 +58,8 @@ static const std::set<uint16_t> onlyOneEntryTypes = { QType::CNAME, QType::DNAME, QType::SOA }; // QTypes that MUST NOT be used with any other QType on the same name. static const std::set<uint16_t> exclusiveEntryTypes = { QType::CNAME }; +// QTypes that MUST be at apex. +static const std::set<uint16_t> atApexTypes = {QType::SOA}; AuthWebServer::AuthWebServer() : d_start(time(nullptr)), @@ -1414,7 +1416,8 @@ * *) no duplicates for QTypes that can only be present once per RRset * *) hostnames are hostnames */ -static void checkNewRecords(vector<DNSResourceRecord>& records) { +static void checkNewRecords(vector<DNSResourceRecord>& records, const DNSName& zone) +{ sort(records.begin(), records.end(), [](const DNSResourceRecord& rec_a, const DNSResourceRecord& rec_b) -> bool { /* we need _strict_ weak ordering */ @@ -1437,6 +1440,12 @@ } } + if (rec.qname != zone) { + if (atApexTypes.count(rec.qtype.getCode()) != 0) { + throw ApiException("Record " + rec.qname.toString() + " IN " + rec.qtype.toString() + " is only allowed at apex"); + } + } + // Check if the DNSNames that should be hostnames, are hostnames try { checkHostnameCorrectness(rec); @@ -1704,7 +1713,7 @@ } } - checkNewRecords(new_records); + checkNewRecords(new_records, zonename); if (boolFromJson(document, "dnssec", false)) { checkDefaultDNSSECAlgos(); @@ -2032,7 +2041,7 @@ soa_edit_done = increaseSOARecord(rr, soa_edit_api_kind, soa_edit_kind); } } - checkNewRecords(new_records); + checkNewRecords(new_records, zonename); } if (replace_comments) { ++++++ pdns.keyring ++++++ --- /var/tmp/diff_new_pack.F6esgr/_old 2021-11-10 21:47:24.279836462 +0100 +++ /var/tmp/diff_new_pack.F6esgr/_new 2021-11-10 21:47:24.279836462 +0100 @@ -1,199 +1,203 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: GPGTools - http://gpgtools.org -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 -0eieIaEbrIA069zUY6oym8P9hFaTfqHj7vaBiEGMv+cKGUTeH7Wm57UJKl7Y6CIy -JdiXANDa/NbJdaG0GWJlcnQgaHViZXJ0IDxhaHVAZHM5YS5ubD6IXwQTEQIAFwUC -PPZSpQULBwoDBAMVAwIDFgIBAheAABIJEBxe6ZDS5xV1B2VHUEcAAQEqtQCg5Hbr -CKDIjSpLUjFnwm4P6DCXJmMAoN/JWgQgqgdjrnb+vjnmx1kjB6zYtCViZXJ0IGh1 -YmVydCAoZm94KSA8aHViZXJ0QGZveC1pdC5jb20+iEkEMBECAAkFAlQP5NMCHSAA -CgkQHF7pkNLnFXVhTwCgvd9eXgbeIAqllH1I+hH2nsXk4/wAoJ7+7TMqB+Db+4yt -QRuCUNEuxXsHtCZiZXJ0IGh1YmVydCA8YmVydC5odWJlcnRAbmV0c2NvdXQuY29t -PohJBDARAgAJBQJUD+TyAh0gAAoJEBxe6ZDS5xV1oa4AoN25vnBEXPhe+Y9g2jIX -UrWIXAqDAKC8wukBa1aiAo1wFrey1IUXrRG/i7QzYmVydCBodWJlcnQgKGNvcnBv -cmF0ZSkgPGJlcnQuaHViZXJ0QG5ldGhlcmxhYnMubmw+iF8EExECABcFAkKMrMIF -CwcKAwQDFQMCAxYCAQIXgAASCRAcXumQ0ucVdQdlR1BHAAEBRq4AoOGYEW+xuB9e -Tyj3ziV+gvTw9MBCAJ9x4wINXzTfVj/Lz/VJ5W4h9PBRGbQxYmVydCBodWJlcnQg -KHBvd2VyZG5zKSA8YmVydC5odWJlcnRAcG93ZXJkbnMuY29tPohiBBMRAgAiBQJX -f0sKAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAcXumQ0ucVdQShAJ4p -C8UWNXclfrvq/SJp2mOwJmfsegCfRljBs4r0JXVsGWD2GIe3900xNPm5AQ0EPPZS -qBAEALwoVSNYkGJ4CkLRccXpceFL/tdAfx2iJ+Dm5Ni6ia23Oskvs2rajgZdKTO4 -zk0UWaeePT+1O9owKQltv2ys3XEDSZSUVexSHuRNamTX/OALCgR6qYXv+xcR2MqX -pJnLwImRtQeXJkAxFvnmyAaqzwaJTRWFI4A2jzGc9Da+caMjAAMGA/435JJ+oycD -EmT1BzLlRgU0JQkN/m+9FwpQVebjdFCCslse3UbWQ+77n/jam5coJ0ZbALBLoffY -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 -fw== -=Q/OZ +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 +QzksT2azZ83aADvc4/+Fg7VFYSzZHkp98NfyzUkiUzYi0I5Oy4KvyoXeS/CX9WtQ +GM1vjZAXXiD+ODJ0OvB2EsCUT6t4i9pWWh/+LnNtRWIVn8PJeQbCAO2wJlMxX28B +ABEBAAG0KFJlbWkgR2Fjb2duZSA8cmVtaS5nYWNvZ25lQHBvd2VyZG5zLmNvbT6J +AT0EEwEKACcFAlawcTICGwMFCRLMAwAFCwkIBwQFFQoJCAsFFgIDAQACHgECF4AA +CgkQogjtT4r1hEZ0zgf+Iy73sdDPkxOYi/xVJIvBB8o+uuPLDgh51Bx50vrJTBNm ++9YgLyycQpQyYyw+NyY+xS9Ibtizp8PuT0Ga4S8gdVhGtbQtLS7yJD7swlSTyOBR ++/gHoJgaxmDeueeB8tAv2ERfJjhp4C+fIa7piU4Iwe7wvgrw6dO9eFkBv0oHCqpO +I5CM/yHqdr493Qon3YfpCZGiv558yE9Xrojs6fMSwcolWwjnZW72KFXraryXKiIT +hwoJb9OOZWXAKfZD/aZv5BMxzN+D4ZB+kq0f7qHbITh+Kd1MdMBoMFG6Lg7x1LY5 +SvhgfHGF3UZ8tLb3RgWFDuwrBTcz6EQvArw/lWPA5bQtR2Fjb2duZSwgUmVtaSA8 +cmVtaS5nYWNvZ25lQG9wZW4teGNoYW5nZS5jb20+iQExBBMBAgAbBQJWOKQHAhsD +BAsJCAcGFQgCCQoLBQkSzAMAAAoJEKII7U+K9YRGzDAH/1ktPsroXqFq8QmeKmEK +PgI5WnpxUz0MKxAzYqI+oI0k/3gGkFtf/raxT88DawUnpwxOm8D3D3S+dZl4Pt9H +zcxy1qwTw7DKgZT0yL6QW0P21ao1dyZ1PCPHR33SpiJyUawiTNtYA06a0HanwX0h +yR4DOUxtvn1MaXSyAIQUZJ17ePk7hNu9gyX+oB8Zw7NaKkOpAMQtADSchLnxVyRn +hETdjrBbUsoDnFIh3l8FsjO+0Rn+94JEvfmwqH7YrjOIGykom5OAW1FQWSQrNvHw +5wLJiLLWZXVBmYCLstL1Hx9edw0yX5TfgiBhL0VMJPp6wyMGJFdKa/XmdJc/zhYc +Mye5AQ0EVjikBwEIAI69cRGYdcoJbM4vePhyzRXIET4ETZLYNr8Thn+uHQK3iby+ +Yg60tpaxTJJ4eQTbo+5yWdq+NDjkvdaB9apFZPr/QsqP98cAqQjj0ApIcx6bkFl6 +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 +OcsH +=rPsZ -----END PGP PUBLIC KEY BLOCK-----