Annotation of sbbs/sbbs2/login.c, revision 1.1.1.2

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.