aboutsummaryrefslogtreecommitdiff
path: root/perl/Wallet
diff options
context:
space:
mode:
Diffstat (limited to 'perl/Wallet')
-rw-r--r--perl/Wallet/ACL.pm9
-rw-r--r--perl/Wallet/Object/Base.pm35
-rw-r--r--perl/Wallet/Server.pm9
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)