mirror of
https://github.com/xroche/httrack.git
synced 2026-08-14 11:42:27 +03:00
* Expand the WebHTTrack footer year instead of hardcoding it (#1165) The 23 pages under html/server/ carried 1998-2026 as literal markup, which doc-chrome.py cannot reach, so from next New Year the docs and the GUI would have disagreed with nothing to catch it. htsserver already resolves a ${prefix:name} family in the templates it serves, so the year becomes one more of those. Computed per request, it cannot drift, and no regeneration or check has to watch it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Xavier Roche <roche@httrack.com> * Classify the date: token in the template escaping audit (#1165) 185 requires every ${...} in the server templates to carry the escaping prefix its position needs, and a bare key in element body is a finding. The year the server computes is not runtime data and cannot carry markup, so it joins the translations and build-time constants instead. Paired both ways: a settings value in element body must still be a finding, or the exemption is a hole rather than a classification. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Xavier Roche <roche@httrack.com> * Fall back to the clock on an unusable SOURCE_DATE_EPOCH, and harden the test A garbage or over-range override reached time zero, so the footer rendered 1998-1970 rather than ignoring the value. The parse now has to consume the whole string, and a value gmtime rejects falls back to the real clock. The test grew what the review found missing: the tree-wide sweep that a single converted page cannot satisfy, a pinned epoch an hour before New Year UTC read from 14 hours east of it, so gmtime and localtime give different years, and the two unusable overrides. Renumbered off 286, which master took meanwhile. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Xavier Roche <roche@httrack.com> * Refuse a SOURCE_DATE_EPOCH whose year no footer can show glibc's gmtime accepts the whole int range of tm_year, so a parsable SOURCE_DATE_EPOCH could reach the footer as "-2" or overflow the tm_year + 1900 add. Both break the digits-only promise test 185's date: exemption rests on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Xavier Roche <roche@httrack.com> --------- Signed-off-by: Xavier Roche <roche@httrack.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
84 lines
2.0 KiB
HTML
84 lines
2.0 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" lang="${attr:LANGUAGE_ISO}">
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=${attr:LANGUAGE_CHARSET}" />
|
|
<meta name="description" content="${attr:LANG_METADESC}" />
|
|
<meta name="keywords" content="${attr:LANG_METAKEYW}" />
|
|
<title>'${html:projname}' - HTTrack Website Copier</title>
|
|
|
|
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
|
<script type="text/javascript" src="ping.js" defer></script>
|
|
|
|
<script language="javascript">
|
|
<!--
|
|
function do_load() {
|
|
window.status=' ';
|
|
}
|
|
function do_unload() {
|
|
}
|
|
function info(str) {
|
|
window.status = str;
|
|
}
|
|
// -->
|
|
</script>
|
|
|
|
</head>
|
|
<body onLoad="do_load();" onUnload="do_unload();">
|
|
|
|
<table width="76%" border="0" align="center" cellspacing="0" cellpadding="0" class="tableWidth">
|
|
<tr>
|
|
<td><img src="images/wordmark.svg" width="400" height="36" alt="HTTrack Website Copier" title="" border="0" id="title" /></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<table width="76%" border="0" align="center" cellspacing="0" cellpadding="3" class="tableWidth">
|
|
<tr>
|
|
<td id="subTitle">${LANG_OSFWB}</td>
|
|
</tr>
|
|
</table>
|
|
<table width="76%" border="0" align="center" cellspacing="0" cellpadding="0" class="tableWidth">
|
|
<tr class="blak">
|
|
<td>
|
|
<table width="100%" border="0" align="center" cellspacing="1" cellpadding="0">
|
|
<tr>
|
|
<td colspan="6">
|
|
<table width="100%" border="0" align="center" cellspacing="0" cellpadding="10">
|
|
<tr>
|
|
<td id="pageContent">
|
|
<!-- ==================== End prologue ==================== -->
|
|
|
|
<h2>
|
|
${LANG_FATALERR}:
|
|
</h2>
|
|
<br>
|
|
<tt>
|
|
${html:error}
|
|
</tt>
|
|
|
|
<br>
|
|
<a href="javascript:window.close();">${LANG_CANCLSWND}.</a>
|
|
|
|
|
|
<!-- ==================== Start epilogue ==================== -->
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td id="footer"><small><small>© 1998-${date:year} Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td>
|
|
</tr>
|
|
</table>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
|