﻿__group__	ticket	summary	component	version	type	owner	status	created	_changetime	_description	_reporter
	63	Location dropdown on record edit page incorrectly influenced by current group			defect		new	2016-12-07T13:41:18-05:00	2016-12-07T13:41:18-05:00	"When editing a record by way of the new record search widget, the Location dropdown does not correctly reflect the locations available.  Correct behaviour should be either ""locations based on domain/revzone's parent group"" or ""logged in user's parent group""."	Kris Deugau
	22	Allow calling various components from another site as a wrapper	component1		enhancement	somebody	new	2011-11-10T17:55:26-05:00	2011-11-10T17:55:26-05:00	"- Add custid field to domains (and/or groups?) to more easily
  allow retrieving a restricted set of domains
- For production use, turn on ""no errors on template var doesn't exist""
  for HTML::Template (See also #7)
- Config knob to allow loading complete custom templates (fall back to stock ones) (See #7)
"	Kris Deugau
	57	Add uber-searchbox to find ALL TEH THINGZ			enhancement		new	2014-10-07T14:00:19-04:00	2016-06-23T17:11:41-04:00	Importing large blocks of records from existing tinydns flatfiles may split up logical groupings of records making them much harder to find.  Add a search box that can track down an arbitrary thing (mainly records but why not search zones, groups and all the other things?)	Kris Deugau
	66	Add DNSSEC support			enhancement		new	2017-06-02T18:09:12-04:00	2017-06-02T18:09:12-04:00	"Trust chains are becoming increasingly required for all kinds of things, which generally means DNSSEC.

Add full-zone or partial-zone signing.  May need extra magic to properly implement in the context of tinydns."	Kris Deugau
	68	Add batch processing/import			enhancement		new	2018-08-29T18:32:27-04:00	2018-08-29T18:32:27-04:00	"For things like Office365 migrations, where multiple records need to be added, and where those have sometimes been requested on a schedule combined with other changes, a batch command system would speed up entry quite a lot.\

Commands should include things like:

removemx (clears all MX records as of command issue)
importBIND (import BIND-formatted records, possibly just in a block with an Obvious(TM) terminator string?)"	Kris Deugau
	30	Security review (ongoing)			task		new	2011-11-30T12:35:10-05:00	2016-03-04T15:07:55-05:00	"XSS/input validation:
Reading back on VegaDNS' history I poked into the CVE issues reported with VegaDNS 0.9.9.1 and 1.1.4.  I realized the same message-reporting vulnerability would bite here.

Access scoping:
Check to make sure a user can't access any entity outside of their group tree"	Kris Deugau
	25	(Ongoing) Clean up messes in the error log			defect		new	2011-11-22T15:10:10-05:00	2016-06-23T16:37:24-04:00	Reminder-to-self to check the error log for messy leftovers occasionally	Kris Deugau
	2	Make optional/non-core bits really optional	component1		enhancement	somebody	new	2011-11-10T17:22:40-05:00	2011-11-10T17:22:40-05:00	"Wrap non-critical bits like Net::Whois::Raw so that they don't just cause a failure, and the bits that need them are only available if they're installed.
"	Kris Deugau
	6	Multicolumn sort in various lists	component1		enhancement	somebody	new	2011-11-10T17:30:34-05:00	2011-11-10T17:30:34-05:00	Allow sorting on multiple columns in various lists.  See NicTool for functional example.  Also see Windows Explorer and/or most mail clients for alternate method.	Kris Deugau
	7	Support alternate templates	component1		enhancement	somebody	new	2011-11-10T17:32:39-05:00	2011-11-10T17:32:39-05:00	On the theme of admin-customization, load a user-provided template if one exists.	Kris Deugau
	8	Support multiple sets of default records per group	component1		enhancement	somebody	new	2011-11-10T17:33:26-05:00	2011-11-10T17:33:26-05:00		Kris Deugau
	21	Allow logging to be directed to various places	component1		enhancement	somebody	new	2011-11-10T17:52:28-05:00	2012-03-21T17:21:38-04:00	"Targets should at least include ""native"" (current log), ""file"", or ""syslog""."	Kris Deugau
	23	Add SPF assistant along with official support for the SPF RR type			enhancement		new	2011-11-21T17:31:18-05:00	2011-11-21T17:31:18-05:00		Kris Deugau
	24	Extend SOA handling to support different serial number arrangements			enhancement		new	2011-11-21T17:35:22-05:00	2019-08-13T17:49:57-04:00		Kris Deugau
	28	Add email notification hook			enhancement		new	2011-11-28T17:18:34-05:00	2011-11-28T17:18:34-05:00	"Vega notifies on new domain;  probably had planned notices elsewhere.

IPDB has notices for all sorts of things;  target that hook structure."	Kris Deugau
	34	Add some magic to automagically initialize and auto-upgrade the DB			enhancement		new	2011-12-21T16:27:15-05:00	2016-06-27T17:45:25-04:00	"If the dbversion value retrieved from the misc table is lower than the software version, we need to upgrade one or more tables since higher versions may have features that depend on extra columns or new tables.

If nothing is retrieved, initialize the database.

If the dbversion is higher, (or at least, in the same major version), we're good since the DB changes should be limited to adding columns or tables, and the SQL *should*, by now, be smart enough to not care about the extra columns."	Kris Deugau
	39	Support multiple DNS server clusters from a single UI instance			enhancement		new	2012-07-10T16:07:38-04:00	2012-07-10T16:07:38-04:00	"(Split from #10 since they're going to need different flags/columns/whatever).

Tag a zone for a specific server or set of servers, by name or by group.  See Nictool for concept example."	Kris Deugau
	40	Add support for scheduled changes			enhancement		new	2012-07-26T17:56:40-04:00	2013-12-10T16:22:11-05:00	"Changes can be set to go live at a certain time, so that overworked systems/NOC staff can set things up and have a good nights' sleep instead of getting up at Way Freaking Early O'clock to make changes outside of normal office hours.

tinydns implements this more or less natively via automatic TTL adjustment of a record formatted to indicate an expiry time, and automatic publication of a record with a starting time."	Kris Deugau
	42	Add command-line change tool			enhancement		new	2012-09-17T17:11:09-04:00	2012-09-17T17:11:09-04:00		Kris Deugau
	44	Add HTML mode for RPC calls			enhancement		new	2012-10-11T15:43:00-04:00	2016-08-19T16:28:00-04:00	"As an alternative to embedding the core codebase in something else, and having to keep the database connection info up to date and the database accessible, allow a remote system to request pages or page fragments from the RPC listener.

It may be better to just create a separate listener to handle the HTML bits."	Kris Deugau
	46	"Add ""shadow domains"""			enhancement		new	2012-11-01T17:59:23-04:00	2012-11-01T17:59:23-04:00	Shadow domains inherit all host records (except A+PTR/AAAA+PTR) from the parent and cannot be independently changed.  Essentially, on export, a shadow domain will retrieve records for the parent, and s/pdomain/sdomain/ on the host parts of all records.	Kris Deugau
	48	Online help			enhancement		new	2013-08-15T12:23:51-04:00	2013-10-29T13:10:50-04:00	Add new CGI for context-sensitive online help.  Primarily as a container for eg the template reference.	Kris Deugau
	49	Investigate online help options			enhancement		new	2013-09-26T15:33:38-04:00	2013-09-26T15:33:38-04:00	"Full help system should be separate pages including (partial) screenshots.

Some elements could be squashed into tooltips - investigate CSS-only tooltips."	Kris Deugau
	52	Add hook(s) for more notifications			enhancement		new	2014-03-25T15:23:14-04:00	2017-06-12T17:07:38-04:00	"- domain's root or www IP changing from <known in-house hosting IP or range> to elsewhere
- domain's MX record(s) changing from <standard in-house host(s)> to elsewhere

Needs:
- place to store the ""known"" values (link to default records?  should support multiple default record sets pretty trivially, related to #8)"	Kris Deugau
	54	Add a configuration knob for record validation strictness			enhancement		new	2014-04-30T17:45:50-04:00	2014-04-30T17:45:50-04:00	"Consider adding a configuration knob for record validation.

Three basic modes:
 - ""strict"":  pre- ~ r606 behaviour;  only logically useful types are allowed in the relevant zones (ie, A, CNAME, MX, and SRV records are only allowed in forward zones, PTR records are only allowed in reverse zones)
 - ""relaxed"":  behaviour completed as of ~ r630;  all real record types are allowed in all live zones, and in default records.  Note that some combinations are allowed through as ""valid"" because there is no sane way to actually test them for any kind of correctness.  IP values are still normalized and converted to or from .arpa names in many cases.
 - ""open"":  Validate for form and pray the user has a clue."	Kris Deugau
	55	Extend record management to permit CNAMEs to be handled as the root domain			enhancement		new	2014-08-01T17:20:37-04:00	2025-09-15T10:30:54-04:00	"Bulk, high-availability hosting is increasingly relying on CNAMEs for spreading the load, fault tolerance, and easy migration of a site from one underlying system to another.

DNS, strictly speaking, does not support a CNAME on the domain name itself, so DNSAdmin has had restrictions added to prevent this foot-shooting.

However, this means you still have to hack something up to redirect web requests for the root domain to www.<domain>.

Cloudflare recently introduced a feature in their DNS management that replaces a CNAME on the root domain with the underlying A record data on the fly:

http://blog.cloudflare.com/introducing-cname-flattening-rfc-compliant-cnames-at-a-domains-root

This requires patching the DNS server software, so it's not likely to show up elsewhere any time soon.

However, with a management tool like this, there's little reason not to push the automatic conversion to an A record up a layer, and do it on export from the database to the live DNS records."	Kris Deugau
	56	Simplify creating records from BIND-style third-party info			enhancement		new	2014-08-25T16:34:43-04:00	2014-08-25T16:34:43-04:00	"Add a widget somewhere to take a BIND-style DNS entry and add the record as if someone split up the pieces and entered them in the right spaces on the normal ""add record"" form."	Kris Deugau
	59	Add batch wrapper for RPC			enhancement		new	2015-01-23T13:40:49-05:00	2015-01-23T13:42:39-05:00	"XMLRPC is sometimes inexplicably slow, even with FastCGI.  Add a wrapper sub to accept a whole series of RPC commands in one connection.

This will likely be more help in development (where running normal CGI mode allows changes between each request to take effect)."	Kris Deugau
	61	"Add ""record change attic"" for easier reversion of changes"			enhancement		new	2016-03-17T09:45:59-04:00	2016-03-17T09:45:59-04:00	"Rather than just logging the old record as-is, copy the old record to an ""attic"" so old data can be retrieved easily.

Also consider linking to the log to match up changes with a particular record.

Should probably read up on VCS concepts before trying to implement this..."	Kris Deugau
	64	Add RPC search capability			enhancement		new	2016-12-21T17:21:43-05:00	2016-12-21T17:34:10-05:00	"As per [[https://secure.deepnet.cx/trac/ipdb/ticket/56|IPDB ticket #56]], it may be useful to automatically find dangling ""related"" DNS records to be able to do something with them.

This requires an RPC-exposed search capability."	Kris Deugau
	65	Add check for subdomain-as-new-zone			enhancement		new	2017-05-26T11:19:51-04:00	2017-05-26T11:19:51-04:00	"Sometimes a whole new zone is added when a simple, single record in an existing zone is all that's really needed.  Add a check for ""is this zone part of any existing zone?"" on zone adds."	Kris Deugau
	67	Add session ID to logging table			enhancement		new	2018-01-25T09:51:55-05:00	2018-01-25T09:51:55-05:00	"For more accurate tracking in the log, add a field for the session ID.  The action can then be more narrowly tracked to a specific login in the event of multiple logins.

Logins should also log the remote IP."	Kris Deugau
	71	"Add ""associated records"""			enhancement		new	2019-07-09T10:07:08-04:00	2019-07-09T10:07:08-04:00	"Importing tinydns flatfiles may break the logical association between records that have been hand-maintained beside each other in the flatfile.

Add a table or field in the records table to link ""related"" records (IE, records pointing to the same IP).  This will also help clean up parts of the IPDB callouts when such records are deleted."	Kris Deugau
	72	Tighten CNAME validation to block cases that fail various validators			enhancement		new	2019-08-30T12:59:00-04:00	2026-03-06T11:33:21-05:00	"Currently CNAMEs may be created in parallel with existing records.  This can cause validation failures in external DNSSEC signing tools or lookup failures when the records are published.

Add checks for parallel records with options to:
- warn and continue
- suggest/coerce-to ALIAS (root domain only)
- fail with error
- remove the parallel record(s)"	Kris Deugau
	45	Ponder shuffling (X)HTML flavour			task		new	2012-10-12T13:03:53-04:00	2013-10-29T13:12:39-04:00	As per links in IPDB ticket [https://secure.deepnet.cx/trac/ipdb/ticket/3#comment:7 #3], consider switching to HTML4.01 or HTML5.	Kris Deugau
	51	Convert session/cookie/etc handling to a third-party framework			task		new	2014-02-12T18:00:07-05:00	2014-02-12T18:00:07-05:00	"With all of the bizarre things seen happening with sessions, it may be better to just let someone else handle the subtleties of setting cookies and storing and expiring sessions.  Consider moving to as light-weight a web framework as can be found (Dancer seems promising, maybe).

This is a big change, so targeted for a potential v2.0."	Kris Deugau
	62	Merge getFooCount and getFooList subs			task		new	2016-06-23T15:53:13-04:00	2017-06-12T18:15:58-04:00	"The ...Count() and ...List() subs are getting increasingly complex, with ever-growing sets of requirements, limits, and hairy SQL.

Rather than hand-duplicate changes in two places, try merging the two, with a ""count"" flag to pick whether we do ""SELECT count(*) ..."" or ""SELECT fielda,fieldb...."".

This is more complex in part, but it will *reduce* overall complexity by removing duplication of complicated conditionals, limits, and SQL fragments."	Kris Deugau
	27	Propagate all form settings on failed adds			defect		new	2011-11-25T11:52:21-05:00	2011-11-25T11:52:21-05:00	"Domain and reverse zone adds (probably others as well) do not propagate all form entries.

Known failures are group selection and ""make active"" checkbox."	Kris Deugau
	31	Track down and squash strange character in searchsubs			defect		new	2011-12-01T14:51:15-05:00	2011-12-01T14:58:18-05:00	"$webvar{searchsubs} is legitimately set from two form elements, so that ""turn it off"" can be detected.

This apparently results in a strange character between the defined 'n' of the hidden form field and the 'y' for the checkbox:

{{{n�y}}}

nedit converts this to {{{\ufffdy}}}.

hexdump -C reports:
{{{
00000000  27 ef bf bd 79 27 0a                              |'...y'.|
}}}

This makes it troublesome to properly strip extra glop.

The current workaround will result in any glop maliciously or accidentally added to searchsubs that contains a 'y' or 'n' causing it to be enabled.  This is suboptimal but mostly just annoying."	Kris Deugau
	3	Add record type editor	component1		enhancement	somebody	new	2011-11-10T17:23:53-05:00	2011-11-10T17:23:53-05:00	"At least to edit which types are available for creation.  Should only allow types that are ""known"" in some way."	Kris Deugau
	4	Object-ify the record types	component1		enhancement	somebody	new	2011-11-10T17:25:35-05:00	2011-11-10T17:25:35-05:00	"Convert records into objects, so that a simple plugin system would allow user-written support for uncommon types, or even custom types that (ab)use the RFC-defined ""private use"" types"	Kris Deugau
	5	Show immediate-parent group in domain record list	component1		enhancement	somebody	new	2011-11-10T17:27:59-05:00	2011-11-10T17:27:59-05:00		Kris Deugau
	13	"Add an ""eat-my-data"" option"	component1		enhancement	somebody	new	2011-11-10T17:43:23-05:00	2011-11-10T17:45:24-05:00	"Or at least, an option to toggle the ""Do you really want to delete <x>?"" pages."	Kris Deugau
	14	"Add a ""back to <parent>"" link in log for domain"	component1		enhancement	somebody	new	2011-11-10T17:46:23-05:00	2011-11-10T17:46:23-05:00		Kris Deugau
	15	Add subgroup count to group list	component1		enhancement	somebody	new	2011-11-10T17:46:37-05:00	2011-11-10T17:46:37-05:00		Kris Deugau
	16	Add links into log listing in users, domains, groups listings	component1		enhancement	somebody	new	2011-11-10T17:47:17-05:00	2016-06-23T16:57:56-04:00	"May not be practical/useful.

Different concept than #17/#60;  this is a new column in the domain/user/etc list."	Kris Deugau
	19	Log security violations separately	component1		enhancement	somebody	new	2011-11-10T17:50:50-05:00	2011-11-10T17:50:50-05:00		Kris Deugau
	20	Don't log failures immediately	component1		enhancement	somebody	new	2011-11-10T17:51:41-05:00	2011-11-10T17:51:41-05:00	"Instead of logging failures alongside everything else, only log when a fail-counter for that action has passed a threshold.  Track the fail count in the session.
"	Kris Deugau
	29	Change user-edit page to show all custom permissions checked when type is superuser?			enhancement		new	2011-11-28T17:19:04-05:00	2011-11-28T17:19:04-05:00	"(As VegaDNS does)

Arguably this is the right thing to do, since the superuser status forcibly overrides any other permission setting for the user.  Vega doesn't even seem to store actual permissions for uid 1."	Kris Deugau
	36	Access control - long term			enhancement		new	2012-04-03T14:00:19-04:00	2012-04-03T14:00:19-04:00	"Add an ACL field to each entity, consisting of comma-separated [ug]:[id] sets to indicate (extra?) permissions on who can see or manipulate this entity.

For each user, also include a segment (or field?) to indicate a baseline ""UI visibility"" level (group, domain, possible actions, etc)"	Kris Deugau
	41	"Add support for ""lockable"" record edits"			enhancement		new	2012-07-31T12:56:03-04:00	2012-07-31T12:56:03-04:00	"Locking (advisory or otherwise) will help prevent multiple concurrent changes from getting done badly and ending up publishing wrong data.

Concept:  On clicking to edit, a token is pushed to an advisory table and flag is set in the session.

If the record is updated, the token is tagged for clearing in <n> seconds (60?  can't be too short) after the event (to prevent unlock-update races) - other sessions can see the update time and show a warning with the ""new original"" record vs their new update.

If some other action is taken, the session flag and advisory token are cleared so other clients don't block."	Kris Deugau
	58	New pseudotype: Subdomain MX			enhancement		new	2014-12-18T10:04:43-05:00	2014-12-18T10:04:43-05:00	Takes a subdomain spec and a target IP.  Creates an A and MX record	Kris Deugau
	11	OOPify: Convert DNSDB.pm to full object model	component1		task	somebody	new	2011-11-10T17:40:50-05:00	2013-03-19T17:47:41-04:00	May not bother.	Kris Deugau
	12	Convert data storage to single-table (ish) structure	component1		task	somebody	new	2011-11-10T17:42:31-05:00	2011-11-10T17:42:31-05:00	Store users, groups, records, and domains/zones all in the same table.  Advantage:  Every entity has a unique ID, which will be far easier to do scope checks on.	Kris Deugau
	37	POD-ify the docucomments in DNSDB.pm			task		new	2012-05-02T15:00:18-04:00	2012-05-02T15:00:18-04:00	On the off chance someone wants to create their own UI tool(S), publicly-available calls in DNSDB.pm should be documented in a way that's easy to find.  The basics are in the docucomments at the top of each sub, but these should be converted to POD for pod2* conversion to man page or HTML as API documents.	Kris Deugau
1.4.0	69	Investigate duplicate records on zone creation via RPC		1.4.0	defect		new	2018-11-05T10:13:33-05:00	2018-11-05T10:13:33-05:00	In a live instance, duplicate NS records were created when multiple /24 reverse zones were created via RPC from an IPDB instance.  This is just a nuisance but may be a symptom of a deeper problem, and there may also be duplicate SOA records in the underlying DB which are not exposed in the UI.	Kris Deugau
1.4.0	70	Add bulk zone data export		1.4.0	enhancement		new	2018-12-19T10:32:52-05:00	2018-12-19T10:32:52-05:00	"Add a bulk zone data export option, possibly to the existing bulk changes widget.

May need to be integrated with ideas for more fine-grained grouping (eg customer ID)."	Kris Deugau
	80	Settle on a method to find internal libraries			task		new	2022-04-05T18:27:20-04:00	2026-03-19T12:36:07-04:00	"With recent-ish Perl releases, ""."" was justifiably removed from @INC.

This used to mostly work to keep scripts with library modules working when plonked down on some arbitrary path, but wasn't entirely reliable.

Strictly hardcoding a path works fine for any one given installation, but doesn't work well for code expected to be portable or easily moved elsewhere within a single system.

Some searching led to FindBin, applied in r797.  However, after encountering a tainting issue with that fix, further searching led to https://www.perlmonks.org/?node_id=585299 and https://www.perlmonks.org/?node_id=41213, pretty clearly indicating that while FindBin basically worked, it a) did a lot of unnecessary work and b) largely succeeded by accident.

The second link led to the ""scriptname"" module, however on closer inspection it checks the script name for a handful of file extensions - which doesn't include several used by DNSAdmin.  Also, this code is expected to run on some Truly Ancient(TM) systems on which it would be a pain to get said module properly installed."	Kris Deugau
	88	Build test suite			task		new	2025-12-24T12:21:28-05:00	2026-02-20T15:27:33-05:00		Kris Deugau
	76	Edge case glitch publishing A+PTR records when one zone is disabled			defect		new	2021-11-18T18:08:38-05:00	2021-11-19T16:10:04-05:00	While hand-importing a reverse zone to update its record list with specialized template records, I found an edge case issue exporting the A+PTR and A+PTR template records as seen from the associated forward zone.	Kris Deugau
	77	Deleting a CIDR by RPC sometimes misses records			defect		new	2021-12-07T17:53:26-05:00	2022-03-30T14:48:24-04:00	A couple of cases have come up on a live production instance where RPC deletes of reverse records by CIDR did not catch all required records.	Kris Deugau
	75	Investigate duplicate record creation on mouse bounce or accidental manual refresh			enhancement		new	2021-10-19T18:05:17-04:00	2021-10-19T18:05:17-04:00	"While auditing a live record set multiple cases of duplicate entry records were found.  Several were likely due to mouse bounce causing double submission due to identical timestamps;  some were more likely accidental refresh.

Investigate a session hash/flag on new records to prevent duplicates.  This should NOT break the use-case of ""submit, back, tweak, submit variant"" as that's a far faster way of adding multiple similar records than going around the whole ""Add record"" loop."	Kris Deugau
	82	"Extend record template system to support on-the-fly versions of the ""group default"" records"			enhancement		new	2023-03-09T16:38:33-05:00	2023-03-09T16:38:33-05:00	"A lot of the DNS data is boilerplate duplicated between zones.  Add a system to add record groups based on the ""group default"" record sets - eg, NS records, mail record set."	Kris Deugau
	83	Bulk delete by checkbox			enhancement		new	2023-05-11T09:50:01-04:00	2023-05-11T09:50:01-04:00	Add checkboxes for delete for faster bulk-delete of records	Kris Deugau
	85	"Add ""RETURNING [foo]_id"" to addFoo() subs"			enhancement		new	2025-05-22T16:29:53-04:00	2025-05-22T16:29:53-04:00	"To match r884, extend all addFoo() subs to return the ID of the newly created entity.

This should probably be exposed in the XMLRPC API as well."	Kris Deugau
	86	Add management of secondary DNS zones			enhancement		new	2025-08-08T15:43:19-04:00	2025-08-28T17:39:21-04:00	"Minimal:  Add/remove zones
Moderate:  Allow viewing content of zone, by realtime import for display
Full:  Store secondary zone data in the DB, updated on viewing, and allow local override of records"	Kris Deugau
	78	Ensure all relevant zones get a serial bump on A+PTR modification			task		new	2022-03-22T13:15:35-04:00	2022-03-22T13:15:35-04:00	When updating an A+PTR, make sure that both gaining and losing zones on all sides get an SOA serial bump.  This may be as many as four zones (although usually no more than three, since hostname likely rarely changes TLD - A+PTR changing same hostname to new IP should be far more common)	Kris Deugau
	84	Clamp TTLs on export for RRsets			task		new	2023-07-26T17:10:55-04:00	2023-07-26T17:10:55-04:00	"Per updates in https://www.rfc-editor.org/rfc/rfc2181#section-5.2, multiple records for the same FQDN and type must have the same TTL.  Clients must either discard mismatched records pending fresh lookup from a (more) authoritative server, or (if that was THE authoritative server) clamp TTLs to the lowest in the set.

Since this is required, we should watch for this both on data entry and on data export.

This also seems to be an underlying requirement for DNSSEC as well, as same-name-same-type records are grouped together for signing."	Kris Deugau
	73	Extend template records to cover the full range of BIND's $GENERATE macro			enhancement		new	2020-09-04T10:56:09-04:00	2020-09-04T10:56:09-04:00	As per eg https://www.zytrax.com/books/dns/ch8/generate.html, BIND's $GENERATE macro can have an offset from a count.  It also supports stepping (ie only generate every n'th record [pair]).	Kris Deugau
	81	Convert SERIAL to IDENTITY			enhancement		new	2022-04-28T10:18:52-04:00	2022-04-28T10:18:52-04:00	"Apparently the Postgres SERIAL ""type"" is a bit of a hack, and is deprecated (although likely not going to be removed entirely for quite a long time).

See https://www.2ndquadrant.com/en/blog/postgresql-10-identity-columns/ for discussion and notes on its more SQL-standard replacement and converting to said replacement.

This ticket is a reminder to look into this conversion Someday(TM) when Postgres versions <10 are very thoroughly not in use any more."	Kris Deugau
	87	Merge subs with same functions on different tables?			enhancement		new	2025-08-13T15:35:28-04:00	2025-08-13T15:35:28-04:00	"Look into how hairy it would be to merge various sets of separate subs that do substantially the same thing except with a scattering of different validation conditions and often acting on separate tables.

First example at hand: addDomain/addRDNS/addSecondaryZone"	Kris Deugau
	89	Enhance AXFR zones with shadow delta			enhancement		new	2026-03-30T13:07:40-04:00	2026-03-30T13:07:40-04:00	"For a secondary zone, store a local delta to modify zone data as it passes through.

Would need to skip DNSSEC-signed zone."	Kris Deugau
	74	Review and anonymous-ize nested subs			task		new	2020-11-09T18:21:51-05:00	2020-11-09T18:21:51-05:00	"See eg https://www.perlmonks.org/bare/?node_id=137292 and https://stackoverflow.com/questions/4048248/variable-foo-will-not-stay-shared-warning-error-in-perl-while-calling-subrout, and a live instance of this error fixed in r804.

Nested subs are, more or less, technically just subs that happen to have been defined inside another sub, and as such have limited (and potentially buggy) access to their nominal parent's local variables.

Review each one in detail to ensure clear data passing and caller scope.  Optionally convert to anonymous subs Just To Make Sure."	Kris Deugau
	79	Remove support for storing raw .arpa names			task		new	2022-03-24T13:40:40-04:00	2022-03-24T13:40:40-04:00	"Many reverse zone operations rely on IP address voodoo, which we really want to use the native Postgres operators for.

Storing raw .arpa names was supported initially to simplify import/display operations, but they don't work with CIDR operators.  Supporting both has just added complexity anyway, instead of just applying them on export or display as needed.

Check everything that may touch these names and make sure they get converted to standard CIDR or bare-IP notations."	Kris Deugau
