Add support for timestamp based serial.

Some people uses the current timestamp for the DNS serial number. The
current implementation detects timestamps between September 9 2001 and
March 17 2030. Implementing it has reduced the date based serial
detection to a range between 1900 and 2999, however it should not be a
problem at all because DNS didn't existed before 1900 and, if it still
exists in 3000, there is literally almost 1000 years to fix the problem.
This commit is contained in:
Rodolphe Breard 2015-11-16 12:17:30 +01:00
parent c296d354b2
commit a5e7aa3dd5
2 changed files with 18 additions and 3 deletions

View file

@ -31,18 +31,25 @@ Patterns
In order to be detected, the DNS serial number must match one the following pattern:
* `YYYYMMDDXX ; serial`
- `YYYY` is the year (4 digits);
- `YYYY` is the year (4 digits, must start by either `19` or `2`);
- `MM` is the month (2 digits);
- `DD` is the day (2 digits);
- `XX` is any non-negative number (1 or more digits);
- the word `serial` is not case-sensitive;
- there can be any number of blanks on each sides of the semicolon.
* `SSSSSSSSSS ; serial`
- `SSSSSSSSSS` is the UNIX tiemstamp (10 digits, must start by `1`);
- the word `serial` is not case-sensitive;
- there can be any number of blanks on each sides of the semicolon.
* `XX ; serial`
- `XX` is any non-negative number (1 or more digits);
- the word `serial` is not case-sensitive;
- there can be any number of blanks on each sides of the semicolon.
According to those patterns, only dates between 1900 and 2999 will be detected; however this should not be a problem at all. Most importantly, only timestamps between September 9 2001 and March 17 2030 will be detected.
Configuration
-------------

View file

@ -20,12 +20,20 @@ endif
if !exists('g:dnsserial_patterns')
let g:dnsserial_patterns = [
\{
\'regex': '\(\d\{8}\)\(\d\+\)\s*;\s*\cserial',
\'regex': '\(19\d\{2}\|20\d\{2}\)\([01]\d\)\([0-3]\d\)\(\d\+\)\s*;\s*\cserial',
\'matching': [
\{'type': 'date', 'fmt': '%Y%m%d'},
\{'type': 'date', 'fmt': '%Y'},
\{'type': 'date', 'fmt': '%m'},
\{'type': 'date', 'fmt': '%d'},
\{'type': 'integer', 'padding': 2, 'date_reset': 1}
\]
\},
\{
\'regex': '\(1\d\{9}\)\s*;\s*\cserial',
\'matching': [
\{'type': 'date', 'fmt': '%s'},
\]
\},
\{
\'regex': '\(\d\+\)\s*;\s*\cserial',
\'matching': [