BL.Lib.BaseObj 0 1 IsRunning:%Boolean=1 1 StopTime:%String 1 StartTime:%String 1 Active:%Library.Boolean=1 1 %Library.Boolean 1 %Library.String 1 %Library.String 0 5 0 ]]> Parameter OnErrorMailTo = ";itadmin@vanhoecke.be"; 0 ;pve@vanhoecke.be 0 CHKCNT 0 ENABLED 0 ISRUNNING 0 JOB 0 LSTCHK 0 STARTTIME 0 ZSTU CPIA CPSTART CPSTOP 3 60 0 1 code URL:%Library.String,HR:%Net.HttpRequest 0 %Library.String 0 0 1 code Single:%Library.Boolean=0 0 %Library.String 0 StopTime)) . Else Do .. Set CanPerformScan=1 . If CanPerformScan Do .. Set ^PageAlive(..#panodeLastCheck)=$H .. Do rawCheckPages() .. Set ^PageAlive(..#panodeCheckCount)=^PageAlive(..#panodeCheckCount)+1 . If Single Do Quit ;een keer uitvoeren, dan stoppen .. Set ^PageAlive(..#panodeEnabled)=-1 . Hang CheckIntervalInSec ;Gestopt Set ^PageAlive(..#panodeIsRunning)=0 ;vorige status terug ophalen If ^PageAlive(..#panodeEnabled)=-1 Do . Set ^PageAlive(..#panodeEnabled)=PrevEnabled Quit "" ;-------------------------------------------------------------------------------------------------------- rawCheckPages() New OnErrorMailFrom,OnErrorMailTo Set OnErrorMailTo=$$PiecesToList^vhLib(..#OnErrorMailTo) Set OnErrorMailFrom=..#OnErrorMailFrom New RS,Query Set Query="DS.WEB.PageAlive.URLsToCheck:GetAllEnabledPages" Set RS=##class(%ResultSet).%New(Query) If RS=$$$NULLOREF Do Quit . Do SendMiniMail^vhLib(OnErrorMailFrom,OnErrorMailTo,"Query Error","Kan geen nieuwe instantie van de query '"_Query_"' maken.") New tmpStatus Set tmpStatus=RS.Execute() If $$$ISERR(tmpStatus) Do Quit . Do SendMiniMail^vhLib(OnErrorMailFrom,OnErrorMailTo,"Query Error","Fout bij het uitvoeren van de query '"_Query_"': "_$C(13,10)_$$ParseStatus^vhLib(tmpStatus)) . Do RS.%Close() New HR Set HR=##class(%Net.HttpRequest).%New() New DefaultMailFrom,DefaultMailToAsList Set DefaultMailFrom=##class(DS.WEB.PageAlive.URLsToCheck).GetDefaultMailFrom() Set DefaultMailToList=##class(DS.WEB.PageAlive.URLsToCheck).GetDefaultMailToAsList() ; ---=[ Mogelijk 'Get' statussen ]=--- ; HttpRequestObj.Get=1 AND (StatusCode=2xx OF StatusCode in AllowedStatusCodes) #Define gsOk 1 ; HttpRequestObj.Get=1 AND NOT (StatusCode=2xx OF StatusCode in AllowedStatusCodes) #Define gsFailStatus -1 ; HttpRequestObj.Get=0 (waarschijnlijk een object-fout) #Define gsFailGet -2 ; Fout in group #Define gsFailGroup -3 ; Group code #Define gcErrStr 1 New Server,Location,IsWarned,GetStatusLB,ID,FullURL,aGroupSuccess New OnErrorMailFrom,OnErrorMailToList,OnErrorMailSubject,OnErrorMailBody,SendStatus,BackOnTrackMailSubject,GroupID,IsGroupDef For Quit:('RS.Next()) Do . Set ID=RS.Data("ID") . Set Server=RS.Data("Server") . Set Location=RS.Data("Location") . Set Location=##class(BL.WEB.PageAlive.Main).AddParamsToHTTPRequestViaURL(Location,HR) ;Result=location zonder params... . Set IsWarned=RS.Data("FIsWarned") . Set GroupID=RS.Data("GroupID") . Set IsGroupDef=RS.Data("IsGroupDef") . Set:('IsGroupDef && (GroupID'="")) aGroupSuccess(GroupID)=$G(aGroupSuccess(GroupID))+1 ;Bij een fout wo -1 gedaan, later wo gechecked of de local=0, zo ja->alles fout binnen die group . Set HR.Server=Server . Set HR.FollowRedirect=RS.Data("FollowRedirect") . Set HR.Port=RS.Data("Port") . Set HR.Timeout=RS.Data("TimeOut") . If IsGroupDef && (GroupID'="") Do .. Set GetStatusLB=$S($G(aGroupSuccess(GroupID),-1)=0:$LB($$$gsFailGroup,$G(aGroupSuccess(GroupID,$$$gcErrStr),"No error info.")),1:$LB($$$gsOk,"")) . Else Do .. Set GetStatusLB=$$PerformGet(HR,Location,RS.Data("AllowedStatusCodes"),RS.Data("RetryIntervalInSec"),RS.Data("NrOfRetries")) . If $LI(GetStatusLB)=$$$gsOk Do .. If IsWarned Do ; De site was voorheen onbereikbaar, deze is nu terug online ... Do ##class(DS.WEB.PageAlive.URLsToCheck).SetIsWarned(ID,0) ... ;Back-on-track mail ... Set OnErrorMailFrom=$S(RS.Data("OnErrorMailFrom")="":DefaultMailFrom,1:RS.Data("OnErrorMailFrom")) ... Set OnErrorMailToList=$S(RS.Data("OnErrorMailTo")="":DefaultMailToList,1:$$PiecesToList^vhLib(RS.Data("OnErrorMailTo"))) ... Set FullURL=$S(IsGroupDef:"Group '"_GroupID_"'",1:Server_Location) ... Set BackOnTrackMailSubject=$S(RS.Data("BackOnTrackMailSubject")="":"SERVER/PAGE BACK ONLINE: "_FullURL_"!",1:RS.Data("BackOnTrackMailSubject")) ... Do SendMiniMail^vhLib(OnErrorMailFrom,OnErrorMailToList,BackOnTrackMailSubject,FullURL_$C(13,10)_$ZDT($H,4)_$C(13,10)_$LI(GetStatusLB,2)) ... ;SMS Error ... Do:(RS.Data("OnErrorSMSTo")'="") ##class(WS.TAPI.SMSMessage).Create($$PiecesToList^vhLib(RS.Data("OnErrorSMSTo")),,BackOnTrackMailSubject) . Else Do .. Quit:(IsWarned) ;reeds op de hoogte gebracht .. ;Mail Error inhoud opstellen .. Set OnErrorMailFrom=$S(RS.Data("OnErrorMailFrom")="":DefaultMailFrom,1:RS.Data("OnErrorMailFrom")) .. Set OnErrorMailToList=$S(RS.Data("OnErrorMailTo")="":DefaultMailToList,1:$$PiecesToList^vhLib(RS.Data("OnErrorMailTo"))) .. Set FullURL=$S(IsGroupDef:"Group '"_GroupID_"'",1:Server_Location) .. Set OnErrorMailSubject=$S(RS.Data("OnErrorMailSubject")="":"SERVER/PAGE DOWN: "_FullURL_"!",1:RS.Data("OnErrorMailSubject")) .. Set OnErrorMailBody=FullURL_$C(13,10)_$ZDT($H,4)_$C(13,10)_$LI(GetStatusLB,2) .. ;Eventuele group success count verminderen met 1, mail error info in array plaatsen .. If 'IsGroupDef && (GroupID'="") Do ... Set aGroupSuccess(GroupID)=$G(aGroupSuccess(GroupID))-1 ... Set aGroupSuccess(GroupID,$$$gcErrStr)=$G(aGroupSuccess(GroupID,$$$gcErrStr))_$C(13,10,13,10)_OnErrorMailSubject_$C(13,10)_OnErrorMailBody .. Else Do ... ;Mail Error ... Set SendStatus=$$SendMiniMail^vhLib(OnErrorMailFrom,OnErrorMailToList,OnErrorMailSubject,OnErrorMailBody) ... Do:(SendStatus=1) ##class(DS.WEB.PageAlive.URLsToCheck).SetIsWarned(ID,1) ... ;SMS Error ... Do:(RS.Data("OnErrorSMSTo")'="") ##class(WS.TAPI.SMSMessage).Create($$PiecesToList^vhLib(RS.Data("OnErrorSMSTo")),,RS.Data("OnErrorSMSSubject")) ... Do ##class(DS.WEB.PageAlive.URLsToCheck).IncErrorCount(ID) Quit ;-------------------------------------------------------------------------------------------------------- PerformGet(HRObj,Location,AllowedStatusCodes,RetryIntervalInSec,NrOfRetries) Set:(+RetryIntervalInSec=0) RetryIntervalInSec=..#RetryIntervalInSec Set:(+NrOfRetries=0) NrOfRetries=..#NrOfRetries New GetStatusLB,RetryLoop For RetryLoop=1:1:NrOfRetries Do Quit:($LI(GetStatusLB)=$$$gsOk) . Hang:(RetryLoop>1) RetryIntervalInSec . ;De 'GET'-method uitvoeren . Set GetStatusLB=$$TranslateToGetStatusLB(HRObj.Get(Location),HRObj,AllowedStatusCodes) Quit GetStatusLB ;-------------------------------------------------------------------------------------------------------- TranslateToGetStatusLB(GetResult,HRObj,AllowedStatusCodes) New GetStatusLB If $$$ISOK(GetResult) Do . If ($E(HRObj.HttpResponse.StatusCode)=2) || (AllowedStatusCodes[HRObj.HttpResponse.StatusCode) Do .. Set GetStatusLB=$LB($$$gsOk,"") . Else Do .. Set GetStatusLB=$LB($$$gsFailStatus,HRObj.HttpResponse.StatusLine) Else Do . Set GetStatusLB=$LB($$$gsFailGet,$$ParseStatus^vhLib(GetResult)) Quit GetStatusLB ;-------------------------------------------------------------------------------------------------------- snapError Set $ZTRAP="" Do SendMiniMail^vhLib(..#OnErrorMailFrom,$$PiecesToList^vhLib(..#OnErrorMailTo),"PageAlive Error during CheckPages",$ZError) Quit $ZError ]]> 0 1 code 0 %Library.Integer 0 0 1 code 0 %Library.Integer 0 0 1 code 0 %Library.String 0 0 1 code 0 %Library.Integer 0 0 1 code 0 %Library.Boolean 0 0 1 code 0 %Library.String 0 0 1 code 0 %Library.List 0 0 1 code 0 %Library.List 0 0 1 code 0 0 0 1 code 0 %Library.Status 0 0 1 code 0 0 0 1 code 0 %Library.Status 0 0 1 code Value:%Library.Boolean=1 0 0 0 1 code Value:%Library.String 0 0