Advertisement
Guest User

Untitled

a guest
Aug 7th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Icon 3.32 KB | None | 0 0
  1. link cgi
  2.  
  3. $define MAX 1000000
  4.  
  5. procedure main()
  6.     parm := cgiparms()
  7.  
  8.     if /parm["form"] then print_login("") #doesn't return
  9.  
  10.     case !parm["form"] of {
  11.         "login" : { authenticate(!\parm["password"] | "") |
  12.                             print_login("Incorrect Password")
  13.                     print_which(!parm["password"]) #password as session
  14.             }
  15.         "which" :   do_which(parm)
  16.         "operands" : do_operands(parm)
  17.         "result" :  do_result(parm)
  18.         default: print_login("")
  19.     }
  20. end
  21.  
  22. procedure print_login(msg)
  23.     in := open("html/login.html") | stop("Cannot open login.html")
  24.     text := reads(in, MAX)
  25.     text ? {
  26.         writes("Content-type: text/html\n\n")
  27.         writes( tab(find("#error#")) )
  28.         writes(msg)
  29.         ="#error#"
  30.         writes(tab(0))
  31.     }
  32.     exit()
  33. end
  34.  
  35. procedure print_which(session)
  36.     in := open("html/which.html") | stop("Cannot open which.html")
  37.     text := reads(in, MAX)
  38.     text ? {
  39.         writes("Content-type: text/html\n\n")
  40.         writes( tab(find("#session#")) )
  41.         writes(session)
  42.         ="#session#"
  43.         writes(tab(0))
  44.     }
  45.     exit()
  46. end
  47.  
  48. procedure print_operands(session, op, optext, errmsg)
  49.     in := open("html/operands.html") | stop("Cannot open operands.html")
  50.     text := reads(in, MAX)
  51.     text ? {
  52.         writes("Content-type: text/html\n\n")
  53.         writes( tab(find("#session#")) )
  54.         writes(session)
  55.         ="#session#"
  56.         writes( tab(find("#operator#")) )
  57.         writes(op)
  58.         ="#operator#"
  59.         writes( tab(find("#operation#")) )
  60.         writes(optext)
  61.         ="#operation#"
  62.         writes( tab(find("#error#")) )
  63.         writes(errmsg)
  64.         ="#error#"
  65.         writes(tab(0))
  66.     }
  67.     exit() 
  68. end
  69.  
  70. procedure print_result(session, x, op, y, val)
  71.     in := open("html/result.html") | stop("Cannot open result.html")
  72.     text := reads(in, MAX)
  73.     text ? {
  74.         writes("Content-type: text/html\n\n")
  75.         writes( tab(find("#session#")) )
  76.         writes(session)
  77.         ="#session#"
  78.         writes( tab(find("#left#")) )
  79.         writes(x)
  80.         ="#left#"
  81.         writes( tab(find("#operation#")) )
  82.         writes(op)
  83.         ="#operation#"
  84.         writes( tab(find("#right#")) )
  85.         writes(y)
  86.         ="#right#"
  87.         writes( tab(find("#answer#")) )
  88.         writes(val)
  89.         ="#answer#"
  90.         writes(tab(0))
  91.     }
  92.     exit()     
  93. end
  94.  
  95. procedure print_bye()
  96.     in := open("html/bye.html") | stop("Cannot open bye.html")
  97.     text := reads(in, MAX)
  98.     writes("Content-type: text/html\n\n", text)
  99.     exit(0)
  100. end
  101.  
  102. procedure do_which(parm)
  103.     get_session(session := !\parm["session"]) | print_login("")
  104.     op := !\parm["operation"] | print_login("")
  105.     optext := human(op) | print_login("")
  106.     print_operands(session, op, optext, "")
  107. end
  108.  
  109. procedure human(op)
  110.     return case op of {
  111.         "+" : "addition"
  112.         "-" : "subtraction"
  113.         "*" : "multiplication"
  114.     }
  115. end
  116.  
  117. procedure do_operands(parm)
  118.     get_session(session := !\parm["session"]) | print_login("")
  119.     op := !\parm["operation"] | print_login("")
  120.     x := !\parm["x"] | print_login("")
  121.     y := !\parm["y"] | print_login("")
  122.     op == !"+-*" | print_login("")
  123.     ( x := numeric(x) & y := numeric(y) ) |
  124.         print_operands(session, op, human(op), "Invalid operands, try again")
  125.     val := case op of {
  126.         "+" : x+y
  127.         "-" : x-y
  128.         "*" : x*y
  129.     }
  130.     print_result(session, x, op, y, val)
  131. end
  132.  
  133. procedure do_result(parm)
  134.     get_session(session := !\parm["session"]) | print_login("")
  135.     if \parm["another"] then  print_which(session) else print_bye()
  136. end
  137.  
  138. procedure get_session(session)
  139.     return authenticate(session)
  140. end
  141.  
  142. procedure authenticate(pwd)
  143.     if pwd == ("frog123" | "password") then return else fail
  144. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement