Revolution for CGI Scripts

Sivakatirswami katir at hindu.org
Mon Apr 1 15:32:01 EST 2002


on 4/1/02 7:01 AM, Mark Guzdial  wrote:

> How does one get started exploring Revolution for CGI Scripts?
It's great you will love it... forget PERL.

>I don't 
> see anything in the built-in documentation nor anything on the website.
Yes, no documentation released: Here's the quick version.. assumes you have
web space on a remote host in a virtual domain (i.e. your ISP/web host...)

1) get a UNIX friend to download and un tar the engine (you might have to
get the engine from the Metacard site) you need for the platform you will be
one... Solaris or whatever..have them FTP that to you using binary
transfer...  ( in my case, to our site and then I download to my Mac... be
sure to use binary transfer)

2) Now, upload that engine to your cgi-bin on the site, set permissions to
CHMOD 755... then take a look in your web master error logs and you will see
the path that the server uses to point to files in your public_html
directory. This may vary from server to server

3) then you put scripts on the site, in your CGI bin like this:

#!/export/vhost/org/g/greatsite/www/public_html/cgi-bin/mc

--where the above is the path to files in your home/public_html
--and simply points to the MC engine you installed

on startup
   set the directory to "../images"
   put random(49) into ArtNo
   put "taka_art_" &ArtNo&".gif" into nextArt
   put URL ("binfile:header_art/"&nextArt) into URL
("binfile:taka_header_art.gif")
 put "Done" into theResult
  put "Content-Type: text/html" & cr
   put "Content-Length:" && the length of theResult & cr & cr
   put theResult
end startUp

now, set the permissions CHMOD 755 for the above script also.


fyi the above script takes a random image from a folder (all the same size
of course) and copies it to another image... the html file that uses the
image then has a different image in that same place. i.e. this is a daily
rotation of an image on site.

Here is another script that processes a simple subscription on a form and
sends email off to subscribe the individual

#!/export/vhost/org/g/greatwebsite/www/public_html/cgi-bin/mc
 on startup
    read from stdin until empty
    put  urlDecode (it)  into tDataIn
    split tDataIn by "&" and "="
    put isWellFormedMailtoScheme (tDataIn ["email"]) into emailCheck
    switch emailCheck
      case "False"
      put badEmail(fixYourEmail) into tResponse
      break     
      case "True"

put  tDataIn ["subscribe_mc"] into tRemit
put tDataIn ["email"] after tRemit

  put "---Valid Web Subscription--" & cr before tRemit
    put "/usr/lib/sendmail -t" into mprocess
 open process mprocess for write
  write "From:" && "webmaster at hindu.org" & cr to process mprocess
   write "To:" && "mylistAdmin at someListServe.org" & cr to process mprocess
 write "Subject:" && "Subscriber to Master Course" & cr & cr to process
mprocess
  write tRemit to process mprocess
  close process mprocess
  wait until the openprocesses is empty
 ## now we send an acknowledgement to the person by HTTP
 put url "file:../mc/subscr-mc_thankyou.shtml" into tResponse
   replace "***Subscriber***" with tDataIn ["email"] in tResponse
end switch

  put "Content-Type: text/html" & cr
  put "Content-Length:" && the length of tResponse & cr & cr
  put tResponse

 end startup

##this function is a bit "hokey" but works ... new regEx expressions
## should make this easier now... but haven't had time to re-write it.


function isWellFormedMailtoScheme  email

  # return TRUE if email is a legal email URI, else return FALSE
  # We are not actually *validating* the email address, only its syntax.
  # Per address specification rules of RFC822: Standard for ARPA Internet
Text Messages
  # http://www.w3.org/Protocols/rfc822/Overview.html
  
  # Basic syntax requires: one or more characters before the @ sign,

  split email by "@"
  if extents(email) <> "1,2" then return false # only 1 @-sign is permitted
  put email[2] into hostanddomain
  
  # There are 2 options to check, domain-literal or domain-logical:


  # domain-literal option:
  # primitive network host address form, must have [###.###.###.###] where 0
< # < 256
  if char 1 of hostanddomain = "[" then
    if not last char of hostanddomain = "]" then return false
    delete char 1 of hostanddomain
    delete last char of hostanddomain
    set the itemDel to "."
    if the num of items of hostanddomain <> 4 then return false
    repeat with x = 1 to 4
      if not isNumber(item x of hostanddomain) then return false
      if item x of hostanddomain > 255 or item x of hostanddomain < 1 then
return false
    end repeat
    return TRUE
  end if
  
  # domain-logical option: (the "normal" form)
  # this permits an arbitrary number of strings separated by ".", ending in
a domain name
  set the itemDel to "."
  put the num of items of hostanddomain into hostanddomainItems
  if hostanddomainItems = 0 then return false
  if hostanddomain contains ".." then return false # empty hosts not allowed
  repeat with x = length(hostanddomain) down to 1
    if not ("0123456789.-abcdefghijklmnopqrstuvwxyz_" contains char x of
hostanddomain) then return false
  end repeat
  return TRUE
end isWellFormedMailtoScheme

function badEmail
put "<html><head><Title>There is a problem with your email address!"\
& "</TITLE></HEAD><CENTER><BODY BGCOLOR=#ffffff> <FONT
color=FF0000><h3>Sorry,"\
& "there was something wrong in the way you entered your email. <br>"\
& "Please go back and enter it again. Thank
you.</H3></FONT></CENTER></BODY></HTML>" into fixYourEmail
return fixYourEmail
end badEmail


> Thanks!
> Mark

I also have a REV "gadget" that I keep all my cgi's in and I can upload them
to site, set CHMOD automatically and then run them and "catch" and returned
data in a field... for fast testing i.e. avoids the FTP
Client/browser/Bbedit loop for your dev and testing.

Hinduism Today

Sivakatirswami
Editor's Assistant/Production Manager
katir at hindu.org 
www.HinduismToday.com, www.HimalayanAcademy.com,
www.Gurudeva.org, www.hindu.org

Read The Master Course Lesson of the Day at
http://www.gurudeva.org/lesson.shtml




More information about the use-livecode mailing list