| 1 | Hesiod is a simple string lookup service built on top of the Domain Name System. Conceptually, the service translates a pair of strings (the "name" and "type") into a set of result strings. This lookup is done very simply; a DNS lookup is done for name.type.ns.athena.mit.edu and the strings in the resulting TXT records are returned. |
| 2 | |
| 3 | Hesiod is used in several places in Debathena: |
| 4 | * Retrieving a user's entries in the passwd and group databases |
| 5 | * Determining which mail system they're using and if IMAP, which server to speak to |
| 6 | * Translating a locker name to an AFS path, including the user's homedir |
| 7 | * Determining a workstation's "cluster" information, including whether or not the workstation is designated as a "public" cluster machine, whether it pulls from the production APT repo or the development/proposed repos |
| 8 | * Determining service information (port/protocol pairs) |
| 9 | * Determining servers for a specific service |
| 10 | |
| 11 | Hesiod may, in some cases, be used to select a default printer for a specific workstation. This information is ignored in the public cluster environment. |
| 12 | |
| 13 | Hesiod can be queried with the `hesinfo` command. The `hes` command in the `consult` locker takes a Hesiod name and iterates over all possible Hesiod types. |
| 14 | |