Skip to content

Commit

Permalink
Improved maintenance page handling of 503 errors [release_2.0] (#2202)
Browse files Browse the repository at this point in the history
* Improved maintenance page handling of 503 errors [release_2.0]
Fixes #2196
* Fix maintenance to allow redirect back to OnDemand
  • Loading branch information
treydock authored Aug 4, 2022
1 parent ca681fd commit 090cadc
Show file tree
Hide file tree
Showing 13 changed files with 170 additions and 37 deletions.
20 changes: 16 additions & 4 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.all
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,10 @@ Listen 8080
RewriteEngine On
RewriteCond /var/www/configured/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteCond %{REQUEST_URI} !/assets/maintenance/.*$
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\..*
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\..*
RewriteRule ^.*$ /assets/maintenance/index.html [R=503,L]
ErrorDocument 503 /assets/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /assets/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors https://test.server.name;"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Expand Down Expand Up @@ -233,6 +231,20 @@ Listen 8080
Require valid-user
</Location>

# Maintenance location
#
# https://test.server.name:8080/assets/maintenance
# #=> Displays /var/www/configured/public/maintenance/index.html
#
<Directory "/var/www/configured/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/assets/maintenance/index\.html$
RewriteRule ^.*$ /assets/maintenance/index.html [R=503,L]
ErrorDocument 503 /assets/maintenance/index.html
</Directory>

# Discover URI for OpenID Connect (used for multiple Id Providers):
#
# https://test.server.name:8080/discover
Expand Down
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.default
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors http://example.com;"

Expand Down Expand Up @@ -147,5 +145,19 @@
Redirect "/logout" "/pun/sys/dashboard/logout"


# Maintenance location
#
# http://localhost:80/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.dex
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors http://example.com;"

Expand Down Expand Up @@ -170,5 +168,19 @@
Require valid-user
</Location>

# Maintenance location
#
# http://localhost:80/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.dex-full
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors https://example.com;"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Expand Down Expand Up @@ -188,5 +186,19 @@
Require valid-user
</Location>

# Maintenance location
#
# https://example.com:443/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.dex-ldap
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors https://example.com;"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Expand Down Expand Up @@ -188,5 +186,19 @@
Require valid-user
</Location>

# Maintenance location
#
# https://example.com:443/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.dex-proxy
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors https://example.com;"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Expand Down Expand Up @@ -194,5 +192,19 @@
Require valid-user
</Location>

# Maintenance location
#
# https://example.com:443/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.maint_with_ips
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,7 @@
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\..*
RewriteCond %{REMOTE_ADDR} !^10\.0\.0\..*
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors http://example.com;"

Expand Down Expand Up @@ -149,5 +147,19 @@
Redirect "/logout" "/pun/sys/dashboard/logout"


# Maintenance location
#
# http://localhost:80/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
1 change: 0 additions & 1 deletion ood-portal-generator/spec/fixtures/ood-portal.conf.nomaint
Original file line number Diff line number Diff line change
Expand Up @@ -138,5 +138,4 @@
Redirect "/logout" "/pun/sys/dashboard/logout"



</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.oidc
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors http://ondemand.example.com;"

Expand Down Expand Up @@ -178,5 +176,19 @@
Require valid-user
</Location>

# Maintenance location
#
# http://ondemand.example.com:80/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.conf.oidc-ssl
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors https://ondemand.example.com;"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Expand Down Expand Up @@ -192,5 +190,19 @@
Require valid-user
</Location>

# Maintenance location
#
# https://ondemand.example.com:443/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
18 changes: 15 additions & 3 deletions ood-portal-generator/spec/fixtures/ood-portal.dex-full.proxy.conf
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@
RewriteCond /var/www/ood/public/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ /public/maintenance/index.html [R=302,L]

Header always set Content-Security-Policy "frame-ancestors https://example.com;"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Expand Down Expand Up @@ -188,5 +186,19 @@
Require valid-user
</Location>

# Maintenance location
#
# https://example.com:443/public/maintenance
# #=> Displays /var/www/ood/public/maintenance/index.html
#
<Directory "/var/www/ood/public/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !/public/maintenance/index\.html$
RewriteRule ^.*$ /public/maintenance/index.html [R=503,L]
ErrorDocument 503 /public/maintenance/index.html
</Directory>


</VirtualHost>
2 changes: 1 addition & 1 deletion ood-portal-generator/spec/fixtures/sum.default
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e5891fae1abde47d878ecbda0edbed7a132afa7ea166ecdaecb2214547fe102d /opt/rh/httpd24/root/etc/httpd/conf.d/ood-portal.conf
5469faf1d24def9ce0693da1d892b39c17451904ce90d249f728970c5a9b8cbb /opt/rh/httpd24/root/etc/httpd/conf.d/ood-portal.conf
22 changes: 18 additions & 4 deletions ood-portal-generator/templates/ood-portal.conf.erb
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,11 @@ Listen <%= addr_port %>
RewriteEngine On
RewriteCond <%= @public_root %>/maintenance/index.html -f
RewriteCond /etc/ood/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/public/maintenance/.*$
RewriteCond %{REQUEST_URI} !<%= @public_uri %>/maintenance/.*$
<%- @maintenance_ip_whitelist.each do |ip| -%>
RewriteCond %{REMOTE_ADDR} !^<%= escape_ip(ip) %>
<%- end -%>
RewriteRule ^.*$ <%= @public_uri %>/maintenance/index.html [R=503,L]
ErrorDocument 503 <%= @public_uri %>/maintenance/index.html
Header Set Cache-Control "max-age=0, no-store"
RewriteRule ^.*$ <%= @public_uri %>/maintenance/index.html [R=302,L]

<%- end -%>
<%- if @security_csp_frame_ancestors -%>
Expand Down Expand Up @@ -323,7 +321,23 @@ Listen <%= addr_port %>
<%- end -%>
</Location>
<%- end -%>
<%- if @use_rewrites && @use_maintenance -%>

# Maintenance location
#
# <%= @ssl ? "https" : "http" %>://<%= @servername || "localhost" %>:<%= @port %><%= @public_uri %>/maintenance
# #=> Displays <%= @public_root %>/maintenance/index.html
#
<Directory "<%= @public_root %>/maintenance">
RewriteCond /etc/ood/maintenance.enable !-f
ReWriteRule ^.*$ /

RewriteCond %{REQUEST_URI} !<%= @public_uri %>/maintenance/index\.html$
RewriteRule ^.*$ <%= @public_uri %>/maintenance/index.html [R=503,L]
ErrorDocument 503 <%= @public_uri %>/maintenance/index.html
</Directory>

<%- end -%>
<%- if @oidc_discover_uri && @oidc_discover_root -%>
# Discover URI for OpenID Connect (used for multiple Id Providers):
#
Expand Down

0 comments on commit 090cadc

Please sign in to comment.