diff options
Diffstat (limited to 'perl/Wallet/Object')
| -rw-r--r-- | perl/Wallet/Object/Base.pm | 80 | ||||
| -rw-r--r-- | perl/Wallet/Object/File.pm | 2 | ||||
| -rw-r--r-- | perl/Wallet/Object/Keytab.pm | 43 | ||||
| -rw-r--r-- | perl/Wallet/Object/WAKeyring.pm | 2 | 
4 files changed, 64 insertions, 63 deletions
| diff --git a/perl/Wallet/Object/Base.pm b/perl/Wallet/Object/Base.pm index 5bd89a7..dd128cc 100644 --- a/perl/Wallet/Object/Base.pm +++ b/perl/Wallet/Object/Base.pm @@ -36,16 +36,16 @@ $VERSION = '0.06';  # type in the object.  If the object doesn't exist, returns undef.  This will  # probably be usable as-is by most object types.  sub new { -    my ($class, $type, $name, $dbh) = @_; +    my ($class, $type, $name, $schema) = @_;      my %search = (ob_type => $type,                    ob_name => $name); -    my $object = $dbh->resultset('Object')->find (\%search); +    my $object = $schema->resultset('Object')->find (\%search);      die "cannot find ${type}:${name}\n"          unless ($object and $object->ob_name eq $name);      my $self = { -        dbh  => $dbh, -        name => $name, -        type => $type, +        schema => $schema, +        name   => $name, +        type   => $type,      };      bless ($self, $class);      return $self; @@ -56,11 +56,11 @@ sub new {  # specified class.  Stores the database handle to use, the name, and the type  # in the object.  Subclasses may need to override this to do additional setup.  sub create { -    my ($class, $type, $name, $dbh, $user, $host, $time) = @_; +    my ($class, $type, $name, $schema, $user, $host, $time) = @_;      $time ||= time;      die "invalid object type\n" unless $type;      die "invalid object name\n" unless $name; -    my $guard = $dbh->txn_scope_guard; +    my $guard = $schema->txn_scope_guard;      eval {          my %record = (ob_type         => $type,                        ob_name         => $name, @@ -68,7 +68,7 @@ sub create {                        ob_created_from => $host,                        ob_created_on   => strftime ('%Y-%m-%d %T',                                                     localtime $time)); -        $dbh->resultset('Object')->create (\%record); +        $schema->resultset('Object')->create (\%record);          %record = (oh_type   => $type,                     oh_name   => $name, @@ -76,7 +76,7 @@ sub create {                     oh_by     => $user,                     oh_from   => $host,                     oh_on     => strftime ('%Y-%m-%d %T', localtime $time)); -        $dbh->resultset('ObjectHistory')->create (\%record); +        $schema->resultset('ObjectHistory')->create (\%record);          $guard->commit;      }; @@ -84,9 +84,9 @@ sub create {          die "cannot create object ${type}:${name}: $@\n";      }      my $self = { -        dbh  => $dbh, -        name => $name, -        type => $type, +        schema => $schema, +        name   => $name, +        type   => $type,      };      bless ($self, $class);      return $self; @@ -136,7 +136,7 @@ sub log_action {      # We have two traces to record, one in the object_history table and one in      # the object record itself.  Commit both changes as a transaction.  We      # assume that AutoCommit is turned off. -    my $guard = $self->{dbh}->txn_scope_guard; +    my $guard = $self->{schema}->txn_scope_guard;      eval {          my %record = (oh_type   => $self->{type},                        oh_name   => $self->{name}, @@ -144,11 +144,11 @@ sub log_action {                        oh_by     => $user,                        oh_from   => $host,                        oh_on     => strftime ('%Y-%m-%d %T', localtime $time)); -        $self->{dbh}->resultset('ObjectHistory')->create (\%record); +        $self->{schema}->resultset('ObjectHistory')->create (\%record);          my %search = (ob_type   => $self->{type},                        ob_name   => $self->{name}); -        my $object = $self->{dbh}->resultset('Object')->find (\%search); +        my $object = $self->{schema}->resultset('Object')->find (\%search);          if ($action eq 'get') {              $object->ob_downloaded_by   ($user);              $object->ob_downloaded_from ($host); @@ -202,7 +202,7 @@ sub log_set {                    oh_by         => $user,                    oh_from       => $host,                    oh_on         => strftime ('%Y-%m-%d %T', localtime $time)); -    $self->{dbh}->resultset('ObjectHistory')->create (\%record); +    $self->{schema}->resultset('ObjectHistory')->create (\%record);  }  ############################################################################## @@ -225,11 +225,11 @@ sub _set_internal {          return;      } -    my $guard = $self->{dbh}->txn_scope_guard; +    my $guard = $self->{schema}->txn_scope_guard;      eval {          my %search = (ob_type => $type,                        ob_name => $name); -        my $object = $self->{dbh}->resultset('Object')->find (\%search); +        my $object = $self->{schema}->resultset('Object')->find (\%search);          my $old = $object->get_column ("ob_$attr");          $object->update ({ "ob_$attr" => $value }); @@ -261,7 +261,7 @@ sub _get_internal {      eval {          my %search = (ob_type => $type,                        ob_name => $name); -        my $object = $self->{dbh}->resultset('Object')->find (\%search); +        my $object = $self->{schema}->resultset('Object')->find (\%search);          $value = $object->get_column ($attr);      };      if ($@) { @@ -282,7 +282,7 @@ sub acl {      my $attr = "acl_$type";      if ($id) {          my $acl; -        eval { $acl = Wallet::ACL->new ($id, $self->{dbh}) }; +        eval { $acl = Wallet::ACL->new ($id, $self->{schema}) };          if ($@) {              $self->error ($@);              return; @@ -352,7 +352,7 @@ sub owner {      my ($self, $owner, $user, $host, $time) = @_;      if ($owner) {          my $acl; -        eval { $acl = Wallet::ACL->new ($owner, $self->{dbh}) }; +        eval { $acl = Wallet::ACL->new ($owner, $self->{schema}) };          if ($@) {              $self->error ($@);              return; @@ -375,13 +375,13 @@ sub flag_check {      my ($self, $flag) = @_;      my $name = $self->{name};      my $type = $self->{type}; -    my $dbh = $self->{dbh}; +    my $schema = $self->{schema};      my $value;      eval {          my %search = (fl_type => $type,                        fl_name => $name,                        fl_flag => $flag); -        my $flag = $dbh->resultset('Flag')->find (\%search); +        my $flag = $schema->resultset('Flag')->find (\%search);          if (not defined $flag) {              $value = 0;          } else { @@ -403,13 +403,13 @@ sub flag_clear {      $time ||= time;      my $name = $self->{name};      my $type = $self->{type}; -    my $dbh = $self->{dbh}; -    my $guard = $dbh->txn_scope_guard; +    my $schema = $self->{schema}; +    my $guard = $schema->txn_scope_guard;      eval {          my %search = (fl_type => $type,                        fl_name => $name,                        fl_flag => $flag); -        my $flag = $dbh->resultset('Flag')->find (\%search); +        my $flag = $schema->resultset('Flag')->find (\%search);          unless (defined $flag) {              die "flag not set\n";          } @@ -435,8 +435,8 @@ sub flag_list {          my %search = (fl_type => $self->{type},                        fl_name => $self->{name});          my %attrs  = (order_by => 'fl_flag'); -        my @flags_rs = $self->{dbh}->resultset('Flag')->search (\%search, -                                                                \%attrs); +        my @flags_rs = $self->{schema}->resultset('Flag')->search (\%search, +                                                                   \%attrs);          for my $flag (@flags_rs) {              push (@flags, $flag->fl_flag);          } @@ -457,17 +457,17 @@ sub flag_set {      $time ||= time;      my $name = $self->{name};      my $type = $self->{type}; -    my $dbh = $self->{dbh}; -    my $guard = $dbh->txn_scope_guard; +    my $schema = $self->{schema}; +    my $guard = $schema->txn_scope_guard;      eval {          my %search = (fl_type => $type,                        fl_name => $name,                        fl_flag => $flag); -        my $flag = $dbh->resultset('Flag')->find (\%search); +        my $flag = $schema->resultset('Flag')->find (\%search);          if (defined $flag) {              die "flag already set\n";          } -        $flag = $dbh->resultset('Flag')->create (\%search); +        $flag = $schema->resultset('Flag')->create (\%search);          $self->log_set ('flags', undef, $flag->fl_flag, $user, $host, $time);          $guard->commit;      }; @@ -489,7 +489,7 @@ sub format_acl_id {      my $name = $id;      my %search = (ac_id => $id); -    my $acl_rs = $self->{dbh}->resultset('Acl')->find (\%search); +    my $acl_rs = $self->{schema}->resultset('Acl')->find (\%search);      if (defined $acl_rs) {          $name = $acl_rs->ac_name . " ($id)";      } @@ -507,7 +507,7 @@ sub history {          my %search = (oh_type => $self->{type},                        oh_name => $self->{name});          my %attrs = (order_by => 'oh_on'); -        my @history = $self->{dbh}->resultset('ObjectHistory') +        my @history = $self->{schema}->resultset('ObjectHistory')              ->search (\%search, \%attrs);          for my $history_rs (@history) { @@ -620,7 +620,7 @@ sub show {      eval {          my %search = (ob_type => $type,                        ob_name => $name); -        $object_rs = $self->{dbh}->resultset('Object')->find (\%search); +        $object_rs = $self->{schema}->resultset('Object')->find (\%search);      };      if ($@) {          $self->error ("cannot retrieve data for ${type}:${name}: $@"); @@ -658,7 +658,7 @@ sub show {              $output .= $attr_output;          }          if ($field =~ /^ob_(owner|acl_)/) { -            my $acl = eval { Wallet::ACL->new ($value, $self->{dbh}) }; +            my $acl = eval { Wallet::ACL->new ($value, $self->{schema}) };              if ($acl and not $@) {                  $value = $acl->name || $value;                  push (@acls, [ $acl, $value ]); @@ -688,18 +688,18 @@ sub destroy {          $self->error ("cannot destroy ${type}:${name}: object is locked");          return;      } -    my $guard = $self->{dbh}->txn_scope_guard; +    my $guard = $self->{schema}->txn_scope_guard;      eval {          # Remove any flags that may exist for the record.          my %search = (fl_type => $type,                        fl_name => $name); -        $self->{dbh}->resultset('Flag')->search (\%search)->delete; +        $self->{schema}->resultset('Flag')->search (\%search)->delete;          # Remove any object records          %search = (ob_type => $type,                     ob_name => $name); -        $self->{dbh}->resultset('Object')->search (\%search)->delete; +        $self->{schema}->resultset('Object')->search (\%search)->delete;          # And create a new history object for the destroy action.          my %record = (oh_type => $type, @@ -708,7 +708,7 @@ sub destroy {                        oh_by     => $user,                        oh_from   => $host,                        oh_on     => strftime ('%Y-%m-%d %T', localtime $time)); -        $self->{dbh}->resultset('ObjectHistory')->create (\%record); +        $self->{schema}->resultset('ObjectHistory')->create (\%record);          $guard->commit;      };      if ($@) { diff --git a/perl/Wallet/Object/File.pm b/perl/Wallet/Object/File.pm index 47c8ac2..69468e1 100644 --- a/perl/Wallet/Object/File.pm +++ b/perl/Wallet/Object/File.pm @@ -143,7 +143,7 @@ API HOSTNAME DATETIME keytab remctld backend nul Allbery wallet-backend      my @name = qw(file mysql-lsdb)      my @trace = ($user, $host, time); -    my $object = Wallet::Object::Keytab->create (@name, $dbh, @trace); +    my $object = Wallet::Object::Keytab->create (@name, $schema, @trace);      unless ($object->store ("the-password\n")) {          die $object->error, "\n";      } diff --git a/perl/Wallet/Object/Keytab.pm b/perl/Wallet/Object/Keytab.pm index b50fb6e..962c19b 100644 --- a/perl/Wallet/Object/Keytab.pm +++ b/perl/Wallet/Object/Keytab.pm @@ -40,12 +40,12 @@ sub enctypes_set {      my @trace = ($user, $host, $time);      my $name = $self->{name};      my %enctypes = map { $_ => 1 } @$enctypes; -    my $guard = $self->{dbh}->txn_scope_guard; +    my $guard = $self->{schema}->txn_scope_guard;      eval {          # Find all enctypes for the given keytab.          my %search = (ke_name => $name); -        my @enctypes = $self->{dbh}->resultset('KeytabEnctype') +        my @enctypes = $self->{schema}->resultset('KeytabEnctype')              ->search (\%search);          my (@current);          for my $enctype_rs (@enctypes) { @@ -61,7 +61,7 @@ sub enctypes_set {              } else {                  %search = (ke_name    => $name,                             ke_enctype => $enctype); -                $self->{dbh}->resultset('KeytabEnctype')->find (\%search) +                $self->{schema}->resultset('KeytabEnctype')->find (\%search)                      ->delete;                  $self->log_set ('type_data enctypes', $enctype, undef, @trace);              } @@ -73,13 +73,13 @@ sub enctypes_set {          # to make it easier to test.          for my $enctype (sort keys %enctypes) {              my %search = (en_name => $enctype); -            my $enctype_rs = $self->{dbh}->('Enctype')->find (\%search); +            my $enctype_rs = $self->{schema}->('Enctype')->find (\%search);              unless (defined $enctype_rs) {                  die "unknown encryption type $enctype\n";              }              my %record = (ke_name    => $name,                            ke_enctype => $enctype); -            $self->{dbh}->resultset('Enctype')->create (\%record); +            $self->{schema}->resultset('Enctype')->create (\%record);              $self->log_set ('type_data enctypes', undef, $enctype, @trace);          }          $guard->commit; @@ -101,7 +101,7 @@ sub enctypes_list {      eval {          my %search = (ke_name => $self->{name});          my %attrs = (order_by => 'ke_enctype'); -        my @enctypes_rs = $self->{dbh}->resultset('KeytabEnctype') +        my @enctypes_rs = $self->{schema}->resultset('KeytabEnctype')              ->search (\%search, \%attrs);          for my $enctype_rs (@enctypes_rs) {              push (@enctypes, $enctype_rs->ke_enctype); @@ -136,11 +136,11 @@ sub sync_set {          $self->error ("unsupported synchronization target $target");          return;      } else { -        my $guard = $self->{dbh}->txn_scope_guard; +        my $guard = $self->{schema}->txn_scope_guard;          eval {              my $name = $self->{name};              my %search = (ks_name => $name); -            my $sync_rs = $self->{dbh}->resultset('KeytabSync') +            my $sync_rs = $self->{schema}->resultset('KeytabSync')                  ->find (\%search);              if (defined $sync_rs) {                  my $target = $sync_rs->ks_target; @@ -167,8 +167,8 @@ sub sync_list {      eval {          my %search = (ks_name => $self->{name});          my %attrs = (order_by => 'ks_target'); -        my @syncs = $self->{dbh}->resultset('KeytabSync')->search (\%search, -                                                                   \%attrs); +        my @syncs = $self->{schema}->resultset('KeytabSync')->search (\%search, +                                                                      \%attrs);          for my $sync_rs (@syncs) {              push (@targets, $sync_rs->ks_target);          } @@ -239,16 +239,16 @@ sub attr_show {  # Override new to start by creating a handle for the kadmin module we're  # using.  sub new { -    my ($class, $type, $name, $dbh) = @_; +    my ($class, $type, $name, $schema) = @_;       my $self = { -        dbh    => $dbh, +        schema => $schema,          kadmin => undef,      };      bless $self, $class;      my $kadmin = Wallet::Kadmin->new ();      $self->{kadmin} = $kadmin; -    $self = $class->SUPER::new ($type, $name, $dbh); +    $self = $class->SUPER::new ($type, $name, $schema);      $self->{kadmin} = $kadmin;      return $self;  } @@ -258,9 +258,9 @@ sub new {  # great here since we don't have a way to communicate the error back to the  # caller.  sub create { -    my ($class, $type, $name, $dbh, $creator, $host, $time) = @_; +    my ($class, $type, $name, $schema, $creator, $host, $time) = @_;      my $self = { -        dbh    => $dbh, +        schema => $schema,          kadmin => undef,      };      bless $self, $class; @@ -270,7 +270,8 @@ sub create {      if (not $kadmin->create ($name)) {          die $kadmin->error, "\n";      } -    $self = $class->SUPER::create ($type, $name, $dbh, $creator, $host, $time); +    $self = $class->SUPER::create ($type, $name, $schema, $creator, $host, +                                   $time);      $self->{kadmin} = $kadmin;      return $self;  } @@ -283,15 +284,15 @@ sub destroy {          $self->error ("cannot destroy $id: object is locked");          return;      } -    my $dbh = $self->{dbh}; -    my $guard = $dbh->txn_scope_guard; +    my $schema = $self->{schema}; +    my $guard = $schema->txn_scope_guard;      eval {          my %search = (ks_name => $self->{name}); -        my $sync_rs = $dbh->resultset('KeytabSync')->search (\%search); +        my $sync_rs = $schema->resultset('KeytabSync')->search (\%search);          $sync_rs->delete_all if defined $sync_rs;          %search = (ke_name => $self->{name}); -        my $enctype_rs = $dbh->resultset('KeytabEnctype')->search (\%search); +        my $enctype_rs = $schema->resultset('KeytabEnctype')->search (\%search);          $enctype_rs->delete_all if defined $enctype_rs;          $guard->commit; @@ -353,7 +354,7 @@ Wallet::Object::Keytab - Keytab object implementation for wallet      my @name = qw(keytab host/shell.example.com);      my @trace = ($user, $host, time); -    my $object = Wallet::Object::Keytab->create (@name, $dbh, @trace); +    my $object = Wallet::Object::Keytab->create (@name, $schema, @trace);      my $keytab = $object->get (@trace);      $object->destroy (@trace); diff --git a/perl/Wallet/Object/WAKeyring.pm b/perl/Wallet/Object/WAKeyring.pm index b26be58..f33497c 100644 --- a/perl/Wallet/Object/WAKeyring.pm +++ b/perl/Wallet/Object/WAKeyring.pm @@ -255,7 +255,7 @@ Wallet::Object::WAKeyring - WebAuth keyring object implementation for wallet      my ($user, $host, $time);      my @name = qw(wa-keyring www.stanford.edu);      my @trace = ($user, $host, $time); -    my $object = Wallet::Object::WAKeyring->create (@name, $dbh, $trace); +    my $object = Wallet::Object::WAKeyring->create (@name, $schema, $trace);      my $keyring = $object->get (@trace);      unless ($object->store ($keyring)) {          die $object->error, "\n"; | 
