|
|
1.1 ! root 1: #line 1 "LOGIN.C" ! 2: ! 3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */ ! 4: ! 5: #include "sbbs.h" ! 6: #include "cmdshell.h" ! 7: ! 8: extern char qwklogon; ! 9: ! 10: int login(char *str, char *pw) ! 11: { ! 12: long useron_misc=useron.misc; ! 13: ! 14: useron.number=0; ! 15: if(node_dollars_per_call && noyes(text[AreYouSureQ])) ! 16: return(LOGIC_FALSE); ! 17: ! 18: if(str[0]=='*') { ! 19: memmove(str,str+1,strlen(str)); ! 20: qwklogon=1; } ! 21: else ! 22: qwklogon=0; ! 23: ! 24: if(!(node_misc&NM_NO_NUM) && isdigit(str[0])) { ! 25: useron.number=atoi(str); ! 26: getuserdat(&useron); ! 27: if(useron.number && useron.misc&(DELETED|INACTIVE)) ! 28: useron.number=0; } ! 29: ! 30: if(!useron.number) { ! 31: useron.number=matchuser(str); ! 32: if(!useron.number && (uchar)str[0]<0x7f && str[1] ! 33: && isalpha(str[0]) && strchr(str,SP) && node_misc&NM_LOGON_R) ! 34: useron.number=userdatdupe(0,U_NAME,LEN_NAME,str,0); ! 35: if(useron.number) { ! 36: getuserdat(&useron); ! 37: if(useron.number && useron.misc&(DELETED|INACTIVE)) ! 38: useron.number=0; } } ! 39: ! 40: if(!useron.number) { ! 41: if(node_misc&NM_LOGON_P) { ! 42: strcpy(useron.alias,str); ! 43: bputs(pw); ! 44: console|=CON_R_ECHOX; ! 45: if(!(sys_misc&SM_ECHO_PW)) ! 46: console|=CON_L_ECHOX; ! 47: getstr(str,LEN_PASS,K_UPPER|K_LOWPRIO); ! 48: console&=~(CON_R_ECHOX|CON_L_ECHOX); ! 49: bputs(text[InvalidLogon]); ! 50: sprintf(tmp,"(%04u) %-25s Password: '%s'" ! 51: ,0,useron.alias,str); ! 52: logline("+!",tmp); } ! 53: else { ! 54: bputs(text[UnknownUser]); ! 55: sprintf(tmp,"Unknown User '%s'",str); ! 56: logline("+!",tmp); } ! 57: useron.misc=useron_misc; ! 58: return(LOGIC_FALSE); } ! 59: ! 60: if(!online) { ! 61: useron.number=0; ! 62: return(LOGIC_FALSE); } ! 63: statline=0; ! 64: statusline(); ! 65: if((online==ON_REMOTE || sys_misc&SM_REQ_PW || node_misc&NM_SYSPW) ! 66: && (useron.pass[0] || REALSYSOP) ! 67: && (!node_dollars_per_call || sys_misc&SM_REQ_PW)) { ! 68: bputs(pw); ! 69: console|=CON_R_ECHOX; ! 70: if(!(sys_misc&SM_ECHO_PW)) ! 71: console|=CON_L_ECHOX; ! 72: getstr(str,LEN_PASS,K_UPPER|K_LOWPRIO); ! 73: console&=~(CON_R_ECHOX|CON_L_ECHOX); ! 74: if(!online) { ! 75: useron.number=0; ! 76: return(LOGIC_FALSE); } ! 77: if(strcmp(useron.pass,str)) { ! 78: bputs(text[InvalidLogon]); ! 79: sprintf(tmp,"(%04u) %-25s Password: '%s' Attempt: '%s'" ! 80: ,useron.number,useron.alias,useron.pass,str); ! 81: logline("+!",tmp); ! 82: useron.number=0; ! 83: useron.misc=useron_misc; ! 84: return(LOGIC_FALSE); } ! 85: if(REALSYSOP && !chksyspass(0)) { ! 86: bputs(text[InvalidLogon]); ! 87: useron.number=0; ! 88: useron.misc=useron_misc; ! 89: return(LOGIC_FALSE); } } ! 90: ! 91: return(LOGIC_TRUE); ! 92: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.