Changeset 90 for trunk/dns.cgi


Ignore:
Timestamp:
04/12/11 14:46:22 (13 years ago)
Author:
Kris Deugau
Message:

/trunk

Checkpoint

  • Comment-docu-tweak on addUser()
  • Disallow blank usernames on creation
  • Add docucomment on updateUser()
  • Update getRecLine() to handle long records, switch to more compact $dbh->do() instead of explicit prepare/execute/fetch
  • Update getDomRecs() to handle long records. Clean up SQL formatting.
  • Update addRec() to handle long records
  • Update updateRec() to handle long records
  • Add fixme reminder to handle VegaDNS encrypted passwords (hex-coded MD5)
  • Use getRecData() instead of local SQL for "Edit record" page
  • Log user add and update actions
  • Remember to set $permissions{admin} to 1 on update if user type is "superuser"
  • Uncomment page=deluser segment; this was not integrated with the rest of the user add/update pages
  • HTML-comment "Customer ID" (uid) on log pages; having trouble seeing a use-case
  • Nitpick tweaks on record add/edit page
  • Use HTML::Template's HTML-escaping on the record value on record add/edit page - required for eg SPF records with quotation marks
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dns.cgi

    r88 r90  
    116116    $webvar{loginfailed} = 1 if !defined($uid);
    117117
     118##fixme:  allow imported VegaDNS passwords.  hash is hex-coded MD5.
     119#perl -e 'use Digest::MD5 qw(md5 md5_hex md5_base64); print md5_hex("test")."\n";'
     120#098f6bcd4621d373cade4e832627b4f6
     121
    118122    if ($pass =~ m|^\$1\$([A-Za-z0-9/.]+)\$|) {
    119123      $webvar{loginfailed} = 1 if $pass ne unix_md5_crypt($webvar{password},$1);
     
    343347    $page->param(id             => $webvar{id});
    344348    $page->param(defrec         => $webvar{defrec});
    345 ##fixme: SQL does not belong!
    346     my $sth = $dbh->prepare("SELECT host,type,val,distance,weight,port,ttl FROM ".
    347         ($webvar{defrec} eq 'y' ? 'default_' : '')."records WHERE record_id=?");
    348     $sth->execute($webvar{id});
    349     my ($host,$type,$val,$distance,$weight,$port,$ttl) = $sth->fetchrow_array;
    350     $page->param(name           => $host);
    351     $page->param(address        => $val);
    352     $page->param(distance       => $distance);
    353     $page->param(weight         => $weight);
    354     $page->param(port           => $port);
    355     $page->param(ttl            => $ttl);
    356     fill_rectypes($type);
     349    my $recdata = getRecLine($dbh, $webvar{defrec}, $webvar{id});
     350    $page->param(name           => $recdata->{host});
     351    $page->param(address        => $recdata->{val});
     352    $page->param(distance       => $recdata->{distance});
     353    $page->param(weight         => $recdata->{weight});
     354    $page->param(port           => $recdata->{port});
     355    $page->param(ttl            => $recdata->{ttl});
     356    fill_rectypes($recdata->{type});
    357357
    358358  } elsif ($webvar{recact} eq 'update') {
     
    660660                ($webvar{makeactive} eq 'on' ? 1 : 0), $webvar{accttype}, $permstring,
    661661                $webvar{fname}, $webvar{lname}, $webvar{phone});
     662        logaction(0, $session->param("username"), $curgroup, "Added user $webvar{uname} (uid $msg)")
     663                if $code eq 'OK';
    662664      } else {
    663665# User update is icky.  I'd really like to do this in one atomic
     
    670672##fixme - need to actually get a correct permission set to pass in here,
    671673# also a flag to revert custom permissions to inherited
     674          $newperms{admin} = 1 if $webvar{accttype} eq 'S';
    672675          ($code,$msg) = changePermissions($dbh, 'user', $webvar{uid}, \%newperms, ($permstring eq 'i'));
    673676        }
     677        logaction(0, $session->param("username"), $curgroup,
     678                "Updated uid $webvar{uid}, user $webvar{uname} ($webvar{fname} $webvar{lname})");
    674679      }
    675680    }
     
    677682    if ($code eq 'OK') {
    678683
    679 ##fixme:  log doesn't log.  WTF?  O_o
    680       logaction(0, $session->param("username"), $webvar{group},
    681         ($webvar{action} eq 'add' ? 'Added' : 'Updated')." uid $webvar{uid}, user $webvar{uname} ($webvar{fname} $webvar{lname})");
    682684      if ($alterperms) {
    683685        changepage(page => "useradmin", warnmsg =>
     
    810812##  $page->param(add_failed => 1);
    811813#
    812 #} elsif ($webvar{page} eq 'deluser') {
    813 #
    814 #  $page->param(id => $webvar{id});
    815 #  # first pass = confirm y/n (sorta)
    816 #  if (!defined($webvar{del})) {
    817 #    $page->param(del_getconf => 1);
    818 #    $page->param(user => userFullName($dbh,$webvar{id}));
    819 #  } elsif ($webvar{del} eq 'ok') {
    820 ###fixme: find group id user is in (for logging) *before* we delete the user
    821 #    my ($code,$msg) = delUser($dbh, $webvar{id});
    822 #    if ($code ne 'OK') {
    823 ## need to find failure mode
    824 #      $page->param(del_failed => 1);
    825 #      $page->param(errmsg => $msg);
    826 #      list_users($curgroup);
    827 #    } else {
    828 #      # success.  go back to the user list, do not pass "GO"
    829 ###log
    830 #      logaction(0, $session->param("username"), $webvar{group}, "Added domain $webvar{domain}");
    831 #      changepage(page => "useradmin");
    832 #    }
    833 #  } else {
    834 #    # cancelled.  whee!
    835 #    changepage(page => "useradmin");
    836 #  }
    837 #
     814
     815} elsif ($webvar{page} eq 'deluser') {
     816
     817  $page->param(id => $webvar{id});
     818  # first pass = confirm y/n (sorta)
     819  if (!defined($webvar{del})) {
     820    $page->param(del_getconf => 1);
     821    $page->param(user => userFullName($dbh,$webvar{id}));
     822  } elsif ($webvar{del} eq 'ok') {
     823##fixme: find group id user is in (for logging) *before* we delete the user
     824##fixme: get other user data too for log
     825    my ($code,$msg) = delUser($dbh, $webvar{id});
     826    if ($code ne 'OK') {
     827# need to find failure mode
     828      $page->param(del_failed => 1);
     829      $page->param(errmsg => $msg);
     830      list_users($curgroup);
     831    } else {
     832      # success.  go back to the user list, do not pass "GO"
     833##log
     834      logaction(0, $session->param("username"), $curgroup, "Deleted user $webvar{id}");
     835      changepage(page => "useradmin");
     836    }
     837  } else {
     838    # cancelled.  whee!
     839    changepage(page => "useradmin");
     840  }
     841
    838842#} elsif ($webvar{page} eq 'edituser') {
    839843
Note: See TracChangeset for help on using the changeset viewer.