Index: /trunk/DNSDB.pm
===================================================================
--- /trunk/DNSDB.pm	(revision 194)
+++ /trunk/DNSDB.pm	(revision 195)
@@ -98,4 +98,5 @@
 
 # Prepopulate a basic config.  Note some of these *will* cause errors if left unset.
+# note:  add appropriate stanzas in loadConfig to parse these
 our %config = (
 		# Database connection info
@@ -107,6 +108,9 @@
 		# Email notice settings
 		mailhost	=> 'smtp.example.com',
-		mailsender	=> 'dnsdb@example.com',
+		mailnotify	=> 'dnsdb@example.com',	# to
+		mailsender	=> 'dnsdb@example.com',	# from
 		mailname	=> 'DNS Administration',
+		orgname		=> 'Example Corp',
+		domain		=> 'example.com',
 
 		# Template directory
@@ -116,5 +120,8 @@
 
 		# Session params
-		timeout		=> '3600'	# 1 hour default
+		timeout		=> '3600',	# 1 hour default
+
+		# Other miscellanea
+		log_failures	=> 1,	# log all evarthing by default
 	);
 
@@ -150,4 +157,21 @@
 	"Error opening site config file $siteconfig";
       return;
+    }
+  }
+
+  # Munge log_failures.
+  if ($config{log_failures} ne '1' && $config{log_failures} ne '0') {
+    # true/false, on/off, yes/no all valid.
+    if ($config{log_failures} =~ /^(?:true|false|on|off|yes|no)$/) {
+      if ($config{log_failures} =~ /(?:true|on|yes)/) {
+	$config{log_failures} = 1;
+      } else {
+	$config{log_failures} = 0;
+      }
+    } else {
+      $errstr = "Bad log_failures setting $config{log_failures}";
+      $config{log_failures} = 1;
+      # Bad setting shouldn't be fatal.
+      # return 2;
     }
   }
@@ -190,8 +214,13 @@
       # Mail settings
       $config{mailhost}		= $1 if /^mailhost\s*=\s*([a-z0-9_.-]+)/i;
+      $config{mailnotify}	= $1 if /^mailnotify\s*=\s*([a-z0-9_.@-]+)/i;
       $config{mailsender}	= $1 if /^mailsender\s*=\s*([a-z0-9_.@-]+)/i;
       $config{mailname}		= $1 if /^mailname\s*=\s*([a-z0-9\s_.-]+)/i;
+      $config{orgname}		= $1 if /^orgname\s*=\s*([a-z0-9\s_.,'-]+)/i;
+      $config{domain}		= $1 if /^domain\s*=\s*([a-z0-9_.-]+)/i;
       # session - note this is fed directly to CGI::Session
       $config{timeout}	= $1 if /^[tT][iI][mM][eE][oO][uU][tT]\s*=\s*(\d+[smhdwMy]?)/;
+      # log failed actions
+      $config{log_failures}	= $1 if /^log_failures\s*=\s*([a-z01]+)/i;
     }
     close CFG;
@@ -496,9 +525,13 @@
 ##fixme:  need better way(s?) to snag userinfo for log entries.  don't want to have
 # to pass around yet *another* constant (already passing $dbh, shouldn't need to)
+  my $fullname;
   if (!$user_id) {
-    $user_id, $fullname) = $dbh->fetchrow_array("SELECT user_id, firstname || ' ' || lastname FROM users".
+    ($user_id, $fullname) = $dbh->selectrow_array("SELECT user_id, firstname || ' ' || lastname FROM users".
 	" WHERE username=?", undef, ($username));
   } elsif (!$username) {
-    $username, $fullname) = $dbh->fetchrow_array("SELECT username, firstname || ' ' || lastname FROM users".
+    ($username, $fullname) = $dbh->selectrow_array("SELECT username, firstname || ' ' || lastname FROM users".
+	" WHERE user_id=?", undef, ($user_id));
+  } else {
+    ($fullname) = $dbh->selectrow_array("SELECT firstname || ' ' || lastname FROM users".
 	" WHERE user_id=?", undef, ($user_id));
   }
Index: /trunk/dns.cgi
===================================================================
--- /trunk/dns.cgi	(revision 194)
+++ /trunk/dns.cgi	(revision 195)
@@ -350,5 +350,6 @@
     changepage(page => "reclist", id => $msg);
   } else {
-    logaction(0, $session->param("username"), $webvar{group}, "Failed adding domain $webvar{domain} ($msg)");
+    logaction(0, $session->param("username"), $webvar{group}, "Failed adding domain $webvar{domain} ($msg)")
+	if $config{log_failures};
     $session->param('add_failed', 1);
 ##fixme:  domain a security risk for XSS?
@@ -383,5 +384,6 @@
       changepage(page => "domlist", resultmsg => "Deleted domain $dom");
     } else {
-      logaction($webvar{id}, $session->param("username"), $pargroup, "Failed to delete domain $dom ($msg)");
+      logaction($webvar{id}, $session->param("username"), $pargroup, "Failed to delete domain $dom ($msg)")
+	if $config{log_failures};
       changepage(page => "domlist", errmsg => "Error deleting domain $dom: $msg");
     }
