1 # Copyright (C) 2003-2007, 2009-2011 Nominum, Inc.
3 # Permission to use, copy, modify, and distribute this software and its
4 # documentation for any purpose with or without fee is hereby granted,
5 # provided that the above copyright notice and this permission notice
6 # appear in all copies.
8 # THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
9 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
11 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
14 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 """DNS TTL conversion."""
20 class BadTTL(dns
.exception
.SyntaxError):
24 """Convert the text form of a TTL to an integer.
26 The BIND 8 units syntax for TTLs (e.g. '1w6d4h3m10s') is supported.
28 @param text: the textual TTL
30 @raises dns.ttl.BadTTL: the TTL is not well-formed
37 if not text
[0].isdigit():
48 total
+= current
* 604800L
50 total
+= current
* 86400L
52 total
+= current
* 3600L
54 total
+= current
* 60L
58 raise BadTTL("unknown unit '%s'" % c
)
61 raise BadTTL("trailing integer")
62 if total
< 0L or total
> 2147483647L:
63 raise BadTTL("TTL should be between 0 and 2^31 - 1 (inclusive)")