|
|
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); }
1.1.1.2 ! root 77: if(stricmp(useron.pass,str)) {
1.1 root 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.