[freeside-commits] branch FREESIDE_3_BRANCH updated. 004a6337cff05d08db7abc400e1c09430f000ac0

Ivan ivan at 420.am
Sun May 17 15:55:16 PDT 2015


The branch, FREESIDE_3_BRANCH has been updated
       via  004a6337cff05d08db7abc400e1c09430f000ac0 (commit)
      from  a15c09a76a0d94207f52526208feff90cb042364 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 004a6337cff05d08db7abc400e1c09430f000ac0
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sun May 17 15:55:13 2015 -0700

    don't look up encryption config every record, RT#28526

diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm
index 88d452a..ec0ba14 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -3,7 +3,7 @@ package FS::Record;
 use strict;
 use vars qw( $AUTOLOAD @ISA @EXPORT_OK $DEBUG
              %virtual_fields_cache
-             $conf $conf_encryption $money_char $lat_lower $lon_upper
+             $money_char $lat_lower $lon_upper
              $me
              $nowarn_identical $nowarn_classload
              $no_update_diff $no_history $qsearch_qualify_columns
@@ -61,14 +61,20 @@ my $rsa_loaded;
 my $rsa_encrypt;
 my $rsa_decrypt;
 
-$conf = '';
-$conf_encryption = '';
+our $conf = '';
+our $conf_encryption = '';
+our $conf_encryptionmodule = '';
+our $conf_encryptionpublickey = '';
+our $conf_encryptionprivatekey = '';
 FS::UID->install_callback( sub {
 
   eval "use FS::Conf;";
   die $@ if $@;
   $conf = FS::Conf->new; 
-  $conf_encryption = $conf->exists('encryption');
+  $conf_encryption           = $conf->exists('encryption');
+  $conf_encryptionmodule     = $conf->exists('encryptionmodule');
+  $conf_encryptionpublickey  = $conf->exists('encryptionpublickey');
+  $conf_encryptionprivatekey = $conf->exists('encryptionprivatekey');
   $money_char = $conf->config('money_char') || '$';
   my $nw_coords = $conf->exists('geocode-require_nw_coordinates');
   $lat_lower = $nw_coords ? 1 : -90;
@@ -1158,7 +1164,7 @@ sub insert {
   # Encrypt before the database
   if (    defined(eval '@FS::'. $table . '::encrypted_fields')
        && scalar( eval '@FS::'. $table . '::encrypted_fields')
-       && $conf->exists('encryption')
+       && $conf_encryption
   ) {
     foreach my $field (eval '@FS::'. $table . '::encrypted_fields') {
       next if $field eq 'payinfo' 
@@ -1399,7 +1405,7 @@ sub replace {
   
   # Encrypt for replace
   my $saved = {};
-  if (    $conf->exists('encryption')
+  if (    $conf_encryption
        && defined(eval '@FS::'. $new->table . '::encrypted_fields')
        && scalar( eval '@FS::'. $new->table . '::encrypted_fields')
   ) {
@@ -2160,7 +2166,7 @@ sub _h_statement {
   ;
 
   # If we're encrypting then don't store the payinfo in the history
-  if ( $conf && $conf->exists('encryption') && $self->table ne 'banned_pay' ) {
+  if ( $conf_encryption && $self->table ne 'banned_pay' ) {
     @fields = grep { $_ ne 'payinfo' } @fields;
   }
 
@@ -3057,7 +3063,7 @@ sub encrypt {
   my ($self, $value) = @_;
   my $encrypted = $value;
 
-  if ($conf->exists('encryption')) {
+  if ($conf_encryption) {
     if ($self->is_encrypted($value)) {
       # Return the original value if it isn't plaintext.
       $encrypted = $value;
@@ -3105,7 +3111,7 @@ You should generally not have to worry about calling this, as the system handles
 sub decrypt {
   my ($self,$value) = @_;
   my $decrypted = $value; # Will return the original value if it isn't encrypted or can't be decrypted.
-  if ($conf->exists('encryption') && $self->is_encrypted($value)) {
+  if ($conf_encryption && $self->is_encrypted($value)) {
     $self->loadRSA;
     if (ref($rsa_decrypt) =~ /::RSA/) {
       my $encrypted = unpack ("u*", $value);
@@ -3121,8 +3127,8 @@ sub loadRSA {
     #Initialize the Module
     $rsa_module = 'Crypt::OpenSSL::RSA'; # The Default
 
-    if ($conf->exists('encryptionmodule') && $conf->config('encryptionmodule') ne '') {
-      $rsa_module = $conf->config('encryptionmodule');
+    if ($conf_encryptionmodule && $conf_encryptionmodule ne '') {
+      $rsa_module = $conf_encryptionmodule;
     }
 
     if (!$rsa_loaded) {
@@ -3130,14 +3136,14 @@ sub loadRSA {
 	$rsa_loaded++;
     }
     # Initialize Encryption
-    if ($conf->exists('encryptionpublickey') && $conf->config('encryptionpublickey') ne '') {
-      my $public_key = join("\n",$conf->config('encryptionpublickey'));
+    if ($conf_encryptionpublickey && $conf_encryptionpublickey ne '') {
+      my $public_key = join("\n",$conf_encryptionpublickey);
       $rsa_encrypt = $rsa_module->new_public_key($public_key);
     }
     
     # Intitalize Decryption
-    if ($conf->exists('encryptionprivatekey') && $conf->config('encryptionprivatekey') ne '') {
-      my $private_key = join("\n",$conf->config('encryptionprivatekey'));
+    if ($conf_encryptionprivatekey && $conf_encryptionprivatekey ne '') {
+      my $private_key = join("\n",$conf_encryptionprivatekey);
       $rsa_decrypt = $rsa_module->new_private_key($private_key);
     }
 }

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Record.pm |   36 +++++++++++++++++++++---------------
 1 file changed, 21 insertions(+), 15 deletions(-)




More information about the freeside-commits mailing list