diff options
Diffstat (limited to 'perl/Wallet')
| -rw-r--r-- | perl/Wallet/ACL.pm | 9 | ||||
| -rw-r--r-- | perl/Wallet/Object/Base.pm | 35 | ||||
| -rw-r--r-- | perl/Wallet/Server.pm | 9 | 
3 files changed, 30 insertions, 23 deletions
diff --git a/perl/Wallet/ACL.pm b/perl/Wallet/ACL.pm index f04217e..bc318a1 100644 --- a/perl/Wallet/ACL.pm +++ b/perl/Wallet/ACL.pm @@ -87,9 +87,10 @@ sub create {          $dbh->do ($sql, undef, $name);          $id = $dbh->last_insert_id (undef, undef, 'acls', 'ac_id');          die "unable to retrieve new ACL ID" unless defined $id; +        my $date = strftime ('%Y-%m-%d %T', localtime $time);          $sql = "insert into acl_history (ah_acl, ah_action, ah_by, ah_from,              ah_on) values (?, 'create', ?, ?, ?)"; -        $dbh->do ($sql, undef, $id, $user, $host, $time); +        $dbh->do ($sql, undef, $id, $user, $host, $date);          $dbh->commit;      };      if ($@) { @@ -143,10 +144,11 @@ sub log_acl {      unless ($action =~ /^(add|remove)\z/) {          die "invalid history action $action";      } +    my $date = strftime ('%Y-%m-%d %T', localtime $time);      my $sql = 'insert into acl_history (ah_acl, ah_action, ah_scheme,          ah_identifier, ah_by, ah_from, ah_on) values (?, ?, ?, ?, ?, ?, ?)';      $self->{dbh}->do ($sql, undef, $self->{id}, $action, $scheme, $identifier, -                      $user, $host, $time); +                      $user, $host, $date);  }  ############################################################################## @@ -317,8 +319,7 @@ sub history {          $sth->execute ($self->{id});          my @data;          while (@data = $sth->fetchrow_array) { -            my $time = strftime ('%Y-%m-%d %H:%M:%S', localtime $data[5]); -            $output .= "$time  "; +            $output .= "$data[5]  ";              if ($data[0] eq 'add' or $data[0] eq 'remove') {                  $output .= "$data[0] $data[1] $data[2]";              } else { diff --git a/perl/Wallet/Object/Base.pm b/perl/Wallet/Object/Base.pm index 1371f7f..2fe6ed9 100644 --- a/perl/Wallet/Object/Base.pm +++ b/perl/Wallet/Object/Base.pm @@ -65,12 +65,13 @@ sub create {      die "invalid object type\n" unless $type;      die "invalid object name\n" unless $name;      eval { +        my $date = strftime ('%Y-%m-%d %T', localtime $time);          my $sql = 'insert into objects (ob_type, ob_name, ob_created_by,              ob_created_from, ob_created_on) values (?, ?, ?, ?, ?)'; -        $dbh->do ($sql, undef, $type, $name, $user, $host, $time); +        $dbh->do ($sql, undef, $type, $name, $user, $host, $date);          $sql = "insert into object_history (oh_type, oh_name, oh_action,              oh_by, oh_from, oh_on) values (?, ?, 'create', ?, ?, ?)"; -        $dbh->do ($sql, undef, $type, $name, $user, $host, $time); +        $dbh->do ($sql, undef, $type, $name, $user, $host, $date);          $dbh->commit;      };      if ($@) { @@ -131,20 +132,21 @@ sub log_action {      # the object record itself.  Commit both changes as a transaction.  We      # assume that AutoCommit is turned off.      eval { +        my $date = strftime ('%Y-%m-%d %T', localtime $time);          my $sql = 'insert into object_history (oh_type, oh_name, oh_action,              oh_by, oh_from, oh_on) values (?, ?, ?, ?, ?, ?)';          $self->{dbh}->do ($sql, undef, $self->{type}, $self->{name}, $action, -                          $user, $host, $time); +                          $user, $host, $date);          if ($action eq 'get') {              $sql = 'update objects set ob_downloaded_by = ?,                  ob_downloaded_from = ?, ob_downloaded_on = ? where                  ob_type = ? and ob_name = ?'; -            $self->{dbh}->do ($sql, undef, $user, $host, $time, $self->{type}, +            $self->{dbh}->do ($sql, undef, $user, $host, $date, $self->{type},                                $self->{name});          } elsif ($action eq 'store') {              $sql = 'update objects set ob_stored_by = ?, ob_stored_from = ?,                  ob_stored_on = ? where ob_type = ? and ob_name = ?'; -            $self->{dbh}->do ($sql, undef, $user, $host, $time, $self->{type}, +            $self->{dbh}->do ($sql, undef, $user, $host, $date, $self->{type},                                $self->{name});          }          $self->{dbh}->commit; @@ -178,11 +180,12 @@ sub log_set {      unless ($fields{$field}) {          die "invalid history field $field";      } +    my $date = strftime ('%Y-%m-%d %T', localtime $time);      my $sql = "insert into object_history (oh_type, oh_name, oh_action,          oh_field, oh_type_field, oh_old, oh_new, oh_by, oh_from, oh_on)          values (?, ?, 'set', ?, ?, ?, ?, ?, ?, ?)";      $self->{dbh}->do ($sql, undef, $self->{type}, $self->{name}, $field, -                      $type_field, $old, $new, $user, $host, $time); +                      $type_field, $old, $new, $user, $host, $date);  }  ############################################################################## @@ -301,7 +304,7 @@ sub attr_show {  sub expires {      my ($self, $expires, $user, $host, $time) = @_;      if ($expires) { -        if ($expires !~ /^\d+\z/ || $expires == 0) { +        if ($expires !~ /^\d{4}-\d\d-\d\d( \d\d:\d\d:\d\d)?\z/) {              $self->error ("malformed expiration time $expires");              return;          } @@ -465,8 +468,7 @@ sub history {          $sth->execute ($self->{type}, $self->{name});          my @data;          while (@data = $sth->fetchrow_array) { -            my $time = strftime ('%Y-%m-%d %H:%M:%S', localtime $data[7]); -            $output .= "$time  "; +            $output .= "$data[7]  ";              my ($old, $new) = @data[3..4];              if ($data[0] eq 'set' and $data[1] eq 'flags') {                  if (defined ($data[4])) { @@ -619,13 +621,14 @@ sub destroy {          return;      }      eval { +        my $date = strftime ('%Y-%m-%d %T', localtime $time);          my $sql = 'delete from flags where fl_type = ? and fl_name = ?';          $self->{dbh}->do ($sql, undef, $type, $name);          $sql = 'delete from objects where ob_type = ? and ob_name = ?';          $self->{dbh}->do ($sql, undef, $type, $name);          $sql = "insert into object_history (oh_type, oh_name, oh_action,              oh_by, oh_from, oh_on) values (?, ?, 'destroy', ?, ?, ?)"; -        $self->{dbh}->do ($sql, undef, $type, $name, $user, $host, $time); +        $self->{dbh}->do ($sql, undef, $type, $name, $user, $host, $date);          $self->{dbh}->commit;      };      if ($@) { @@ -779,11 +782,13 @@ string.  Sets or retrieves the expiration date of an object.  If no arguments are  given, returns the current expiration or undef if no expiration is set.  If -arguments are given, change the expiration to EXPIRES, which should be in -seconds since epoch, and return true on success and false on failure.  Pass -in the empty string for EXPIRES to clear the expiration date.  The other -arguments are used for logging and history and should indicate the user and -host from which the change is made and the time of the change. +arguments are given, change the expiration to EXPIRES and return true on +success and false on failure.  EXPIRES must be in the format C<YYYY-MM-DD +HH:MM:SS>, although the time portion may be omitted.  Pass in the empty +string for EXPIRES to clear the expiration date. + +The other arguments are used for logging and history and should indicate the +user and host from which the change is made and the time of the change.  =item flag_check(FLAG) diff --git a/perl/Wallet/Server.pm b/perl/Wallet/Server.pm index 04e8fd9..c119ad4 100644 --- a/perl/Wallet/Server.pm +++ b/perl/Wallet/Server.pm @@ -920,10 +920,11 @@ isn't set and a failure to retrieve the expiration, the caller should call  error() after an undef return.  If error() also returns undef, that ACL  wasn't set; otherwise, error() will return the error message. -If EXPIRES is given, sets the expiration to EXPIRES, which should be in -seconds since epoch.  To set an expiration, the current user must be -authorized by the ADMIN ACL.  Returns true for success and false for -failure. +If EXPIRES is given, sets the expiration to EXPIRES.  EXPIRES must be in +the format C<YYYY-MM-DD +HH:MM:SS>, although the time portion may be +omitted.  Pass in the empty +string for EXPIRES to clear the expiration +date.  To set an expiration, the current user must be authorized by the +ADMIN ACL.  Returns true for success and false for failure.  =item flag_clear(TYPE, NAME, FLAG)  | 
