48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
/*
|
|
Complete PowerDNS zone records
|
|
*/
|
|
|
|
-- This file control sum
|
|
SET vars.csum TO :'csum';
|
|
-- This zone copy hostname
|
|
SET vars.ns TO :'NSERVER';
|
|
|
|
DO $_$
|
|
DECLARE
|
|
v_domain text := 'dev.lan'; -- domain name
|
|
v_ns_admin text := 'admin.ns.dev.lan'; -- master DNS admin email
|
|
v_ip text := '127.0.0.1'; -- base ip
|
|
v_ip1 text := '127.0.1.1'; -- some another ip
|
|
v_ttl INTEGER := 60; -- 1 min
|
|
v_domain_id integer; -- internal domain id
|
|
v_soa text; -- zone SOA
|
|
BEGIN
|
|
v_domain_id := domain_id(v_domain);
|
|
|
|
-- check csum, do not run twice
|
|
IF csum_exists(v_domain_id) THEN
|
|
RAISE NOTICE 'Domain % does not changed. Skipping', v_domain;
|
|
RETURN;
|
|
END IF;
|
|
|
|
-- clear zone
|
|
DELETE FROM records WHERE domain_id = v_domain_id;
|
|
|
|
v_soa := soa_mk(v_domain_id, v_ns_admin);
|
|
|
|
-- all zone records are following here
|
|
INSERT INTO records (domain_id, name, ttl, type, prio, content) VALUES
|
|
(v_domain_id, v_domain, v_ttl, 'SOA', 0, v_soa)
|
|
, (v_domain_id, v_domain, v_ttl, 'NS', 0, 'ns.' || v_domain)
|
|
, (v_domain_id, v_domain, v_ttl, 'MX', 5, 'mail.' || v_domain)
|
|
, (v_domain_id, v_domain, v_ttl, 'TXT', 0, '"v=spf1 mx ~all"')
|
|
|
|
, (v_domain_id, v_domain, v_ttl, 'A', 0, v_ip)
|
|
, (v_domain_id, 'www.' || v_domain, v_ttl, 'A', 0, v_ip)
|
|
;
|
|
-- setup DNS-01 challenge for NS at v_ip1
|
|
CALL acme_insert(v_domain_id, 'front.' || v_domain, v_ip1, v_ttl);
|
|
|
|
END;
|
|
$_$;
|