home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / pspag032.zip / pager.cmd next >
OS/2 REXX Batch file  |  1998-05-14  |  5KB  |  161 lines

  1. /******************************************************************************
  2. Pille's Pager in REXX                                                    v0.3.2
  3.  
  4. This is EMailware - write me a message with location of your pager to register 
  5.  for updates/info/support !
  6.  
  7. Usage: 
  8.  
  9. Needs: 
  10.   * IBM OS/2 w/ ReXX installed
  11.   * an OS/2 webserver capable of running CGI's (I use Apache v1.2.4)
  12.   * a FORM like:
  13.     <FORM method=POST action="http://YOUR.MACHINE.DOM.AIN/cgi-bin/pager.cmd">
  14.     <B>Message </B><input type="text" name="message" size=55 maxlength=80>
  15.     <INPUT align=right type="submit" name="pushbutton" value="Send"></FORM>
  16.   * or a Link like:
  17.    <A HREF="http://YOUR.MACHINE.DOM.AIN/cgi-bin/pager.cmd?message=Hello%20You%20Fool">
  18.     Hello You Fool</A>
  19.   * pmpopup2 - from hobbes
  20.  
  21. Bugs/notes:
  22.   * Rewrite the HTML Code to suit your needs
  23.   * enough
  24.  
  25. History:
  26.   * 19980513: dumped named pipe now using pmpopup2
  27.   * 19980405: start (3 hours)
  28.               added logging
  29.  
  30. Future:
  31.   * Will I have one doing such stupid scripts? ;)
  32.  
  33. Latest Version: http://www.chillout.org/auswurf/software.html
  34.  
  35. Credits:
  36.          --jlennon@IRCNet #OS/2ger - idea, his own pager script
  37.          --Sacha Prins, <sacha@prins.net> for CGIParse 1.07         
  38.  
  39. Have phun...
  40.                       Pille <pille@chillout.org>  -  http://www.chillout.org/
  41.                       Pille@IRCnet
  42. ******************************************************************************/
  43. Call RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
  44. Call 'SysLoadFuncs'
  45. SIGNAL ON HALT NAME die
  46. SIGNAL ON FAILURE NAME die
  47. SIGNAL ON SYNTAX NAME die
  48. SIGNAL ON ERROR NAME die
  49.  
  50. /*
  51. ** Settings & defaults
  52. */
  53. _log    = "/usr/log/pager"  /*where to log pager messages*/
  54. _delay    = 30                /*seconds to display the popup (max 65 secs, 0 to
  55.                               disable autocloseing popups)*/
  56. /*
  57. ** End of Settings
  58. */
  59.  
  60. _lf         = x2c(0a)
  61. _host       = value("REMOTE_HOST",,"OS2ENVIRONMENT") 
  62. call CGIParse
  63.  
  64. IF cgi.message='CGI.MESSAGE' THEN DO;
  65.     rc = Charout(,"Content-type: text/html" || _lf) 
  66.     rc = Charout(,_lf || "So wird das nix!" || _lf)
  67.   END
  68. ELSE DO
  69.     rc = Charout(,"Content-type: text/html" || _lf) 
  70.     '@start /pm /b pmpopup2 "From' _host || ':~~' cgi.message '" "WebPager Message" /a:c /b2:"Trash" /t:' || _delay
  71.     '@echo' _host '[' || DATE() TIME() ||'] WebPager -' cgi.message '>>' _log
  72.     rc = Charout(,_lf || "<HTML><HEAD><TITLE>Extreme - Message to Screen</TITLE></HEAD>")
  73.     rc = Charout(,"<BODY BGCOLOR=#00002b TEXT=#aae0aa ALINK=#ffff80 VLINK=#e0c000 LINK=#e0c000 background=http://www.chillout.org/pics/background.jpg>")
  74.     rc = Charout(,"<TABLE BORDER=0 WIDTH=100% HEIGHT=100%><TR><TD ALIGN=MIDDLE VALIGN=MIDDLE>Donge ;*)<BR>")
  75.     rc = Charout(,"<P>'<B>" || cgi.message || "</B>' auf dem Bildschirm angezeigt</P><A HREF=http://www.chillout.org/webmail.html?to=pille>Nochmal?</A></BODY></HTML>")
  76.     rc = Charout(,"</TD></TR></TABLE>" || _lf)
  77.   END
  78.  
  79. Die:
  80.  
  81. quit:
  82. rc = charout(,_lf)
  83. exit 0
  84.  
  85. /******************************** procedures **********************************/
  86.  
  87. RxCat: procedure
  88. parse arg file1
  89.  rc=STREAM(file1,'C','OPEN READ')
  90.  rc=CHAROUT(,CHARIN(file1,,STREAM(file1,'c','QUERY SIZE')))
  91.  rc=STREAM(file1,'C','CLOSE')
  92. return 0
  93.  
  94. exists: procedure
  95. parse arg stream
  96. IF STREAM(stream, 'C', 'QUERY EXISTS') = '' THEN RETURN 0
  97.         ELSE RETURN 1
  98.  
  99. /* CGIPARSE 1.0.7, public release 1.0, build 7 */
  100. /*********************************************************************/
  101. CGIParse:PROCEDURE EXPOSE cgi.
  102.  
  103. queryString=''
  104.  
  105. IF getEnv('REQUEST_METHOD') = 'POST' THEN
  106.  DO
  107.     IF getEnv('CONTENT_TYPE') \= 'application/x-www-form-urlencoded' THEN RETURN 1
  108.     j= getEnv('CONTENT_LENGTH')
  109.     IF DATATYPE(j, 'W') \= 1 THEN queryString=''
  110.     ELSE queryString= LINEIN()
  111.  END
  112. ELSE /* GET */
  113. DO
  114.  queryString= getEnv('QUERY_STRING')
  115. END
  116.  
  117. queryString= TRANSLATE(queryString, ' ', '+')
  118.  
  119. DO WHILE LENGTH(queryString) > 0
  120.  varCouple= ''
  121.  PARSE VAR queryString varCouple'&'queryString
  122.  PARSE VAR varCouple varName'='varVal
  123.  IF varName = '' | varVal= '' THEN ITERATE
  124.  varName= 'cgi.' || urlDecode(varName)
  125.  varVal=  urlDecode(varVal)
  126.  IF SYMBOL(varName) = 'BAD' THEN ITERATE
  127.  IF VALUE(varName) \= TRANSLATE(varName) THEN call VALUE varName, VALUE(varName) || '0d'x || varVal
  128.  ELSE call VALUE varName, varVal
  129. END
  130.  
  131. RETURN 0
  132.  
  133. /*********************************************************************/
  134. URLDecode:PROCEDURE EXPOSE cgi.
  135.  
  136. IF ARG()\=1 THEN RETURN ''
  137. line= ARG(1)
  138. lineLen= LENGTH(line)
  139. newLine= ''
  140.  
  141. i=1
  142. DO WHILE i <= lineLen
  143.  c= SUBSTR(line, i, 1)
  144.  IF c \= '%' THEN newLine = newLine || c
  145.  ELSE IF i+2 <= lineLen THEN
  146.                         DO
  147.                            newLine= newLine || x2c(SUBSTR(line, i+1, 2))
  148.                            i=i+2
  149.                         END
  150.  i= i+1
  151. END
  152. RETURN newLine
  153.  
  154.  
  155. /*********************************************************************/
  156. getEnv:PROCEDURE
  157. RETURN VALUE(ARG(1),, 'OS2ENVIRONMENT')
  158.  
  159. /*********************************************************************/
  160. putEnv:PROCEDURE
  161. RETURN VALUE(ARG(1), ARG(2), 'OS2ENVIRONMENT')