|
|
1.1 ! root 1: #include <u.h> ! 2: #include <libc.h> ! 3: #include <auth.h> ! 4: #include <../boot/boot.h> ! 5: ! 6: char password[NAMELEN]; ! 7: ! 8: char *homsg = "can't set user name or key; please reboot"; ! 9: ! 10: /* ! 11: * get/set user name and password. verify password with auth server. ! 12: */ ! 13: void ! 14: userpasswd(int islocal, Method *mp) ! 15: { ! 16: int fd; ! 17: char *msg; ! 18: char hostkey[DESKEYLEN]; ! 19: ! 20: if(*username == 0 || strcmp(username, "none") == 0){ ! 21: strcpy(username, "none"); ! 22: outin(cpuflag, "user", username, sizeof(username)); ! 23: } ! 24: fd = -1; ! 25: while(strcmp(username, "none") != 0){ ! 26: getpasswd(password, sizeof password); ! 27: passtokey(hostkey, password); ! 28: fd = -1; ! 29: if(islocal) ! 30: break; ! 31: msg = checkkey(mp, username, hostkey); ! 32: if(msg == 0) ! 33: break; ! 34: fprint(2, "?%s\n", msg); ! 35: outin(cpuflag, "user", username, sizeof(username)); ! 36: } ! 37: if(fd > 0) ! 38: close(fd); ! 39: ! 40: /* set host's key */ ! 41: if(writefile("#c/key", hostkey, DESKEYLEN) < 0) ! 42: fatal(homsg); ! 43: ! 44: /* set host's owner (and uid of current process) */ ! 45: if(writefile("#c/hostowner", username, strlen(username)) < 0) ! 46: fatal(homsg); ! 47: close(fd); ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.