summaryrefslogtreecommitdiffstats
path: root/usr.bin/hesinfo
diff options
context:
space:
mode:
authornectar <nectar@FreeBSD.org>2000-09-06 18:16:48 +0000
committernectar <nectar@FreeBSD.org>2000-09-06 18:16:48 +0000
commit748554442d0ac4467fdac2ce9d42006588fd4481 (patch)
treeaed2ddbcac97f46f60ee9c2063a3345553f6a1ee /usr.bin/hesinfo
parent59ffb36b778f8e629622726f6bd32dfa4fda7e35 (diff)
downloadFreeBSD-src-748554442d0ac4467fdac2ce9d42006588fd4481.zip
FreeBSD-src-748554442d0ac4467fdac2ce9d42006588fd4481.tar.gz
Add nsswitch support. By creating an /etc/nsswitch.conf file, you can
configure FreeBSD so that various databases such as passwd and group can be looked up using flat files, NIS, or Hesiod. = Hesiod has been added to libc (see hesiod(3)). = A library routine for parsing nsswitch.conf and invoking callback functions as specified has been added to libc (see nsdispatch(3)). = The following C library functions have been modified to use nsdispatch: . getgrent, getgrnam, getgrgid . getpwent, getpwnam, getpwuid . getusershell . getaddrinfo . gethostbyname, gethostbyname2, gethostbyaddr . getnetbyname, getnetbyaddr . getipnodebyname, getipnodebyaddr, getnodebyname, getnodebyaddr = host.conf has been removed from src/etc. rc.network has been modified to warn that host.conf is no longer used at boot time. In addition, if there is a host.conf but no nsswitch.conf, the latter is created at boot time from the former. Obtained from: NetBSD
Diffstat (limited to 'usr.bin/hesinfo')
-rw-r--r--usr.bin/hesinfo/Makefile5
-rw-r--r--usr.bin/hesinfo/hesinfo.1226
-rw-r--r--usr.bin/hesinfo/hesinfo.c116
3 files changed, 347 insertions, 0 deletions
diff --git a/usr.bin/hesinfo/Makefile b/usr.bin/hesinfo/Makefile
new file mode 100644
index 0000000..870db28
--- /dev/null
+++ b/usr.bin/hesinfo/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+PROG= hesinfo
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/hesinfo/hesinfo.1 b/usr.bin/hesinfo/hesinfo.1
new file mode 100644
index 0000000..b43910c
--- /dev/null
+++ b/usr.bin/hesinfo/hesinfo.1
@@ -0,0 +1,226 @@
+.\" $NetBSD: hesinfo.1,v 1.1 1999/01/25 22:45:55 lukem Exp $
+.\" $FreeBSD$
+.\"
+.\" from: #Id: hesinfo.1,v 1.9 1996/11/07 01:57:12 ghudson Exp #
+.\"
+.\" Copyright 1987, 1996 by the Massachusetts Institute of Technology.
+.\"
+.\" Permission to use, copy, modify, and distribute this
+.\" software and its documentation for any purpose and without
+.\" fee is hereby granted, provided that the above copyright
+.\" notice appear in all copies and that both that copyright
+.\" notice and this permission notice appear in supporting
+.\" documentation, and that the name of M.I.T. not be used in
+.\" advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission.
+.\" M.I.T. makes no representations about the suitability of
+.\" this software for any purpose. It is provided "as is"
+.\" without express or implied warranty.
+.TH HESINFO 1 "27 October 1996"
+.FM mit
+.SH NAME
+hesinfo \- find out what is stored in the Hesiod database
+.SH SYNOPSIS
+.nf
+hesinfo \fI[-bl]\fR \fIHesiodName\fR \fIHesiodNameType\fR
+.SH DESCRIPTION
+.I hesinfo
+takes two arguments, a name to be resolved and a string, known
+as a HesiodNameType. It then prints the information returned by
+the Hesiod nameserver.
+.PP
+The value returned by
+.B hesinfo
+is of the type
+.I HesiodNameType.
+.PP
+.I hesinfo
+understands the following options:
+.TP
+.B -l
+Selects long format.
+.TP
+.B -b
+Prints the fully-qualified string passed to the nameserver.
+
+.PP
+.SS VALID Hesiod_Names
+The following types of identifiers may be used in the
+.I HesiodName
+argument to
+.B hesinfo.
+These values will be resolved by accessing the
+.B hesiod
+database.
+
+.TP
+.B \<username>
+the 8-character-or-less string used to identify users or classes
+(e.g. joeuser, root, 1.00, etc).
+Used with the
+.I Hesiod_Name_Types
+.BR passwd,
+.BR pobox,
+and
+.BR filsys.
+
+
+.TP
+.B \<uid>
+the id number assigned to a user.
+
+.TP
+.B \<groupid>
+the id number assigned to a group.
+
+.TP
+.B \<groupname>
+a name identifying a unique group.
+
+.TP
+.B \<file-system-name>
+the name of an athena file system.
+
+.TP
+.B \<rvd server>:<pack>
+the name of an rvd's server and pack seperated by a colon.
+
+.TP
+.B \<nfs server>:<partition>
+the name of an nfs server and its partition seperated by a colon.
+
+.TP
+.B \<workstation-name>
+the machine name of an Athena workstation (e.g. E40-343-3).
+
+.TP
+.B \<service-name>
+name of an Athena service (e.g. Zephyr).
+
+.TP
+.B \<service-type>
+name of Unix service (valid entries are defined in /etc/services).
+
+.TP
+.B \<printer-name>
+name of a printer.
+
+.TP
+.B \<printer-cluster-name>
+name of an Athena print cluster.
+
+.TP
+.B \<foo>
+some
+.B hesinfo
+calls (e.g.
+.B prclusterlist
+) do not require a specific
+.I HesiodName
+argument. However, you must include a dummy string (e.g. 'foo') for
+.B hesinfo
+ to work properly.
+
+
+
+
+.PP
+.SS VALID Hesiod_Name_Types
+The following symbols are valid substitutions for the
+.I HesiodNameType
+argument to
+.B hesinfo.
+
+.TP
+.B \ passwd
+returns string suitable for inclusion in
+.I /etc/passwd,
+searching with
+.B <username>.
+
+.TP
+.B \ pobox
+returns information on the pobox assigned to the user specified by
+.I HesiodName,
+searching with
+.B <username>.
+
+
+.TP
+.B \ uid
+returns string suitable for inclusion in
+.I /etc/passwd,
+searching with
+.B <uid>.
+
+.TP
+.B \ gid
+returns string suitable for inclusion in
+.I /etc/group,
+searching with
+.B <groupid>.
+
+.TP
+.B \ group
+returns string suitable for inclusion in
+.I /etc/group,
+searching with
+.B <groupname>.
+
+.TP
+.B \ grplist
+returns subgroups included in superset
+defined by
+.B <groupname>.
+
+.TP
+.B \ filsys
+returns file system type, export point, server, mount mode, and import point
+for the following valid
+.I HesiodNames
+(see above)
+.B - <file system name>, <username>, <rvd server>:<pack>,
+.B and <nfs server>:<partition>
+
+.TP
+.B \ cluster
+returns information about the local cluster the workstation, specified by
+.B <workstation name>.
+Included is information about the local file and print servers. This
+information is accesses by
+.B clusterinfo
+at boot time.
+
+.TP
+.B \ sloc
+returns network name of service host for
+.B <service-name>.
+
+.TP
+.B \ service
+returns Internet protocol type and protocol service port for
+.B <service-type>.
+
+.TP
+.B \ pcap
+returns a valid entry for /etc/printcap for
+.B <printer-name>.
+
+.TP
+.B \ prcluserlist
+returns a list of print clusters.
+
+.TP
+.B \ prcluster
+returns a list of printers in a cluster specified by
+.B <printer-cluster-name>.
+
+.SH FILES
+/etc/hesiod.conf
+.SH "SEE ALSO"
+`Hesiod - Project Athena Technical Plan -- Name Service', named(8), hesiod(3)
+.SH AUTHOR
+Steve Dyer, IBM/Project Athena
+.br
+Copyright 1987, 1988, 1996 by the Massachusetts Institute of Technology.
+.br
diff --git a/usr.bin/hesinfo/hesinfo.c b/usr.bin/hesinfo/hesinfo.c
new file mode 100644
index 0000000..d0d9c2d
--- /dev/null
+++ b/usr.bin/hesinfo/hesinfo.c
@@ -0,0 +1,116 @@
+/* $NetBSD: hesinfo.c,v 1.1 1999/01/25 22:45:55 lukem Exp $ */
+
+/* Copyright 1988, 1996 by the Massachusetts Institute of Technology.
+ *
+ * Permission to use, copy, modify, and distribute this
+ * software and its documentation for any purpose and without
+ * fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in
+ * advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ */
+
+/* This file is a simple driver for the Hesiod library. */
+
+
+#include <sys/cdefs.h>
+#ifndef lint
+static char rcsid[] =
+ "$FreeBSD$";
+#endif /* not lint */
+
+#include <err.h>
+#include <errno.h>
+#include <hesiod.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int main __P((int, char **));
+extern char *__progname;
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ char **list, **p, *bindname, *name, *type;
+ int lflag = 0, errflg = 0, bflag = 0, c;
+ void *context;
+
+ while ((c = getopt(argc, argv, "lb")) != -1) {
+ switch (c) {
+ case 'l':
+ lflag = 1;
+ break;
+ case 'b':
+ bflag = 1;
+ break;
+ default:
+ errflg++;
+ break;
+ }
+ }
+ if (argc - optind != 2 || errflg) {
+ fprintf(stderr, "Usage: %s [-bl] name type\n", __progname);
+ fprintf(stderr, "\t-l selects long format\n");
+ fprintf(stderr, "\t-b also does hes_to_bind conversion\n");
+ exit(2);
+ }
+ name = argv[optind];
+ type = argv[optind + 1];
+
+ if (hesiod_init(&context) < 0) {
+ if (errno == ENOEXEC)
+ warnx(
+ "hesiod_init: Invalid Hesiod configuration file.");
+ else
+ warn("hesiod_init");
+ }
+ /* Display bind name if requested. */
+ if (bflag) {
+ if (lflag)
+ printf("hes_to_bind(%s, %s) expands to\n", name, type);
+ bindname = hesiod_to_bind(context, name, type);
+ if (!bindname) {
+ if (lflag)
+ printf("nothing\n");
+ if (errno == ENOENT)
+ warnx("hesiod_to_bind: Unknown rhs-extension.");
+ else
+ warn("hesiod_to_bind");
+ exit(1);
+ }
+ printf("%s\n", bindname);
+ free(bindname);
+ if (lflag)
+ printf("which ");
+ }
+ if (lflag)
+ printf("resolves to\n");
+
+ /* Do the hesiod resolve and check for errors. */
+ list = hesiod_resolve(context, name, type);
+ if (!list) {
+ if (lflag)
+ printf("nothing\n");
+ if (errno == ENOENT)
+ warnx("hesiod_resolve: Hesiod name not found.");
+ else
+ warn("hesiod_resolve");
+ exit(1);
+ }
+ /* Display the results. */
+ for (p = list; *p; p++)
+ printf("%s\n", *p);
+
+ hesiod_free_list(context, list);
+ hesiod_end(context);
+ exit(0);
+}
OpenPOWER on IntegriCloud