blob: 694ac62cbda7698ba71850cda1f8a393f04f32bd [file] [log] [blame]
local posix = require 'posix'
local TEMPL = [=[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Project !PROJ! is retired.</title>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
<style type="text/css">
<!--/* <![CDATA[ */
div.top
{ font-size : xx-large ;
padding : 15px ;
color : white ;
background-color : red ;
}
div.top a:link { color : white ; }
div.top a:visited { color : white ; }
span.urly { color : blue ; text-decoration : underline }
/* ]]> */-->
</style>
<script>//<![CDATA[
function initialize ()
{ console.log ( 'initialize' ) ;
resize() ;
if ( window.self != window.top )
{ var win1 = window.top.document.getElementById("f2").contentWindow
var win2 = window.self.document.getElementById("f2").contentWindow
win1.location.href = win2.location.href
console.log ( 'window.self != window.top' )
console.log ( 'promote to : ' + win1.location.href )
}
else
{ console.log ( 'window.self == window.top' ) ; }
}
function resize ()
{ console.log ( 'resize' ) ;
console.log ( 'innerHeight[%s]', window.innerHeight ) ;
var f1h = document.getElementById("f1").clientHeight ;
var w_w = window.innerWidth ;
var w_h = window.innerHeight ;
var f_w = 0.99 * w_w ;
var f_h = w_h - f1h - 50 ;
document.getElementById("f2").width = f_w ;
document.getElementById("f2").height = f_h ;
console.log ( 'f2.height[%s]', document.getElementById("f2").height ) ;
}
function change_loc()
{ console.log ( 'change_loc' ) ;
var top = document.getElementById("top") ;
var loc = document.getElementById("loc") ;
var f2 = document.getElementById('f2') ;
try { f2.contentWindow.location.href ; }
catch ( exception )
{ console.log ( 'exception ' + exception ) ;
top.innerHTML = "Left <i>!HOST!</i> ..."
loc.innerHTML = '<p><span style="color:red">'
+ '<b>[to leave frame]</b></span> '
+ 'Use the <i><b>show only this frame</b></i> function '
+ 'of your browser.'
return ;
}
var url = '<a href="https://attic.apache.org/projects/!PROJ!.html">'
+ 'attic page</a>'
top.innerHTML = "Project <i>!PROJ!</i> is retired ; "
+ "for details, see !PROJ!'s " + url + '.'
loc.innerHTML = '<p>location: '
+ f2.contentWindow.location.pathname
}
//]]></script>
</head>
<body onload="initialize()" onresize="resize()">
<div id="f1">
<div id="top" class="top"></div>
<span id='loc'></span>
</div>
<iframe id="f2" onload="change_loc()" src="/FRAME/!PATH!"></iframe>
</body>
</html>
]=]
local PROG = '/scripts/add-banner.lua/' ;
local ATTIC_DIR = '/var/www/attic.apache.org/'
local ATTIC_PRJS = ATTIC_DIR .. 'flagged/'
function exists(f) return posix.stat(f) ~= nil end
function in_attic(p) return exists ( ATTIC_PRJS .. p ) end
function handle(r)
local get = r:parseargs()
local err = nil
local HOST = r.hostname
local PROJ, _ = string.gsub ( HOST, '.apache.org', '' )
local PATH = r.path_info
local TEST = false
r.content_type = "text/html"
-- r:puts ( r.unparsed_uri .. "<br>\n" )
-- for k, v in pairs ( get ) do
-- r:puts( string.format("arg [%s] [%s]<br>\n", k, v) )
-- end
if not TEST and not get.test and not in_attic(HOST) then
err = "project is not in attic"
.. " PROJ [" .. PROJ .. "]"
.. " HOST [" .. HOST .. "]"
.. " PATH [" .. PATH .. "]"
end
if err ~= nil then
r:puts(err)
else
local text = TEMPL
local subs =
{ ['!PROJ!'] = PROJ
, ['!HOST!'] = HOST
, ['!PATH!'] = PATH
}
for k, v in pairs ( subs ) do text, _ = string.gsub ( text, k, v ) end
r:puts(text)
end
return apache2.OK
end