home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / WWIVMODS / MODSUNKN.ZIP / ECLBCK10.MOD < prev    next >
Text File  |  1990-08-05  |  14KB  |  378 lines

  1. MODNET 9/10 -- Enhanced Callback
  2. A large mod by T. Badd
  3. ═════════════════════════════════════════════════════════════════════════════
  4. T Badd #1 @8750
  5. Sun Mar 25 15:58:32 1990
  6.  
  7.                          ╓────────────────────────────╖
  8.                          ║   Enhanced Auto-Callback   ║
  9.                          ║    Validation Mod v1.0     ║
  10.                          ╙────────────────────────────╜
  11.  
  12.                        ┌─────[ Modification  Info ]─────┐
  13.                        │                                │
  14.                        │ Filename:  ECLBCK10.MOD (.ZIP) │
  15.                        │                                │
  16.                        │ Difficulty Level:   Beginner   │
  17.                        │                   ->Novice  <- │
  18.                        │                     Advanced   │
  19.                        │                     Expert     │
  20.                        │                                │
  21.                        │    Approx. Time: 20 minutes    │
  22.                        └────────────────────────────────┘
  23.  
  24. A while back, there was a mod posted on the Modsnet by a person named
  25. Carpenter #38 @3452. It was an Auto-Callback Validation mod. I was happy
  26. to see that someone had finally written such a beast so my board could work
  27. more like PCBored (groan!). When I started to add the mod into my source,
  28. I found several things that I really didn't like about it...particularly
  29. the fact that it used a batch file to store the user's validation info.
  30. So, I set out to make this mod a little cleaner, and removed the batch
  31. file portion of the code. While removing this, quite a bit of the code
  32. was changed as well.
  33.  
  34. I give full credit for the "meat" of the code to Carpenter. Without his
  35. initial mod, I still wouldn't have a working auto-callback function on
  36. my system.
  37.  
  38. The system will first check for area code. If it is a local caller, it will
  39. ask them if they would like to be auto-validated. If the user decides they
  40. would like to be validated with the Auto-Callback function, the system will:
  41.  
  42. [1] - Get user's modem number.
  43.       Aborts on 0 (Operator) after 3 attempts for correct number.
  44.       Aborts on 911 after 3 attempts for correct number.
  45.       Aborts on 411 after 3 attempts for correct number.
  46.  
  47. [2] - BBS will disconnect.
  48.       Writes to Sysop log that BBS is attempting to autovalidate
  49.       user at modem number.
  50.  
  51. [3] - BBS calls user back at specified modem number.
  52.  
  53. [4] - Upon connection, BBS will ask user to re-enter password.
  54.  
  55. [5] - If password is incorrect, it will immediately drop carrier, and
  56.       recycle BBS.
  57.  
  58. [6] - If password is correct, it will write information to sysop log,
  59.       update user's SL and DSL to specified level, and put validated
  60.       modem number in user's Note.
  61.  
  62. [7] - BBS Resumes normal login process. User is still asked for validation
  63.       feedback so you can find out more about the person.
  64.  
  65.  
  66. Pretty simple, huh? I thought so! Well, here's the mod. Be sure and pay
  67. attention to the Legend below.
  68.  
  69.  ┌──────────────────────┐
  70.  │     L E G E N D      │
  71.  │ ** existing code     │
  72.  │ ++ add code          │
  73.  │ -- delete code       │
  74.  │ += change existing   │
  75.  └──────────────────────┘
  76.  
  77. ┌─────────┐
  78. │ STEP 1: │
  79. └─────────┘
  80. Make a backup copy of your file, NEWUSER.C. This is the only file that
  81. this mod affects...so you have no excuses not to make another copy in
  82. case something screws up and doesn't work!
  83.  
  84. ┌─────────┐
  85. │ STEP 2: │
  86. │         └───────┐
  87. │ FILE: NEWUSER.C │
  88. └─────────────────┘
  89. At the top, in the external declarations, modify the code indicated:
  90.  
  91. ** extern configrec syscfg;
  92. += extern int hangup,helpl;            /* added helpl */
  93. ** extern char ctypes[NUM_CTYPES][18];
  94.  
  95. ┌─────────┐
  96. │ STEP 3: │
  97. │         └───────┐
  98. │ FILE: NEWUSER.C │
  99. │                 └────────┐
  100. │ FUNCTION: void newuser() │
  101. └──────────────────────────┘
  102. At top of the function, make the following modifications:
  103.  
  104. **void newuser()
  105. **{
  106. **  int i,ok;
  107. +=  char s[81],s1[81],s2[81],ch;    /* added s2[81] */
  108. **  userrec u;
  109. **  userrec ur;
  110. **  long l1,l2;
  111.  
  112. --  sprintf(s,"*** NEW USER %s   %s    %s",date(),times(),curspeed);
  113. --  sl1(0,"");
  114. --  sl1(0,s);     /* moving these lines to make for a cleaner sysop log */
  115. **  if (status.users>=syscfg.maxusers) {
  116.  
  117. ┌─────────┐
  118. │ STEP 4: │
  119. └─────────┘
  120. Further on down:
  121.  
  122. **        case '8': input_screensize(); break;
  123. **        case '9': input_pw(); break;
  124. **        case 'A': input_street(); break;     /* will only exist if */
  125. **        case 'B': input_citystate(); break;  /* you have added the */
  126. **        case 'C': input_zip(); break;        /* FROM mod.          */
  127. **      }
  128. **    } while ((!ok) && (!hangup));
  129.  
  130. ++    sprintf(s,"==# NEW USER - %s / %s / %s / %s",thisuser.name,
  131. ++              date(),times(),curspeed);
  132. ++    sl1(0,"");        /* Gives you a little more info, and positions */
  133. ++    sl1(0,s);         /* in a better place for the sysop log.        */
  134.  
  135. ++    /* Auto phone Validation mod */
  136.  
  137. ++    strcpy(s1,"Normal-val");
  138. ++    if ((thisuser.phone[0]!='8') || (thisuser.phone[1]!='1')
  139. ++         ||(thisuser.phone[2]!='7'))   /* Replace the 8,1,& 7 with your */
  140. ++     ok=0;                             /* area code's three digits.     */
  141. ++    else {
  142. ++      nl();
  143. ++      helpl=49;     /* See Step 5 */
  144. ++      printfile("CALLBACK.TXT");nl();    /* See Step 7 */
  145. ++      outstr("Register via Auto-Phone? ");
  146. ++      if (yn()) {
  147. ++        sysoplog("-+ Chose to be registered via Auto-Phone Callback. ");
  148. ++        printfile("REG.TXT");    /* See Step 8 */
  149. ++        pausescr();
  150. ++        i=0;
  151. ++        do {
  152. ++          ok=1;
  153. ++          pl("Enter your Modem phone number. [ Ex. 691-0603]: ");
  154. ++          outstr(": ");
  155. ++          input(s1,8);
  156. ++          if (strlen(s1)!=8)
  157. ++            ok=0;
  158. ++          if ((s1[3]!='-') || (s1[0]=='0'))
  159. ++            ok=0;
  160. ++          if ((s1[1]<'2'))
  161. ++            ok=0;
  162. ++        } while ((!ok) && (!hangup) && (i++<3));
  163. ++        if (!ok)
  164. ++          hangup=1;
  165. ++        else {
  166. ++          thisuser.sl=20;    /* change these to your normal user */
  167. ++          thisuser.dsl=20;   /* SL's and DSL's.                  */
  168. ++          nl();
  169. ++          prt(2,"Now hanging up to call back for validation. ");nl();
  170. ++          prt(3,"Remember to enter ATA when your phone rings.");nl();
  171. ++          dtr(0);
  172. ++          wait1(9);
  173. ++          dtr(1);
  174. ++          sprintf(s,"+++{~~~~atq1{~~~ath{~~~~~atdt %s{~~~~~",s1);
  175. ++          pr1(s);
  176. ++          wait1(350);
  177. ++          sprintf(thisuser.note,"Modem number %s",s1); /* user note */
  178. ++          hangup=0;
  179. ++          sprintf(s,"-+ %s attempting auto-validation at %s. ",
  180. ++                  thisuser.name,s1);
  181. ++          sysoplog(s);
  182. ++          i=0;
  183. ++          do {
  184. ++            if (!cdet())
  185. ++              wait1(100);
  186. ++          } while ((!cdet()) && (i++<4));
  187. ++        }
  188. ++      }
  189. ++    }
  190. ++       if (!hangup) {
  191. ++          i=0;
  192. ++          do {
  193. ++            ok=0;
  194. ++            nl();
  195. ++            prt(3,"Please enter your password for verification: ");
  196. ++            outstr(": ");
  197. ++            echo=0;
  198. ++            input(s,8);
  199. ++            if (strcmp(s,thisuser.pw)==0)
  200. ++              ok=1;
  201. ++          } while ((!ok) && (!hangup) && (i++<3));
  202. ++          if (!ok)
  203. ++            hangup=1;
  204. ++          }
  205.  
  206. ++  /* end main section of Auto Phone validation Mod */
  207.  
  208. **  if (!hangup) {
  209.  
  210. **    nl();
  211. **    pl("Please wait...");
  212. **    nl();
  213. **    read_user(0,&u);
  214. **    l1=(filelength(userfile)) / ((long) sizeof(userrec))-1;
  215. **    if (l1==(long) status.users) {
  216. **      usernum=status.users+1;
  217. **    } else {
  218. **      usernum=1;
  219. **      do {
  220. **        read_user(usernum,&u);
  221. **        if ((u.inact & inact_deleted)==0)
  222. **          ++usernum;
  223. **      } while (((u.inact & inact_deleted)==0) && ((long)usernum<=l1));
  224. **    }
  225. **    write_user(usernum,&thisuser);
  226. **    close_user();
  227. **    isr(usernum,thisuser.name);
  228. --    ok=0;
  229. ++    itoa(usernum,s2,10);
  230. ++    if(strcmp(s1,"Normal-val")!=0) {
  231. ++      sprintf(s,"-+ %s #%s auto-validated at %s.",thisuser.name,s2,s1);
  232. ++      sysoplog(s);
  233. ++    }
  234. **    topscreen();
  235. --    do {
  236. **      nl();
  237. **      nl();
  238. **      print("Your user number is ",itoa(usernum,s,10),".","");
  239. **      print("Your password is '",thisuser.pw,"'.","");
  240. **      nl();
  241. **      nl();
  242. +=      pl("Please write down this information.");
  243. --      pl("re-enter your password for verification.");
  244. **      pl("You will need to know your password in");
  245. **      pl("order to change it to something else.");
  246. **      nl();
  247. --      outstr(":");                   /* They've already entered their */
  248. --      echo=0;                        /* password, so no need to ask   */
  249. --      input(s,8);                    /* them to do it again.          */
  250. --      if (strcmp(s,thisuser.pw)==0)
  251. --        ok=1;
  252. --    } while ((!ok) && (!hangup));
  253. ++      pausescr();   /* Keep the message from zipping of the screen! */
  254. **    changedsl();
  255. **    if (incom) {
  256. **      if (printfile("FEEDBACK.MSG"))
  257. **        sl1(0,"#Aborted FEEDBACK.MSG");
  258. **      sprintf(irt,"Validation Feedback (%d slots left)",syscfg.maxusers-status.users);
  259.  
  260. ┌─────────┐
  261. │ STEP 5: │
  262. └─────────┘
  263. Now, press F2 and save NEWUSER.C, then press F9 to compile. Since all you
  264. changed was NEWUSER.C, it shouldn't take very long.
  265.  
  266. ┌─────────┐
  267. │ STEP 6: │
  268. └─────────┘
  269. You will need to add the following lines into your HELP.MSG file in your
  270. G-Files directory. This will allow your users to hit CTRL-O if they are
  271. really stupid and need some more info on what the Auto-Phone function does.
  272. WWIV in it's unmodified state supports 50 help screens. They are numbered
  273. 0-49, so we'll put this one as the last screen to avoid conflict with any
  274. new ones that Wayne might come out with (he is currently up to 42).
  275.  
  276. At the bottom of HELP.MSG
  277.  
  278. `49=======================================================================
  279. The Auto-Phone validation program is set up for local callers. It allows
  280. a user to be validated for this BBS in less than 1 minute. To do this, the
  281. program will ask you for your modem phone number (the one you are calling
  282. with). It will then disconnect, and call your modem line. By setting your
  283. modem to auto answer (AT S0=1) or by typing ATA when the phone rings, your
  284. system will answer the call. You will then re-enter your password, and
  285. upon verification, validated as a normal user.
  286.  
  287. ┌─────────┐
  288. │ STEP 7: │
  289. └─────────┘
  290. Create a file called CALLBACK.TXT in your Gfiles Directory with the
  291. following information in it:
  292.  
  293. This system allows local callers to be
  294. validated with the Auto-Phone 1 min.
  295. callback program.
  296. [ Ctrl-O for more info on this feature ]
  297.  
  298. ┌─────────┐
  299. │ STEP 8: │
  300. └─────────┘
  301. Create a file called REG.TXT in your Gfiles directory. It should contain
  302. the following text (or something similar).
  303.  
  304. FILE: REG.TXT
  305. [Ed.'s Note:  The following has embedded WWIV color coding.  I left it in 
  306. for those wishing to simply block-copy it into a separate file.  For those 
  307. printing it out, just imagine each number is preceded with a ^C (or heart 
  308. symbol). --mtb]
  309.  
  310. 1In a second, the system will ask you
  311. 1for your modem number. It will then
  312. 4DISCONNECT,1 and call you back.
  313. 1At that point it will be looking for
  314. 1another computer. Do NOT answer it
  315. 1VOICE!
  316.  
  317. 1Once connected to your computer, it
  318. 1will then ask you for your password.
  319. 2If your password is correct, it will
  320. 2auto-validate you.
  321.  
  322. 3 Make sure your Communication Program
  323. 3is in auto answer mode,4 Or type
  324. 4ATA 3 and hit enter when your phone
  325. 3rings.
  326.  
  327. ┌────────────────────┐
  328. │ STEP 9 (optional): │
  329. └────────────────────┘
  330. You may want to create a batch file that will store all your old logs
  331. in a single ZIP file. I run the following batch file as part of my
  332. daily event:
  333.  
  334. FILE: BKUPLOGS.BAT
  335.  
  336. CD \WWIV\GFILES
  337. PKZIP BKUPLOGS 90*.LOG
  338.  
  339. This will need to be changed each year. The 90 represents the year, so when
  340. next January rolls around, you'll need to change it to a 91. These logs
  341. compress quite well, so you can have MONTHS of daily logs in this file
  342. without fear of the file getting too large. Believe me, it's worth being
  343. able to check back over them if you need to.
  344.  
  345. ┌───────────┐
  346. │ FINISHED: │
  347. └───────────┘
  348. That's it! Your local users should now be able to be auto-validated if
  349. they are logging on as new. You also will have a copy of the number that
  350. they called from. While this isn't as good as voice validating each and
  351. every user...it might help you sleep a LITTLE better at night!
  352.  
  353. ┌─────────────┐
  354. │ DISCLAIMER: │
  355. └─────────────┘
  356. As usual, I accept no responsibility if this mod doesn't work on your
  357. system. I've been running it on an IBM XT with a Hayes 9600 V-Series for
  358. over 6 months without a hitch. If yours doesn't work, and it screws
  359. everything up, go back to your backup of NEWUSER.C (you DID make a
  360. backup, didn't you?!).
  361.  
  362. ┌───────────┐
  363. │ COMMENTS: │
  364. └───────────┘
  365. I'm starting to feel like the "Modder of Mods" these days. I apologize for
  366. this. It's just that when you run out of ideas for new mods, you tend to
  367. start working over old ones. Although my 'C' programming isn't exactly at
  368. expert level (yet), it's not too bad. If any of you have any ideas for new
  369. mods, let me know...I'm sure that we can work something out.
  370.  
  371. ┌───────────┐
  372. │ CONTACTS: │
  373. └───────────┘
  374. If you run into problems or spot a blatant error in the mod, please feel
  375. free to E-Mail me, T BADD 1 @ 8750. I'll do all I can to help out.
  376.  
  377. TFB - 03/25/90
  378.