From b145465a3f18ac13cf13f540a7b3f96f55ae43ea Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Sun, 22 Apr 2018 18:08:48 +0200 Subject: [PATCH] backup/restore, cleanup. move crypt.inc to diag_backup.php since it's only used there now. --- plist | 1 - src/etc/inc/config.inc | 1 - src/etc/inc/crypt.inc | 108 ---------------------------------------- src/www/diag_backup.php | 83 ++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+), 110 deletions(-) delete mode 100644 src/etc/inc/crypt.inc diff --git a/plist b/plist index 71a2c52d3..f8dc79657 100644 --- a/plist +++ b/plist @@ -13,7 +13,6 @@ /usr/local/etc/inc/certs.inc /usr/local/etc/inc/config.inc /usr/local/etc/inc/console.inc -/usr/local/etc/inc/crypt.inc /usr/local/etc/inc/filter.inc /usr/local/etc/inc/filter.lib.inc /usr/local/etc/inc/gwlb.inc diff --git a/src/etc/inc/config.inc b/src/etc/inc/config.inc index c046d3042..d83c4d334 100644 --- a/src/etc/inc/config.inc +++ b/src/etc/inc/config.inc @@ -36,7 +36,6 @@ openlog($g['product_id'], LOG_ODELAY, LOG_USER); register_shutdown_function('closelog'); require_once("xmlparse.inc"); -require_once("crypt.inc"); require_once("notices.inc"); require_once("legacy_bindings.inc"); require_once("certs.inc"); diff --git a/src/etc/inc/crypt.inc b/src/etc/inc/crypt.inc deleted file mode 100644 index 94a7d9729..000000000 --- a/src/etc/inc/crypt.inc +++ /dev/null @@ -1,108 +0,0 @@ - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -function _crypt_data($val, $pass, $opt) -{ - $result = ''; - - $file = tempnam('/tmp', 'php-encrypt'); - file_put_contents("{$file}.dec", $val); - - exec(sprintf( - '/usr/local/bin/openssl enc %s -aes-256-cbc -in %s.dec -out %s.enc -k %s', - escapeshellarg($opt), - escapeshellarg($file), - escapeshellarg($file), - escapeshellarg($pass) - )); - - if (file_exists("{$file}.enc")) { - $result = file_get_contents("{$file}.enc"); - } else { - log_error('Failed to encrypt/decrypt data!'); - } - - @unlink($file); - @unlink("{$file}.dec"); - @unlink("{$file}.enc"); - - return $result; -} - -function encrypt_data(&$data, $pass) -{ - return base64_encode(_crypt_data($data, $pass, '-e')); -} - -function decrypt_data(&$data, $pass) -{ - return _crypt_data(base64_decode($data), $pass, '-d'); -} - -function tagfile_reformat($in, &$out, $tag) -{ - $out = "---- BEGIN {$tag} ----\n"; - - $size = 80; - $oset = 0; - while ($size >= 64) { - $line = substr($in, $oset, 64); - $out .= $line . "\n"; - $size = strlen($line); - $oset += $size; - } - - $out .= "---- END {$tag} ----\n"; - - return true; -} - -function tagfile_deformat($in, &$out, $tag) -{ - $btag_val = "---- BEGIN {$tag} ----"; - $etag_val = "---- END {$tag} ----"; - - $btag_len = strlen($btag_val); - $etag_len = strlen($etag_val); - - $btag_pos = stripos($in, $btag_val); - $etag_pos = stripos($in, $etag_val); - - if (($btag_pos === false) || ($etag_pos === false)) { - return false; - } - - $body_pos = $btag_pos + $btag_len; - $body_len = strlen($in); - $body_len -= $btag_len; - $body_len -= $etag_len + 1; - - $out = substr($in, $body_pos, $body_len); - - return true; -} diff --git a/src/www/diag_backup.php b/src/www/diag_backup.php index d39348f7a..087e3ae4b 100644 --- a/src/www/diag_backup.php +++ b/src/www/diag_backup.php @@ -3,6 +3,7 @@ /* Copyright (C) 2014 Deciso B.V. Copyright (C) 2004-2009 Scott Ullrich + Copyright (C) 2008 Shrew Soft Inc. Copyright (C) 2003-2004 Manuel Kasper All rights reserved. @@ -35,6 +36,88 @@ require_once("services.inc"); require_once("rrd.inc"); require_once("system.inc"); + +function _crypt_data($val, $pass, $opt) +{ + $result = ''; + + $file = tempnam('/tmp', 'php-encrypt'); + file_put_contents("{$file}.dec", $val); + + exec(sprintf( + '/usr/local/bin/openssl enc %s -aes-256-cbc -in %s.dec -out %s.enc -k %s', + escapeshellarg($opt), + escapeshellarg($file), + escapeshellarg($file), + escapeshellarg($pass) + )); + + if (file_exists("{$file}.enc")) { + $result = file_get_contents("{$file}.enc"); + } else { + log_error('Failed to encrypt/decrypt data!'); + } + + @unlink($file); + @unlink("{$file}.dec"); + @unlink("{$file}.enc"); + + return $result; +} + +function encrypt_data(&$data, $pass) +{ + return base64_encode(_crypt_data($data, $pass, '-e')); +} + +function decrypt_data(&$data, $pass) +{ + return _crypt_data(base64_decode($data), $pass, '-d'); +} + +function tagfile_reformat($in, &$out, $tag) +{ + $out = "---- BEGIN {$tag} ----\n"; + + $size = 80; + $oset = 0; + while ($size >= 64) { + $line = substr($in, $oset, 64); + $out .= $line . "\n"; + $size = strlen($line); + $oset += $size; + } + + $out .= "---- END {$tag} ----\n"; + + return true; +} + +function tagfile_deformat($in, &$out, $tag) +{ + $btag_val = "---- BEGIN {$tag} ----"; + $etag_val = "---- END {$tag} ----"; + + $btag_len = strlen($btag_val); + $etag_len = strlen($etag_val); + + $btag_pos = stripos($in, $btag_val); + $etag_pos = stripos($in, $etag_val); + + if (($btag_pos === false) || ($etag_pos === false)) { + return false; + } + + $body_pos = $btag_pos + $btag_len; + $body_len = strlen($in); + $body_len -= $btag_len; + $body_len -= $etag_len + 1; + + $out = substr($in, $body_pos, $body_len); + + return true; +} + /** * restore config section * @param string $section_name config section name