summaryrefslogtreecommitdiff
path: root/eBones/usr.bin/rkinit/rkinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'eBones/usr.bin/rkinit/rkinit.c')
-rw-r--r--eBones/usr.bin/rkinit/rkinit.c216
1 files changed, 0 insertions, 216 deletions
diff --git a/eBones/usr.bin/rkinit/rkinit.c b/eBones/usr.bin/rkinit/rkinit.c
deleted file mode 100644
index 35a0eebfaa101..0000000000000
--- a/eBones/usr.bin/rkinit/rkinit.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * $Id: rkinit.c,v 1.1 1993/12/10 18:41:00 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinit/RCS/rkinit.c,v $
- * $Author: dglo $
- *
- * This is an rkinit client
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rkinit.c,v 1.1 1993/12/10 18:41:00 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <netdb.h>
-#include <pwd.h>
-#include <krb.h>
-#include <des.h>
-#include <com_err.h>
-
-#include <rkinit.h>
-#include <rkinit_err.h>
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifdef __STDC__
-static void usage(void)
-#else
-static void usage()
-#endif /* __STDC__ */
-{
- fprintf(stderr,"Usage: rkinit [host] options\n");
- fprintf(stderr,
- "Options: [-l username] [-k krb_realm] [-p principal] [-f tktfile]\n");
- fprintf(stderr, " [-t lifetime] [-h host] [-notimeout]\n");
- fprintf(stderr, "A host must be specified either with the -h option ");
- fprintf(stderr, "or as the first argument.\n");
-
- exit(1);
-}
-
-int
-#ifdef __STDC__
-main(int argc, char *argv[])
-#else
-main(argc, argv)
- int argc;
- char *argv[];
-#endif /* __STDC__ */
-{
- char *whoami; /* Name of this program */
-
- char principal[MAX_K_NAME_SZ]; /* Principal for which to get tickets */
- char *host = NULL; /* Remote host */
- char *username = 0; /* Username of owner of ticket */
- char r_krealm[REALM_SZ]; /* Kerberos realm of remote host */
- char aname[ANAME_SZ]; /* Aname of remote ticket file */
- char inst[INST_SZ]; /* Instance of remote ticket file */
- char realm[REALM_SZ]; /* Realm of remote ticket file */
- char *tktfilename = NULL; /* Name of ticket file on remote host */
- u_long lifetime = DEFAULT_TKT_LIFE; /* Lifetime of remote tickets */
- int timeout = TRUE; /* Should we time out? */
- rkinit_info info; /* Information needed by rkinit */
-
- struct passwd *localid; /* To determine local id */
-
- int status = 0; /* general error number */
-
- int i;
-
- bzero(r_krealm, sizeof(r_krealm));
- bzero(principal, sizeof(principal));
- bzero(aname, sizeof(aname));
- bzero(inst, sizeof(inst));
- bzero(realm, sizeof(realm));
-
- /* Parse commandline arguements. */
- if ((whoami = rindex(argv[0], '/')) == 0)
- whoami = argv[0];
- else
- whoami++;
-
- if (argc < 2) usage();
-
- if (argv[1][0] != '-') {
- host = argv[1];
- i = 2;
- }
- else
- i = 1;
-
- for (/* i initialized above */; i < argc; i++) {
- if (strcmp(argv[i], "-h") == NULL) {
- if (++i >= argc)
- usage();
- else
- host = argv[i];
- }
- else if (strcmp(argv[i], "-l") == NULL) {
- if (++i >= argc)
- usage();
- else
- username = argv[i];
- }
- else if (strcmp(argv[i], "-k") == NULL) {
- if (++i >= argc)
- usage();
- else
- strncpy(r_krealm, argv[i], sizeof(r_krealm) - 1);
- }
- else if (strcmp(argv[i], "-p") == NULL) {
- if (++i >= argc)
- usage();
- else
- strncpy(principal, argv[i], sizeof(principal) - 1);
- }
- else if (strcmp(argv[i], "-f") == NULL) {
- if (++i >= argc)
- usage();
- else
- tktfilename = argv[i];
- }
- else if (strcmp(argv[i], "-t") == NULL) {
- if (++i >= argc)
- usage();
- else {
- lifetime = atoi(argv[i])/5;
- if (lifetime == 0)
- lifetime = 1;
- else if (lifetime > 255)
- lifetime = 255;
- }
- }
- else if (strcmp(argv[i], "-notimeout") == NULL)
- timeout = FALSE;
- else
- usage();
- }
-
- if (host == NULL)
- usage();
-
- /* Initialize the realm of the remote host if necessary */
- if (r_krealm[0] == 0) {
- /*
- * Try to figure out the realm of the remote host. If the
- * remote host is unknown, don't worry about it; the library
- * will handle the error better and print a good error message.
- */
- struct hostent *hp;
- if ((hp = gethostbyname(host)))
- strcpy(r_krealm, krb_realmofhost(hp->h_name));
- }
-
- /* If no username was specified, use local id on client host */
- if (username == 0) {
- if ((localid = getpwuid(getuid())) == 0) {
- fprintf(stderr, "You can not be found in the password file.\n");
- exit(1);
- }
- username = localid->pw_name;
- }
-
- /* Find out who will go in the ticket file */
- if (! principal[0]) {
- if ((status = krb_get_tf_fullname(TKT_FILE, aname, inst, realm))
- != KSUCCESS) {
- /*
- * If user has no ticket file and principal was not specified,
- * we will try to get tickets for username@remote_realm
- */
- strcpy(aname, username);
- strcpy(realm, r_krealm);
- }
- }
- else {
- if ((status = kname_parse(aname, inst, realm, principal))
- != KSUCCESS) {
- fprintf(stderr, "%s\n", krb_err_txt[status]);
- exit(1);
- }
- if (strlen(realm) == 0) {
- if (krb_get_lrealm(realm, 1) != KSUCCESS)
- strcpy(realm, KRB_REALM);
- }
- }
-
- bzero((char *)&info, sizeof(info));
-
- strcpy(info.aname, aname);
- strcpy(info.inst, inst);
- strcpy(info.realm, realm);
- strcpy(info.sname, "krbtgt");
- strcpy(info.sinst, realm);
- strncpy(info.username, username, sizeof(info.username) - 1);
- if (tktfilename)
- strncpy(info.tktfilename, tktfilename, sizeof(info.tktfilename) - 1);
- info.lifetime = lifetime;
-
- if ((status = rkinit(host, r_krealm, &info, timeout))) {
- com_err(whoami, status, "while obtaining remote tickets:");
- fprintf(stderr, "%s\n", rkinit_errmsg(0));
- exit(1);
- }
-
- exit(0);
-}