YAGNI - remove store session plain text

This commit is contained in:
Oliver Gorwits
2013-09-29 13:36:27 +01:00
parent 2b46ea310a
commit 2abbc8485e

72
Info.pm
View File

@@ -1106,16 +1106,6 @@ sub new {
delete $sess_args{IgnoreNetSNMPConf}; delete $sess_args{IgnoreNetSNMPConf};
} }
if ( exists $args{StoreSession} ) {
$new_obj->{StoreSession} = ($args{StoreSession} ? 1 : 0);
delete $sess_args{StoreSession};
}
if ( defined $args{SessionDataFile} ) {
$new_obj->{SessionDataFile} = $args{SessionDataFile};
delete $sess_args{SessionDataFile};
}
my $sess = undef; my $sess = undef;
if ( defined $args{Session} ) { if ( defined $args{Session} ) {
$sess = $args{Session}; $sess = $args{Session};
@@ -1201,8 +1191,6 @@ sub update {
delete $sess_args{BulkRepeaters}; delete $sess_args{BulkRepeaters};
delete $sess_args{BulkWalk}; delete $sess_args{BulkWalk};
delete $sess_args{LoopDetect}; delete $sess_args{LoopDetect};
delete $sess_args{StoreSession};
delete $sess_args{SessionDataFile};
delete $sess_args{IgnoreNetSNMPConf}; delete $sess_args{IgnoreNetSNMPConf};
delete $sess_args{BigInt}; delete $sess_args{BigInt};
delete $sess_args{MibDirs}; delete $sess_args{MibDirs};
@@ -3567,12 +3555,11 @@ sub _global {
} }
} }
if ( $self->debug() ) {
# Let's get the MIB Module and leaf name along with the OID # Let's get the MIB Module and leaf name along with the OID
my $qual_leaf = SNMP::translateObj($oid,0,1) || ''; my $qual_leaf = SNMP::translateObj($oid,0,1) || '';
print "SNMP::Info::_global $method : $qual_leaf : $oid\n";
print "SNMP::Info::_global $method : $qual_leaf : $oid\n" }
if $self->debug();
my $val = $sess->get($oid); my $val = $sess->get($oid);
# Mark as gotten. Even if it fails below, we don't want to keep failing. # Mark as gotten. Even if it fails below, we don't want to keep failing.
@@ -3595,11 +3582,11 @@ sub _global {
} }
# Save Cached Value # Save Cached Value
$self->_cache($qual_leaf, $attr, $val); $self->_cache($attr, $val);
# Data Munging # Data Munging
if ( !$raw ) { if ( !$raw ) {
$self->_munge($attr, $val); $val = $self->_munge($attr, $val);
} }
return $val; return $val;
@@ -4055,7 +4042,7 @@ sub _load_attr {
# Cache data if we are not getting partial data: # Cache data if we are not getting partial data:
if ( !defined $partial ) { if ( !defined $partial ) {
$self->_cache($qual_leaf, $attr, $localstore); $self->_cache($attr, $localstore);
} }
# Data Munging # Data Munging
@@ -4156,22 +4143,19 @@ sub modify_port_list {
return pack( "B*", join( '', @$portlist ) ); return pack( "B*", join( '', @$portlist ) );
} }
=item $info->_cache(qual_leaf, attr, data) =item $info->_cache(attr, data)
Cache retrieved data so that if it's asked for again, we use the cache instead Cache retrieved data so that if it's asked for again, we use the cache instead
of going back to Net-SNMP. Data is cached inside the blessed hashref C<$self>. of going back to Net-SNMP. Data is cached inside the blessed hashref C<$self>.
Accepts the qualified leaf, unqualified leaf, and value. Does not return Accepts the leaf and value (scalar, or hashref for a table). Does not return
anything useful. anything useful.
See also C<< $info->store_session() >> which allows dumping raw received data
into a text file for debugging or troubleshooting.
=cut =cut
sub _cache { sub _cache {
my $self = shift; my $self = shift;
my ($qual_leaf, $attr, $data) = @_; my ($attr, $data) = @_;
my $store = $self->store(); my $store = $self->store();
if (ref {} eq ref $data) { if (ref {} eq ref $data) {
@@ -4181,8 +4165,6 @@ sub _cache {
else { else {
$self->{"_$attr"} = $data; $self->{"_$attr"} = $data;
} }
$self->store_session($qual_leaf, $data);
} }
=item $info->_munge(attr, data) =item $info->_munge(attr, data)
@@ -4219,42 +4201,6 @@ sub _munge {
} }
} }
=item $info->store_session(leaf, data)
As well as maintaining an internal cache of retrieved data, SNMP::Info can
store SNMP responses to a file on disk. This is used for testing and
development work.
This feature is enabled by setting the C<StoreSession> parameter to true in
C<new()>. Data is written to a file named "C<< <DestHost>.txt >>" unless you
pass a name in the C<SessionDataFile> parameter. On instantiation SNMP::Info
will overwrite any pre-existing file.
The data stored by this method is a simple "leaf = val" text format, and is
not retrieved by any part of SNMP::Info. To have the store also be retrieved
and thereby allow SNMP::Info to operate "offline", see L<SNMP::Info::Offline>.
=cut
sub store_session {
my ($self, $leaf, $data) = @_;
return unless $self->{StoreSession} and $leaf and $data;
if (!exists $self->{SessionData}) {
$self->{SessionDataFile} ||= $self->session->{DestHost} .'.txt';
open $self->{SessionData}, '>', $self->{SessionDataFile}
or return;
}
if (ref {} eq ref $data) {
print {$self->{SessionData}} "${leaf}.$_ = $data->{$_}\n"
for sort keys %$data;
}
else {
print {$self->{SessionData}} "$leaf = $data\n";
}
}
=item _validate_autoload_method(method) =item _validate_autoload_method(method)
Used internally by AUTOLOAD to validate that a dynamic method should be Used internally by AUTOLOAD to validate that a dynamic method should be