Initial commit
parent
cf36da409d
commit
869c990ed9
@ -0,0 +1,13 @@
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
@ -0,0 +1,136 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Cryto Tahoe-LAFS Storage Grid repair utility</title>
|
||||
<style>
|
||||
pre
|
||||
{
|
||||
max-height: 300px;
|
||||
overflow: auto;
|
||||
background-color: #E7E7E7;
|
||||
padding: 12px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
|
||||
function curl_post($url, $variables)
|
||||
{
|
||||
if(is_array($variables))
|
||||
{
|
||||
foreach($variables as $key => $value)
|
||||
{
|
||||
$variables[$key] = urlencode($value);
|
||||
$variable_strings[] = "{$key}={$value}";
|
||||
}
|
||||
|
||||
$post_string = implode("&", $variable_strings);
|
||||
}
|
||||
else
|
||||
{
|
||||
$post_string = "";
|
||||
}
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POST, count($variables));
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
|
||||
$error = curl_error($ch);
|
||||
if(empty($error))
|
||||
{
|
||||
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
$return_object->result = $result;
|
||||
$return_object->code = $code;
|
||||
return $return_object;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
curl_close($ch);
|
||||
}
|
||||
|
||||
if(isset($_POST['submit']))
|
||||
{
|
||||
$uri = $_POST['uri'];
|
||||
$process = true;
|
||||
|
||||
// process repair request
|
||||
if(preg_match("/http:\/\/[^\/]+\/download\/([^\/]+)(\/.*)?/i", $uri, $matches))
|
||||
{
|
||||
// gateway url
|
||||
$uri = $matches[1];
|
||||
}
|
||||
|
||||
if(!preg_match("/^[a-zA-Z0-9=_:]+$/i", $uri))
|
||||
{
|
||||
$process = false;
|
||||
echo("ERROR: Your input was in an invalid format.<br><br>");
|
||||
}
|
||||
|
||||
if(strpos($uri, ":") === false)
|
||||
{
|
||||
// probably base64
|
||||
$uri = base64_decode($uri);
|
||||
|
||||
if($uri === false)
|
||||
{
|
||||
$process = false;
|
||||
echo("ERROR: Your input was invalid. Check if it's really a valid Tahoe-LAFS gateway URL, base64-encoded URI, or plaintext URI.<br><br>");
|
||||
}
|
||||
}
|
||||
|
||||
if($process === true)
|
||||
{
|
||||
$result = curl_post("http://localhost:3456/uri/{$uri}?t=check&repair=true&output=json", false);
|
||||
|
||||
if($result->code == 200)
|
||||
{
|
||||
$result_object = json_decode($result->result);
|
||||
|
||||
$attempted = $result_object->{'repair-attempted'};
|
||||
|
||||
if($attempted)
|
||||
{
|
||||
$succeeded = $result_object->{'repair-successful'};
|
||||
}
|
||||
else
|
||||
{
|
||||
$succeeded = false;
|
||||
}
|
||||
|
||||
if($attempted === false)
|
||||
{
|
||||
echo("<strong>The file is still healthy, and does not need to be repaired.</strong>");
|
||||
}
|
||||
elseif($attempted === true && $succeeded === false)
|
||||
{
|
||||
echo("<strong>Repair of the file was attempted, but FAILED.</strong>");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("<strong>Repair of the file was SUCCESSFULLY completed.</strong>");
|
||||
}
|
||||
|
||||
echo("<pre>{$result->result}</pre>");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("ERROR: Repair failed. Your input may be in the wrong format or the server may be down.<br><br>");
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<form method="post" action="repair.php">
|
||||
URI/base64/URL: <input type="text" name="uri">
|
||||
<button type="submit" name="submit" value="submit">Repair!</button>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
## Changelog
|
||||
# 16-AUG-2011 | Xeross | Don't read into temp file but straight into variable
|
||||
# 16-AUG-2011 | Xeross | If non-zero exit status don't run url.py
|
||||
# 16-AUG-2011 | Xeross | Make remote filename for file upload optional
|
||||
|
||||
##### Configuration starts here #####
|
||||
|
||||
# The URL of the Tahoe-LAFS web interface that you are trying to upload to.
|
||||
tahoe="http://localhost:3456/uri/";
|
||||
|
||||
# The (write cap) URI of the directory you want to upload to by default.
|
||||
URI="";
|
||||
|
||||
##### Configuration ends here #####
|
||||
|
||||
URI=${URI//:/%3A};
|
||||
fullURI=$tahoe$URI/;
|
||||
|
||||
function upload_file {
|
||||
local TYPE=$1
|
||||
local DATA=$2
|
||||
local DEST=$3
|
||||
|
||||
if [ "$TYPE" == "INPUT" ]; then
|
||||
CAP=$(echo "$DATA" | curl --progress-bar -T - "$fullURI$DEST")
|
||||
RETVAL=$?
|
||||
elif [ "$TYPE" == "FILE" ]; then
|
||||
CAP=$(curl --progress-bar -T "$DATA" "$fullURI$DEST")
|
||||
RETVAL=$?
|
||||
else
|
||||
echo "Error: Unknown type passed"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ $RETVAL -ne 0 ]; then
|
||||
echo "Upload failed (Exit code: $RETVAL)"
|
||||
else
|
||||
python url.py $CAP $DEST
|
||||
fi
|
||||
}
|
||||
|
||||
function usage {
|
||||
echo "Usage:"
|
||||
echo "Upload input from stdin"
|
||||
echo "# cat file.txt | ./tahoe.sh -i subfolder/filename.txt"
|
||||
echo
|
||||
echo "Upload specified file"
|
||||
echo "# ./tahoe.sh -f file.jpg [subfolders/filename.jpg]"
|
||||
echo
|
||||
echo "Create new subdirectory"
|
||||
echo "# ./tahoe.sh -d new_subdirectory"
|
||||
}
|
||||
|
||||
case $1 in
|
||||
-i)
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Invalid syntax"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read INPUT
|
||||
upload_file "INPUT" "$INPUT" "$2"
|
||||
;;
|
||||
-f)
|
||||
if [ $# -eq 2 ]; then
|
||||
FILENAME=$(basename $2)
|
||||
elif [ $# -eq 3 ]; then
|
||||
FILENAME=$3
|
||||
else
|
||||
echo "Invalid syntax"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
upload_file "FILE" "$2" "$FILENAME"
|
||||
;;
|
||||
-d)
|
||||
curl -d "" $fullURI$2?t=mkdir
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
@ -0,0 +1,10 @@
|
||||
import sys,base64
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print ("""\
|
||||
Usage: url.py cap filename
|
||||
cap = Tahoe-LAFS readcap
|
||||
filename = Actual filename of the file
|
||||
""")
|
||||
else:
|
||||
print "http://tahoe-gateway.cryto.net:3719/download/" + base64.urlsafe_b64encode(sys.argv[1]) + "/" + sys.argv[2]
|
Loading…
Reference in New Issue