home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / anti141.zip / ANTIAD.DOC < prev    next >
Text File  |  1996-01-07  |  28KB  |  615 lines

  1.  
  2.      ┌──────────┬───────────┐
  3.      │   BBS    ┼           │
  4.      │   ╓───╖  │ ╓         │                   AntiAd
  5.      │   ║   ║  ┼ ║         │
  6.      │   ╟───╢ ╓┼─║ ╓──     │                Version 1.41
  7.      ├┼──╫─┼─╫─╫■─╫─╨┼─╥───┼┤
  8.      │   ╙   ╙ ╙┼─╜ ───╜    │    (c) Copyright 1992-1996 - Stacy Smith
  9.      │          ┼           │
  10.      └──────────┴───────────┘
  11.  
  12.                                   Courtesy of:
  13.  
  14.                          The Bloom Beacon-Picayune BBS
  15.           Node 1: *** DOWN *** (USRobotics Courier Dual Standard V.34)
  16.                                     FidoNet
  17.                                      ILink
  18.                                     Intelec
  19.  
  20.                                   Stacy Smith
  21.  
  22.  
  23. ┌────────────────────┐
  24. │  1. Introduction:  │
  25. └────────────────────┘
  26.  
  27. AntiAd was developed due to recent developments in BBS ad files and their
  28. associated headaches.  The asinine sysops who insist on putting this excess
  29. baggage into downloadable archives at the expense of other sysops' disk space
  30. are getting more creative and annoying.
  31.  
  32. By slightly modifying their BBS ad file, perhaps adding spaces to the end of
  33. the file or stamping the time and date into the BBS ad, they were previously
  34. undetectable (until the BBS ad was added to a database).  Not so with AntiAd.
  35.  
  36.  
  37. ┌──────────────────────────┐
  38. │  2. Features of AntiAd:  │
  39. └──────────────────────────┘
  40.  
  41.       ∙ Native versions for both 16-bit DOS and 32-bit OS/2!  DOS version is
  42.         fully OS/2, DESQview and Windows aware, including time slice releasing.
  43.       ∙ Identifies BBS ads using conventional database algorithms for files
  44.         that are static (such as .EXE files created by TheDraw).  This method
  45.         of detection is extremely fast and 100% accurate.
  46.       ∙ Includes a BBS ads maintenance function so sysops can update their BBS
  47.         ads CRC database in real time.
  48.       ∙ Identifies BBS ads by filename, allowing detection of 0-byte BBS
  49.         ads.
  50.       ∙ Identifies BBS ads using a new keyword algorithm for files that are
  51.         constantly changing.  This method of detection is slower and can be
  52.         less accurate depending upon how well the keywords are selected by the
  53.         sysop.
  54.       ∙ Up to 100/300 (DOS/OS/2) keyword sets of 5 to 10 keywords each can be
  55.         configured by the sysop.  (These are arbitrary limits and can be
  56.         raised, if necessary; they seemed like good starting points).
  57.       ∙ AntiAd can execute another program as a child process, allowing upload
  58.         processors that only execute 1 file checker (virus checker) to use
  59.         AntiAd *and* another file checker.
  60.       ∙ Runs as a file tester in most any upload processing utility, such as
  61.         UpLoadProcessor, Ziplab, ExzTest, etc.
  62.       ∙ Detected BBS ads are removed from the files on disk before being
  63.         repacked by the upload processing utility.  They may be stored in a
  64.         subdirectory for subsequent review by the user (user-selectable).
  65.       ∙ AntiAd can generate list files to be passed to an archiver, allowing
  66.         removal of BBS ad files without unpacking the archive.  This requires
  67.         proper handling by the upload processing utility or batch file.
  68.       ∙ User-selectable process logging to a disk file.
  69.       ∙ Written completely in C for optimal speed, using Watcom C/C++ 10.0.
  70.  
  71.  
  72. ┌────────────────────────────────────────────────────────┐
  73. │  3. Files Included in the AntiAd Distribution Archive  │
  74. └────────────────────────────────────────────────────────┘
  75.  
  76.         ANTIAD.EXE      BBS ad detection and removal program (16-bit DOS).
  77.         ANTIAD2.EXE     BBS ad detection and removal program (32-bit OS/2).
  78.         ANTIAD.DB       BBS ads database file.
  79.         NAMES.LST       BBS ads name list file.
  80.         ANTIAD.DOC      This file.
  81.         ANTIAD.CFG      Sample configuration file.
  82.         CHK_ADS.BAT     Main batch file for mass archive BBS ad removal.
  83.         CHK_ADS2.BAT    Secondary batch file for mass archive BBS ad removal.
  84.         SUPPORT.DOC     List of authorized support sites for my shareware.
  85.         HISTORY.DOC     AntiAd revision history in reverse order.
  86.         REGISTER.FRM    Registration form for AntiAd and other software.
  87.         FILE_ID.DIZ     Internal description file.
  88.  
  89. When you unzip the distribution archive, you should see my PKZIP authenticity
  90. verification stamp, and a '-AV' after every file in the archive:
  91.  
  92.         # SSU301    The Bloom Beacon-Picayune BBS
  93.  
  94. If there are any files missing or added, or the -AV stamp is missing, the
  95. archive has been tampered with.  It would be advisable to call my BBS (listed
  96. at the top of this document) or one of the support sites listed in the
  97. SUPPORT.DOC file for the latest version of AntiAd.
  98.  
  99.  
  100. ┌───────────────────────────┐
  101. │  4. Program Requirements  │
  102. └───────────────────────────┘
  103.  
  104. To the best of my knowledge, this program will run on most any machine capable
  105. of running a BBS package.  My BBS setup was PCBoard 15.2/10M running under
  106. DESQview on a LANtastic network, but other sysops that I have been in contact
  107. with have successfully implemented AntiAd on a wide variety of hardware.
  108.  
  109. AntiAd requires DOS 3.x and higher or OS/2 2.0 and higher, as it uses DOS
  110. SHARE-compatible file reads and writes.  AntiAd's memory requirements are very
  111. small (about 80K or so, plus the CRC database and keyword memory allocated).  A
  112. hard disk is required (and not very many BBSes don't have them) so it goes
  113. without saying (although I did anyway; someone is bound to ask... <g>).
  114.  
  115.  
  116. ┌───────────────────┐
  117. │  5. Registration  │
  118. └───────────────────┘
  119.  
  120. AntiAd is not free; nor is AntiAd crippled to force registration.  AntiAd is
  121. fully functional, and will always remain so.  The only variation with the
  122. registered copies is no time delay and beg message.
  123.  
  124. Why register?  Besides a clean conscience, you will get a registration code
  125. that will work for all future versions of AntiAd, and will remove the delay and
  126. message at the end of execution.
  127.  
  128. The registration fee for your unique key is $18 for hobbyist BBSes.  The
  129. registration fee for commercial BBSes, defined if you run your BBS in the
  130. course of a commercial business or for profit (e.g. more than 10 nodes), is
  131. $25.  Refer to the file REGISTER.FRM for all registration options.  Please
  132. print the file REGISTER.FRM and fill it out.  You can print out the form by
  133. issuing the following command from the DOS prompt:
  134.  
  135.         TYPE REGISTER.FRM > PRN
  136.  
  137.  
  138. ┌───────────────────────────────────────┐
  139. │  6. License, Warranty and Disclaimer  │
  140. └───────────────────────────────────────┘
  141.  
  142. I'll keep this part short and sweet, and dispense with the legal-ese:
  143.  
  144.         License: You are allowed to use AntiAd for 30 days, after which you
  145.            must either register AntiAd or stop using it completely.
  146.            Decompiling, disassembly or any other form of reverse-engineering
  147.            AntiAd for any purpose is prohibited.  AntiAd registration is a
  148.            license for your use of AntiAd; I retain ownership of the software.
  149.            A single registration applies to a single BBS system, regardless of
  150.            the number of computers used in the system.  If you run two or more
  151.            distinct BBS systems on the same computer (with different names),
  152.            you require two or more AntiAd registrations.  AntiAd registrations
  153.            are not transferrable; you cannot sell your registration to another
  154.            person.
  155.  
  156.         Warranty: There isn't one.  The only thing I'll guarantee is that
  157.            AntiAd will take up disk space, and will disappear when deleted.
  158.  
  159.         Disclaimer: I'm not responsible for anything bad that happens.  AntiAd
  160.            works here, but I cannot be held responsible for it not working on
  161.            your computer or doing any damage to hardware or software.
  162.  
  163. If these aren't agreeable with you, then the best thing to do is delete AntiAd
  164. right now.  I'll do my best to help any user (registered or not) that wants to
  165. use AntiAd, and I'll act on bug reports quickly, but I simply cannot and will
  166. not be responsible for anything bad, like lost data, disk crashes, or whatever
  167. else you can think of.
  168.  
  169.  
  170. ┌───────────────────┐
  171. │  7. Installation  │
  172. └───────────────────┘
  173.  
  174. GENERAL INSTALLATION:
  175. ─────────────────────
  176. Make a subdirectory on your hard drive.  For the purposes of this document,
  177. we'll call it "C:\ANTIAD".  Unarchive the AntiAd distribution archive into this
  178. subdirectory. You've more than likely already made it this far, if you're
  179. reading this file. <grin>
  180.  
  181. The AntiAd system opens a few files at once for various reasons.  I would
  182. recommend that you have a minimum of FILES=30 per node in your system
  183. CONFIG.SYS file for a single-node system, since AntiAd is run in conjunction
  184. with your BBS and upload processing software.
  185.  
  186. If you are running under a DOS network or a multitasking operating system, you
  187. should already have DOS's SHARE.EXE loaded.  You must have SHARE loaded in
  188. order to take advantage of the file sharing and locking methods used by the
  189. AntiAd programs to prevent data loss.  (If you are running a single-node system
  190. without a multitasker, SHARE is not needed).
  191.  
  192. Edit the configuration file to suit your needs.  Proper configuration will
  193. require you to refer to this section, the previous section and the section
  194. titled "Configuration", which has an in-depth explanation of each configuration
  195. parameter and its function.  It would probably be wise to fire up your printer
  196. for this document.
  197.  
  198. Note that for the AntiAd program, you can obtain a limited program syntax
  199. screen simply by executing the program with the -? (help) parameter.
  200.  
  201. INSTALLATION INTO YOUR UPLOAD PROCESSOR:
  202. ────────────────────────────────────────
  203. AntiAd is designed to operate on a subdirectory of files that have already been
  204. extracted by the upload handling system.  The best application for AntiAd is to
  205. be executed as a file test utility, similar to a virus-scanning program, since
  206. at that point in time the files are already extracted from the archive being
  207. processed.  Depending upon how your upload processor operates, the command
  208. lines can be different.
  209.  
  210.     * NOTE: If your upload processor is limited to 1 file checker, add AntiAd
  211.             into your processor's configuration, and then configure AntiAd to
  212.             execute your file/virus checker using the CHK_CMD_LINE parameter.
  213.  
  214. If your upload processor executes the file testers from the directory where the
  215. files are located (this is how the ULP programs operates), the command line is
  216. simply:
  217.  
  218.     D:\ANTIAD\ANTIAD.EXE -Cd:\antiad\antiad.cfg
  219.  
  220. If your upload processor DOES NOT execute the file testers from the directory
  221. where the files are located, and passes a filespec to the program (this is how
  222. ExzTest works), the command line is:
  223.  
  224.     D:\ANTIAD\ANTIAD.EXE -Cd:\antiad\antiad.cfg -Pd:\path\*.*
  225.  
  226. The '-P' parameter defines to AntiAd where to find the files. Note that it will
  227. accept either a path (e.g. 'C:\TEMP\') or a filespec (e.g. 'C:\TEMP\*.*'); in
  228. other words, the "*.*" is superfluous.  Regardless of the filespec, AntiAd will
  229. check all files in the path passed to it.  This is to allow the highest level
  230. of compatibility with all upload processing utilities.
  231.  
  232. If you find yourself crunched for command-line space in your upload processing
  233. utility, the '-C' may be omitted in favor of using an environment variable
  234. (named "ANTIAD_CFG") to tell AntiAd where to find it's configuration file.  To
  235. do this, add the following line to your AUTOEXEC.BAT file:
  236.  
  237.     set ANTIAD_CFG=c:\antiad\antiad.cfg
  238.  
  239. while changing the filespec as necessary to match the name and location of your
  240. AntiAd configuration file.
  241.  
  242. If your upload processing routine is capable of executing a command after each
  243. archive has been processed, you can use the list-file approach to removing BBS
  244. ads from the archive.  This will guarantee that the ad files are removed, even
  245. in -AV protected archives. If you call AntiAd with the following command-line:
  246.  
  247.     ANTIAD.EXE -Cd:\antiad\antiad.cfg -Pd:\path\*.* -Ld:\antiad\ad.lst
  248.  
  249. You can then execute the following archiver statements to remove the ads from
  250. the compressed archive:
  251.  
  252.     ARJ d d:\path\archive.arj !d:\antiad\ad.lst
  253.     LHA d d:\path\archive.arj @d:\antiad\ad.lst
  254.     PAK d d:\path\archive.arj @d:\antiad\ad.lst
  255.     PKPAK -d d:\path\archive.zip @d:\antiad\ad.lst
  256.     PKZIP -d d:\path\archive.zip @d:\antiad\ad.lst
  257.  
  258. Some notes on the list-file approach: if AntiAd finds no BBS ads, it will NOT
  259. create a BBS ads list file and will exit with an errorlevel you define in
  260. NO_AD_ERRLEV in the configuration file.  If it finds one or more BBS ads, it
  261. WILL create the file and exit with the errorlevel defined as AD_ERRLEV.
  262. (AntiAd will not run in ULP using list-file mode; use the standard mode of
  263. operation for AntiAd with ULP.)
  264.  
  265.  
  266. ┌────────────────────┐
  267. │  8. Configuration  │
  268. └────────────────────┘
  269.  
  270. The sample configuration file included in the distribution archive is heavily
  271. commented, but some additional information is provided below:
  272.  
  273. LOG_FILE
  274.     All of the AntiAd programs will write process and error information to a
  275.     log file, if desired.  This is the path/filename of the log file for AntiAd
  276.     to record its activities.  Comment out if you don't want any disk logging.
  277.  
  278. STORAGE_DIR
  279.     If you want AntiAd to use a specific directory for storage of BBS ads
  280.     detected and removed from archives, enter the full pathname (including the
  281.     trailing backslash).  If you do not want the file saved for later
  282.     inspection, comment it out.  I would not recommend using a RAM disk, since
  283.     the files would be lost when the system is rebooted or powered down.  Note
  284.     that this will default CRC_DISP and KEYWORD_DISP to DELETE.
  285.  
  286. NO_AD_ERRLEV
  287.     The errorlevel that AntiAd is to return to DOS if no BBS ads were found by
  288.     AntiAd while processing the subdirectory specified.  If this parameter or
  289.     the AD_ERRLEV parameter is commented out, then it will default to 0, since
  290.     most upload processors assume non-zero errorlevels to be program execution
  291.     errors, not information.  This value must be between 0 and 255, inclusive.
  292.  
  293. AD_ERRLEV
  294.     The errorlevel that AntiAd is to return to DOS if one or more BBS ads were
  295.     found by AntiAd.
  296.  
  297. DB_DISP
  298.     This parameter defines how AntiAd dispositions files detected as BBS ads
  299.     via the CRC-32 signature method.  If you want AntiAd to delete the ad file,
  300.     enter DELETE or comment the line out; if you want AntiAd to store the ad
  301.     file in the storage directory (and delete it from the archive being
  302.     processed), enter STORE.  Note that for STORE to operate correctly, the
  303.     STORAGE_DIR parameter MUST be defined.
  304.  
  305. NAME_DISP
  306.     This parameter defines how AntiAd dispositions files detected as BBS ads
  307.     via the filename check. If you want AntiAd to delete the ad file, enter
  308.     DELETE; if you want AntiAd to store the ad file, enter STORE or comment the
  309.     line out.
  310.  
  311. KEYWORD_DISP
  312.     This parameter defines how AntiAd dispositions files detected as BBS ads
  313.     via the keyword algorithm. If you want AntiAd to delete the ad file, enter
  314.     enter DELETE; if you want AntiAd to store the file in the storage directory
  315.     (and delete it from the archive being processed), enter STORE or comment
  316.     the line out.
  317.  
  318. ADS_DB
  319.     The directory path and name for the BBS ads database.  This database can be
  320.     updated by the sysop by using the '-F' parameter of AntiAd (see section 10
  321.     of this document), freeing the sysop from being reliant on me to maintain
  322.     the ads database.  If you find a large number of new BBS ad files, please
  323.     upload them to my board for inclusion into my master ads database
  324.     distributed with AntiAd.  This database format is compatible with my
  325.     UpLoadProcessor (ULP) utility's BBS ads database.
  326.  
  327. NAME_LIST
  328.     The directory path and name for the BBS ads name list file.  This is a
  329.     ASCII text file with one 12 character filename per line.  Note that no
  330.     wildcards are permitted; this is by design to prevent accidental removal of
  331.     files by specifying something stupid like '*.AD'.  Note that only file
  332.     (less than a pre-determined number of bytes) will be checked by filename!
  333.  
  334. NAME_SIZE_LIMIT
  335.     This is the maximum size, in bytes, of files that will be filename tested.
  336.     As this is a potentially dangerous function (filename checking is hardly an
  337.     accurate means of identifying ads), it is recommended this be kept as small
  338.     as possible (no more than a few K).  It wouldn't be good to delete a 100K
  339.     executable from uploads by accident because it had the same name as some
  340.     dinky BBS ad.
  341.  
  342. KEYWORDS
  343.     The keyword sets (separated by commas) to search potential BBS ad files
  344.     for. Note that these keywords are case-sensitive!  If a potential ad file
  345.     contains ALL of the keywords or phrases, it will be dispositioned as a BBS
  346.     ad.  I suggest using the BBS name, area code and exchange, modem brand and
  347.     other key terms in their ads that seem static.  Between 5 and 10 keywords
  348.     are allowed per line; one line comprises a keyword set.  Furthermore, a
  349.     keyword set line may not be more than 128 characters long.  A maximum of
  350.     100 keyword sets may be defined. Note that BBS ad scanning time increases
  351.     with the number of keywords and keyword sets.
  352.  
  353. CHK_CMD_LINE
  354.     AntiAd is capable of executing another program before returning to the
  355.     upload processor.  If this is desired enter the command line to be executed
  356.     by AntiAd, otherwise, comment the line out.  Place the variable @FILE@
  357.     where the filespec is to be placed on the command line.  Obviously, the DOS
  358.     version of AntiAd can execute only DOS virus checkers and the OS/2 version
  359.     of AntiAd only OS/2 virus checkers.  * NOTE: If this option is used, AntiAd
  360.     will return the errorlevel returned by this program to the upload
  361.     processor, and will not use the NO_AD_ERRLEV or AD_ERRLEV settings.  This
  362.     is done for optimum compatibility with all upload processors.
  363.  
  364.  
  365. ┌──────────────────────────────┐
  366. │  9. Application Information  │
  367. └──────────────────────────────┘
  368.  
  369. ULP:
  370. ────
  371. The correct configuration setup for AntiAd within UpLoadProcessor is as a file
  372. checker, such as follows:
  373.  
  374.     Command #:  C:\ANTIAD\ANTIAD -Cc:\antiad\antiad.cfg
  375.     Successful errorlevel:  0
  376.  
  377. If you are running UpLoadProcessor 2.0 or higher, the additional switch "run in
  378. a window" can be set to either <Y>es or <N>o.  In some situations, such as
  379. running under a GUI environment, setting this to <N>o will yield improved
  380. performance.
  381.  
  382. In addition, ULP users should disable the integrated BBS ad checking, since
  383. AntiAd is more capable than ULP in detecting and removing BBS ads.  You may
  384. also remove the '-C' parameter if you choose to use the environment variable
  385. approach for defining the configuration file path.
  386.  
  387. EXZTEST:
  388. ────────
  389. The following is an excerpt from a message to me from Mike Cocke, outlining how
  390. he has installed AntiAd:
  391.  
  392.     ======================================================================
  393.     Packet: SALTAIR
  394.       Date: 12-10-92 (16:58)             Number: 7410
  395.       From: MIKE COCKE                   Refer#: 7192
  396.         To: STACY SMITH                   Recvd: NO
  397.       Subj: EXZTEST AND ANTIAD             Conf: (3) Utility
  398.     ----------------------------------------------------------------------
  399.     SS> I have a question regarding ExzTest and ANTI-AD that you may be
  400.     SS> able to answer. Does ExzTest repack the archive after processing?
  401.     SS> Is it selective? Do I need to trigger it in some fashion?
  402.  
  403.     It repacks the archives if that config option has been set.
  404.  
  405.     SS> I have a user having a little difficulty with ExzTest and AntiAd,
  406.     SS> and I'm trying to help him. Got a copy of 2.22, and read the docs,
  407.     SS> but that part wasn't clear.
  408.  
  409.     2.22 has some problems, including a system hanger.  Stop by the Hacker
  410.     Central and grab XZT8MC.ZIP
  411.  
  412.     SS> Would you be willing to share how you implemented AntiAd into
  413.     SS> ExzTest? I'd like to document it in the AntiAd docs...
  414.  
  415.     Sure - in a nutshell, set 'rezip secondary archives' to on, and install
  416.     AntiAd as a virus tester.  The key is the first point.  If this isn't
  417.     set, removals won't matter.
  418.     ======================================================================
  419.  
  420. If you have any further questions, I would suggest contacting Mike Cocke and
  421. getting the most recent version of ExzTest from his board or Salt Air.
  422.  
  423. ZIPLAB:
  424. ───────
  425. Apparently, ZipLab will not support the operation of more than one file checker
  426. automatically.  Or at least, how to add more than one is not readily apparent
  427. in the documentation.  Therefore, configure AntiAd into ZipLab and your virus
  428. scanner into AntiAd's CHK_CMD_LINE parameter.  In this way, ZipLab will call
  429. AntiAd, AntiAd will call your virus checker, and then return to ZipLab.
  430.  
  431. GENERIC BATCH FILE:
  432. ───────────────────
  433. The following generic batch file (modeled after PCBTEST.BAT) will autodetect
  434. the compression format of the archive using ARCID (again, a utility written by
  435. me), unpack the archive, check it for ads, remove any ads found via the
  436. list-file method, scan the files for viruses, and then clean up.  It can easily
  437. be expanded and/or modified to suit your needs:
  438.  
  439.     @Echo off
  440.     cls
  441.  
  442.     if exist pcbpass.txt del pcbpass.txt
  443.     if exist pcbfail.txt del pcbfail.txt
  444.  
  445.     d:\arcid\arcid %1 arj lzh zip
  446.     if errorlevel 98 goto UNKNOWN
  447.     if errorlevel 5  goto ZIP_TESTING
  448.     if errorlevel 4  goto PAK_TESTING
  449.     if errorlevel 3  goto LZH_TESTING
  450.     if errorlevel 2  goto ARJ_TESTING
  451.     if errorlevel 1  goto ARC_TESTING
  452.  
  453.     Echo ERROR: ARCID critical error...please notify sysop! > pcbfail.txt
  454.     exit
  455.  
  456.     :UNKNOWN
  457.     Echo ERROR: Unknown file format! > pcbfail.txt
  458.     exit
  459.  
  460.     :ARC_TESTING
  461.     md testing
  462.     cd testing
  463.     pkunpak -r %1
  464.     if not errorlevel 0 goto UNPACK_ERROR
  465.     d:\antiad\antiad -Cd:\antiad\antiad.cfg -Ld:\antiad\ad.lst
  466.     if exist d:\antiad\ad.lst pkunpak -d %1 @d:\antiad\ad.lst
  467.     goto SCAN
  468.  
  469.     :ARJ_TESTING
  470.     md testing
  471.     cd testing
  472.     arj e -y %1
  473.     if not errorlevel 0 goto UNPACK_ERROR
  474.     d:\antiad\antiad -Cd:\antiad\antiad.cfg -Ld:\antiad\ad.lst
  475.     if exist d:\antiad\ad.lst arj d -y %1 !d:\antiad\ad.lst
  476.     goto SCAN
  477.  
  478.     :LZH_TESTING
  479.     md testing
  480.     cd testing
  481.     lha e /m1 %1
  482.     if not errorlevel 0 goto UNPACK_ERROR
  483.     d:\antiad\antiad -Cd:\antiad\antiad.cfg -Ld:\antiad\ad.lst
  484.     if exist d:\antiad\ad.lst lha d /m1 %1 @d:\antiad\ad.lst
  485.     goto SCAN
  486.  
  487.     :PAK_TESTING
  488.     md testing
  489.     cd testing
  490.     pak e /wa %1
  491.     if not errorlevel 0 goto UNPACK_ERROR
  492.     d:\antiad\antiad -Cd:\antiad\antiad.cfg -Ld:\antiad\ad.lst
  493.     if exist d:\antiad\ad.lst pak d %1 @d:\antiad\ad.lst
  494.     goto SCAN
  495.  
  496.     :ZIP_TESTING
  497.     md testing
  498.     cd testing
  499.     pkunzip -o %1
  500.     if not errorlevel 0 goto UNPACK_ERROR
  501.     d:\antiad\antiad -Cd:\antiad\antiad.cfg -Ld:\antiad\ad.lst
  502.     if exist d:\antiad\ad.lst pkzip -d %1 @d:\antiad\ad.lst
  503.     goto SCAN
  504.  
  505.     :SCAN
  506.     scan /a /nomem /nopause *.*
  507.     if not errorlevel 0 goto VIRUS_ERROR
  508.  
  509.     cd ..
  510.     echo y|del testing\*.*
  511.     rd testing
  512.     if exist d:\antiad\ad.lst del d:\antiad\ad.lst
  513.     Echo File passed all tests... > pcbpass.txt
  514.     exit
  515.  
  516.     :UNPACK_ERROR
  517.     echo y|del testing\*.*
  518.     rd testing
  519.     if exist d:\antiad\ad.lst del d:\antiad\ad.lst
  520.     Echo ERROR: File failed integrity test... > pcbfail.txt
  521.     exit
  522.  
  523.     :VIRUS_ERROR
  524.     echo y|del testing\*.*
  525.     rd testing
  526.     if exist d:\antiad\ad.lst del d:\antiad\ad.lst
  527.     Echo ERROR: File failed virus test... > pcbfail.txt
  528.     exit
  529.  
  530.  
  531. ┌────────────────────────┐
  532. │  10. Manual Operation  │
  533. └────────────────────────┘
  534.  
  535. In order for sysops to be able to 'keep up' with new ads produced by the weenie
  536. sysops who insert the @!&*#%$ things, AntiAd is capable of scanning a BBS ad
  537. file and updating the BBS ads with it's information.  Don't worry about
  538. duplication, as part of the process is to purge duplicate BBS ad info. The
  539. command-line syntax for this functions is:
  540.  
  541.     ANTIAD -Cantiad.cfg -Fbbs.ad
  542.  
  543. or:
  544.  
  545.     ANTIAD -Cantiad.cfg -Fd:\bbs_ads\*.*
  546.  
  547. where 'antiad.cfg' is the full path and filename for the AntiAd configuration
  548. file, and 'bbs.ad' is the path and filename for the BBS ad file(s) to be added
  549. to the BBS ads database.  Standard DOS wildcard characters are permitted for
  550. multiple file addition.  I suggest only adding executable or ANSI BBS ads to
  551. the database, since they are not easily changed by a sysop before insertion
  552. into an archive.
  553.  
  554. I would greatly appreciate your uploading of any new BBS ad files that you may
  555. collect over time to my BBS so I can update the master listing that I include
  556. with the AntiAd distribution archive.  Please refer to the top of this document
  557. for my BBS number.
  558.  
  559. The latest version of my BBS ads database is included in the distribution
  560. archive.  In order to add whatever new BBS ads information that may be
  561. contained, you can merge it with your current BBS database:
  562.  
  563.     ANTIAD -Cantiad.cfg -Mother.db
  564.  
  565. where 'antiad.cfg' is the full path and filename for the AntiAd configuration
  566. file, and 'other.db' is the path and filename for the other BBS ads datatbase
  567. to be merged with the master ads database.
  568.  
  569.  
  570. ┌────────────────────────────┐
  571. │  11. The Future of AntiAd  │
  572. └────────────────────────────┘
  573.  
  574. AntiAd will be supported as long as I'm in the BBSing business (which will be
  575. quite a while...once it's in your blood, you can never shake it <g>).  The
  576. AntiAd system will be rapidly expanding it's features so it will be your first
  577. choice in BBS ad eradicator.  Some current plans:
  578.  
  579.       ∙ Develop a series of keyword sets to allow detection of most, if not
  580.         all, BBS ads.
  581.       ∙ None...any ideas from you guys? Thanks! <g>
  582.  
  583. If you have any other suggestions, contact me by U.S. snail-mail or on my BBS
  584. at the number at the top of this document.
  585.  
  586. Thanks for giving AntiAd a try!
  587.  
  588.  
  589. ┌────────────────────────────────┐
  590. │  Appendix A:  DOS Errorlevels  │
  591. └────────────────────────────────┘
  592.  
  593. The following is a list of the errorlevels than can be returned by AntiAd:
  594.  
  595.         Variable    Successful execution
  596.         Variable    Successful execution, BBS ad list file created
  597.         Variable    Successful execution, file checker errorlevel returned
  598.         99          Help screen (executing a program with no or an
  599.                         insufficient number of arguments)
  600.         100         Could not close all open files
  601.         101         Unknown command line parameter
  602.         102         Config file not found
  603.         103         Too many keywords in a keyword set
  604.         104         Too few keywords in a keyword set
  605.         105         Too many keyword sets defined
  606.         106         Keyword set line too long
  607.         110         Unable to allocate heap memory
  608.         111         Unable to open or lock disk logging file
  609.         114         Unable to open BBS ads database file
  610.         115         Invalid filename provided by user on command-line
  611.         116         Invalid path provided by user on command-line
  612.         117         Unable to open BBS ads name list file
  613.         120         Invalid BBS ad database format
  614.         200         Undefined error (internal to AntiAd program)
  615.