12-May-2022 07:57
Hi,
I'm struggling to understand what is going on here. Basically, we have an iRule on a HTTPS virtual server that takes the URI and presents a corresponding iFile. This works perfectly but when I apply an APM policy to the configuration, the iFile never gets displayed. Without the APM policy, we use the HTTP_REQUEST event but we can't use that since it fires before the APM policy can be started. If we use ACCESS_ACL_ALLOWED, then the APM policy works but no content is diplayed and we see ERR_CONNECTION_RESET.
I've logged everything and the session.server.landinguri has the correct value for the URI but no content. We're using the following in the iRule:
set uri [ACCESS::session data get "session.server.landinguri"]
switch -glob $uri {
"/mylandinguri.html" { HTTP::respond 200 content [ifile get "mainpage"] }
}
Not sure what other events I need to do this. The APM policy is on the same virtual server as the iRule. The APM policy only displays a messsage box that a user can accept so no AD Auth or any other objects being used.
Any help is greatly appreciated.
Solved! Go to Solution.
12-May-2022 13:01
I have not tested it but you might check out the ACCESS::respond command. https://clouddocs.f5.com/api/irules/ACCESS__respond.html
12-May-2022 13:01
I have not tested it but you might check out the ACCESS::respond command. https://clouddocs.f5.com/api/irules/ACCESS__respond.html
13-May-2022 08:33
Thanks @JoshBecigneul ! That works for a single default page but if I add another line to the switch such as:
when ACCESS_ACL_ALLOWED {
set uri "myuri"
switch -glob $uri {
"myreport.hmtl" { ACCESS::repond 200 content {ifile get "reportMainPage"] }
"myotherreport.html" { ACCESS::respond 200 content {ifile get "newPage"] }
}
}
These work fine individually but within the reportMainPage ifile, there is a link to move to the "newPage" ifile. When I click on it, the main page continues to exist even though the URL is updated.
13-May-2022 08:45
Edit: I was using the session.server.landinguri variable in the switch statement rather than [HTTP::uri]. ACCESS::respond did the trick! Thanks!
13-May-2022 17:08
Sounds good. session.server.landinguri only gets set one time during access policy execution, which can be good to override if you want to force the user to connect to a specific URL.
28-Jul-2023 06:39
Looks like what I need. What was your successful irule?
28-Jul-2023 07:40
Basically what was posted above in the reply underneath the marked solution. I changed from using HTTP::respond to ACCESS::respond.