GANON04.MOD Ganon #223 @8857 Wed Mar 10 1993 10:08:27 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Mod Name Ä GANON04.MOD ³ ³ Author Ä Ganon ³ ³ Date Ä [o3/o9/i993] ³ ³ Difficulty Ä ÛÛ°°°°°°°°° [ Block Copy ] ³ ³ WWiV Version Ä Works Both On 4.21 And 4.22 ³ ³ Files Affected Ä LILO.C ³ ³ Discription Ä Add A Log On Menu ( MATRIX MENU ) ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ [ Step 1 ]ÍÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ BACK UP YOUR SOURCE!!! Now We Don't Have To Tell You This Every Time! [ Step 2 ]ÍÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Open Up LILO.C And Find void getcaller() And Replace It What You See Below void getuser() /* Starting Block Copying From Here Till I Say Stop */ { char s[81],s1[81],s2[81],s3[81],s4[5],*ss,sx1[21]; int i,ok,count,net_only,ch,ans,un,done; long l; FILE *f; thisuser.sysstatus &= (~sysstatus_ansi); net_only=1; if (syscfg.netlowtime!= syscfg.nethightime) { if (syscfg.nethightime>syscfg.netlowtime) { if ((timer()<=(syscfg.netlowtime*60.0)) || (timer()>=(syscfg.nethightime*60.0))) net_only=0; } else { if ((timer()<=(syscfg.netlowtime*60.0)) && (timer()>=(syscfg.nethightime*60.0))) net_only=0; } } else net_only=0; count=0; ok=0; checkit=1; okmacro=0; actsl=syscfg.newusersl; /* This next part is where the ansi checking is. I put it */ /* here so we can use color in the matrix. Then it also */ /* passes the CONNECT 9600 stuff also. This looks really nice */ /* with BBS's runing high speed modems. It works fine for non-*/ /* high speed boards as well though. */ if ((!net_only)) { ans=check_ansi(); if (ans>0) { thisuser.sysstatus |= sysstatus_ansi; /* this forces ansi if it */ thisuser.sysstatus |= sysstatus_color; /* is detected */ } printfile("CONNECT"); /* this is the first screen they see along*/ pausescr(); /* with the CONNECT info above. */ /* I simply made it a connect.msg and used*/ /* Qedit and used WWIV colors. You can */ /* use wwivedit too. I'll send mine so you*/ /* use it but edit it to say what you want*/ /* Do not allow this screen to clear the */ /* screen though or you defeat the purpose*/ done=1; do { outchr(12); printfile("MATRIX"); /* prints the matrix.ans/msg file */ /* having the following commands */ /* 1 Log on BBS */ /* 2 Newuser */ /* 3 Hang up... */ /* 4 Leave Feedback */ /* 5 Check access */ nl(); npr(" %s\r\n",times()); ansic(0); outstr(" Command : "); ch=onek("41253N"); switch(ch) { case '5': /* Check for access function */ usernum=0; ok=0; nl(); outstr(" NN: "); mpl(30); input (s1,64); usernum=finduser(s1); if (usernum>0) { read_user(usernum,&thisuser); read_qscn(usernum,qsc,0); actsl = syscfg.newusersl; ok=1; prt(1," Password: "); mpl(8); echo=0; input(s,8); if (strcmp(s,thisuser.pw)!=0) ok=0; if (ok) { nl(); /* My newuser sl is 10. If a user gets validated, they have a */ /* sl of 30. This checks to see that sl is HIGHER than 20. If */ /* so, then they are validated and it says so. change sl if you*/ /* need to */ if (thisuser.sl>=20) { nl(); pl("You Have Been Validated."); nl(); pl("Please Select '1' From The Menu And Logon Normal."); nl(); } else { nl(); pl("Sorry, You Have Not Been Validated Yet. Call Back Later"); nl(); } } else { ++thisuser.illegal; write_user(usernum,&thisuser); close_user(); nl(); pl("\7Illegal Access Check. (wrong password)\7"); nl(); sysoplog("User Tried Checking Access. Wrong Password"); usernum=0; } } pausescr(); break; case '4': /* leave feedback from matrix */ nl(); prt(0,"Your Name: "); input (s,30); strcpy(thisuser.name,s); usernum=0; strcpy(irt,"Matrix Feedback"); irt_name[0]=0; nl(); email(1,0,1,0); break; case '2': printfile("newuser1.msg"); prt(7,"Did You Read, And Do You Understand And Agree To These Terms?"); if (ny()) newuser(); ok=1; break; case '3': done=0; hangup=1; break; /* hangup */ /* Uncomment whichever one you want. If you want system password */ /* then uncomment that line, otherwise uncomment the other line */ case '1': done=0; break; /*case '1': done=0; systempassword(); break; */ /* password */ case 'N': done=0; break; /* for network */ } } while ((done==1) && (!hangup)); do { if (net_only) { pl("This time is reserved for net-mail ONLY."); pl("Please try calling back again later."); } else /* The NN:\b\b\b is for allowing the network to see a nn: */ /* prompt. A user will NEVER see it, but the net will */ /* The network sends the normal n n n n which is aborts */ /* the msg screens and pauses, and then at the matrix it */ /* passes a n and it goes to the prompt as if it hit 1 to */ /* log on. Then its sees the NN: and bingo.. no macros */ /* are needed at all. */ outstr("NN:\b\b\b NN: "); mpl(30); input(s,30); usernum=finduser(s); if ((net_only) && (usernum!=-2)) usernum=0; if (usernum>0) { read_user(usernum,&thisuser); read_qscn(usernum,qsc,0); actsl = syscfg.newusersl; topscreen(); ok=1; prt(0," Password: "); mpl(8); echo=0; input(s,8); if (strcmp(s,thisuser.pw)!=0) ok=0; if ((syscfg.sysconfig & sysconfig_free_phone)==0) { prt(0," Finish Phone # : ###-###-"); mpl(4); echo=0; input(s2,4); strcpy(s4,s2); if (strcmp(s2,&thisuser.phone[8])!=0) { ok=0; if ((strlen(s2)==4) && (s2[3]=='-')) { nl(); pl("!! Enter the LAST 4 DIGITS of your phone number ONLY !!"); nl(); } } } if ((thisuser.sl==255) && (incom) && (ok)) { outstr("SY: "); echo=0; input(s,20); if (strcmp(s,syscfg.systempw)!=0) ok=0; } echo=1; if (ok) { reset_act_sl(); changedsl(); } else { ++thisuser.illegal; write_user(usernum,&thisuser); close_user(); nl(); pl("\7ILLEGAL LOGON\7"); nl(); sprintf(s3,"### ILLEGAL LOGON for %s (%s) (PW=%s)", nam(&thisuser,usernum), ctim(timer()), s); sl1(0,s3); usernum=0; } } else if (usernum==-1) { printfile("LEGAL.MSG"); nl(); prt(0,"Did You Read, And Do You Understand And Agree To These Terms?"); if (ny()) { newuser(); ok=1; } { hangup=1; } } else if (usernum==0) { if (net_only) nl(); else pl("Unknown User."); } else if ((usernum==-2) || (usernum==-3) || (usernum==-4)) { if (incom) { save_status(); time(&l); s2[0]=0; switch(usernum) { case -2: sprintf(s2,"NETWORK /B%u /T%ld /F%u",modem_speed,l,modem_flag); run_external1(s2); break; case -3: sprintf(s2,"REMOTE /B%u /F%u",modem_speed,modem_flag); run_external1(s2); break; case -4: s[8]=0; if (s[0]) { sprintf(s2,"%s /B%u /F%u",s,modem_speed,modem_flag); sprintf(s3,"%sREMOTES.DAT",syscfg.datadir); f=fopen(s3,"rt"); if (f) { ok=0; while ((!ok) && (fgets(s3,80,f))) { ss=strchr(s3,'\n'); if (ss) *ss=0; if (stricmp(s3,s)==0) ok=1; } fclose(f); if (ok) { shrink_out(s2, -1, 0, 0, 1); run_external1(s2); } } } break; } l=status.qscanptr; get_status(); if (l!=status.qscanptr) { for (i=0; i0) && (thisuser.restrict & restrict_logon) && (strcmp(date(),thisuser.laston)==0) && (thisuser.ontoday>0)) { nl(); pl("Sorry, You Can Only Logon Once Per Day."); nl(); hangup=1; } } } /* STOP */ [ Step 3]ÍÍÄÄÄÄÄÄÄÄÄÄÄÄÄ Now Go Into Your Ansi Draw, And Make A Pre-Logon Menu, Which Should Have The Options Below That You See [1 1 0] 7Log On To BBS [1 2 0] 7Apply For Access [1 3 0] 7Hang Up [1 4 0] 7Send Feedback To SysOp [1 5 0] 7Check For Access Make However You Like It And Whatever Colors You Want And Name The File As MATRIX.ANS And Drop It In Your G-File Section. After That You Should Make Two Newuser Messages By Naming One NEWUSER1.MSG And NEWUSER.MSG And Again Putted In Your G-File Directory. NOTE: You Can Put Whatever You Like In The Newuser MSG Files, Something That You Would Like Your New Users To Know. Thats It. Enjoy! If You Encounter Any Problems With This Mod, Please Let Me Know. 1ÄÄÍÍ 7DARK WORLD BBS 1ÍÍÄÄ 2(8i8)Not-Even 7SysOp 6- 1Ganon 7ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1Blue Thunder BBS 7ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1TerraNET @1 7ù 1IceNET @8857 7ù 1WWIVnet @8861 7ù 1WWIVLink @188680