home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume39 / tcp_wrappers / part03 / try-from.c < prev   
C/C++ Source or Header  |  1993-09-29  |  2KB  |  78 lines

  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.1 93/09/23 22:03:07";
  15. #endif
  16.  
  17. /* System libraries. */
  18.  
  19. #include <sys/types.h>
  20. #include <stdio.h>
  21. #include <syslog.h>
  22.  
  23. #ifdef TLI
  24. #include <sys/tiuser.h>
  25. #include <stropts.h>
  26. #endif
  27.  
  28. /* Local stuff. */
  29.  
  30. #include "log_tcp.h"
  31.  
  32. main(argc, argv)
  33. int     argc;
  34. char  **argv;
  35. {
  36.     struct client_info client;
  37.     char    buf[BUFSIZ];
  38.  
  39. #ifdef LOG_MAIL
  40.     (void) openlog(argv[0], LOG_PID, FACILITY);
  41. #else
  42.     (void) openlog(argv[0], LOG_PID);
  43. #endif
  44.  
  45.     /*
  46.      * Turn on the "IP-underneath-TLI" detection heuristics.
  47.      */
  48. #ifdef TLI
  49.     if (ioctl(0, I_FIND, "timod") == 0)
  50.     ioctl(0, I_PUSH, "timod");
  51. #endif                        /* TLI */
  52.  
  53.     /*
  54.      * Look up the remote hostname and address.
  55.      */
  56.     (void) fromhost(&client);
  57.  
  58.     /*
  59.      * Perform remote username lookups when possible.
  60.      */
  61.     if (client.user[0] == 0 && RFC931_POSSIBLE(&client))
  62.     client.user = rfc931(client.rmt_sin, client.our_sin);
  63.  
  64.     /*
  65.      * Show some results.
  66.      */
  67.  
  68. #define EXPAND_X(str) \
  69.     (percent_x(buf, sizeof(buf), str, (char *) 0, &client, 0), buf)
  70.  
  71.     printf("%s %s\n", "address  (%a):", EXPAND_X("%a"));
  72.     printf("%s %s\n", "hostname (%h):", EXPAND_X("%h"));
  73.     printf("%s %s\n", "username (%u):", EXPAND_X("%u"));
  74.     printf("%s %s\n", "hostsinfo(%c):", EXPAND_X("%c"));
  75.  
  76.     return (0);
  77. }
  78.