Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- link cgi
- $define MAX 1000000
- procedure main()
- parm := cgiparms()
- if /parm["form"] then print_login("") #doesn't return
- case !parm["form"] of {
- "login" : { authenticate(!\parm["password"] | "") |
- print_login("Incorrect Password")
- print_which(!parm["password"]) #password as session
- }
- "which" : do_which(parm)
- "operands" : do_operands(parm)
- "result" : do_result(parm)
- default: print_login("")
- }
- end
- procedure print_login(msg)
- in := open("html/login.html") | stop("Cannot open login.html")
- text := reads(in, MAX)
- text ? {
- writes("Content-type: text/html\n\n")
- writes( tab(find("#error#")) )
- writes(msg)
- ="#error#"
- writes(tab(0))
- }
- exit()
- end
- procedure print_which(session)
- in := open("html/which.html") | stop("Cannot open which.html")
- text := reads(in, MAX)
- text ? {
- writes("Content-type: text/html\n\n")
- writes( tab(find("#session#")) )
- writes(session)
- ="#session#"
- writes(tab(0))
- }
- exit()
- end
- procedure print_operands(session, op, optext, errmsg)
- in := open("html/operands.html") | stop("Cannot open operands.html")
- text := reads(in, MAX)
- text ? {
- writes("Content-type: text/html\n\n")
- writes( tab(find("#session#")) )
- writes(session)
- ="#session#"
- writes( tab(find("#operator#")) )
- writes(op)
- ="#operator#"
- writes( tab(find("#operation#")) )
- writes(optext)
- ="#operation#"
- writes( tab(find("#error#")) )
- writes(errmsg)
- ="#error#"
- writes(tab(0))
- }
- exit()
- end
- procedure print_result(session, x, op, y, val)
- in := open("html/result.html") | stop("Cannot open result.html")
- text := reads(in, MAX)
- text ? {
- writes("Content-type: text/html\n\n")
- writes( tab(find("#session#")) )
- writes(session)
- ="#session#"
- writes( tab(find("#left#")) )
- writes(x)
- ="#left#"
- writes( tab(find("#operation#")) )
- writes(op)
- ="#operation#"
- writes( tab(find("#right#")) )
- writes(y)
- ="#right#"
- writes( tab(find("#answer#")) )
- writes(val)
- ="#answer#"
- writes(tab(0))
- }
- exit()
- end
- procedure print_bye()
- in := open("html/bye.html") | stop("Cannot open bye.html")
- text := reads(in, MAX)
- writes("Content-type: text/html\n\n", text)
- exit(0)
- end
- procedure do_which(parm)
- get_session(session := !\parm["session"]) | print_login("")
- op := !\parm["operation"] | print_login("")
- optext := human(op) | print_login("")
- print_operands(session, op, optext, "")
- end
- procedure human(op)
- return case op of {
- "+" : "addition"
- "-" : "subtraction"
- "*" : "multiplication"
- }
- end
- procedure do_operands(parm)
- get_session(session := !\parm["session"]) | print_login("")
- op := !\parm["operation"] | print_login("")
- x := !\parm["x"] | print_login("")
- y := !\parm["y"] | print_login("")
- op == !"+-*" | print_login("")
- ( x := numeric(x) & y := numeric(y) ) |
- print_operands(session, op, human(op), "Invalid operands, try again")
- val := case op of {
- "+" : x+y
- "-" : x-y
- "*" : x*y
- }
- print_result(session, x, op, y, val)
- end
- procedure do_result(parm)
- get_session(session := !\parm["session"]) | print_login("")
- if \parm["another"] then print_which(session) else print_bye()
- end
- procedure get_session(session)
- return authenticate(session)
- end
- procedure authenticate(pwd)
- if pwd == ("frog123" | "password") then return else fail
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement