Better prompting.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@528 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -166,45 +166,59 @@ int
|
|||||||
login(char *host)
|
login(char *host)
|
||||||
{
|
{
|
||||||
char tmp[80];
|
char tmp[80];
|
||||||
|
char defaultpass[128];
|
||||||
char *user, *pass, *acct;
|
char *user, *pass, *acct;
|
||||||
int n, aflag = 0;
|
int n, aflag = 0;
|
||||||
|
|
||||||
|
char *myname = NULL;
|
||||||
|
struct passwd *pw = getpwuid(getuid());
|
||||||
|
if (pw != NULL)
|
||||||
|
myname = pw->pw_name;
|
||||||
|
|
||||||
user = pass = acct = 0;
|
user = pass = acct = 0;
|
||||||
|
|
||||||
|
|
||||||
if(do_klogin(host))
|
if(do_klogin(host))
|
||||||
printf("\n*** Using plaintext user and password ***\n\n");
|
printf("\n*** Using plaintext user and password ***\n\n");
|
||||||
else
|
else{
|
||||||
printf("Kerberos login successful.\n\n");
|
printf("Kerberos login successful.\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (ruserpass(host, &user, &pass, &acct) < 0) {
|
if (ruserpass(host, &user, &pass, &acct) < 0) {
|
||||||
code = -1;
|
code = -1;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
while (user == NULL) {
|
while (user == NULL) {
|
||||||
char *myname = NULL;
|
if (myname)
|
||||||
struct passwd *pp = getpwuid(getuid());
|
printf("Name (%s:%s): ", host, myname);
|
||||||
|
else
|
||||||
if (pp != NULL)
|
printf("Name (%s): ", host);
|
||||||
myname = pp->pw_name;
|
fgets(tmp, sizeof(tmp) - 1, stdin);
|
||||||
if (myname)
|
tmp[strlen(tmp) - 1] = '\0';
|
||||||
printf("Name (%s:%s): ", host, myname);
|
if (*tmp == '\0')
|
||||||
else
|
user = myname;
|
||||||
printf("Name (%s): ", host);
|
else
|
||||||
(void) fgets(tmp, sizeof(tmp) - 1, stdin);
|
user = tmp;
|
||||||
tmp[strlen(tmp) - 1] = '\0';
|
|
||||||
if (*tmp == '\0')
|
|
||||||
user = myname;
|
|
||||||
else
|
|
||||||
user = tmp;
|
|
||||||
}
|
}
|
||||||
strcpy(username, user);
|
strcpy(username, user);
|
||||||
n = command("USER %s", user);
|
n = command("USER %s", user);
|
||||||
if (n == CONTINUE) {
|
if (n == CONTINUE) {
|
||||||
if(auth_complete)
|
if(auth_complete)
|
||||||
pass = user;
|
pass = myname;
|
||||||
else if (pass == NULL) {
|
else if (pass == NULL) {
|
||||||
des_read_pw_string (tmp, sizeof(tmp), "Password:", 0);
|
char prompt[128];
|
||||||
pass = tmp;
|
if(myname &&
|
||||||
|
(!strcmp(user, "ftp") || !strcmp(user, "anonymous"))){
|
||||||
|
sprintf(defaultpass, "%s@%s", myname, mydomain+1);
|
||||||
|
sprintf(prompt, "Password (%s): ", defaultpass);
|
||||||
|
}else{
|
||||||
|
strcpy(defaultpass, "");
|
||||||
|
sprintf(prompt, "Password: ");
|
||||||
|
}
|
||||||
|
pass = defaultpass;
|
||||||
|
des_read_pw_string (tmp, sizeof(tmp), prompt, 0);
|
||||||
|
if(tmp[0])
|
||||||
|
pass = tmp;
|
||||||
}
|
}
|
||||||
n = command("PASS %s", pass);
|
n = command("PASS %s", pass);
|
||||||
}
|
}
|
||||||
@@ -229,6 +243,7 @@ login(char *host)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sec_set_protection_level();
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user