@@ -227,55 +165,9 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) {
}?>
|
- |
+
+
+ |
.
*/
+ function template_js_preview_link() {
+ ?>
+ if (!!document.getElementById('preview_link'))
+ {
+ document.getElementById('upload_finished_preview').style.display = 'none';
+ var preview_link_href = 'f.php?h=' + reference + '&p=1';
+ if (crypt_key.length > 0)
+ {
+ preview_link_href += '&k=' + crypt_key;
+ }
+
+ // Test if content can be previewed
+ type = document.getElementById('file_select').files[0].type;
+ if ((type.startsWith('image/')
+ || type.startsWith('audio')
+ || type.startsWith('text/plain')
+ || type.startsWith('video/'))
+ && !type.includes('image/svg+xml'))
+ {
+ document.getElementById('preview_link').href = preview_link_href;
+ document.getElementById('preview_link_text').innerHTML = web_root + preview_link_href;
+ document.getElementById('upload_finished_preview').style.display = '';
+ }
+ }
+
+ // Download page
+ var download_link_href = 'f.php?h=' + reference;
+ if (crypt_key.length > 0)
+ {
+ download_link_href += '&k=' + crypt_key;
+ }
+ if (!!document.getElementById('upload_finished_download_page'))
+ {
+ document.getElementById('upload_link').href = download_link_href;
+ document.getElementById('upload_link_text').innerHTML = web_root + download_link_href;
+ }
+
+ // Email link
+ var b = encodeURIComponent(" \"" + filename + "\":") + "%0D" + "%0A";
+ b += encodeURIComponent(web_root + download_link_href) + "%0D" + "%0A";
+ if (false == isEmpty(date))
+ {
+ b += "%0D" + "%0A" + encodeURIComponent(": " + date.format('YYYY-MM-DD hh:mm (GMT O)')) + "%0D" + "%0A";
+ document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename);
+ }
+
+ // Delete link
+ var delete_link_href = 'f.php?h=' + reference + '&d=' + delete_code;
+ document.getElementById('delete_link').href = delete_link_href;
+ document.getElementById('delete_link_text').innerHTML = web_root + delete_link_href;
+
+ // Direct download link
+ var direct_download_link_href = 'f.php?h=' + reference + '&d=1';
+ if (crypt_key.length > 0)
+ {
+ direct_download_link_href += '&k=' + crypt_key;
+ }
+ document.getElementById('direct_link').href = direct_download_link_href;
+ document.getElementById('direct_link_text').innerHTML = web_root + direct_download_link_href;
+
+ // Validity date
+ if (isEmpty(date))
+ {
+ document.getElementById('date').style.display = 'none';
+ }
+ else {
+ document.getElementById('date').innerHTML =
+ '
'
+ + date.format('YYYY-MM-DD hh:mm (GMT O)')
+ + '';
+ document.getElementById('date').style.display = '';
+ }
+
+
+
+ var filename = file_name;
+
+
+
+ var type = file_type;
+
+}
+
+
+
function show_link (reference, delete_code, crypt_key, date)
{
// Upload finished
@@ -132,78 +245,23 @@ function show_link (reference, delete_code, crypt_key, date)
document.getElementById('upload_finished').style.display = '';
document.title = "100% - ";
- // Download page
- var download_link_href = 'f.php?h=' + reference;
- if (crypt_key.length > 0)
- {
- download_link_href += '&k=' + crypt_key;
- }
- if (!!document.getElementById('upload_finished_download_page'))
- {
- document.getElementById('upload_link').href = download_link_href;
- document.getElementById('upload_link_text').innerHTML = web_root + download_link_href;
- }
-
+
// Email link
var filename = document.getElementById('file_select').files[0].name;
- var b = encodeURIComponent(" \"" + filename + "\":") + "%0D" + "%0A";
- b += encodeURIComponent(web_root + download_link_href) + "%0D" + "%0A";
- if (false == isEmpty(date))
- {
- b += "%0D" + "%0A" + encodeURIComponent(": " + date.format('YYYY-MM-DD hh:mm (GMT O)')) + "%0D" + "%0A";
- document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename);
- }
- // Delete link
- var delete_link_href = 'f.php?h=' + reference + '&d=' + delete_code;
- document.getElementById('delete_link').href = delete_link_href;
- document.getElementById('delete_link_text').innerHTML = web_root + delete_link_href;
+
+
+
+
- // Validity date
- if (isEmpty(date))
- {
- document.getElementById('date').style.display = 'none';
- }
- else {
- document.getElementById('date').innerHTML = '
'
- + date.format('YYYY-MM-DD hh:mm (GMT O)')
- + '';
- document.getElementById('date').style.display = '';
- }
// Preview link (if allowed)
- if (!!document.getElementById('preview_link'))
- {
- document.getElementById('upload_finished_preview').style.display = 'none';
- var preview_link_href = 'f.php?h=' + reference + '&p=1';
- if (crypt_key.length > 0)
- {
- preview_link_href += '&k=' + crypt_key;
- }
+
+ var type = document.getElementById('file_select').files[0].type;
+
- // Test if content can be previewed
- type = document.getElementById('file_select').files[0].type;
- if ((type.startsWith('image/')
- || type.startsWith('audio')
- || type.startsWith('text/plain')
- || type.startsWith('video/'))
- && !type.includes('image/svg+xml'))
- {
- document.getElementById('preview_link').href = preview_link_href;
- document.getElementById('preview_link_text').innerHTML = web_root + preview_link_href;
- document.getElementById('upload_finished_preview').style.display = '';
- }
- }
+
- // Direct download link
- var direct_download_link_href = 'f.php?h=' + reference + '&d=1';
- if (crypt_key.length > 0)
- {
- direct_download_link_href += '&k=' + crypt_key;
- }
- document.getElementById('direct_link').href = direct_download_link_href;
- document.getElementById('direct_link_text').innerHTML = web_root + direct_download_link_href;
// Hide preview and direct download link if password is set
if (document.getElementById('input_key').value.length > 0)
diff --git a/lib/functions.php b/lib/functions.php
index 4736b7f..4991f23 100644
--- a/lib/functions.php
+++ b/lib/functions.php
@@ -446,25 +446,62 @@ 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);
+}
- /* array representing no error */
- $noerr = array('has_error' => false, 'why' => '');
-
+/**
+ *
+ * @param bool $crypt_module_enabled
+ * @param string $file_path
+ * @return array [bool, string]
+ */
+function jirafeau_handle_add_file_encryption($crypt_module_enabled, $file_path) {
/* Crypt file if option is enabled. */
$crypted = false;
$crypt_key = '';
- if ($crypt == true && !(extension_loaded('sodium') == true)) {
+ if ($crypt_module_enabled == true && !(extension_loaded('sodium') == true)) {
error_log("PHP extension sodium not loaded, won't encrypt in Jirafeau");
}
- if ($crypt == true && extension_loaded('sodium') == true) {
- $crypt_key = jirafeau_encrypt_file($file['tmp_name'], $file['tmp_name'].'crypt');
+ if ($crypt_module_enabled == true && extension_loaded('sodium') == true) {
+ $crypt_key = jirafeau_encrypt_file($file_path, $file_path.'crypt');
if (strlen($crypt_key) > 0) {
- if (rename($file['tmp_name'].'crypt', $file['tmp_name']) === true) {
+ if (rename($file_path.'crypt', $file_path) === true) {
$crypted = true;
}
}
}
+ return [$crypted, $crypt_key];
+}
+
+/**
+ * adds an uploaded or copy/linked local file
+ * @param $file the file struct given by $_FILE[]
+ * @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
+ * @param $crypt boolean asking to crypt or not
+ * @param $link_name_length size of the link name
+ * @param $is_upload, determines if the file is uploaded or local - it controls which file-functions are used
+ * @return array an array containing some information
+ * 'error' => information on possible errors
+ * 'link' => the link name of the uploaded file
+ * 'delete_link' => the link code to delete file
+ */
+function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method, $is_upload = true)
+{
+ // TODO needs to be adapted
+ $move_operation = $is_upload ? 'move_uploaded_file' : 'symlink';
+
+ /* array representing no error */
+ $noerr = array('has_error' => false, 'why' => '');
+
+ $crypted = false;
+ $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']));
@@ -477,7 +514,11 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
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_uploaded_file($file['tmp_name'], VAR_FILES . $p . $hash))
+ $move_operation($file['tmp_name'], VAR_FILES . $p . $hash))
+ {
+
$rc = true;
}
if (!$rc) {
@@ -516,7 +557,7 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
$handle,
$name . NL. $mime_type . NL. $size . NL. $password . NL. $time .
NL . $hash. NL . ($one_time_download ? 'O' : 'R') . NL . time() .
- NL . $ip . NL. $delete_link_code . NL . ($crypted ? 'C2' : 'O')
+ NL . $ip . NL. $delete_link_code . NL . ($crypted ? 'C' : 'O')
);
fclose($handle);
$hash_link = substr(base_16_to_64(md5_file($link_tmp_name)), 0, $link_name_length);
@@ -548,6 +589,37 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
'crypt_key' => $crypt_key);
}
+
+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
@@ -672,103 +744,79 @@ function jirafeau_get_link($hash)
}
/**
- * List files in admin interface.
+ * List files ii folder in admin interface.
*/
function jirafeau_admin_list($name, $file_hash, $link_hash)
{
- echo '
';
+ };
+ jirafeau_admin_list_table($name, $file_hash, $link_hash, $function);
}
/**
@@ -1009,8 +1057,8 @@ function jirafeau_async_delete($ref)
function jirafeau_async_init($filename, $type, $one_time, $key, $time, $ip)
{
/* Create temporary folder. */
- $ref;
- $p;
+ $ref = '';
+ $p = '';
$code = jirafeau_gen_random(4);
do {
$ref = jirafeau_gen_random(32);
@@ -1719,3 +1767,229 @@ 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;
+}
+
+
+
+
+/**
+ * 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 $key if not empty, protect the file with this key
+ * @param $time the time of validity of the file
+ * @param $ip uploader's ip
+ * @param $crypt boolean asking to crypt or not
+ * @param $link_name_length size of the link name
+ * @returns an array containing some information
+ * 'error' => information on possible errors
+ * '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) {
+
+ if (!file_exists($local_file_path)) {
+ return (array(
+ 'error' =>
+ array('has_error' => true,
+ 'why' => t('INTERNAL_ERROR_FILE_NOT_EXIST')),
+ 'link' =>'',
+ 'delete_link' => ''));
+ }
+ if(
+ // sanity check if file can be opened
+ $file = fopen($local_file_path, "r")
+ )
+ {
+ // close file pointer - it's not needed here
+ fclose($file);
+ $time_in_int = jirafeau_datestr_to_int($time);
+ return jirafeau_add_file(
+ jirafeau_create_file_array($local_file_path),
+ $one_time_download,
+ $key,
+ $time_in_int,
+ $ip,
+ $crypt,
+ $link_name_length,
+ $file_hash_method,
+ false
+ );
+ }
+ else {
+ return (array(
+ 'error' =>
+ array('has_error' => true,
+ 'why' => t('INTERNAL_ERROR_FP_OPEN_LOCAL')),
+ '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),
+ ];
+}
diff --git a/lib/locales/ar.json b/lib/locales/ar.json
index a048c2b..f8a9ad6 100644
--- a/lib/locales/ar.json
+++ b/lib/locales/ar.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/be.json b/lib/locales/be.json
index 7f38ca9..1fa1e6f 100644
--- a/lib/locales/be.json
+++ b/lib/locales/be.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/bn_IN.json b/lib/locales/bn_IN.json
index 796ceaa..4c86aef 100644
--- a/lib/locales/bn_IN.json
+++ b/lib/locales/bn_IN.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/bo.json b/lib/locales/bo.json
index 0a94967..353cbd5 100644
--- a/lib/locales/bo.json
+++ b/lib/locales/bo.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/ca.json b/lib/locales/ca.json
index 9fa8499..900d618 100644
--- a/lib/locales/ca.json
+++ b/lib/locales/ca.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Una quincena",
diff --git a/lib/locales/ckb.json b/lib/locales/ckb.json
index 6277346..f4f30fe 100644
--- a/lib/locales/ckb.json
+++ b/lib/locales/ckb.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/cs.json b/lib/locales/cs.json
index 8aee626..a310461 100644
--- a/lib/locales/cs.json
+++ b/lib/locales/cs.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/da.json b/lib/locales/da.json
index a08c46f..645bcef 100644
--- a/lib/locales/da.json
+++ b/lib/locales/da.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/de.json b/lib/locales/de.json
index ea3c290..76062b5 100644
--- a/lib/locales/de.json
+++ b/lib/locales/de.json
@@ -1,5 +1,12 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "Verschlüsselung ist in der Konfiguration aktiviert, aber das PHP-Modul \"Sodium\" ist nicht verfügbar! Verschlüsselung ist nicht verfügbar!",
+ "ADMIN_FOLDER_INFO": "(Datei muss im Ordner %s liegen)",
+ "ADMIN_FILE_SELECT": "Dateiname:",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "Die zu verlinkende Datei konnte nicht gefunden werden",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "Internal Error - Die zu verlinkende Datei konnte nicht geöffnet werden",
"INSTALL_FILE_NOT_FOUND_TITLE": "Installationsprogramm nicht gefunden",
"INSTALL_FILE_NOT_FOUND_DESC": "Installation wurde nicht erfolgreich abgeschlossen und install.php scheint nicht zu existieren",
"2_W": "Zwei Wochen",
@@ -54,6 +61,7 @@
"LOGIN": "Anmelden",
"LOGOUT": "Abmelden",
"MADE_WITH": "Erstellt mit",
+ "DESIGNED": "",
"MAX_FILE_SIZE": "Maximale DateigröÃe",
"NEXT_STEP": "Nächster Schritt",
"NONE": "Nie",
diff --git a/lib/locales/el.json b/lib/locales/el.json
index a0da96f..d9ea2f5 100644
--- a/lib/locales/el.json
+++ b/lib/locales/el.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/en.json b/lib/locales/en.json
index 092980a..aa7559d 100644
--- a/lib/locales/en.json
+++ b/lib/locales/en.json
@@ -1,5 +1,9 @@
{
"SODIUM_UNAVAILABLE": "Encryption is enabled in configuration, but the Sodium PHP module is not loaded! Encryption is not available!",
+ "ADMIN_FOLDER_INFO": "(File must be in Folder %s)",
+ "ADMIN_FILE_SELECT": "Filename",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "Requested File not found.",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "Internal Error - Requested File could not be opened",
"INSTALL_FILE_NOT_FOUND_TITLE": "Installation file not found",
"INSTALL_FILE_NOT_FOUND_DESC": "Installation is not complete and install.php file does not seem to exist",
"REPORTING_AN_ISSUE": "Reporting an issue",
@@ -17,6 +21,7 @@
"MAX_FILE_SIZE": "Maximum file size",
"POWERED_BY": "powered by the copyleft, libre software project Jirafeau",
"MADE_WITH": "Made with",
+ "DESIGNED": "Designed and hosted by",
"JI_PROJECT": "Jirafeau Project",
"1_MIN": "One minute",
"1_H": "One hour",
diff --git a/lib/locales/es.json b/lib/locales/es.json
index 5053041..339c468 100644
--- a/lib/locales/es.json
+++ b/lib/locales/es.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Una quincena",
diff --git a/lib/locales/et.json b/lib/locales/et.json
index 6277346..f4f30fe 100644
--- a/lib/locales/et.json
+++ b/lib/locales/et.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/fi.json b/lib/locales/fi.json
index db7eecf..21c28d1 100644
--- a/lib/locales/fi.json
+++ b/lib/locales/fi.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/fr.json b/lib/locales/fr.json
index a9162ab..9850683 100644
--- a/lib/locales/fr.json
+++ b/lib/locales/fr.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "Fichier d'installation non-trouvé",
"INSTALL_FILE_NOT_FOUND_DESC": "L'installation est incomplète et le ficher install.php est introuvable",
"2_W": "Deux semaines",
diff --git a/lib/locales/he.json b/lib/locales/he.json
index 3e40020..f5c72b6 100644
--- a/lib/locales/he.json
+++ b/lib/locales/he.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/hi.json b/lib/locales/hi.json
index 5c19acc..9349097 100644
--- a/lib/locales/hi.json
+++ b/lib/locales/hi.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/hr.json b/lib/locales/hr.json
index 788ce9e..fb75482 100644
--- a/lib/locales/hr.json
+++ b/lib/locales/hr.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/hu.json b/lib/locales/hu.json
index 4d3b8e0..a381b82 100644
--- a/lib/locales/hu.json
+++ b/lib/locales/hu.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/id.json b/lib/locales/id.json
index 74fc276..4ed9761 100644
--- a/lib/locales/id.json
+++ b/lib/locales/id.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/it.json b/lib/locales/it.json
index c4e53b5..2b8600b 100644
--- a/lib/locales/it.json
+++ b/lib/locales/it.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Due settimane",
diff --git a/lib/locales/ja.json b/lib/locales/ja.json
index ee6a2e8..0a39a65 100644
--- a/lib/locales/ja.json
+++ b/lib/locales/ja.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/ko.json b/lib/locales/ko.json
index 5c19acc..9349097 100644
--- a/lib/locales/ko.json
+++ b/lib/locales/ko.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/la.json b/lib/locales/la.json
index 45aeaaa..e1b1bce 100644
--- a/lib/locales/la.json
+++ b/lib/locales/la.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/mfe.json b/lib/locales/mfe.json
index 6277346..f4f30fe 100644
--- a/lib/locales/mfe.json
+++ b/lib/locales/mfe.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/ms.json b/lib/locales/ms.json
index c01c93d..e97fa01 100644
--- a/lib/locales/ms.json
+++ b/lib/locales/ms.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/nb_NO.json b/lib/locales/nb_NO.json
index ce80c40..c5a6297 100644
--- a/lib/locales/nb_NO.json
+++ b/lib/locales/nb_NO.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "To uker",
diff --git a/lib/locales/nl.json b/lib/locales/nl.json
index 1855d0b..ca4aa74 100644
--- a/lib/locales/nl.json
+++ b/lib/locales/nl.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Twee weken",
diff --git a/lib/locales/pl.json b/lib/locales/pl.json
index 07a814a..6a1fa9a 100644
--- a/lib/locales/pl.json
+++ b/lib/locales/pl.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/ps.json b/lib/locales/ps.json
index 6277346..f4f30fe 100644
--- a/lib/locales/ps.json
+++ b/lib/locales/ps.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/pt.json b/lib/locales/pt.json
index 9ec79a9..f326529 100644
--- a/lib/locales/pt.json
+++ b/lib/locales/pt.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Uma quinzena",
diff --git a/lib/locales/pt_BR.json b/lib/locales/pt_BR.json
index c902a9c..638dc08 100644
--- a/lib/locales/pt_BR.json
+++ b/lib/locales/pt_BR.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Uma quinzena",
diff --git a/lib/locales/ro.json b/lib/locales/ro.json
index dbe2046..fe03dec 100644
--- a/lib/locales/ro.json
+++ b/lib/locales/ro.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/ru.json b/lib/locales/ru.json
index 6452559..e9dc7f1 100644
--- a/lib/locales/ru.json
+++ b/lib/locales/ru.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/sh.json b/lib/locales/sh.json
index 6277346..f4f30fe 100644
--- a/lib/locales/sh.json
+++ b/lib/locales/sh.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/si.json b/lib/locales/si.json
index 54401df..eb4a94d 100644
--- a/lib/locales/si.json
+++ b/lib/locales/si.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"REPORTING_AN_ISSUE": "",
"SIZE_DATA": "",
"INCOMPATIBLE_OPTIONS_W": "",
diff --git a/lib/locales/sk.json b/lib/locales/sk.json
index e40d2b9..a69e18d 100644
--- a/lib/locales/sk.json
+++ b/lib/locales/sk.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/sl.json b/lib/locales/sl.json
index 7f06388..bb4c65d 100644
--- a/lib/locales/sl.json
+++ b/lib/locales/sl.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/sq.json b/lib/locales/sq.json
index 6277346..f4f30fe 100644
--- a/lib/locales/sq.json
+++ b/lib/locales/sq.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/sr.json b/lib/locales/sr.json
index 53f23a2..7755688 100644
--- a/lib/locales/sr.json
+++ b/lib/locales/sr.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/sv.json b/lib/locales/sv.json
index 0145206..8399753 100644
--- a/lib/locales/sv.json
+++ b/lib/locales/sv.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Två veckor",
diff --git a/lib/locales/ta.json b/lib/locales/ta.json
index d6e0c1d..58c4f51 100644
--- a/lib/locales/ta.json
+++ b/lib/locales/ta.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/template.json b/lib/locales/template.json
index cfaefff..ee38ca9 100644
--- a/lib/locales/template.json
+++ b/lib/locales/template.json
@@ -1,5 +1,10 @@
{
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
@@ -110,6 +115,9 @@
"ONETIME": "",
"UPLOAD_DATE": "",
"ORIGIN": "",
+ "DOWNLOAD_COUNT": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_IP": "",
"ACTION": "",
"DEL_LINK": "",
"DEL_FILE_LINKS": "",
diff --git a/lib/locales/th.json b/lib/locales/th.json
index 6277346..f4f30fe 100644
--- a/lib/locales/th.json
+++ b/lib/locales/th.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/tr.json b/lib/locales/tr.json
index 239a432..c29255e 100644
--- a/lib/locales/tr.json
+++ b/lib/locales/tr.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "Ä°ki hafta",
diff --git a/lib/locales/uk.json b/lib/locales/uk.json
index 6b9e17e..f609ac8 100644
--- a/lib/locales/uk.json
+++ b/lib/locales/uk.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/vi.json b/lib/locales/vi.json
index bcfad0a..4dfcf33 100644
--- a/lib/locales/vi.json
+++ b/lib/locales/vi.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/zh.json b/lib/locales/zh.json
index cf65cc5..43495b1 100644
--- a/lib/locales/zh.json
+++ b/lib/locales/zh.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/locales/zh_TW.json b/lib/locales/zh_TW.json
index a571dcb..2e8bbf7 100644
--- a/lib/locales/zh_TW.json
+++ b/lib/locales/zh_TW.json
@@ -1,5 +1,13 @@
{
+ "DOWNLOAD_IP": "",
+ "DOWNLOAD_DATE": "",
+ "DOWNLOAD_COUNT": "",
"SODIUM_UNAVAILABLE": "",
+ "ADMIN_FOLDER_INFO": "",
+ "ADMIN_FILE_SELECT": "",
+ "INTERNAL_ERROR_FILE_NOT_EXIST": "",
+ "INTERNAL_ERROR_FP_OPEN_LOCAL": "",
+ "DESIGNED": "",
"INSTALL_FILE_NOT_FOUND_TITLE": "",
"INSTALL_FILE_NOT_FOUND_DESC": "",
"2_W": "",
diff --git a/lib/template/footer.php b/lib/template/footer.php
index efe238f..637ce42 100644
--- a/lib/template/footer.php
+++ b/lib/template/footer.php
@@ -4,6 +4,7 @@
' . t('JI_PROJECT') . '' .
+ '
' . t('DESIGNED') . ' ' . $cfg['contactperson'] . '
' .
' (
AGPL-3.0)';
?>
diff --git a/script.php b/script.php
index 8ebcce3..6ef117e 100644
--- a/script.php
+++ b/script.php
@@ -92,40 +92,11 @@ if (isset($_FILES['file']) && is_writable(VAR_FILES)
exit;
}
- $time = time();
if (!isset($_POST['time']) || !$cfg['availabilities'][$_POST['time']]) {
echo 'Error 4: The parameter time is invalid.';
exit;
} else {
- switch ($_POST['time']) {
- 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;
- }
+ $time = jirafeau_datestr_to_int($_POST['time']);
}
// Check file size
@@ -468,40 +439,11 @@ elseif (isset($_GET['init_async'])) {
exit;
}
- $time = time();
if (!isset($_POST['time']) || !$cfg['availabilities'][$_POST['time']]) {
echo 'Error 22';
exit;
} else {
- switch ($_POST['time']) {
- 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;
- }
+ $time = jirafeau_datestr_to_int($_POST['time']);
}
if ($cfg['store_uploader_ip']) {
--
2.34.1
From 84b16a863e63db323f9988516d1605242da7bab6 Mon Sep 17 00:00:00 2001
From: Patrick Canterino
Date: Mon, 2 Sep 2024 17:14:13 +0000
Subject: [PATCH 05/16] Update screenshots in README and store them in the
repository
---
README.md | 19 +++++++++----------
screenshots/admin.png | Bin 0 -> 38123 bytes
screenshots/install1.png | Bin 0 -> 32927 bytes
screenshots/install2.png | Bin 0 -> 68480 bytes
screenshots/install3.png | Bin 0 -> 38479 bytes
screenshots/upload1.png | Bin 0 -> 19337 bytes
screenshots/upload2.png | Bin 0 -> 29250 bytes
screenshots/upload_confirm.png | Bin 0 -> 44963 bytes
screenshots/upload_progress.png | Bin 0 -> 17363 bytes
9 files changed, 9 insertions(+), 10 deletions(-)
create mode 100644 screenshots/admin.png
create mode 100644 screenshots/install1.png
create mode 100644 screenshots/install2.png
create mode 100644 screenshots/install3.png
create mode 100644 screenshots/upload1.png
create mode 100644 screenshots/upload2.png
create mode 100644 screenshots/upload_confirm.png
create mode 100644 screenshots/upload_progress.png
diff --git a/README.md b/README.md
index f343ed9..8c900b0 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ Jirafeau is a "one-click-filesharing": Select your file, upload, share a link. T
See [jirafeau.net](https://jirafeau.net/) for a demo.
-
+
## DISCLAMER
@@ -50,15 +50,14 @@ Jirafeau project won't evolve to a file manager and will focus to keep a very fe
## Screenshots
-- [Installation - Step 1](http://i.imgur.com/hmpT1eN.jpg)
-- [Installation - Step 2](http://i.imgur.com/2e0UGKE.jpg)
-- [Installation - Step 3](http://i.imgur.com/ofAjLXh.jpg)
-- [Installation - Step 4](http://i.imgur.com/WXqnfqJ.jpg)
-- [Upload - Step 1](http://i.imgur.com/SBmSwzJ.jpg)
-- [Upload - Step 2](http://i.imgur.com/wzPkb1Z.jpg)
-- [Upload - Progress](http://i.imgur.com/i6n95kv.jpg)
-- [Upload - Confirmation page](http://i.imgur.com/P2oS1MY.jpg)
-- [Admin Interface](http://i.imgur.com/nTdsVzn.png)
+- [Installation - Step 1](screenshots/install1.png)
+- [Installation - Step 2](screenshots/install2.png)
+- [Installation - Step 3](screenshots/install3.png)
+- [Upload - Step 1](screenshots/upload1.png)
+- [Upload - Step 2](screenshots/upload2.png)
+- [Upload - Progress](screenshots/upload_progress.png)
+- [Upload - Confirmation page](screenshots/upload_confirm.png)
+- [Admin Interface](screenshots/admin.png)
## Installation
diff --git a/screenshots/admin.png b/screenshots/admin.png
new file mode 100644
index 0000000000000000000000000000000000000000..157c0d82e63b34566e33bea2f484b9775c00c548
GIT binary patch
literal 38123
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
CLjYy~
literal 0
HcmV?d00001
diff --git a/screenshots/install1.png b/screenshots/install1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6868082a116a749cb31b1312f8ce7f52d2479f6c
GIT binary patch
literal 32927
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