[freeside-commits] branch master updated. 146fe88cea912f90629950876863ae95faa7600f

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


The branch, master has been updated
       via  146fe88cea912f90629950876863ae95faa7600f (commit)
      from  d98e4631640eaaf28b4c022efedd49b640a283c6 (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 146fe88cea912f90629950876863ae95faa7600f
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sun May 17 15:55:06 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 5f76718..e324f15 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -56,12 +56,18 @@ my $rsa_decrypt;
 
 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;
@@ -1295,7 +1301,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' 
@@ -1536,7 +1542,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')
   ) {
@@ -2287,7 +2293,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;
   }
 
@@ -3218,7 +3224,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;
@@ -3261,7 +3267,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);
@@ -3277,8 +3283,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) {
@@ -3286,14 +3292,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 |   30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)




More information about the freeside-commits mailing list