X-Git-Url: https://git.p6c8.net/jirafeau/pcanterino.git/blobdiff_plain/463c260d3cf16d2fa2fbcba04bac446165d1a618..978683b51e7c6c49377b5a9404f4717cfd2f5392:/lib/functions.php
diff --git a/lib/functions.php b/lib/functions.php
index f70e0de..84bcea8 100644
--- a/lib/functions.php
+++ b/lib/functions.php
@@ -93,7 +93,7 @@ function jirafeau_gen_random($l)
return 42;
}
- $code="";
+ $code = '';
for ($i = 0; $i < $l; $i++) {
$code .= dechex(rand(0, 15));
}
@@ -106,7 +106,7 @@ function jirafeau_gen_download_pass($length, $allowed_chars)
if ($length <= 0) {
return false;
}
- $pass="";
+ $pass = '';
for ($i = 0; $i < $length; $i++) {
$pass .= $allowed_chars[rand(0, strlen($allowed_chars) - 1)];
}
@@ -143,10 +143,10 @@ function jirafeau_human_size($octets)
// Convert UTC timestamp to a datetime field
function jirafeau_get_datetimefield($timestamp)
{
- $ts = date_create("@" . $timestamp);
+ $ts = date_create('@' . $timestamp);
$content = ''
. date_format($ts, 'Y-m-d H:i') . ' (GMT)';
-
+
return $content;
}
@@ -397,7 +397,7 @@ function jirafeau_hash_file($method, $file_path)
function jirafeau_md5_outside($file_path)
{
$out = false;
- $handle = fopen($file_path, "r");
+ $handle = fopen($file_path, 'r');
if ($handle === false) {
return false;
}
@@ -446,16 +446,17 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
'link' => '',
'delete_link' => ''));
}
- jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method);
+ return jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method);
}
/**
- *
- * @param bool $crypt_module_enabled
- * @param string $file_path
+ *
+ * @param bool $crypt_module_enabled
+ * @param string $file_path
* @return array [bool, string]
*/
-function jirafeau_handle_add_file_encryption($crypt_module_enabled, $file_path) {
+function jirafeau_handle_add_file_encryption($crypt_module_enabled, $file_path)
+{
/* Crypt file if option is enabled. */
$crypted = false;
$crypt_key = '';
@@ -501,7 +502,6 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt,
$crypt_key = '';
list($crypted, $crypt_key) = jirafeau_handle_add_file_encryption($crypt, $file['tmp_name']);
-
/* file information */
$hash = jirafeau_hash_file($file_hash_method, $file['tmp_name']);
$name = str_replace(NL, '', trim($file['name']));
@@ -513,12 +513,9 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt,
$p = s2p("$hash");
if (file_exists(VAR_FILES . $p . $hash)) {
$rc = unlink($file['tmp_name']);
- } elseif ((file_exists(VAR_FILES . $p) || @mkdir(VAR_FILES . $p, 0755, true))
- &&
- //move_uploaded_file($file['tmp_name'], VAR_FILES . $p . $hash))
- $move_operation($file['tmp_name'], VAR_FILES . $p . $hash))
- {
-
+ } elseif (
+ (file_exists(VAR_FILES . $p) || @mkdir(VAR_FILES . $p, 0755, true)) &&
+ $move_operation($file['tmp_name'], VAR_FILES . $p . $hash)) {
$rc = true;
}
if (!$rc) {
@@ -526,7 +523,7 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt,
'error' =>
array('has_error' => true,
'why' => t('INTERNAL_ERROR_DEL')),
- 'link' =>'',
+ 'link' => '',
'delete_link' => ''));
}
@@ -580,7 +577,7 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt,
'error' =>
array('has_error' => true,
'why' => t('Internal error during file creation. ')),
- 'link' =>'',
+ 'link' => '',
'delete_link' => '');
}
return array( 'error' => $noerr,
@@ -589,8 +586,8 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt,
'crypt_key' => $crypt_key);
}
-
-function jirafeau_admin_list_table ($name, $file_hash, $link_hash, $visitor_function = null) {
+function jirafeau_admin_list_table($name, $file_hash, $link_hash, $visitor_function = null)
+{
echo '
';
}
-
-
-
-
/**
* Tells if a mime-type is viewable in a browser
* @param $mime the mime type
@@ -630,7 +623,7 @@ function jirafeau_is_viewable($mime)
if (!empty($mime)) {
$viewable = array('image', 'video', 'audio');
$decomposed = explode('/', $mime);
- if (in_array($decomposed[0], $viewable) && strpos($mime, 'image/svg+xml') === false) {
+ if (in_array($decomposed[0], $viewable) && stripos($mime, 'image/svg+xml') === false && strpos($mime, ',') === false) {
return true;
}
$viewable = array('text/plain');
@@ -748,8 +741,8 @@ function jirafeau_get_link($hash)
*/
function jirafeau_admin_list($name, $file_hash, $link_hash)
{
- $function = function($name, $file_hash, $link_hash) {
- /* Get all links files. */
+ $function = function ($name, $file_hash, $link_hash) {
+ /* Get all links files. */
$stack = array(VAR_LINKS);
while (($d = array_shift($stack)) && $d != null) {
$dir = scandir($d);
@@ -778,6 +771,9 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
if (!empty($link_hash) && $link_hash != $node) {
continue;
}
+
+ /* Get download statistics */
+ $ld = jirafeau_get_download_stats($node);
/* Print link information. */
echo '';
echo '';
@@ -785,8 +781,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
if (!$l['crypted'] && !$l['crypted_legacy']) {
echo'' . jirafeau_escape($l['file_name']) . '';
- }
- else {
+ } else {
echo jirafeau_escape($l['file_name']);
}
@@ -801,6 +796,11 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
if (strlen($l['ip']) > 0) {
echo t('ORIGIN') . ': ' . $l['ip'] . ' ';
}
+ echo t('DOWNLOAD_COUNT') . ': ' . $ld['count'] . ' ';
+ if ($ld['count'] > 0) {
+ echo t('DOWNLOAD_DATE') . ': ' . jirafeau_get_datetimefield($ld['date']) . ' ';
+ echo t('DOWNLOAD_IP') . ': ' . $ld['ip'] . ' ';
+ }
echo ' | ';
if (!$l['crypted'] && !$l['crypted_legacy']) {
@@ -829,8 +829,9 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
}
}
}
- };
- jirafeau_admin_list_table($name, $file_hash, $link_hash, $function);
+ };
+
+ jirafeau_admin_list_table($name, $file_hash, $link_hash, $function);
}
/**
@@ -1204,6 +1205,11 @@ function jirafeau_async_end($ref, $code, $crypt, $link_name_length, $file_hash_m
return "Error: referenced file does not exist";
}
+ /* Store filesize before encrypting the file */
+ /* Otherwise we would send the size of the encrypted file and the data of the unencrypted file */
+ /* This would break some browsers */
+ $size = filesize($p);
+
$crypted = false;
$crypt_key = '';
if ($crypt == true && extension_loaded('sodium') == true) {
@@ -1216,7 +1222,6 @@ function jirafeau_async_end($ref, $code, $crypt, $link_name_length, $file_hash_m
}
$hash = jirafeau_hash_file($file_hash_method, $p);
- $size = filesize($p);
$np = s2p($hash);
$delete_link_code = jirafeau_gen_random(5);
@@ -1341,7 +1346,7 @@ function jirafeau_decrypt_file($fp_src, $fp_dst, $k)
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);
-
+
if (fwrite($w, $dec) === false) {
return false;
}
@@ -1758,7 +1763,7 @@ function jirafeau_get_download_stats($hash)
$filename = VAR_LINKS . s2p("$hash") . $hash . '_download';
if (!file_exists($filename)) {
- return array('count'=>0);
+ return array('count' => 0);
}
$c = file($filename);
@@ -1782,7 +1787,8 @@ function jirafeau_write_download_stats($hash, $ip)
fclose($handle);
}
-function jirafeau_create_upload_finished_box($preview = true) {
+function jirafeau_create_upload_finished_box($preview = true, $download_pass = null)
+{
?>
@@ -1798,8 +1804,23 @@ function jirafeau_create_upload_finished_box($preview = true) {
-
+
+
+
+
+
+
@@ -1809,7 +1830,8 @@ function jirafeau_create_upload_finished_box($preview = true) {
+ }
+ ?>
@@ -1834,77 +1856,76 @@ function jirafeau_create_upload_finished_box($preview = true) {
- 'minute',
- 'label' => '1_MIN'
+ 'value' => 'minute',
+ 'label' => '1_MIN'
),
array(
- 'value' => 'hour',
- 'label' => '1_H'
+ 'value' => 'hour',
+ 'label' => '1_H'
),
array(
- 'value' => 'day',
- 'label' => '1_D'
+ 'value' => 'day',
+ 'label' => '1_D'
),
array(
- 'value' => 'week',
- 'label' => '1_W'
+ 'value' => 'week',
+ 'label' => '1_W'
),
array(
'value' => 'fortnight',
'label' => '2_W'
),
array(
- 'value' => 'month',
- 'label' => '1_M'
+ 'value' => 'month',
+ 'label' => '1_M'
),
array(
- 'value' => 'quarter',
- 'label' => '1_Q'
+ 'value' => 'quarter',
+ 'label' => '1_Q'
),
array(
- 'value' => 'year',
- 'label' => '1_Y'
+ 'value' => 'year',
+ 'label' => '1_Y'
),
array(
- 'value' => 'none',
- 'label' => 'NONE'
+ '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) {
+function jirafeau_datestr_to_int($time_str)
+{
$time = time();
switch ($time_str) {
case 'minute':
@@ -1931,7 +1952,7 @@ function jirafeau_get_expiration_time_options() {
case 'year':
$time += JIRAFEAU_YEAR;
break;
- default:
+ default:
$time = JIRAFEAU_INFINITY;
break;
}
@@ -1942,10 +1963,10 @@ function jirafeau_get_expiration_time_options() {
/**
- * links or copy a local file
+ * links or copy a local file
* TODO: boolean in config for linking
- * @param string $filepath
- * @param $one_time_download is the file a one time download ?
+ * @param string $filepath
+ * @param $one_time_download is the file a one time download?
* @param $key if not empty, protect the file with this key
* @param $time the time of validity of the file
* @param $ip uploader's ip
@@ -1956,21 +1977,20 @@ function jirafeau_get_expiration_time_options() {
* 'link' => the link name of the uploaded file
* 'delete_link' => the link code to delete file
*/
-function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method) {
-
+function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method)
+{
if (!file_exists($local_file_path)) {
return (array(
'error' =>
array('has_error' => true,
'why' => t('INTERNAL_ERROR_FILE_NOT_EXIST')),
- 'link' =>'',
+ 'link' => '',
'delete_link' => ''));
}
- if(
+ if (
// sanity check if file can be opened
- $file = fopen($local_file_path, "r")
- )
- {
+ $file = fopen($local_file_path, 'r')
+ ) {
// close file pointer - it's not needed here
fclose($file);
$time_in_int = jirafeau_datestr_to_int($time);
@@ -1985,25 +2005,23 @@ function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $t
$file_hash_method,
false
);
- }
- else {
+ } else {
return (array(
'error' =>
array('has_error' => true,
'why' => t('INTERNAL_ERROR_FP_OPEN_LOCAL')),
- 'link' =>'',
+ 'link' => '',
'delete_link' => ''));
}
-
}
-function jirafeau_create_file_array($file_path) {
- return
- [
- 'type' => mime_content_type($file_path),
- 'tmp_name' => $file_path,
- 'name' => basename($file_path),
- 'size' => filesize($file_path),
+function jirafeau_create_file_array($file_path)
+{
+ return [
+ 'type' => mime_content_type($file_path),
+ 'tmp_name' => $file_path,
+ 'name' => basename($file_path),
+ 'size' => filesize($file_path),
];
}
|