X-Git-Url: https://git.p6c8.net/jirafeau_project.git/blobdiff_plain/b1c96930b34b47dd1c8f6321d62beeceb87afb00..117541049ca0a09a13a40fc0a5e686e334334fae:/lib/functions.php?ds=inline diff --git a/lib/functions.php b/lib/functions.php index fff8c44..fd0fe2c 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -879,7 +879,7 @@ function jirafeau_fileperms($path) function jirafeau_admin_bug_report($cfg) { $out = "
" . t('REPORTING_AN_ISSUE') . ""; - $out .= "If you have a problem related to Jirafeau, please open an issue, explain your problem in english and copy-paste the following content:

"; + $out .= "If you have a problem related to Jirafeau, please open an issue, explain your problem in english and copy-paste the following content:

"; $out .= "# Jirafeau
"; $out .= "- version: " . JIRAFEAU_VERSION . "
"; @@ -1216,7 +1216,7 @@ function jirafeau_crypt_create_iv($base, $size) * Crypt file using Sodium and returns decrypt key. * @param $fp_src file path to the file to crypt. * @param $fp_dst file path to the file to write crypted file (must not be the same). - * @return decrypt key composed of the key and the iv separated by a point ('.') + * @return key used to encrypt the file */ function jirafeau_encrypt_file($fp_src, $fp_dst) { @@ -1256,8 +1256,8 @@ function jirafeau_encrypt_file($fp_src, $fp_dst) * Decrypt file using Sodium. * @param $fp_src file path to the file to decrypt. * @param $fp_dst file path to the file to write decrypted file (must not be the same). - * @param $k string composed of the key and the iv separated by a point ('.') - * @return key used to decrypt. a string of length 0 is returned if failed. + * @param $k decryption key + * @return true if decryption succeeded, false otherwise */ function jirafeau_decrypt_file($fp_src, $fp_dst, $k) { @@ -1267,22 +1267,27 @@ function jirafeau_decrypt_file($fp_src, $fp_dst, $k) } /* Decrypt file. */ - $r = fopen(VAR_FILES . $p . $link['hash'], 'rb'); + $r = fopen($fp_src, 'rb'); + $w = fopen($fp_dst, 'wb'); $crypt_header = fread($r, SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES); /* Init module. */ - $crypt_state = sodium_crypto_secretstream_xchacha20poly1305_init_pull($crypt_header, $crypt_key); + $crypt_state = sodium_crypto_secretstream_xchacha20poly1305_init_pull($crypt_header, $k); /* Decrypt file. */ for ($i = SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES; $i < $fs; $i += JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES) { $to_dec = fread($r, JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES); [$dec, $crypt_tag] = sodium_crypto_secretstream_xchacha20poly1305_pull($crypt_state, $to_dec); - echo $dec; + + if (fwrite($w, $dec) === false) { + return false; + } } fclose($r); + fclose($w); /* Cleanup. */ sodium_memzero($crypt_state); @@ -1295,7 +1300,7 @@ function jirafeau_decrypt_file($fp_src, $fp_dst, $k) * @param $fp_src file path to the file to decrypt. * @param $fp_dst file path to the file to write decrypted file (could be the same). * @param $k string composed of the key and the iv separated by a point ('.') - * @return key used to decrypt. a string of length 0 is returned if failed. + * @return true if decryption succeeded, false otherwise */ function jirafeau_decrypt_file_legacy($fp_src, $fp_dst, $k) { @@ -1310,6 +1315,8 @@ function jirafeau_decrypt_file_legacy($fp_src, $fp_dst, $k) $crypt_key = $k; $hash_key = md5($crypt_key); $iv = jirafeau_crypt_create_iv($hash_key, mcrypt_enc_get_iv_size($m)); + /* Init module. */ + mcrypt_generic_init($m, $hash_key, $iv); /* Decrypt file. */ $r = fopen($fp_src, 'r'); $w = fopen($fp_dst, 'c'); @@ -1713,3 +1720,159 @@ function jirafeau_write_download_stats($hash, $ip) fwrite($handle, $count . NL . time() . NL . $ip); fclose($handle); } + +function jirafeau_create_upload_finished_box($preview = true) { + ?> + +
+

+ +
+

+ + +

+ + +

+
+ + +
+

+ +

+ + +

+
+ + +
+

+ +

+ + +

+
+ +
+

+ +

+ + +

+
+ +
+

:

+

+
+
+ 'minute', + 'label' => '1_MIN' + ), + array( + 'value' => 'hour', + 'label' => '1_H' + ), + array( + 'value' => 'day', + 'label' => '1_D' + ), + array( + 'value' => 'week', + 'label' => '1_W' + ), + array( + 'value' => 'fortnight', + 'label' => '2_W' + ), + array( + 'value' => 'month', + 'label' => '1_M' + ), + array( + 'value' => 'quarter', + 'label' => '1_Q' + ), + array( + 'value' => 'year', + 'label' => '1_Y' + ), + array( + 'value' => 'none', + 'label' => 'NONE' + ) + ); +} + + + + /** + * + * creates the time selection field + * @param mixed $cfg + * @return void + */ + function jirafeau_create_selection_array($cfg) { + echo + ''; + } + + function jirafeau_datestr_to_int ($time_str) { + $time = time(); + switch ($time_str) { + case 'minute': + $time += JIRAFEAU_MINUTE; + break; + case 'hour': + $time += JIRAFEAU_HOUR; + break; + case 'day': + $time += JIRAFEAU_DAY; + break; + case 'week': + $time += JIRAFEAU_WEEK; + break; + case 'fortnight': + $time += JIRAFEAU_FORTNIGHT; + break; + case 'month': + $time += JIRAFEAU_MONTH; + break; + case 'quarter': + $time += JIRAFEAU_QUARTER; + break; + case 'year': + $time += JIRAFEAU_YEAR; + break; + default: + $time = JIRAFEAU_INFINITY; + break; + } + return $time; +}