version 1.1, 1995/10/18 08:46:00 |
version 1.2, 1995/12/16 22:20:34 |
|
|
#include <kerberosIV/des.h> |
#include <kerberosIV/des.h> |
#include <kerberosIV/krb.h> |
#include <kerberosIV/krb.h> |
|
|
#include "krb.h" |
|
|
|
CREDENTIALS cred; |
CREDENTIALS cred; |
Key_schedule schedule; |
Key_schedule schedule; |
int use_kerberos = 1, doencrypt; |
int use_kerberos = 1, doencrypt; |
|
|
case 'l': |
case 'l': |
user = optarg; |
user = optarg; |
break; |
break; |
#ifdef CRYPT |
|
#ifdef KERBEROS |
#ifdef KERBEROS |
case 'x': |
case 'x': |
doencrypt = 1; |
doencrypt = 1; |
des_set_key(cred.session, schedule); |
des_set_key(&cred.session, schedule); |
break; |
break; |
#endif |
#endif |
#endif |
|
case '?': |
case '?': |
default: |
default: |
usage(); |
usage(); |
|
|
if (dest_realm == NULL) |
if (dest_realm == NULL) |
dest_realm = krb_realmofhost(host); |
dest_realm = krb_realmofhost(host); |
|
|
#ifdef CRYPT |
|
if (doencrypt) |
if (doencrypt) |
rem = krcmd_mutual(&host, sp->s_port, user, term, 0, |
rem = krcmd_mutual(&host, sp->s_port, user, term, 0, |
dest_realm, &cred, schedule); |
dest_realm, &cred, schedule); |
else |
else |
#endif /* CRYPT */ |
|
rem = krcmd(&host, sp->s_port, user, term, 0, |
rem = krcmd(&host, sp->s_port, user, term, 0, |
dest_realm); |
dest_realm); |
if (rem < 0) { |
if (rem < 0) { |
|
|
goto try_connect; |
goto try_connect; |
} |
} |
} else { |
} else { |
#ifdef CRYPT |
|
if (doencrypt) { |
if (doencrypt) { |
(void)fprintf(stderr, |
(void)fprintf(stderr, |
"rlogin: the -x flag requires Kerberos authentication.\n"); |
"rlogin: the -x flag requires Kerberos authentication.\n"); |
exit(1); |
exit(1); |
} |
} |
#endif /* CRYPT */ |
|
rem = rcmd(&host, sp->s_port, pw->pw_name, user, term, 0); |
rem = rcmd(&host, sp->s_port, pw->pw_name, user, term, 0); |
} |
} |
#else |
#else |
|
|
continue; |
continue; |
} |
} |
if (c != escapechar) |
if (c != escapechar) |
#ifdef CRYPT |
|
#ifdef KERBEROS |
#ifdef KERBEROS |
if (doencrypt) |
if (doencrypt) |
(void)des_write(rem, |
(void)des_write(rem, |
(char *)&escapechar, 1); |
(char *)&escapechar, 1); |
else |
else |
#endif |
#endif |
#endif |
|
(void)write(rem, &escapechar, 1); |
(void)write(rem, &escapechar, 1); |
} |
} |
|
|
#ifdef CRYPT |
|
#ifdef KERBEROS |
#ifdef KERBEROS |
if (doencrypt) { |
if (doencrypt) { |
if (des_write(rem, &c, 1) == 0) { |
if (des_write(rem, &c, 1) == 0) { |
|
|
} |
} |
} else |
} else |
#endif |
#endif |
#endif |
|
if (write(rem, &c, 1) == 0) { |
if (write(rem, &c, 1) == 0) { |
msg("line gone"); |
msg("line gone"); |
break; |
break; |
|
|
wp->ws_xpixel = htons(winsize.ws_xpixel); |
wp->ws_xpixel = htons(winsize.ws_xpixel); |
wp->ws_ypixel = htons(winsize.ws_ypixel); |
wp->ws_ypixel = htons(winsize.ws_ypixel); |
|
|
#ifdef CRYPT |
|
#ifdef KERBEROS |
#ifdef KERBEROS |
if(doencrypt) |
if(doencrypt) |
(void)des_write(rem, obuf, sizeof(obuf)); |
(void)des_write(rem, obuf, sizeof(obuf)); |
else |
else |
#endif |
#endif |
#endif |
|
(void)write(rem, obuf, sizeof(obuf)); |
(void)write(rem, obuf, sizeof(obuf)); |
} |
} |
|
|
|
|
rcvcnt = 0; |
rcvcnt = 0; |
rcvstate = READING; |
rcvstate = READING; |
|
|
#ifdef CRYPT |
|
#ifdef KERBEROS |
#ifdef KERBEROS |
if (doencrypt) |
if (doencrypt) |
rcvcnt = des_read(rem, rcvbuf, sizeof(rcvbuf)); |
rcvcnt = des_read(rem, rcvbuf, sizeof(rcvbuf)); |
else |
else |
#endif |
#endif |
#endif |
|
rcvcnt = read(rem, rcvbuf, sizeof (rcvbuf)); |
rcvcnt = read(rem, rcvbuf, sizeof (rcvbuf)); |
if (rcvcnt == 0) |
if (rcvcnt == 0) |
return (0); |
return (0); |
|
|
(void)fprintf(stderr, |
(void)fprintf(stderr, |
"usage: rlogin [ -%s]%s[-e char] [ -l username ] host\n", |
"usage: rlogin [ -%s]%s[-e char] [ -l username ] host\n", |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
"8EKLx", " [-k realm] "); |
"8EKLx", " [-k realm] "); |
#else |
|
"8EKL", " [-k realm] "); |
|
#endif |
|
#else |
#else |
"8EL", " "); |
"8EL", " "); |
#endif |
#endif |