Index: /trunk/dns.cgi
===================================================================
--- /trunk/dns.cgi	(revision 172)
+++ /trunk/dns.cgi	(revision 173)
@@ -102,5 +102,4 @@
 my $logingroup = ($session->param('logingroup') ? $session->param('logingroup') : 1);
 my $curgroup = ($session->param('curgroup') ? $session->param('curgroup') : $logingroup);
-my $group = ($webvar{group} ? $webvar{group} : 1);
 
 # per-page startwith, filter, searchsubs
@@ -182,5 +181,14 @@
 push @viewablegroups, $logingroup;
 
-my $page = HTML::Template->new(filename => "$templatedir/$webvar{page}.tmpl");
+my $page;
+eval {
+  $page = HTML::Template->new(filename => "$templatedir/$webvar{page}.tmpl");
+};
+if ($@) {
+  warn "Bad page $webvar{page} requested";
+  $page = HTML::Template->new(filename => "$templatedir/badpage.tmpl");
+  $page->param(badpage => $q->escapeHTML($webvar{page}));
+  $webvar{page} = 'badpage';
+}
 
 # handle login redirect
@@ -1407,5 +1415,5 @@
 
 ##common bits
-if ($webvar{page} ne 'login') {
+if ($webvar{page} ne 'login' && $webvar{page} ne 'badpage') {
   $page->param(username => $session->param("username"));
 
Index: /trunk/templates/badpage.tmpl
===================================================================
--- /trunk/templates/badpage.tmpl	(revision 173)
+++ /trunk/templates/badpage.tmpl	(revision 173)
@@ -0,0 +1,8 @@
+<!-- <TMPL_VAR NAME=sid> -->
+<div id="badpage">
+Bad page requested:
+<div class="errmsg">
+<TMPL_VAR NAME=badpage>
+</div>
+Press the 'Back' button on your browser to continue.
+</div>
Index: /trunk/templates/dns.css
===================================================================
--- /trunk/templates/dns.css	(revision 172)
+++ /trunk/templates/dns.css	(revision 173)
@@ -185,4 +185,5 @@
 	padding: 5px;
 	width: 70%;
+	margin: 1% auto;
 }
 .right {
@@ -238,4 +239,13 @@
 #soadetail {
 	text-align: left;
+}
+#badpage {
+	margin: 5% auto;
+	border: solid 2px #FFFF00;
+	color: #333300;
+	background-color: #e0e0e0;
+	text-align: center;
+	padding: 5px;
+	width: 70%;
 }
 /* somewhat generic/reusable */
