- if (!ctype_digit ($start) || $start < 0
- || !ctype_digit ($length) || $length <= 0)
- {
- echo "Error";
- return;
- }
-
- $p = VAR_BLOCK . s2p ($id) . $id;
- if (!file_exists ($p))
- {
- echo "Error";
- return;
- }
-
- /* Check date. */
- $f = file ($p . '_infos');
- $date = trim ($f[0]);
- $block_size = trim ($f[1]);
- $stored_code = trim ($f[2]);
- /* Update date. */
- if (date ('U') - $date > JIRAFEAU_HOUR
- && date ('U') - $date < JIRAFEAU_MONTH)
- {
- if (file_put_contents ($p . '_infos', date ('U') . NL . $block_size . NL . $stored_code) === FALSE)
- {
- jirafeau_block_delete_ ($id);
- echo "Error";
- return;
- }
- }
- /* Remove data. */
- elseif (date ('U') - $date >= JIRAFEAU_MONTH)
- {
- echo date ('U'). " $date ";
- jirafeau_block_delete_ ($id);
- echo "Error";
- return;
- }
-
- if ($start + $length > $block_size)
- {
- echo "Error";
- return;
- }
-
- /* Read content. */
- header ('Content-Length: ' . $length);
- header ('Content-Disposition: attachment');
-
- $r = fopen ($p, 'r');
- if (fseek ($r, $start) != 0)
- {
- echo "Error";
- return;
- }
- $c = 1024;
- for ($cnt = 0; $cnt < $length && !feof ($r); $cnt += 1024)
+ $fs = filesize ($fp_src);
+ if ($fs === false || $fs == 0 || !(extension_loaded('mcrypt') == true))
+ return false;
+
+ /* Init module */
+ $m = mcrypt_module_open('rijndael-256', '', 'ofb', '');
+ /* Extract key and iv. */
+ $crypt_key = $k;
+ $md5_key = md5($crypt_key);
+ $iv = jirafeau_crypt_create_iv ($md5_key, mcrypt_enc_get_iv_size($m));
+ /* Decrypt file. */
+ $r = fopen ($fp_src, 'r');
+ $w = fopen ($fp_dst, 'c');
+ while (!feof ($r))