1: /*
2: * This program can be called via a remote shell command to find out if the
3: * hostname and address are properly recognized, if username lookup works,
4: * and (SysV only) if the TLI on top of IP heuristics work.
5: *
6: * Example: "rsh host /some/where/try-from".
7: *
8: * Diagnostics are reported through syslog(3) and redirected to stderr.
9: *
10: * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
11: */
12:
13: #ifndef lint
14: static char sccsid[] = "@(#) try-from.c 1.2 94/12/28 17:42:55";
15: #endif
16:
17: /* System libraries. */
18:
19: #include <sys/types.h>
20: #include <stdio.h>
21: #include <syslog.h>
22: #include <string.h>
23:
24: #ifdef TLI
25: #include <sys/tiuser.h>
26: #include <stropts.h>
27: #endif
28:
29: #ifndef STDIN_FILENO
30: #define STDIN_FILENO 0
31: #endif
32:
33: /* Local stuff. */
34:
35: #include "tcpd.h"
36:
37: int allow_severity = SEVERITY; /* run-time adjustable */
38: int deny_severity = LOG_WARNING; /* ditto */
39:
40: main(argc, argv)
41: int argc;
42: char **argv;
43: {
44: struct request_info request;
45: char buf[BUFSIZ];
46: char *cp;
47:
48: /*
49: * Simplify the process name, just like tcpd would.
50: */
51: if ((cp = strrchr(argv[0], '/')) != 0)
52: argv[0] = cp + 1;
53:
54: /*
55: * Turn on the "IP-underneath-TLI" detection heuristics.
56: */
57: #ifdef TLI
58: if (ioctl(0, I_FIND, "timod") == 0)
59: ioctl(0, I_PUSH, "timod");
60: #endif /* TLI */
61:
62: /*
63: * Look up the endpoint information.
64: */
65: request_init(&request, RQ_DAEMON, argv[0], RQ_FILE, STDIN_FILENO, 0);
66: (void) fromhost(&request);
67:
68: /*
69: * Show some results. Name and address information is looked up when we
70: * ask for it.
71: */
72:
73: #define EXPAND(str) percent_x(buf, sizeof(buf), str, &request)
74:
75: puts(EXPAND("client address (%%a): %a"));
76: puts(EXPAND("client hostname (%%n): %n"));
77: puts(EXPAND("client username (%%u): %u"));
78: puts(EXPAND("client info (%%c): %c"));
79: puts(EXPAND("server address (%%A): %A"));
80: puts(EXPAND("server hostname (%%N): %N"));
81: puts(EXPAND("server process (%%d): %d"));
82: puts(EXPAND("server info (%%s): %s"));
83:
84: return (0);
85: }
Defined functions
main
defined in line
40;
never used
Defined variables
Defined macros