RULI Publisher's description
RULI is a library built on top of an asynchronous DNS stub resolver.
RULI stands for Resolver User Layer Interface. It's a library built on top of an asynchronous DNS stub resolver. RULI provides an easy-to-use interface for querying DNS SRV resource records. The goal is to promote wide deployment of SRV-cognizant software. RULI aims to fully support SRV-related standards. There are bindings for PHP, Perl, Guile/Scheme, Java, and Lua. IPv6 is supported.
- Automatic handling of SRV logic
Given a tuple, RULI fetches the corresponding SRV records and performs the required logic on them, issuing a ready-to-use list of records in a convenient format -- tuples.
- Transparent alias handling
Under certain circumstances, the SRV logic demands address queries be used as last resort mechanism; in these cases, CNAME issues may rise and must be properly dealt with. RULI handles alias records (CNAMEs) transparently.
- Service-specific support
SRV logic may be affected by a service specification. For instance, SRV support for HTTP service requires special behavior to handle the port number in URIs. RULI currently obeys such HTTP requirement and is intended to implement support for other special cases as soon as they're defined.
As of version 0.25, RULI is fully able (1) to perform queries over IPv6 transport and (2) to fetch IN AAAA resource records. It's possible to disable IPv6 support if desired.
- Asynchronous event-based behavior
RULI's standard behavior is asynchronous. It's possible to handle many queries concurrently. This is designed for event-driven applications.
- Synchronous API
RULI provides a simpler API for synchronous (blocking) queries. It's easier to use, but blocking on name solving may not be acceptable for some applications. Also, multi-threaded applications are supposed to use the synchronous API, for thread-safety.
- Back-off to TCP mode
RULI automatically switches to TCP mode when resquested by the truncation bit of an UDP answer.
- No need for user-supplied input buffers
The underlying resolver used by RULI delivers answers in dynamic buffers of correct size. This avoids: (1) the need for user-provided buffers, (2) the application job of guessing/finding proper buffer sizes, (3) wasting memory.
- 8-bit clean domain names
RULI does not impose further restrictions on the valid characters for domain names. It's up to the application to build the query name and (later) to properly deal with characters returned in domain labels.
- Configurable round-robin retry of multiple recursive name servers
For server fail-over, RULI queries a list of name servers in a round-robin fashion. Each server is considered up to a specified number of retries.
- Explicit opaque state
RULI's state is stored under an opaque data structures explicitly allocated by the user. Thus a single program can manage multiple instances of the library simultaneously.
System Requirements:В· DNS recursive resolver
Program Release Status:
Program Install Support: Install Only