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:
parent
c296d354b2
commit
a5e7aa3dd5
2 changed files with 18 additions and 3 deletions
|
@ -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
|
||||
-------------
|
||||
|
|
|
@ -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': [
|
||||
|
|
Reference in a new issue