diff options
Diffstat (limited to 'src/org/xbill/DNS/Options.java')
-rw-r--r-- | src/org/xbill/DNS/Options.java | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/Options.java b/src/org/xbill/DNS/Options.java new file mode 100644 index 0000000..2f1dae3 --- /dev/null +++ b/src/org/xbill/DNS/Options.java @@ -0,0 +1,123 @@ +// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) + +package org.xbill.DNS; + +import java.util.*; + +/** + * Boolean options:<BR> + * bindttl - Print TTLs in BIND format<BR> + * multiline - Print records in multiline format<BR> + * noprintin - Don't print the class of a record if it's IN<BR> + * verbose - Turn on general debugging statements<BR> + * verbosemsg - Print all messages sent or received by SimpleResolver<BR> + * verbosecompression - Print messages related to name compression<BR> + * verbosesec - Print messages related to signature verification<BR> + * verbosecache - Print messages related to cache lookups<BR> + * <BR> + * Valued options:<BR> + * tsigfudge=n - Sets the default TSIG fudge value (in seconds)<BR> + * sig0validity=n - Sets the default SIG(0) validity period (in seconds)<BR> + * + * @author Brian Wellington + */ + +public final class Options { + +private static Map table; + +static { + try { + refresh(); + } + catch (SecurityException e) { + } +} + +private +Options() {} + +public static void +refresh() { + String s = System.getProperty("dnsjava.options"); + if (s != null) { + StringTokenizer st = new StringTokenizer(s, ","); + while (st.hasMoreTokens()) { + String token = st.nextToken(); + int index = token.indexOf('='); + if (index == -1) + set(token); + else { + String option = token.substring(0, index); + String value = token.substring(index + 1); + set(option, value); + } + } + } +} + +/** Clears all defined options */ +public static void +clear() { + table = null; +} + +/** Sets an option to "true" */ +public static void +set(String option) { + if (table == null) + table = new HashMap(); + table.put(option.toLowerCase(), "true"); +} + +/** Sets an option to the the supplied value */ +public static void +set(String option, String value) { + if (table == null) + table = new HashMap(); + table.put(option.toLowerCase(), value.toLowerCase()); +} + +/** Removes an option */ +public static void +unset(String option) { + if (table == null) + return; + table.remove(option.toLowerCase()); +} + +/** Checks if an option is defined */ +public static boolean +check(String option) { + if (table == null) + return false; + return (table.get(option.toLowerCase()) != null); +} + +/** Returns the value of an option */ +public static String +value(String option) { + if (table == null) + return null; + return ((String)table.get(option.toLowerCase())); +} + +/** + * Returns the value of an option as an integer, or -1 if not defined. + */ +public static int +intValue(String option) { + String s = value(option); + if (s != null) { + try { + int val = Integer.parseInt(s); + if (val > 0) + return (val); + } + catch (NumberFormatException e) { + } + } + return (-1); +} + +} |