home *** CD-ROM | disk | FTP | other *** search
/ Telecom / 1996-04-telecom-walnutcreek.iso / caller-id / asp.procomm < prev    next >
Internet Message Format  |  1993-07-30  |  11KB

  1. From telecom@delta.eecs.nwu.edu Fri Jul 23 12:37:33 1993
  2. Received: from delta.eecs.nwu.edu by gaak.LCS.MIT.EDU via TCP with SMTP
  3.     id AA03577; Fri, 23 Jul 93 12:37:28 EDT
  4. Received: by delta.eecs.nwu.edu id AA14039
  5.   (5.65c/IDA-1.4.4 for ptownson@gaak.lcs.mit.edu); Fri, 23 Jul 1993 11:37:20 -0500
  6. Date: Fri, 23 Jul 1993 11:37:20 -0500
  7. From: TELECOM Moderator <telecom@delta.eecs.nwu.edu>
  8. Message-Id: <199307231637.AA14039@delta.eecs.nwu.edu>
  9. To: ptownson@gaak.LCS.MIT.EDU
  10. Subject: callid.asp.using.procomm
  11. Status: RO
  12.  
  13.  
  14. >From telecom Fri Jul 23 07:59:30 1993
  15. Received: by delta.eecs.nwu.edu id AA09040
  16.   (5.65c/IDA-1.4.4 for \telecom); Fri, 23 Jul 1993 07:59:24 -0500
  17. Received: from uvs1.orl.mmc.com by delta.eecs.nwu.edu with SMTP id AA29769
  18.   (5.65c/IDA-1.4.4 for <telecom@delta.eecs.nwu.edu>); Fri, 23 Jul 1993 07:58:46 -0500
  19. Received: from TCCSLR.DECnet MAIL11D_V3 by uvs1.orl.mmc.com (5.57/Ultrix3.0-C)
  20.     id AA16314; Fri, 23 Jul 93 09:01:10 -0400
  21. Date: Fri, 23 Jul 93 09:01:09 -0400
  22. Message-Id: <9307231301.AA16314@uvs1.orl.mmc.com>
  23. From: padgett@tccslr.dnet.mmc.com (A. Padgett Peterson, P.E. Information Security)
  24. To: "telecom@delta.eecs.nwu.edu"@UVS1.dnet.mmc.com
  25. Subject: Pat - Caller-ID ASPect file for procomm
  26. Status: R
  27.  
  28. ;**************************************************************
  29. ;        CALLID.ASP (C) 1992 by Padgett Peterson
  30. ;
  31. ;    CALLID.ASP is a PROCOMM Aspect script file that may be
  32. ;       used on those telephone lines returning such information.
  33. ;       This version is being made available as FREEWARE and may
  34. ;       be included/distributed freely so long as 1) This copyright
  35. ;       notice remains intact, 2) No changes are made to this
  36. ;       script, and 3) No charge beyond a minimal distribution
  37. ;       fee is levied.
  38. ;
  39. ;       As such no warranty is made for fitness of any kind and
  40. ;       use is strictly at the recipient's own risk.
  41. ;
  42. ;       The program requires a modem that will return Caller-ID
  43. ;       values when instructed. Use will permit screening of
  44. ;       calls prior to the line being placed off-hook: if the
  45. ;       calling number is blocked or does not appear in the file
  46. ;       CALLID.DAT, the line will not be answered.
  47. ;
  48. ;       One effective use would be on a line having both modem
  49. ;       and FAX service. If the call is not from a known host,
  50. ;       the modem will not pick up and the FAX or voice mail
  51. ;       may connect instead. If this use is selected it will be
  52. ;       necessary to set the FAX not to answer until sufficient
  53. ;       time has elapsed after the first ring for the list of known
  54. ;       numbers to be scanned and a decision made.
  55. ;
  56. ;       CALLID makes use of two files CALLID.DAT, the repository
  57. ;       of numbers to be answered in the format <number>;<text>.
  58. ;       The <number>  must contain all digits returned by the
  59. ;       Caller-ID stream but the format is unimportant since all
  60. ;       non-numeric characters will be stripped. Syntactically,
  61. ;       (407)555-1212 is the same as 407.555.1212, 4075551212, or
  62. ;       407 555 1212. The second file CALLID.LOG is created or
  63. ;       appended when the script executes and contains the information
  64. ;       on calls attempted.   
  65. ;       
  66. ;       For proper use as a PROCOMM "HOST" the HOST SETUP must be set
  67. ;       to EXIT on completion. The only known problem at this time
  68. ;       is the condition if an "approved" number calls the system
  69. ;       and hangs up before a connection is made. In this case PROCOMM
  70. ;       may "hang" in the HOST "waiting" mode and will answer the
  71. ;       next call. This is a problem with the HOST mode that will require
  72. ;       complete HOST emulation in the ASPECT file to correct (in work). 
  73. ;
  74. ;                        Version History
  75. ;
  76. ;       0.71 (beta) 1 November 1992    Southern Bell/Supra FAX/Modem
  77. ;                                      version, 1st issue.
  78. ;
  79. ;       For more information contact the author at (407)352-6007 6-9 pm
  80. ;       EST (no collect calls) or write to POB 1203, Windermere, FLA, 
  81. ;        34786. Please enclose a #10 SASE. 
  82. ;
  83. ;       PROCOMM, PROCOMM+, and ASPECT are registered products of
  84. ;       Datastorm Inc. (800)326-4799
  85. ;
  86. ;       Supra FAX/Modem is a product of the Supra Corp. (800)727-8647
  87. ;
  88. ;*******************************************************************
  89. ;
  90. define atcmd   "AT^M"          ; basic AT command
  91. define cichk   "AT#CID=?^M"    ; these commands are valid for a Supra
  92. define cicmd   "AT#CID=1^M"    ; FAX/Modem with Caller-ID enabled
  93. define noans   "ATS0=0^M"      ; Reset modem to non-answer
  94. define ringmsg "RING"
  95. define okstr   "OK"
  96. define erstr   "ERROR"
  97. define blank   " "
  98. define logfil  "callid.log"    ; Log file for received calls
  99. define datfil  "callid.dat"    ; Data files for "approved" numbers
  100. ;
  101. ; Global Variables
  102. ;
  103.  string idline,strnum,instr,crlf,tmps1,tmps2
  104.  integer idlen,tmpn1,flag,dflag,pos,char,nhi
  105. ;
  106. proc main
  107. ;
  108. ;
  109.  strset crlf 10 1
  110. ;
  111. ;     Setup
  112. ;
  113.  set keys on
  114.  set display off
  115.  vidsave 0
  116.  box 8 21 15 77 00
  117.  box 7 20 14 75 79
  118.  atsay 8 28 79 " Caller-ID Handler (C) 1992 by Padgett "
  119. ;
  120. ;    Make sure modem is turned on
  121. ;
  122.  set rxdata on
  123.  atsay 10 22 79 "Waiting for Modem"
  124.  transmit noans
  125.  call getstr with &instr
  126.  call getstr with &instr
  127.  strcmp instr okstr 2
  128.  if success
  129.    atsay 10 22 79 "Modem Responding    "
  130.   else
  131.    atsay 10 22 79 "Modem not responding   "
  132.    set rxdata off 
  133.    waitquiet 2 2
  134.   goto enditall
  135.  endif
  136. ;
  137. ;    Check for Caller-Id supporting modem
  138. ;
  139.  atsay 10 40 79 "- Caller-ID Initializing"
  140.  set rxdata on
  141.  transmit cicmd
  142.  call getstr with instr    ; flush command echo
  143.  call getstr with &instr   ; get response
  144.  strcmp instr erstr 5      ; IF not "ERROR" assume OK
  145. ;
  146.  if success
  147.     atsay 10 65 79 "- Failed"
  148.     waitquiet 2 2
  149.     goto enditall
  150.  else
  151.     atsay 10 65 79 "- Success"
  152.     call getstr with instr    ; flush OK
  153.  endif
  154. ;
  155. ;    Open the data file
  156. ;
  157.  findfirst datfil
  158.  if found
  159.   atsay 11 22 79 "Data File Present"
  160.   fopen 0 datfil "rt"
  161.    if success
  162.     atsay 11 40 79 "- Opened"
  163.     dflag=1 
  164.    else
  165.     atsay 12 22 79 "Data file could not be opened - terminating"
  166.     waitquiet 2 2
  167.     goto enditall  
  168.    endif
  169.  else
  170.    atsay 11 22 79 "No Data File      - Logging only"
  171.    dflag=0     
  172.  endif
  173. ;
  174. ;     Open the LOG file
  175. ;
  176. openlog:
  177.  findfirst logfil
  178.  if found
  179.   fopen 1 logfil "at"
  180.   fseek 1 0 2
  181.  else
  182.   log open logfil
  183.   log close
  184.   goto openlog
  185.  endif
  186.   if success
  187.     atsay 12 22 79 "Log File          -"
  188.    else
  189.     atsay 12 22 79 "Log file could not be opened - terminating"
  190.     waitquiet 2 2
  191.     goto close0  
  192.   endif
  193. ;
  194. ;    Record Date & Time to Log - monkey motion but allows both
  195. ;                                   screen and file write
  196.    if dflag==0
  197.     fwrite 1 "Logging only, " 14
  198.    endif
  199.    strset tmps1 32 27
  200.    strupdt tmps1 "Opened:" 0 7
  201.    date tmps2
  202.    strupdt tmps1 tmps2 8 8
  203.    time tmps2 1
  204.    strupdt tmps1 tmps2 17 8 
  205.    fatsay 12 42 79 "%.25s" tmps1
  206.    strupdt tmps1 crlf 25 1 
  207.    tmpn1=26
  208.    fwrite 1 tmps1 tmpn1
  209. ;
  210. ;    Create LOG Box
  211. ;
  212.     box 17 21 23 77 00
  213.     box 16 20 22 75 79
  214.     atsay 17 40 79 "- Received Calls -"
  215. ;
  216. ;    Wait For Ring Signal
  217. ;
  218.     when 0 "RING" call numhan
  219. ringlp:
  220.     atsay 13 22 79 "Waiting for Ring  - Press any key to abort"
  221.     set display off
  222.     set rxdata off
  223. ;
  224.     if hitkey == 0
  225.      goto ringlp
  226.     endif
  227.     set keys off
  228.     goto close1
  229. ;
  230. ; End the program
  231. ;
  232. close1:
  233.   fclose 1
  234. close0:
  235.   if dflag == 1
  236.    fclose 0
  237.   endif
  238. enditall:
  239.   cwhen 0
  240.   set rxdata off
  241.   vidrest 0
  242.   set display on
  243.   exit
  244. endproc
  245. ;
  246. ;----------------------------------------------------------------------
  247. ;
  248. ; Procedure to concatenate numbers from a string up to the first blank
  249. ;  and strip out all other characters
  250.  
  251. proc stripnum
  252.  
  253. strparm in1,out1
  254. intparm j1
  255. integer i1,p1,c1
  256. ;
  257. ;    Find the limit of what is to be checked
  258. ;
  259.  
  260.      find in1 ";" p1
  261.      if not found
  262.         strlen in1 p1
  263.      endif
  264. ;
  265. ;     Now concatenate just the numbers
  266.       j1 = -1
  267.       strset out1 0 40
  268. ;
  269.       for i1 = 0 upto p1
  270.        strpeek in1 i1 c1
  271.        if (c1 > 47) && (c1 < 58) 
  272.          j1= j1 + 1
  273.          strpoke out1 j1 c1
  274.        endif
  275.       endfor
  276. ;
  277. endproc
  278. ;----------------------------------------------------------
  279. ;
  280. ; Procedure to create an input string of characters to <cr>
  281. ; from the COM port. May also be used to flush the port.
  282. ;
  283. proc getstr   
  284. ;
  285.   strparm gss
  286.   integer gsj,gsc
  287. ;
  288.   set rxdata on
  289.   strset gss 0 40
  290.   gsj=0
  291. lp2:
  292.    comgetcd gsc
  293.    if gsc < 32  
  294.     if (gsj != 0) || (gsc == -1) 
  295.      goto endit
  296.     else
  297.       goto lp2
  298.     endif
  299.    endif
  300.    strpoke gss gsj gsc
  301.    gsj = gsj + 1
  302.    goto lp2
  303. ;
  304. endit:
  305. ;
  306. endproc
  307. ;
  308. ;---------------------------------------------------------------------------
  309. ;
  310. ; Call Handling Procedure - Procedure is called by WHEN "RING" command
  311. ;
  312. proc numhan
  313. ;
  314.    cwhen 0
  315.    atsay 13 22 79 "             Checking Number              "
  316. chklp:
  317.    strset instr 0 40 
  318.    strset tmps2 0 41
  319.    call getstr with &instr   ; get date
  320.    strcmp instr "TIME" 4 
  321.    if not success
  322.     strcmp instr "RING"     ; second string will be RING if no Caller-ID
  323.     if not success
  324.         goto chklp
  325.     else
  326.         goto endnh
  327.     endif
  328.    endif
  329. ;
  330.    scroll 1 18 22 21 74 79          ; new entry so scroll the screen
  331. ;
  332.    fatsay 21 22 79 "%.15s" instr
  333.    fwrite 1 instr 15              ; log the time
  334.    call getstr with &tmps1                ; get number
  335.    call stripnum with tmps1 &tmps2 &idlen ; strip it
  336. ;
  337.    if dflag == 0
  338.      atsay 13 22 79 "       Logging Calling Number           "
  339.      goto nonum
  340.    endif
  341. ;
  342. ;    Check the number
  343. ;
  344.    rewind 0
  345. ;
  346.    while not eof 0
  347.      strset idline 0 41
  348.      fgets 0 idline 
  349.      call stripnum with idline &strnum &idlen
  350.      if idlen < 1 
  351.         goto noline
  352.      endif
  353.      strcmp strnum tmps2 idlen
  354.      if success
  355.         goto foundnum
  356.      endif
  357. noline:   
  358.    endwhile
  359. ;
  360. ;    Number not found
  361. ;
  362.    atsay 13 22 79 "         No Match -                     "
  363. nonum:
  364.    flag=0
  365.    fwrite 1 " No Match " 10
  366.    fwrite 1 tmps2 40
  367.    fwrite 1 crlf 1
  368.    goto wrtnum
  369. ;   
  370. ;    Number Found
  371. ;
  372. foundnum: 
  373.    
  374.    flag=1
  375.    fwrite 1 "   Match  " 10
  376. ;
  377. ; Strip any control characters out of idline
  378. ;
  379.    strlen idline pos
  380.    for nhi=1 upto pos
  381.      strpeek idline nhi char
  382.      if char < 32
  383.       strpoke idline nhi 32
  384.      endif
  385.    endfor
  386. ;
  387. ; Now output the entry to the LOG file
  388. ;
  389.    fwrite 1 idline 40
  390.    fwrite 1 crlf 1
  391.    strcpy tmps2 idline 40
  392. ;
  393. ;    Put the Information on the screen also (last 4 numbers)
  394. ;
  395. wrtnum:
  396.           fatsay 21 35 79 "%.40s" tmps2
  397. ;
  398. ;    DOIT
  399. ;
  400.      if flag == 1
  401.            vidsave 1
  402.            atsay 13 22 79 "    Number Matched - Entering HOST mode   "
  403.            HOST
  404.            transmit noans      ; Just to be sure
  405.            vidrest 1
  406.      endif
  407. ;
  408. endnh:
  409.     set display off
  410.     set rxdata off
  411.     atsay 13 22 79 "System resetting  - Waiting for silence  "
  412.     waitquiet 5 forever
  413.     when 0 "RING" call numhan
  414. endproc
  415. ;---------------------------------------------------------------------
  416.  
  417.  
  418.  
  419.