home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / HATCH / WWIVNEWS.ZIP / 9308_3.NWS < prev    next >
Text File  |  1993-08-04  |  19KB  |  501 lines

  1. log.Since this original program was written, Tolkien has expanded PACKSCAN's
  2. features until today, it is a full-featured NETWORK2 pre-processor for WWIV
  3. networks.
  4.  
  5. Current features of PACKSCAN v2.31:
  6.  
  7.     ■  Two versions for systems with different amounts of available memory.
  8.        The standard version has a well written graphical screen which displays 
  9.        the progress of packet analysis. The memory-saving version gets rid of 
  10.        graphics, and reports its progress in text mode.
  11.  
  12.     ■  Multi-network compatible.
  13.  
  14.     ■  Sysop configurable via a user-friendly configuration interface.
  15.  
  16.     ■  Packet logging to the WWIV sysop log.
  17.  
  18.     ■  Extended packet logging, providing even more detail than the standard
  19.        sysop log entries provide.
  20.  
  21.     ■  Detailed error logging which reports errors encountered by PACKSCAN
  22.        when packet transfers occur and are aborted.
  23.  
  24.     ■  File logging which reports the status of both incoming and outgoing
  25.        program files.
  26.  
  27.     ■  Ability to transmit and receive program files in specially encoded 
  28.        packets or "chunks".
  29.  
  30.     ■  Ability to receive network updates from network coordinators who use
  31.        a specially written program called "PUS" (PackScan Update System - 
  32.        available to all network coordinators for $20).
  33.  
  34.     ■  Ability to read the WWIV 4.21+ USER.LST to aid in file acquisition. 
  35.        This ability may be disabled for those systems which are running
  36.        programs which may encounter SHARE violations, like Windows (R)*.
  37.  
  38.     ■  Fully implemented CRC-32 error checking of incoming program file 
  39.        chunks.
  40.  
  41.     ■  Ability to accept or reject unsolicited program files sent by other 
  42.        network sysops.
  43.  
  44.     ■  Built-in interface with ALLOW.EXE, a utility for storing and searching 
  45.        for file names of previously uploaded programs.
  46.  
  47.     ■  Configurable ability to send SSM's (Small System Messages) to other 
  48.        network systems when program files are received.
  49.  
  50.     ■  Ability to specify the directory "type" for the WWIV upload directory 
  51.        where program files will be sent.
  52.  
  53.     ■  Full implementation and support for the WWIV external packet 
  54.        pre-processor file redirection implemented in NET32.
  55.  
  56.     ■  Fully configurable "ALIAS" file which gives the sysop ultimate control
  57.        over who may access files from their system.
  58.  
  59.     ■  Allows transmission and receipt of program files using a "stealth mode"
  60.        which will bypass SSM notification to systems who would normally 
  61.        receive notification of a PACKSCAN upload to your system.
  62.  
  63.     ■  File lists indicate which files are/are not available in transfer 
  64.        areas on your system's hard drive at the time of the request. A tad 
  65.        slower, perhaps, but then others won't spend the time requesting files 
  66.        which are not available on your system. CD-ROM drives are not scanned 
  67.        as all files are presumed to be there.
  68.        
  69. Future features of PACKSCAN:
  70.  
  71.     ■  Configurable upload event (virus scanning, etc.).
  72.  
  73.     ■  Automatic subscriber list generation for networked message echos.
  74.  
  75.     ■  Sysop configurable sound board support (Soundblaster, Adlib, Pro Audio 
  76.        Spectrum, etc.).
  77.  
  78.  
  79. As always, PACKSCAN version 2.31 is FREE. However, due to numerous upgraded
  80. and newly implemented features, PACKSCAN version 2.31 is not compatible with 
  81. any previous version of itself. This includes file requesting, file sending 
  82. and file list requests. Also, because the network coordinator's update 
  83. utility (PUS) is being upgraded and improved (including some minor
  84. de-bugging), those sysops who use PACKSCAN to receive their network updates 
  85. will need to upgrade to version 2.31.
  86.  
  87. Unlike previous versions, the four utility files which accompany PACKSCAN are 
  88. NOT free. These utilities, which give sysops the ability to request file 
  89. lists and send and receive files, now must be registered. These file 
  90. utilities will require registration before they will work. These utilities 
  91. are:
  92.  
  93. NETFILE .EXE         Allows you to send a file to one or more nodes
  94. FILEREQ .EXE         Allows you to send a file request to another system
  95. LISTREQ .EXE         Allows you to send a file list request to another system
  96. NFM     .EXE         Does all that the first three do, in one integrated
  97.                      program, and allows use of "Stealth Mode" as well.
  98.  
  99. The utilities listed above must be registered. In an effort to keep sysop 
  100. registration costs down, normal registration is $20 for all four PACKSCAN 
  101. utilities. However, for a limited time, ALL FOUR PACKSCAN UTILITIES may be
  102. purchased for $10. To take advantage of this LOW $10 registration fee, you 
  103. must send in your registration (check or money order - no cash please), 
  104. postmarked by July 31, 1993, to:
  105.  
  106.                             Sara Felix
  107.                             c/o PACKSCAN REGISTRATION
  108.                             7035 Ethel
  109.                             St. Louis, MO 63117
  110.  
  111. Please make all checks payable to "Sara Felix". All registrations received
  112. will be donated, by Tolkien, to one of the major network mail servers which
  113. moves YOUR network mail around the world.
  114.  
  115. With this new version of PACKSCAN, the WWIV network sysop will gain more
  116. knowledge about the nature of data flowing into their system. Without
  117. PACKSCAN, you may be "flying in a fog"; with PACKSCAN, you should have
  118. "unlimited visibility".
  119.  
  120.  
  121. ───────────────────────────────────────────────────────────────────────────── 
  122.  Conclusions
  123. ──────────────────────────────────────────────────────────────────────────────
  124.  
  125. Despite the arguments presented against the use of WWIVNet for transmitting
  126. large files in lieu of direct connections, there have always been those who'll
  127. take the "Devil's Advocate" side in the matter. Wayne's final ruling on the
  128. issue, as well as the DE1.EXE distribution will quiet some of the dissention,
  129. but at the same time will no doubt raise other points of order.
  130.  
  131. The recent DE1.EXE distribution will no doubt be used as a prime example for
  132. both sides of the debate. There will be those who'll use this event as
  133. evidence of how UU encoded files can be beneficial to WWIVNet, while others
  134. will use it to cry "foul!" and "double-standard!!" in what will no doubt be
  135. described as a "sour grapes" response by those who wish to use the net any way
  136. they see fit regardless of the consequences.
  137.  
  138. In any case, the matter does seem to be essentially a settled one for now.
  139. With the development and forthcoming release of WW4-FREQ by 2@2050, as well
  140. as the existence of FILENET and the PACKSCAN and NETPROBE utilities, perhaps
  141. the final nail has been hammered into a coffin containing UUENCODE.
  142.  
  143. ───────────────┬─────────────────────────────────────────────┬───────────────
  144.                │           Filo's Mod of the Month           │
  145.                │              by Filo (1@2050)               │
  146.                └─────────────────────────────────────────────┘
  147.  
  148. The Mod-of-The-Month Selection represents my choice of what appears to be a 
  149. useful, practical mod to WWIV. It does not mean it is the best mod posted or 
  150. even that it works as I may not have tested it. Given the limitations of this 
  151. media, uuencoded mods are NOT eligible for selection as mod-of-the-month.
  152.  
  153. The June selection is another contribution from The Bishop 1@7. This mod 
  154. should prove to be useful for those who need to move subs and/or directories.
  155.  
  156.  
  157. ╔═══════════════════════════════════════════════════════════════════════════╗
  158. ║ WWIV Desc    : Re-Order Subs and Dirs in //BOARDEDIT and //DIREDIT        ║
  159. ║                                                                           ║
  160. ║ Filename     : TB15-422.ZIP          Mod Version       : 1.0σ             ║
  161. ║ Author       : τhe ßishop            1st File Modified : SUBEDIT.C        ║
  162. ║  1st Net     :  1@   7.WWIVnet       2nd File Modified : DIREDIT.C        ║
  163. ║  2nd Net     :  1@   7.WWIVweb       3rd File Modified : FCNS.H           ║
  164. ║  3rd Net     :  1@   7.ExpressNet    4th File Modified :                  ║
  165. ║  4th Net     :  1@   7.FunNet        5th File Modified :                  ║
  166. ║  5th Net     :  1@4550.IceNet        6th File Modified :                  ║
  167. ║  6th Net     :  1@4550.USLink        7th File Modified :                  ║
  168. ║                                                                           ║
  169. ║ WWIV Version : 4.22                  Date              : 01 June 1993     ║
  170. ║                                                                           ║
  171. ║ Difficulty   : ████▒▒▒▒▒▒                                                 ║
  172. ║                                                                           ║
  173. ║ Description  :  Over the years I've wanted to re-order my subs and        ║
  174. ║                directories more times than I can remember. So I finally   ║
  175. ║                decided to do something about it. This mod allows SysOps   ║
  176. ║                to take any one sub/dir and move it before any other one.  ║
  177. ║                In addition, it maintains proper qscan pointers for all    ║
  178. ║                all of your users (even deleted ones) after moving subs    ║
  179. ║                and/or dirs. Enjoy!                                        ║
  180. ║                                                                           ║
  181. ║                                                                       τß  ║
  182. ╚═══════════════════════════════════════════════════════════════════════════╝
  183.  
  184. ┌─────────────────────────────────┐
  185. │ Legend:                         │
  186. │                                 │
  187. │  = Leave this line alone        │
  188. │  + Add this line                │
  189. │  - Delete this line             │
  190. │  | Change this line             │
  191. │  . Many statements elapse here  │
  192. └─────────────────────────────────┘
  193.  
  194. ┌───────────────────────────┐
  195. │ Disclaimer: LIVE WITH IT. │
  196. └───────────────────────────┘
  197.  
  198. ──────────────────────────────────────────────────────────────────────────────
  199. Step 0:   Back your source code up. In addition, back up the
  200. following files in your DATA directory:
  201.  
  202.      SUBS.*
  203.      DIRS.*
  204.      USER.*
  205.  
  206. I recommend putting them in one big zip file. I'll be shocked if
  207. you need the backup, but I wouldn't be recommending it if I didn't
  208. think you should do it.
  209. ──────────────────────────────────────────────────────────────────────────────
  210.  
  211. ──────────────────────────────────────────────────────────────────────────────
  212. Step 1:   Open up SUBEDIT.C. Block copy swap_subs() in before insert_sub().
  213. ──────────────────────────────────────────────────────────────────────────────
  214.  
  215. /* TB15-422.MOD */
  216. void swap_subs(int sub1, int sub2)       
  217. {
  218.   int i,i1,i2,nu;
  219.   unsigned long *qsc, *qsc_p, *qsc_n, *qsc_q, m1, m2, m3, tl;
  220.   subboardrec sbt;
  221.   xtrasubsrec xst;
  222.  
  223.   nu=number_userrecs();
  224.   close_user();
  225.  
  226.   qsc=(unsigned long *)farmalloc(syscfg.qscn_len);
  227.   if (qsc) {
  228.     for (i=1; i<=nu; i++) {
  229.       read_qscn(i,qsc,1);
  230.       qsc_n=qsc+1;
  231.       qsc_q=qsc_n+(max_dirs+31)/32;
  232.       qsc_p=qsc_q+(max_subs+31)/32;
  233.  
  234.       if (qsc_q[sub1/32] & (1L<<(sub1%32)))
  235.         i1=1;
  236.       else
  237.         i1=0;
  238.       if (qsc_q[sub2/32] & (1L<<(sub2%32)))
  239.         i2=1;
  240.       else
  241.         i2=0;
  242.       if (i1+i2==1) {         /* One is scanned; the other isn't */
  243.         qsc_q[sub1/32] ^= (1L<<(sub1%32));
  244.         qsc_q[sub2/32] ^= (1L<<(sub2%32));
  245.       }
  246.  
  247.       tl=qsc_p[sub1];
  248.       qsc_p[sub1]=qsc_p[sub2];
  249.       qsc_p[sub2]=tl;
  250.  
  251.       write_qscn(i,qsc,1);
  252.     }
  253.     close_qscn();
  254.     farfree(qsc);
  255.   } 
  256.  
  257.   sbt=subboards[sub1];
  258.   subboards[sub1]=subboards[sub2];
  259.   subboards[sub2]=sbt;
  260.  
  261.   tl=sub_dates[sub1];
  262.   sub_dates[sub1]=sub_dates[sub2];
  263.   sub_dates[sub2]=tl;
  264.  
  265.   xst=xsubs[sub1];
  266.   xsubs[sub1]=xsubs[sub2];
  267.   xsubs[sub2]=xst;
  268.  
  269.   save_subs();
  270. }
  271.  
  272. ──────────────────────────────────────────────────────────────────────────────
  273. Step 2:   Below, at the end of insert_sub(), comment out modify_sub(n);
  274. ──────────────────────────────────────────────────────────────────────────────
  275. = save_subs();
  276.  
  277. = if (curlsub>=n)
  278. =   curlsub++;
  279.  
  280. | // modify_sub(n);    /* Removed TB15-422.MOD */
  281.  
  282. ──────────────────────────────────────────────────────────────────────────────
  283. Step 3:   Below in boardedit() make the following changes:
  284. ──────────────────────────────────────────────────────────────────────────────
  285.  
  286. void boardedit(void)
  287. {
  288. = int i,i1,i2,done,f;
  289. = char s[81],s1[81],s2[81],ch;
  290. =
  291. = if (!checkpw())
  292. =   return;
  293. = showsubs();
  294. = done=0;
  295. = do {
  296. =   nl();
  297. -   prt(2,get_string(211));  
  298. +   prt(2,"Subs: D:elete, I:nsert, M:odify, R:eorder, Q:uit, ? : ");
  299. |   ch=onek("QDIMR?");        /* TB15-422.MOD add R */
  300. =   switch(ch) {
  301. =     case '?':
  302. =       showsubs();
  303. =       break;
  304. =     case 'Q':
  305. =       done=1;
  306. =       break;
  307.  
  308. /* Add Block (+) */
  309.  
  310.       case 'R':
  311.         if (num_subs<max_subs) {
  312.           nl();
  313.           prt(2,"Take Sub Number? ");
  314.           input(s,3);
  315.           i1=atoi(s);
  316.           if ((!s[0]) || (i1<0) || (i1>num_subs))
  317.             break;
  318.           nl();
  319.           prt(2,"And Move Before Sub Number? ");
  320.           input(s,3);
  321.           i2=atoi(s);
  322. /*
  323.  *
  324.  *  Note: inserting a sub before sub 0, 32, 64, 92, or etc will toggle on-for-
  325.  *  scanning all the subs in that 32 sub block. For example, moving sub 4
  326.  *  before sub 0 will cause all users to scan subs 0-31. This is not a bug
  327.  *  in my code but rather in Wayne's stock insert_sub (try inserting sub
  328.  *  0 and the same thing will happen). It is minor, but should be fixed for
  329.  *  WWIV v4.23. If you don't care about screwing up the "which subs to scan"
  330.  *  qscan pointer when moving before these subs, remove the (i2%32==0)
  331.  *  condition in the if statement below.
  332.  *
  333.  */
  334.           if ((!s[0]) || (i2<0) || (i2%32==0) || (i2>num_subs) || (i1==i2) ||
  335. (i1+1==i2))
  336.             break;
  337.           nl();
  338.           if (i2<i1)
  339.             i1++;
  340.           write_qscn(usernum,qsc,1);
  341.           insert_sub(i2);
  342.           swap_subs(i1,i2);
  343.           delete_sub(i1);
  344.           showsubs();
  345.         } else {
  346.           nl();
  347.           pl("You must increase the number of subs in INIT.EXE first.");
  348.         }
  349.         break;
  350.  
  351. /* End Block Add */
  352.  
  353. =     case 'M':
  354. =       nl();
  355. =       prt(2,get_string(212));
  356. =       input(s,3);
  357. =       i=atoi(s);
  358. =       if ((s[0]!=0) && (i>=0) && (i<num_subs))
  359. =         modify_sub(i);
  360. =       break;
  361. =     case 'I':
  362. =       if (num_subs<max_subs) {
  363. =         nl();
  364. =         prt(2,get_string(213));
  365. =         input(s,3);
  366. =         i=atoi(s);
  367. |         if ((s[0]!=0) && (i>=0) && (i<=num_subs)) {  /* { is TB15-422.MOD */
  368. =           insert_sub(i);
  369. +           modify_sub(i);   /* TB15-422.MOD */
  370. +         }                  /* TB15-422.MOD */
  371. =       }
  372. =       break;
  373.  
  374. ────────────────────────────────────────────────────────────────────────────-
  375. Step 4:  Save SUBEDIT.C and open DIREDIT.C. Block copy swap_dirs()
  376. in before insert_dir(). Uncomment the appropriate lines if you've got
  377. JAFO14.MOD installed, as I do.
  378. ────────────────────────────────────────────────────────────────────────────-
  379.  
  380. /* TB15-422.MOD */
  381. void swap_dirs(int dir1, int dir2)
  382. {
  383.   int i,i1,i2,nu;
  384.   unsigned long *qsc, *qsc_n, tl;
  385.   directoryrec drt;
  386.   // float tf;   /* Only if JAFO14 is installed */
  387.  
  388.   nu=number_userrecs();
  389.   close_user();
  390.  
  391.   qsc=(unsigned long *)farmalloc(syscfg.qscn_len);
  392.   if (qsc) {
  393.     for (i=1; i<=nu; i++) {
  394.       read_qscn(i,qsc,1);
  395.       qsc_n=qsc+1;
  396.  
  397.       if (qsc_n[dir1/32] & (1L<<(dir1%32)))
  398.         i1=1;
  399.       else
  400.         i1=0;
  401.       if (qsc_n[dir2/32] & (1L<<(dir2%32)))
  402.         i2=1;
  403.       else
  404.         i2=0;
  405.       if (i1+i2==1) {         /* One is scanned, the other isn't */
  406.         qsc_n[dir1/32] ^= (1L<<(dir1%32));
  407.         qsc_n[dir2/32] ^= (1L<<(dir2%32));
  408.       }
  409.  
  410.       write_qscn(i,qsc,1);
  411.     }
  412.     close_qscn();
  413.     farfree(qsc);
  414.   } 
  415.  
  416.   drt=directories[dir1];
  417.   directories[dir1]=directories[dir2];
  418.   directories[dir2]=drt;
  419.  
  420.   tl=dir_dates[dir1];
  421.   dir_dates[dir1]=dir_dates[dir2];
  422.   dir_dates[dir2]=tl;
  423.  
  424.   // tf=dir_ratios[dir1];                  /* Only if JAFO14 is installed */
  425.   // dir_ratios[dir1]=dir_ratios[dir2];    /* Only if JAFO14 is installed */
  426.   // dir_ratios[dir2]=tf;                  /* Only if JAFO14 is installed */
  427.   // save_dir_ratios();                    /* Only if JAFO14 is installed */
  428. }
  429.  
  430.  
  431. ──────────────────────────────────────────────────────────────────────────────
  432. Step 5:   Below, at the end of insert_dir(), comment out modify_dir(n);
  433. ──────────────────────────────────────────────────────────────────────────────
  434. =   close_qscn();
  435. =   farfree(qsc);
  436. = }
  437.  
  438. | // modify_dir(n);    /* Removed TB15-422.MOD */
  439.  
  440. ────────────────────────────────────────────────────────────────────────────-
  441. Step 6:   Below in dlboardedit() make the following changes:
  442. ────────────────────────────────────────────────────────────────────────────-
  443. void dlboardedit(void)
  444. {
  445. = int i,i1,i2,done,f;
  446. = char s[81],s1[81],s2[81],ch;
  447. =
  448. = if (!checkpw())
  449. =   return;
  450. = showdirs();
  451. = done=0;
  452. = do {
  453. =   nl();
  454. -   prt(2,get_string(160));   
  455. +   prt(2,"Dirs: D:elete, I:nsert, M:odify, R:eorder, Q:uit, ? : ");
  456. |   ch=onek("QDIMR?");        /* TB15-422.MOD add R */
  457. =   switch(ch) {
  458. =     case '?':
  459. =       showdirs();
  460. =       break;
  461. =     case 'Q':
  462. =       done=1;
  463. =       break;
  464.  
  465. /* Add Block (+) */
  466.  
  467.       case 'R':
  468.         if (num_dirs<max_dirs) {
  469.           nl();
  470.           prt(2,"Take Dir Number? ");
  471.           input(s,3);
  472.           i1=atoi(s);
  473.           if ((!s[0]) || (i1<0) || (i1>num_dirs))
  474.             break;
  475.           nl();
  476.           prt(2,"And Move Before Dir Number? ");
  477.           input(s,3);
  478.           i2=atoi(s);
  479. /*
  480.  *
  481.  *  Note: inserting a dir before dir 0, 32, 64, 92, or etc will toggle on-for-
  482.  *  scanning all the dirs in that 32 dir block. For example, moving dir 4
  483.  *  before dir 0 will cause all users to scan dirs 0-31. This is not a bug
  484.  *  in my code but rather in Wayne's stock insert_dir (try inserting dir
  485.  *  0 and the same thing will happen). It is minor, but should be fixed for
  486.  *  WWIV v4.23. If you don't care about screwing up the "which dirs to scan"
  487.  *  qscan pointer when moving before these dirs, remove the (i2%32==0)
  488.  *  condition in the if statement below.
  489.  *
  490.  */
  491.           if ((!s[0]) || (i2<0) || (i2%32==0) || (i2>num_dirs) || (i1==i2))
  492.             break;
  493.           nl();
  494.           if (i2<i1)
  495.             i1++;
  496.           write_qscn(usernum,qsc,1);
  497.           insert_dir(i2);   
  498.           swap_dirs(i1,i2); 
  499.           delete_dir(i1);   
  500.           showdirs();
  501.