@@ -520,13 +522,15 @@
       if ($webvar{defrec} eq 'y') {
 	my $restr = "Added default record '$webvar{name} $typemap{$webvar{type}}";
-	$restr .= " [distance $dist]" if $typemap{$webvar{type}} eq 'MX';
-	$restr .= " [priority $dist] [weight $weight] [port $port]" if $typemap{$webvar{type}} eq 'SRV';
+	$restr .= " [distance $webvar{distance}]" if $typemap{$webvar{type}} eq 'MX';
+	$restr .= " [priority $webvar{distance}] [weight $webvar{weight}] [port $webvar{port}]"
+		if $typemap{$webvar{type}} eq 'SRV';
 	$restr .= " $webvar{address}', TTL $webvar{ttl}";
 	logaction(0, $session->param("username"), $webvar{parentid}, $restr);
 	changepage(page => "reclist", id => $webvar{parentid}, defrec => $webvar{defrec}, resultmsg => $restr);
       } else {
-	my $restr = "Added record '$webvar{name} $typemap{$webvar{type}}".
-	$restr .= " [distance $dist]" if $typemap{$webvar{type}} eq 'MX';
-	$restr .= " [priority $dist] [weight $weight] [port $port]" if $typemap{$webvar{type}} eq 'SRV';
+	my $restr = "Added record '$webvar{name} $typemap{$webvar{type}}";
+	$restr .= " [distance $webvar{dist}]" if $typemap{$webvar{type}} eq 'MX';
+	$restr .= " [priority $webvar{dist}] [weight $webvar{weight}] [port $webvar{port}]"
+		if $typemap{$webvar{type}} eq 'SRV';
 	$restr .= " $webvar{address}', TTL $webvar{ttl}";
 	logaction($webvar{parentid}, $session->param("username"), parentID($webvar{parentid}, 'dom', 'group'), $restr);
@@ -543,10 +547,12 @@
       $page->param(id		=> $webvar{id});
       fill_recdata();	# populate the form... er, mostly.
-      if ($webvar{defrec} eq 'y') {
-	logaction(0, $session->param("username"), $webvar{parentid},
+      if ($config{log_failures}) {
+	if ($webvar{defrec} eq 'y') {
+	  logaction(0, $session->param("username"), $webvar{parentid},
 		"Failed adding default record '$webvar{name} $typemap{$webvar{type}} $webvar{address}', TTL $webvar{ttl} ($msg)");
-      } else {
-	logaction($webvar{parentid}, $session->param("username"), parentID($webvar{parentid}, 'dom', 'group'),
+	} else {
+	  logaction($webvar{parentid}, $session->param("username"), parentID($webvar{parentid}, 'dom', 'group'),
 		"Failed adding record '$webvar{name} $typemap{$webvar{type}} $webvar{address}', TTL $webvar{ttl} ($msg)");
+	}
       }
     }
@@ -610,10 +616,12 @@
       $page->param(id		=> $webvar{id});
       fill_recdata();
-      if ($webvar{defrec} eq 'y') {
-	logaction(0, $session->param("username"), $webvar{parentid},
+      if ($config{log_failures}) {
+	if ($webvar{defrec} eq 'y') {
+	  logaction(0, $session->param("username"), $webvar{parentid},
 		"Failed updating default record '$typemap{$webvar{type}} $webvar{name} $webvar{address}', TTL $webvar{ttl} ($msg)");
-      } else {
-	logaction($webvar{parentid}, $session->param("username"), parentID($webvar{parentid}, 'dom', 'group'),
+	} else {
+	  logaction($webvar{parentid}, $session->param("username"), parentID($webvar{parentid}, 'dom', 'group'),
 		"Failed updating record '$typemap{$webvar{type}} $webvar{name} $webvar{address}', TTL $webvar{ttl} ($msg)");
+	}
       }
     }
@@ -669,11 +677,13 @@
     } else {
 ## need to find failure mode
-      if ($webvar{defrec} eq 'y') {
-	logaction(0, $session->param("username"), $rec->{parid},
+      if ($config{log_failures}) {
+	if ($webvar{defrec} eq 'y') {
+	  logaction(0, $session->param("username"), $rec->{parid},
 		"Failed deleting default record '$rec->{host} $typemap{$rec->{type}} $rec->{val}',".
 		" TTL $rec->{ttl} ($msg)");
-      } else {
-	logaction($rec->{parid}, $session->param("username"), parentID($rec->{parid}, 'dom', 'group'),
+	} else {
+	  logaction($rec->{parid}, $session->param("username"), parentID($rec->{parid}, 'dom', 'group'),
 		"Failed deleting record '$rec->{host} $typemap{$rec->{type}} $rec->{val}', TTL $rec->{ttl} ($msg)");
+	}
       }
       changepage(page => "reclist", id => $webvar{parentid}, defrec => $webvar{defrec},
@@ -740,4 +750,5 @@
     $page->param(msg => $DBI::errstr);
     fillsoa($webvar{defrec},$webvar{id});
+##fixme: faillog
   } else {
 
@@ -820,5 +831,6 @@
       }
     } # fallthrough else
-    logaction(0, $session->param("username"), $webvar{pargroup}, "Failed to add group $webvar{newgroup}: $msg");
+    logaction(0, $session->param("username"), $webvar{pargroup}, "Failed to add group $webvar{newgroup}: $msg")
+	if $config{log_failures};
     # no point in doing extra work
     fill_permissions($page, \%newperms);
@@ -864,5 +876,6 @@
     } else {
 # need to find failure mode
-      logaction(0, $session->param("username"), $delparent, "Failed to delete group $deleteme: $msg");
+      logaction(0, $session->param("username"), $delparent, "Failed to delete group $deleteme: $msg")
+	if $config{log_failures};
       changepage(page => "grpman", errmsg => "Error deleting group $deleteme: $msg");
     }
@@ -913,5 +926,6 @@
     } # fallthrough else
     logaction(0, $session->param("username"), $webvar{gid}, "Failed to update default permissions in group ".
-	groupName($dbh, $webvar{gid}).": $msg");
+	groupName($dbh, $webvar{gid}).": $msg")
+	if $config{log_failures};
     # no point in doing extra work
     fill_permissions($page, \%chperms);
@@ -1002,5 +1016,6 @@
       } else {
         logaction($webvar{$_}, $session->param("username"), parentID($webvar{$_}, 'dom', 'group'),
-		"Failed to move domain ".domainName($dbh, $webvar{$_})." to group $newgname: $msg");
+		"Failed to move domain ".domainName($dbh, $webvar{$_})." to group $newgname: $msg")
+		if $config{log_failures};
       }
       $row{domerr} = $msg;
@@ -1059,5 +1074,6 @@
         $row{domok} = ($code eq 'OK');
       } else {
-        logaction($webvar{$_}, $session->param("username"), $pargroup, "Failed to delete domain $dom: $msg");
+        logaction($webvar{$_}, $session->param("username"), $pargroup, "Failed to delete domain $dom: $msg")
+		if $config{log_failures};
       }
       $row{domerr} = $msg;
@@ -1251,5 +1267,6 @@
       fill_clonemelist();
       logaction(0, $session->param("username"), $curgroup, "Failed to $webvar{action} user ".
-	"$webvar{uname}: $msg");
+	"$webvar{uname}: $msg")
+	if $config{log_failures};
     }
 
@@ -1330,5 +1347,6 @@
       list_users($curgroup);
       logaction(0, $session->param("username"), $curgroup, "Failed to delete user ".
-	"$webvar{id}/".$userref->{username}.": $msg");
+	"$webvar{id}/".$userref->{username}.": $msg")
+	if $config{log_failures};
     }
   } else {
