mirror of
https://gitlab.com/mojo42/Jirafeau.git
synced 2025-04-22 12:36:17 +02:00
add delete link added to each upload
This commit is contained in:
parent
3e47e7c230
commit
8dc8b4bc88
21
file.php
21
file.php
@ -27,6 +27,10 @@ require(JIRAFEAU_ROOT . 'lib/functions.php');
|
||||
if(isset($_GET['h']) && !empty($_GET['h'])) {
|
||||
$link_name = $_GET['h'];
|
||||
|
||||
$delete_code = '';
|
||||
if(isset($_GET['d']) && !empty($_GET['d']))
|
||||
$delete_code = $_GET['d'];
|
||||
|
||||
if(!ereg('[0-9a-f]{32}$', $link_name)) {
|
||||
header("HTTP/1.0 404 Not Found");
|
||||
|
||||
@ -46,28 +50,35 @@ if(isset($_GET['h']) && !empty($_GET['h'])) {
|
||||
$time = trim($content[4]);
|
||||
$md5 = trim($content[5]);
|
||||
$onetime = trim($content[6]);
|
||||
$link_code = trim($content[9]);
|
||||
|
||||
|
||||
|
||||
if(!file_exists(VAR_FILES . $md5)) {
|
||||
jirafeau_delete($link_name);
|
||||
|
||||
require(JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
echo '<div class="error"><p>' . _('File not available.') . '</p></div>';
|
||||
require(JIRAFEAU_ROOT . 'lib/template/footer.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
if($time != JIRAFEAU_INFINITY) {
|
||||
if(time() > $time) {
|
||||
if(!empty($delete_code) && $delete_code == $link_code) {
|
||||
jirafeau_delete($link_name);
|
||||
require(JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
echo '<div class="message"><p>' . _('File has been deleted.') . '</p></div>';
|
||||
require(JIRAFEAU_ROOT . 'lib/template/footer.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
if($time != JIRAFEAU_INFINITY && time() > $time) {
|
||||
jirafeau_delete($link_name);
|
||||
require(JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
echo '<div class="error"><p>' . _('The time limit of this file has expired. It has been deleted.') . '</p></div>';
|
||||
require(JIRAFEAU_ROOT . 'lib/template/footer.php');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($key)) {
|
||||
if(!empty($key)) {
|
||||
if(!isset($_POST['key'])) {
|
||||
require(JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
?>
|
||||
|
10
index.php
10
index.php
@ -80,11 +80,16 @@ if(!has_error() && !empty($res)) {
|
||||
add_error (_('An error occurred.'), $res['error']['why']);
|
||||
} else {
|
||||
$link = $cfg['web_root'];
|
||||
$delete_link = $cfg['web_root'];
|
||||
|
||||
if($cfg['rewrite']) {
|
||||
$link .= 'file-' . $res['link'];
|
||||
$delete_link .= 'file-' . $res['link'] . '-delete-' . $res['delete_link'];
|
||||
} else {
|
||||
$link .= 'file.php?h=' . $res['link']; // h because 'h' looks like a jirafeau ;)
|
||||
$delete_link .= 'file.php?h=' . $res['link'] . '&d=' . $res['delete_link'];
|
||||
}
|
||||
|
||||
echo '<div class="message">' . NL;
|
||||
echo '<p>' . _('File uploaded! Copy the following URL to get it:') . '<br />' . NL;
|
||||
echo '<a href="' . $link . '">' . $link . '</a>' . NL;
|
||||
@ -94,6 +99,11 @@ if(!has_error() && !empty($res)) {
|
||||
}
|
||||
|
||||
echo '</p></div>';
|
||||
|
||||
echo '<div class="message">' . NL;
|
||||
echo '<p>' . _('Keep the following URL to delete it:') . '<br />' . NL;
|
||||
echo '<a href="' . $delete_link . '">' . $delete_link . '</a>' . NL;
|
||||
echo '</p></div>';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,30 +51,6 @@ function jirafeau_get_max_upload_size() {
|
||||
return min(jirafeau_ini_to_bytes(ini_get('post_max_size')), jirafeau_ini_to_bytes(ini_get('upload_max_filesize')));
|
||||
}
|
||||
|
||||
/**
|
||||
* detects if a given filename is present in a directory and find an alternate filename
|
||||
* @param $name the initial filename
|
||||
* @param $dir the directory to explore (finishing with a '/')
|
||||
* @returns an alternate filename, possibly the initial filename
|
||||
*/
|
||||
function jirafeau_detect_collision($name, $dir) {
|
||||
if(!file_exists($dir . $name)) {
|
||||
return $name;
|
||||
}
|
||||
|
||||
$dot = strpos($name, '.');
|
||||
$dot = ($dot === false) ? strlen($name) : $dot;
|
||||
$first = substr($name, 0, $dot);
|
||||
$second = substr($name, $dot);
|
||||
$i = 1;
|
||||
do {
|
||||
$new_name = $first . '-' . $i . $second;
|
||||
$i++;
|
||||
} while(file_exists($dir . $new_name));
|
||||
|
||||
return $new_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a string explaining the error
|
||||
* @param $code the error code
|
||||
@ -146,10 +122,11 @@ function jirafeau_delete($link) {
|
||||
* @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_upload($file, $one_time_download, $key, $time, $cfg, $ip) {
|
||||
if(empty($file['tmp_name']) || !is_uploaded_file($file['tmp_name'])) {
|
||||
return(array('error' => array('has_error' => true, 'why' => jirafeau_upload_errstr($file['error'])), 'link' => ''));
|
||||
return(array('error' => array('has_error' => true, 'why' => jirafeau_upload_errstr($file['error'])), 'link' => '', 'delete_link' => ''));
|
||||
}
|
||||
|
||||
/* array representing no error */
|
||||
@ -175,7 +152,8 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $cfg, $ip) {
|
||||
'error' => array(
|
||||
'has_error' => true,
|
||||
'why' => _('Internal error during file creation.')),
|
||||
'link' => '')
|
||||
'link' => '',
|
||||
'delete_link' => '')
|
||||
);
|
||||
}
|
||||
|
||||
@ -190,10 +168,15 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $cfg, $ip) {
|
||||
fwrite($handle, $counter);
|
||||
fclose($handle);
|
||||
|
||||
/* Create delete code. */
|
||||
$delete_link_code = 0;
|
||||
for ($i = 0; $i < 8; $i++)
|
||||
$delete_link_code .= dechex(rand(0,16));
|
||||
|
||||
/* create link file */
|
||||
$link_tmp_name = VAR_LINKS . $md5 . rand(0, 10000) . '.tmp';
|
||||
$handle = fopen($link_tmp_name, 'w');
|
||||
fwrite($handle, $name . NL . $mime_type . NL . $size . NL . $key . NL . $time . NL . $md5 . NL . ($one_time_download ? 'O' : 'R') . NL . date('U') . NL . $ip . NL);
|
||||
fwrite($handle, $name . NL . $mime_type . NL . $size . NL . $key . NL . $time . NL . $md5 . NL . ($one_time_download ? 'O' : 'R') . NL . date('U') . NL . $ip . NL . $delete_link_code . NL);
|
||||
fclose($handle);
|
||||
$md5_link = md5_file($link_tmp_name);
|
||||
if(!rename($link_tmp_name, VAR_LINKS . $md5_link)) {
|
||||
@ -212,10 +195,11 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $cfg, $ip) {
|
||||
'error' => array(
|
||||
'has_error' => true,
|
||||
'why' => _('Internal error during file creation.')),
|
||||
'link' => '')
|
||||
'link' => '',
|
||||
'delete_link' => '')
|
||||
);
|
||||
}
|
||||
return(array('error' => $noerr, 'link' => $md5_link));
|
||||
return(array('error' => $noerr, 'link' => $md5_link, 'delete_link' => $delete_link_code));
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user