Author | Topic: Apache 2, WAA, and the !#@$%&#$!!! server errors.... | |
---|---|---|
Richard A. Pulliam | Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Thu, 23 Dec 2004 13:17:22 -0500 If any of you has a httpd.conf file for apache 2 and your WAA application is running on it with no problems, please give me a copy with any comments you care to add so I can validate and improve on mine. I am a first time Apache user. I still get the "Server Error - Read error 0" messages once in a while, at random which generates a Socket write error for waa1srv.exe. I read the waa log file every 3 seconds and if I find a Socket write error, I restart WAA1SRV.EXE. The following is my login dll. You can see it in action at http://www.cingular-ats.com in "Time Clock" button. Lots of Javascript that I got from the web. You are welcome to it. I am new to Javascript but I do not see how you could write good pages without it. The following is my startwaa.bat: REM File: STARTWAA.BAT REM REM Purpose: Setting environment variables for REM WAA1SRV.EXE REM SET WAA_WORKERTHREADS=20 SET WAA_HOST=http://TimeCard.cingular-ats.com SET WAA_PORT=890 SET WAA_TRACE=ON SET WAA_DEVMODE=OFF SET WAA_INTERNAL_LOG=ON start %1 waa1srv.exe Do any of you see errors on the following code? specially one that would cause the above problem? ///////////////////////////////////////////////////////////////////// CLOCK.PRG - To create CLOCK.DLL, type PBUILD CLOCK ////////////////////////////////////////////////////////////////////// #INCLUDE "ALL.CH" FUNCTION _register( oPackage ) REGISTER THE FORMS oPackage:registerForm("ShowClock") oPackage:registerForm("CingularImage") RETURN(.T.) /* */ FUNCTION _version() RETURN("Version 1.0") /* */ FUNCTION _Copyright() RETURN("ATS Mobile Electronics, (c) All rights reserved.") /* */ FUNCTION ShowClock(oHTML,oContext) called by external index.htm LOCAL cTempFile,aTime,dFile,cIp:=oContext:getRemoteAddr() The time clock server gets the atomic time from Colorado daily using a free program from http://www.worldtimeserver.com, so in order to use the server time, a temp file is written and the date and time stamp are gotten from it cTempFile:=MakeTemp() MEMOWRIT(cTempFile,"") aTime:=Str2Array(FileInfo(cTempFile,3),":") dFile:=FileInfo(cTempFile,2) FERASE(cTempFile) Beginning of the html form oHTML:put('<html>') oHTML:put('<head>') clear the form when form starts everytime oHTML:put(' ') oHTML:put('<script language="JavaScript">') oHTML:put('<!--') oHTML:put('function ClearForm()') oHTML:put('// Clear the form onload') oHTML:put('{') oHTML:put('document.login.reset();') oHTML:put('}') oHTML:put('// -->') oHTML:put('</script>') open the window in full window mode oHTML:put(' ') oHTML:put('<script language="JavaScript">') oHTML:put('<!--') oHTML:put('function FullWindow()') oHTML:put('// Open this window in full window mode') oHTML:put('{') oHTML:put('window.resizeTo(screen.width,screen.height)') oHTML:put('}') oHTML:put('// -->') oHTML:put('</script>') when the form is created, the focus is placed on the ID input box oHTML:put(' ') oHTML:put('<script language="JavaScript">') oHTML:put('<!--') oHTML:put('function FocusOnId()') oHTML:put('// Place the input focus on the employee id input box') oHTML:put('{') oHTML:put('document.forms.login.TheID.focus();') oHTML:put('}') oHTML:put('// -->') oHTML:put('</script>') write the script that displays and updates current time PutClockJavaScript(oHTML,aTime) write the title and end the head section oHTML:put(' ') oHTML:put('<title>') oHTML:put('ATS Mobile Electronics Punch Clock - IP Address: '+cIp) oHTML:put('</title>') oHTML:put('</head>') write the body command oHTML:put(' ') oHTML:put('<body bgcolor="#DDDDDD" onLoad="FocusOnId(); sClock()">') oHTML:put(' ') setup the form and the call to TC.DLL. Make sure that the form is reset after Submit for next person. oHTML:put(' ') oHTML:put([<form action="/cgi-bin/waa1gate.exe" method="POST" name="login" target="_blank" onsubmit='FocusOnId(); setTimeout("login.reset();",100);'>]) oHTML:put(' <input type="hidden" name="WAA_PACKAGE" value="TC">') oHTML:put(' <input type="hidden" name="WAA_FORM" value="ValidEmployee">') paint Cingular Jack and blue header next to it oHTML:put(' ') CingularImage(oHTML,'ATS Mobile Electronics Punch Clock',.T.) oHTML:put(' ') oHTML:put(' ') oHTML:put(' <!-- Show the time as a large header -->') oHTML:put(' <h1><center><strong>') oHTML:put(' '+DtoW(dFile)+" - "+[ <span id=clock style="position:relative;"></span><br>]) oHTML:put(' </h1></center></strong>') get id and password from user GetLoginInfo(oHTML) oHTML:put(' <!-- Show some messages -->') WhatComputersCanExecuteMsg(oHTML) IfServerErrorMsg(oHTML) IfYouForgotYourPasswordMsg(oHTML) oHTML:put(' <p><strong><center>') DisplayJavaScriptVersion(oHTML) DisplayIEVersion(oHTML) DisplayIPAddr(oHTML,cIp) oHTML:put(' </center></strong></p>') oHTML:put(' <!-- End Of Show some messages -->') oHTML:put(' ') AllowUserToEMailMe(oHTML) end the form oHTML:put('</form>') oHTML:put('</body>') oHTML:put('</html>') RETURN(.T.) /* */ FUNCTION PaintRefreshButton(oHTML) LOCAL cLine cLine:='<H1><img src="/imgs/refresh.gif"' cLine+=' width="22" height="29">' oHTML:put(cLine) RETURN(.T.) /* */ FUNCTION PutClockJavaScript(oHTML,aTime) oHTML:put(' ') oHTML:put(' <!-- This is the javascript used to show the time. The time is primed -->') oHTML:put(' <!-- from date/time stamp from temp file. Only way to get SERVER time. -->') oHTML:put([ ]) oHTML:put([<Script Language="JavaScript">]) oHTML:put([<!-- Begin]) oHTML:put([ ]) oHTML:put([function sClock() {]) oHTML:put([work(]+aTime[1]+[,]+aTime[2]+[,]+aTime[3]+[);]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([function work(h,m,s) {]) oHTML:put([ ]) oHTML:put([if (!document.layers && !document.all)]) oHTML:put([ return;]) oHTML:put([var runTime = new Date();]) oHTML:put([var hours = h;]) oHTML:put([var minutes = m;]) oHTML:put([var seconds = s;]) oHTML:put([var dn = "AM";]) oHTML:put([var shours = h;]) oHTML:put([var sminutes = m;]) oHTML:put([var sseconds = s;]) oHTML:put([if (shours >= 12) {]) oHTML:put([ dn = "PM";]) oHTML:put([ shours = shours - 12;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (shours == 0) {]) oHTML:put([ shours = 12;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (sminutes <= 9) {]) oHTML:put([ sminutes = "0" + sminutes;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (sseconds <= 9) {]) oHTML:put([ sseconds = "0" + sseconds;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (shours <= 9) {]) oHTML:put([ shours = "0" + shours;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([movingtime = ""+ shours + ":" + sminutes +":"+sseconds+"" + dn + "";]) oHTML:put([if (document.layers) {]) oHTML:put([ document.layers.clock.document.write(movingtime);]) oHTML:put([ document.layers.clock.document.close();]) oHTML:put([}]) oHTML:put([else if (document.all) {]) oHTML:put([ clock.innerHTML = movingtime;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (seconds <=58) {]) oHTML:put([ seconds=seconds+1;]) oHTML:put([}else {]) oHTML:put([ seconds=0;]) oHTML:put([ minutes=minutes+1;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (minutes <=59) {]) oHTML:put([}else {]) oHTML:put([ hours=hours+1;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([if (hours <=23) {]) oHTML:put([ if (minutes ==60) {]) oHTML:put([ minutes=0;]) oHTML:put([ }]) oHTML:put([}else if (hours ==24) {]) oHTML:put([ hours=0;]) oHTML:put([ minutes=0;]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([setTimeout("work("+hours+","+minutes+","+seconds+")",1000);]) oHTML:put([}]) oHTML:put([ ]) oHTML:put([// End -->]) oHTML:put([</script>]) RETURN(.T.) /* */ FUNCTION DisplayJavaScriptVersion(oHTML) oHTML:put(' ') oHTML:put(' <!-- determine javascript version -->') oHTML:put(' <script language="JavaScript">') oHTML:put(' <!--') oHTML:put(' Determine user Javascript version') oHTML:put(' JSversion = "1.0";') oHTML:put(' -->') oHTML:put(' </script>') oHTML:put(' <script language="JavaScript1.1">') oHTML:put(' <!--') oHTML:put(' JSversion="1.1";') oHTML:put(' -->') oHTML:put(' </script>') oHTML:put(' </script>') oHTML:put(' <script language="JavaScript1.2">') oHTML:put(' <!--') oHTML:put(' JSversion="1.2";') oHTML:put(' -->') oHTML:put(' </script>') oHTML:put(' </script>') oHTML:put(' <script language="JavaScript1.3">') oHTML:put(' <!--') oHTML:put(' JSversion="1.3";') oHTML:put(' -->') oHTML:put(' </script>') oHTML:put(' <script language="JavaScript">') oHTML:put(' <!--') oHTML:put(' if(navigator.javaEnabled()) document.write("Your browser is Java-enabled "+JSversion+" <br/>");') oHTML:put(' else') oHTML:put(' document.write("Your browser is not Java-enabled<br/>");') oHTML:put(' -->') oHTML:put(' </script>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION DisplayIEVersion(oHTML) oHTML:put(' ') oHTML:put(' <!-- determine version of internet browser -->') oHTML:put(' <script language="JavaScript">') oHTML:put(' <!--') oHTML:put(' Determine user browser') oHTML:put(' var useragent = navigator.userAgent;') oHTML:put([ var Browser = (useragent.indexOf('Opera') > -1) ? 'Opera' : navigator.appName;]) oHTML:put([ var pos = useragent.indexOf('MSIE');]) oHTML:put(' if (pos > -1) {') oHTML:put(' Version = useragent.substring(pos + 5);') oHTML:put([ var pos = Version.indexOf(';');]) oHTML:put(' var Version = Version.substring(0,pos);') oHTML:put(' }') oHTML:put(' if (Browser == "Netscape") {') oHTML:put(' var Version = useragent.substring(8);') oHTML:put([ var pos = Version.indexOf(' ');]) oHTML:put(' var Version = Version.substring(0, pos);') oHTML:put(' }') oHTML:put([ var pos = useragent.indexOf('Opera');]) oHTML:put(' if (pos > -1) {') oHTML:put(' Version = useragent.substring(pos + 6);') oHTML:put([ var pos = Version.indexOf(' ');]) oHTML:put(' var Version = Version.substring(0, pos);') oHTML:put(' }') oHTML:put(' if (Browser == "Netscape" && parseInt(navigator.appVersion) >= 5) {') oHTML:put([ var pos = useragent.lastIndexOf('/');]) oHTML:put(' var Version = useragent.substring(pos + 1);') oHTML:put(' }') oHTML:put([ document.write('You are using: ' + Browser + ' Version: '+Version);]) oHTML:put(' -->') oHTML:put(' </script>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION AllowIEDownload(oHTML) this was placed offline oHTML:put(' ') oHTML:put(' <!-- Allow the user to download IE 6.0 from Microsoft -->') oHTML:put(' <a href="/download/ie6setup.exe"><img') oHTML:put(' src="/imgs/down6.gif" alt="Download IExplorer 6.0" border="0" width="116"') oHTML:put(' height="66"></a>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION AllowUserToEMailMe(oHTML) oHTML:put(' ') oHTML:put(' <!-- Allow the user to EMail me -->') oHTML:put(' <a href="mailto:rpulliam@cingular-ats.com"><img') oHTML:put(' src="/imgs/mail03.gif" alt="EMail Time Clock programmer!" border="0" width="101"') oHTML:put(' height="104"></a>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION GetLoginInfo(oHTML) oHTML:put(' ') oHTML:put(' <!-- Get login information from user -->') oHTML:put(' <center>') oHTML:put(' <pre>') oHTML:put(' <strong>') oHTML:put(' Enter your Employee ID: <input type="text" size="10" name="TheID" value="">') oHTML:put(' Enter your password: <input type="password" size="10" name="Password">') oHTML:put(' <input type="submit" value="Submit"><br>') oHTML:put(' <input type="button" value="Close Window" onclick="window.close()">') oHTML:put(' </strong>') oHTML:put(' </pre>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION WhatComputersCanExecuteMsg(oHTML) oHTML:put(' ') oHTML:put(' <h3><strong><font color="#FF0000">This will only execute from') oHTML:put(' Selected Computers or ATS Stores</font></strong></h3>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION IfServerErrorMsg(oHTML) I hate having to do this LOCAL cLine oHTML:put(' ') cLine:=' <center><h4><strong><font color="#B22222"><img src="/imgs/refresh.gif"' cLine+=' width="22" height="29">' cLine+='In the event of a Server error, click on IE Refresh button,<br/>' cLine+='or press F5, or try again in a few seconds' cLine+='</font></strong></h4></center>' oHTML:put(cLine) oHTML:put(' ') RETURN(.T.) /* */ FUNCTION IfYouForgotYourPasswordMsg(oHTML) oHTML:put(' ') oHTML:put(' <h5><strong><font color="#800040" face="Lucida Sans Unicode, Arial, Helvetica">') oHTML:put(' If you forgot your password and your EMail is on file,<br>') oHTML:put(' enter the word "SENDTOME" for a password,<br>') oHTML:put(' and it will be EMailed to the address on file') oHTML:put(' </font></strong></h5>') oHTML:put(' </center>') oHTML:put(' ') RETURN(.T.) /* */ FUNCTION DisplayIPAddr(oHTML,cIp) oHTML:put(' <br/><strong>Your IP Address is '+cIp+'</strong>') RETURN(.T.) /* */ End of clock.prg The following is the resulting html code: <html> <head> <script language="JavaScript"> <!-- function ClearForm() Clear the form onload { document.login.reset(); } --> </script> <script language="JavaScript"> <!-- function FullWindow() Open this window in full window mode { window.resizeTo(screen.width,screen.height) } --> </script> <script language="JavaScript"> <!-- function FocusOnId() Place the input focus on the employee id input box { document.forms.login.TheID.focus(); } --> </script> <!-- This is the javascript used to show the time. The time is imed --> <!-- from date/time stamp from temp file. Only way to get SERVER ime. --> <Script Language="JavaScript"> <!-- Begin function sClock() { work(13,11,49); } function work(h,m,s) { if (!document.layers && !document.all) return; var runTime = new Date(); var hours = h; var minutes = m; var seconds = s; var dn = "AM"; var shours = h; var sminutes = m; var sseconds = s; if (shours >= 12) { dn = "PM"; shours = shours - 12; } if (shours == 0) { shours = 12; } if (sminutes <= 9) { sminutes = "0" + sminutes; } if (sseconds <= 9) { sseconds = "0" + sseconds; } if (shours <= 9) { shours = "0" + shours; } movingtime = ""+ shours + ":" + sminutes +":"+sseconds+"" + dn + ""; if (document.layers) { document.layers.clock.document.write(movingtime); document.layers.clock.document.close(); } else if (document.all) { clock.innerHTML = movingtime; } if (seconds <=58) { seconds=seconds+1; }else { seconds=0; minutes=minutes+1; } if (minutes <=59) { }else { hours=hours+1; } if (hours <=23) { if (minutes ==60) { minutes=0; } }else if (hours ==24) { hours=0; minutes=0; } setTimeout("work("+hours+","+minutes+","+seconds+")",1000); } End --> </script> <title> ATS Mobile Electronics Punch Clock - IP Address: 192.168.2.5 </title> </head> <body bgcolor="#DDDDDD" onLoad="FocusOnId(); sClock()"> <form action="/cgi-bin/waa1gate.exe" method="POST" name="login" target="_blank" onsubmit='FocusOnId(); setTimeout("login.reset();",100);'> <input type="hidden" name="WAA_PACKAGE" value="TC"> <input type="hidden" name="WAA_FORM" value="ValidEmployee"> <FONT FACE="Lucida Sans Unicode, Arial, Helvetica"> <H1><img src="/imgs/logo.gif" width="158" height="118"><font color="#0000FF"> ATS Mobile Electronics Punch Clock</font></H1></FONT><BR/> <!-- Show the time as a large header --> <h1><center><strong> Thursday, December 23, 2004 - <span id=clock style="position:relative;"></span><br> </h1></center></strong> <!-- Get login information from user --> <center> <pre> <strong> Enter your Employee ID: <input type="text" size="10" name="TheID" value=""> Enter your password: <input type="password" size="10" name="Password"> <input type="submit" value="Submit"><br> <input type="button" value="Close Window" onclick="window.close()"> </strong> </pre> <!-- Show some messages --> <h3><strong><font color="#FF0000">This will only execute from Selected Computers or ATS Stores</font></strong></h3> <center><h4><strong><font color="#B22222"><img src="/imgs/refresh.gif" width="22" height="29">In the event of a Server error, click on IE Refresh button,<br/>or press F5, or try again in a few seconds</font></strong></h4></center> <h5><strong><font color="#800040" face="Lucida Sans Unicode, Arial, Helvetica"> If you forgot your password and your EMail is on file,<br> enter the word "SENDTOME" for a password,<br> and it will be EMailed to the address on file </font></strong></h5> </center> <p><strong><center> <!-- determine javascript version --> <script language="JavaScript"> <!-- Determine user Javascript version JSversion = "1.0"; --> </script> <script language="JavaScript1.1"> <!-- JSversion="1.1"; --> </script> </script> <script language="JavaScript1.2"> <!-- JSversion="1.2"; --> </script> </script> <script language="JavaScript1.3"> <!-- JSversion="1.3"; --> </script> <script language="JavaScript"> <!-- if(navigator.javaEnabled()) document.write("Your browser is Java-enabled "+JSversion+" <br/>"); else document.write("Your browser is not Java-enabled<br/>"); --> </script> <!-- determine version of internet browser --> <script language="JavaScript"> <!-- Determine user browser var useragent = navigator.userAgent; var Browser = (useragent.indexOf('Opera') > -1) ? 'Opera' : navigator.appName; var pos = useragent.indexOf('MSIE'); if (pos > -1) { Version = useragent.substring(pos + 5); var pos = Version.indexOf(';'); var Version = Version.substring(0,pos); } if (Browser == "Netscape") { var Version = useragent.substring(8); var pos = Version.indexOf(' '); var Version = Version.substring(0, pos); } var pos = useragent.indexOf('Opera'); if (pos > -1) { Version = useragent.substring(pos + 6); var pos = Version.indexOf(' '); var Version = Version.substring(0, pos); } if (Browser == "Netscape" && parseInt(navigator.appVersion) >= 5) { var pos = useragent.lastIndexOf('/'); var Version = useragent.substring(pos + 1); } document.write('You are using: ' + Browser + ' Version: '+Version); --> </script> <br/><strong>Your IP Address is 192.168.2.5</strong> </center></strong></p> <!-- End Of Show some messages --> <!-- Allow the user to EMail me --> <a href="mailto:rpulliam@cingular-ats.com"><img src="/imgs/mail03.gif" alt="EMail Time Clock programmer!" border="0" width="101" height="104"></a> </form> </body> </html> | |
Frans Vermeulen | Re: Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Fri, 24 Dec 2004 10:49:23 +0100 Richard, Not an answer, just a question: > SET WAA_PORT=890 Why 890 ? Regards, Frans Vermeulen | |
Richard A. Pulliam | Re: Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Mon, 27 Dec 2004 09:37:21 -0500 And attempt to solve problem. 1024 is vastly used by programs. 890 is one of the less used. That is why I picked it. 1024 or 1025 did not solved problem. Port is not the issue. "Frans Vermeulen" <FransV@VisSpec.nl> wrote in message news:mOjJg3Z6EHA.7964@S15147418... > Richard, > > Not an answer, just a question: > >> SET WAA_PORT=890 > > Why 890 ? > > Regards, > Frans Vermeulen > > | |
clippersolutions | Re: Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Sat, 01 Jan 2005 09:16:16 -0500 I created a logging system that has told me it is not my program that is causing the problem. Once it starts, it goes through completion normally. It is just that sometimes it does not start until I click refresh one or more times. I believe it is Waa1gate.exe the one giving the message "Server Error" or "Server Error Read Error 0". I wish I knew how it determines that or it would retry several times. Maybe I can detect the error on my end and automatically refresh the page? The closest thing I found in the internet about a similar error is with a program named TomCat. Their setting for detecting the server error was over sensitive, but they had a description in how to reset it so it was not. Changed my port back to 1024. Figure I could do that since this computer is dedicated exclusively to the WAA application. Once again, if someone has an Apache httpd.conf file that works I could use it as a guide. By now I am sure you are sick of hearing about my problem, but I have never had to fight a problem for sooooooooo long............ Thanks. Richard "Richard A. Pulliam" <rpulliam@cingular-ats.com> wrote in message news:Ypz3PGC7EHA.7176@S15147418... > And attempt to solve problem. 1024 is vastly used by programs. 890 is one > of the less used. That is why I picked it. 1024 or 1025 did not solved > problem. Port is not the issue. > "Frans Vermeulen" <FransV@VisSpec.nl> wrote in message > news:mOjJg3Z6EHA.7964@S15147418... > > Richard, > > > > Not an answer, just a question: > > > >> SET WAA_PORT=890 > > > > Why 890 ? > > > > Regards, > > Frans Vermeulen > > > > > > | |
Martin Altmann | Re: Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Sat, 01 Jan 2005 15:38:35 +0100 Richard, please find attached my httpd.conf I have dumped WAA and switched to XB2.NET - but this conf worked fine for me. HTH, Martin httpd.zip | |
ClipperSolutions | Re: Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Sun, 02 Jan 2005 09:15:35 -0500 Thank you, Martin. Noticed some minor differences. Will try changes Monday. Richard "Martin Altmann" <Altmann@altem.de> wrote in message news:%23z0GW%23A8EHA.1256@S15147418... > Richard, > please find attached my httpd.conf > I have dumped WAA and switched to XB2.NET - but this conf worked fine for > me. > > HTH, > Martin > > | |
clippersolutions | Re: Apache 2, WAA, and the !#@$%&#$!!! server errors.... on Wed, 05 Jan 2005 19:27:49 -0500 Still having problems, but now I know what is causing them. Waa1gate.exe has a function named GetMessage(). When communicating with the server, it gets a NUL which causes the Server Error - Read Error 0 Any clue what can cause a NUL to be passed to waa1gate? What exactly is a NUL (/0 only???) "ClipperSolutions" <clippersolutions@comcast.net> wrote in message news:vrgGMWN8EHA.1256@S15147418... > Thank you, Martin. Noticed some minor differences. Will try changes > Monday. > > Richard > > "Martin Altmann" <Altmann@altem.de> wrote in message > news:%23z0GW%23A8EHA.1256@S15147418... > > Richard, > > please find attached my httpd.conf > > I have dumped WAA and switched to XB2.NET - but this conf worked fine for > > me. > > > > HTH, > > Martin > > > > > > |