X-Git-Url: https://git.p6c8.net/jirafeau_project.git/blobdiff_plain/3925dad48efc5ab9fa23e2ccdd2ffd1182b4ec40..9d07b167c00155c1d60041f02ccd2f5293940aa5:/script.php?ds=inline
diff --git a/script.php b/script.php
index d1719a3..695f6db 100644
--- a/script.php
+++ b/script.php
@@ -22,16 +22,14 @@
* If you don't want this feature, you can simply delete this file from your
* web directory.
*/
+define('JIRAFEAU_ROOT', dirname(__FILE__) . '/');
-define ('JIRAFEAU_ROOT', dirname (__FILE__) . '/');
-
-require (JIRAFEAU_ROOT . 'lib/config.original.php');
-require (JIRAFEAU_ROOT . 'lib/settings.php');
-require (JIRAFEAU_ROOT . 'lib/functions.php');
-require (JIRAFEAU_ROOT . 'lib/lang.php');
+require(JIRAFEAU_ROOT . 'lib/settings.php');
+require(JIRAFEAU_ROOT . 'lib/functions.php');
+require(JIRAFEAU_ROOT . 'lib/lang.php');
global $script_langages;
- $script_langages = array ('bash' => 'Bash');
+ $script_langages = array('bash' => 'Bash');
/* Operations may take a long time.
* Be sure PHP's safe mode is off.
@@ -40,70 +38,60 @@ require (JIRAFEAU_ROOT . 'lib/lang.php');
/* Remove errors. */
@error_reporting(0);
-if ($_SERVER['REQUEST_METHOD'] == "GET" && count ($_GET) == 0)
-{
- require (JIRAFEAU_ROOT . 'lib/template/header.php');
- check_errors ($cfg);
- if (has_error ())
- {
- show_errors ();
- require (JIRAFEAU_ROOT . 'lib/template/footer.php');
+if ($_SERVER['REQUEST_METHOD'] == "GET" && count($_GET) == 0) {
+ require(JIRAFEAU_ROOT . 'lib/template/header.php');
+ check_errors($cfg);
+ if (has_error()) {
+ show_errors();
+ require(JIRAFEAU_ROOT . 'lib/template/footer.php');
exit;
- }
- ?>
+ } ?>
Scripting interface
This interface permits to script your uploads and downloads.
See source code of this interface to get available calls :)
-
Alternatively, go to this page to download a bash script.
+
You may download a preconfigured Bash Script to easily send to and get files from the API via command line.
0 &&
- $_FILES['file']['size'] > $cfg['maximal_upload_size'] * 1024 * 1024)
- {
- echo 'Error';
+ $_FILES['file']['size'] > $cfg['maximal_upload_size'] * 1024 * 1024) {
+ echo 'Error 5: Your file exceeds the maximum authorized file size.';
+ exit;
+ }
+
+ // Check if one time download is enabled
+ if (!$cfg['one_time_download'] && isset($_POST['one_time_download'])) {
+ echo 'Error 26: One time download is disabled.';
exit;
}
- $res = jirafeau_upload ($_FILES['file'],
- isset ($_POST['one_time_download']),
- $key, $time, get_ip_address($cfg),
- $cfg['enable_crypt'], $cfg['link_name_length']);
+ $res = jirafeau_upload($_FILES['file'],
+ isset($_POST['one_time_download']),
+ $key, $time, get_ip_address($cfg),
+ $cfg['enable_crypt'], $cfg['link_name_length'],
+ $cfg['file_hash']);
- if (empty($res) || $res['error']['has_error'])
- {
- echo 'Error';
+ if (empty($res) || $res['error']['has_error']) {
+ echo 'Error 6 ' . $res['error']['why'];
exit;
}
/* Print direct link. */
@@ -153,103 +150,87 @@ if (isset ($_FILES['file']) && is_writable (VAR_FILES)
/* Print decrypt key. */
echo NL;
echo urlencode($res['crypt_key']);
-}
-elseif (isset ($_GET['h']))
-{
+} elseif (isset($_GET['h'])) {
$link_name = $_GET['h'];
$key = '';
- if (isset ($_POST['key']))
+ if (isset($_POST['key'])) {
$key = $_POST['key'];
+ }
$d = '';
- if (isset ($_GET['d']))
+ if (isset($_GET['d'])) {
$d = $_GET['d'];
+ }
- if (!preg_match ('/[0-9a-zA-Z_-]+$/', $link_name))
- {
- echo 'Error';
+ if (!preg_match('/[0-9a-zA-Z_-]+$/', $link_name)) {
+ echo 'Error 7';
exit;
}
- $link = jirafeau_get_link ($link_name);
- if (count ($link) == 0)
- {
- echo 'Error';
+ $link = jirafeau_get_link($link_name);
+ if (count($link) == 0) {
+ echo 'Error 8';
exit;
}
- if (strlen ($d) > 0 && $d == $link['link_code'])
- {
- jirafeau_delete_link ($link_name);
+ if (strlen($d) > 0 && $d == $link['link_code']) {
+ jirafeau_delete_link($link_name);
echo "Ok";
exit;
}
- if ($link['time'] != JIRAFEAU_INFINITY && time () > $link['time'])
- {
- jirafeau_delete_link ($link_name);
- echo 'Error';
+ if ($link['time'] != JIRAFEAU_INFINITY && time() > $link['time']) {
+ jirafeau_delete_link($link_name);
+ echo 'Error 9';
exit;
}
- if (strlen ($link['key']) > 0 && md5 ($key) != $link['key'])
- {
- sleep (2);
- echo 'Error';
+ if (strlen($link['key']) > 0 && md5($key) != $link['key']) {
+ sleep(2);
+ echo 'Error 10';
exit;
}
- $p = s2p ($link['md5']);
- if (!file_exists (VAR_FILES . $p . $link['md5']))
- {
- echo 'Error';
+ $p = s2p($link['hash']);
+ if (!file_exists(VAR_FILES . $p . $link['hash'])) {
+ echo 'Error 11';
exit;
}
/* Read file. */
- header ('Content-Length: ' . $link['file_size']);
- header ('Content-Type: ' . $link['mime_type']);
- header ('Content-Disposition: attachment; filename="' .
+ header('Content-Length: ' . $link['file_size']);
+ header('Content-Type: ' . $link['mime_type']);
+ header('Content-Disposition: attachment; filename="' .
$link['file_name'] . '"');
- $r = fopen (VAR_FILES . $p . $link['md5'], 'r');
- while (!feof ($r))
- {
- print fread ($r, 1024);
+ $r = fopen(VAR_FILES . $p . $link['hash'], 'r');
+ while (!feof($r)) {
+ print fread($r, 1024);
ob_flush();
}
- fclose ($r);
+ fclose($r);
- if ($link['onetime'] == 'O')
- jirafeau_delete_link ($link_name);
+ if ($link['onetime'] == 'O') {
+ jirafeau_delete_link($link_name);
+ }
exit;
-}
-elseif (isset ($_GET['get_capacity']))
-{
- echo min (jirafeau_ini_to_bytes (ini_get ('post_max_size')),
- jirafeau_ini_to_bytes (ini_get ('upload_max_filesize')));
-}
-elseif (isset ($_GET['get_maximal_upload_size']))
-{
+} elseif (isset($_GET['get_capacity'])) {
+ echo jirafeau_get_max_upload_size_bytes();
+} elseif (isset($_GET['get_maximal_upload_size'])) {
echo $cfg['maximal_upload_size'];
-}
-elseif (isset ($_GET['get_version']))
-{
+} elseif (isset($_GET['get_version'])) {
echo JIRAFEAU_VERSION;
-}
-elseif (isset ($_GET['lang']))
-{
+} elseif (isset($_GET['lang'])) {
$l=$_GET['lang'];
- if ($l == "bash")
- {
-?>
+ if ($l == "bash") {
+ ?>
#!/bin/bash
-# This script has been auto-generated by Jirafeau but you can still edit
-# options below.
+# This script has been auto-generated by Jirafeau but you can still edit options below.
-# Config
-proxy='' # ex: proxy='proxysever.test.com:3128' or set JIRAFEAU_PROXY global variable
-url='' # or set JIRAFEAU_URL ex: url='http://mysite/jirafeau/script.php'
-time='none' # minute, hour, day, week, month, year or none. Or set JIRAFEAU_TIME.
-one_time='' # ex: one_time="1" or set JIRAFEAU_ONE_TIME.
-curl='' # curl path to download or set JIRAFEAU_CURL_PATH.
-# End of config
+# Config begin
+proxy='' # Or set JIRAFEAU_PROXY.
+url='' # Or set JIRAFEAU_URL.
+time='' # Or set JIRAFEAU_TIME.
+one_time='' # Or set JIRAFEAU_ONE_TIME.
+curl='' # Or set JIRAFEAU_CURL_PATH.
+upload_password='' # Or set JIRAFEAU_UPLOAD_PASSWD
+# Config end
if [ -n "$JIRAFEAU_PROXY" ]; then
proxy="$JIRAFEAU_PROXY"
@@ -271,6 +252,10 @@ if [ -n "$JIRAFEAU_ONE_TIME" ]; then
one_time='1'
fi
+if [ -n "$UPLOAD_PASSWD" ]; then
+ upload_password="$JIRAFEAU_UPLOAD_PASSWORD"
+fi
+
if [ -z "$curl" ]; then
curl="$JIRAFEAU_CURL_PATH"
fi
@@ -289,17 +274,23 @@ if [ -z "$curl" ]; then
fi
if [ -z "$2" ]; then
- echo "man:"
- echo " $0 send PATH [PASSWORD]"
+ echo "Jirafeau Bash Script "
+ echo "--------------------------"
+ echo "Usage:"
+ echo " $0 OPTIONS"
+ echo
+ echo "Options:"
+ echo " $0 send FILE [PASSWORD]"
echo " $0 get URL [PASSWORD]"
echo " $0 delete URL"
- echo ""
+ echo
echo "Global variables to export:"
- echo " JIRAFEAU_PROXY : example: proxysever.test.com:3128"
- echo " JIRAFEAU_URL : example: http://mysite/jirafeau/script.php"
- echo " JIRAFEAU_TIME : minute, hour, day, week, year, month or none"
- echo " JIRAFEAU_ONE_TIME : set anything or set empty"
- echo " JIRAFEAU_CURL : path to your curl binary"
+ echo " JIRAFEAU_PROXY: Domain and port of proxy server, eg. »proxysever.example.com:3128«"
+ echo " JIRAFEAU_URL : URI to Jirafeau installation with trailing slash, eg. »https://example.com/jirafeau/«"
+ echo " JIRAFEAU_TIME : expiration time, eg. »minute«, »hour«, »day«, »week«, »month«, »quarter«, »year« or »none«"
+ echo " JIRAFEAU_ONE_TIME : self-destroy after first download, eg. »1« to enable or »« (empty) to disable"
+ echo " JIRAFEAU_CURL : alternative path to curl binary"
+ echo " JIRAFEAU_UPLOAD_PASSWD : upload password"
exit 0
fi
@@ -313,12 +304,19 @@ if [ -n "$one_time" ]; then
options="$options -F one_time_download=1"
fi
+f [ -n "$upload_password" ]; then
+ options="$options -F upload_password=$upload_password"
+fi
+
password=''
if [ -n "$3" ]; then
password="$3"
options="$options -F key=$password"
fi
+apipage='script.php'
+downloadpage='f.php'
+
if [ "$1" == "send" ]; then
if [ ! -f "$2" ]; then
echo "File \"$2\" does not exists."
@@ -329,10 +327,11 @@ if [ "$1" == "send" ]; then
res=$($curl -X POST --http1.0 $proxy $options \
-F "time=$time" \
-F "file=@$2" \
- $url)
+ $url$apipage)
- if [[ "$res" == "Error" ]]; then
+ if [[ "$res" == Error* ]]; then
echo "Error while uploading."
+ echo $res
exit
fi
@@ -349,8 +348,38 @@ if [ "$1" == "send" ]; then
fi
cnt=$(( cnt + 1 ))
done)
- echo "${url}?h=$code"
- echo "${url}?h=$code&d=$del_code"
+ key_code=$(cnt=0; echo "$res" | while read l; do
+ if [[ "$cnt" == "2" ]]; then
+ echo "$l"
+ fi
+ cnt=$(( cnt + 1 ))
+ done)
+
+ echo
+ echo "Download page:"
+ if [[ $key_code ]]; then
+ echo " ${url}${downloadpage}?h=$code&k=$key_code"
+ else
+ echo " ${url}${downloadpage}?h=$code"
+ fi
+ echo "Direct download:"
+ if [[ $key_code ]]; then
+ echo " ${url}${downloadpage}?h=$code&k=$key_code&d=1"
+ else
+ echo " ${url}${downloadpage}?h=$code&d=1"
+ fi
+ echo "Delete link:"
+ echo " ${url}${downloadpage}?h=$code&d=$del_code"
+ echo
+ echo "Download via API:"
+ if [[ $key_code ]]; then
+ echo " ${0} get ${url}${apipage}?h=$code&k=$key_code [PASSWORD}"
+ else
+ echo " ${0} get ${url}${apipage}?h=$code [PASSWORD}"
+ fi
+ echo "Delete via API:"
+ echo " ${0} delete ${url}${downloadpage}?h=$code&d=$del_code"
+
elif [ "$1" == "get" ]; then
if [ -z "$password" ]; then
$curl $proxy -OJ "$2"
@@ -361,129 +390,53 @@ elif [ "$1" == "delete" ]; then
$curl $proxy "$2"
fi