diff --git a/web/root/formmail.ssjs b/web/root/formmail.ssjs index a43e00cae311c4ede8b58fcf796719f6a89e940f..e1e5dba83d8ebb9c08b5c3f5b7ad02d5b5b4e7f0 100644 --- a/web/root/formmail.ssjs +++ b/web/root/formmail.ssjs @@ -7,23 +7,51 @@ load("sbbsdefs.js"); -if(http_request.query.to==undefined - || http_request.query.from==undefined - || http_request.query.subject==undefined) { - writeln(log(LOG_ERR,"!ERROR: mising query field")); - exit(); -} +var redir = http_request.query.redir; +if(!redir) + redir = http_request.header.referer; + +function results(level, text) +{ + log(level,text); + writeln("<html>"); + writeln("<head>"); + writeln("<title>Sending e-mail</title>"); -if(http_request.post_data==undefined) { - writeln(log(LOG_ERR,"!ERROR: mising post data")); + if(level>LOG_WARNING) { + writeln('<meta http-equiv="Pragma" content="no-cache">'); + writeln('<meta http-equiv="expires" content="0">'); + writeln('<meta http-equiv="refresh" content="3; URL=' + + redir +'">'); + } + writeln("</head>"); + + writeln("<body>"); + writeln("<center>"); + if(level<=LOG_WARNING) { + writeln("!ERROR: "); + } + writeln(text); + if(level>LOG_WARNING) { + writeln("<p>"); + writeln("Returning to <i>" + redir + "</i>"); + } + writeln("</body>"); + writeln("</html>"); exit(); } +if(http_request.query.to==undefined + || http_request.query.from==undefined + || http_request.query.subject==undefined) + results(LOG_ERR,"mising query field"); + +if(http_request.post_data==undefined) + results(LOG_ERR,"mising post data"); + var msgbase=new MsgBase("mail"); -if(!msgbase.open()) { - writeln(log(LOG_ERR,format("!ERROR %s opening mail base", msgbase.error))); - exit(); -} +if(!msgbase.open()) + results(LOG_ERR,format("%s opening mail base", msgbase.error)); var hdr = { from: http_request.query.from, to: http_request.query.to, @@ -34,17 +62,12 @@ if(hdr.to_net_type!=NET_NONE) hdr.to_net_addr=hdr.to; else { var usrnum=system.matchuser(hdr.to); - if(usrnum==0) { - writeln(log(LOG_ERR,"!Bad local username specified: " + hdr.to)); - exit(); - } + if(usrnum==0) + results(LOG_ERR,"bad local username specified: " + hdr.to); hdr.to_ext=usrnum; } - if(!msgbase.save_msg(hdr,client,http_request.post_data)) - writeln(log(LOG_ERR,format("!ERROR %s saving message", msgbase.error))); -else - writeln(log(LOG_INFO,"E-mail sent to " + hdr.to + " successfully")); + results(LOG_ERR,format("%s saving message", msgbase.error)); -msgbase.close(); +results(LOG_INFO,"E-mail sent to <i>" + hdr.to + "</i> successfully.");