curls follow redirects. file listings have days to removal

This commit is contained in:
2019-08-30 15:57:00 +03:00
parent 1fa2fcfe06
commit 0f16ecbcd9
5 changed files with 42 additions and 23 deletions

View File

@@ -13,7 +13,7 @@ from revprox import ReverseProxied
from utils import *
__FLEES_VERSION__ = "20190203.0"
__FLEES_VERSION__ = "20190830.0"
app = Flask(__name__)
app.config.from_object(__name__)
config_values = read_config(app)
@@ -321,7 +321,7 @@ def file_details(name, token):
return share
files = []
for file in iter_folder_files(share['path'], version_folder = app.config['VERSION_FOLDER']):
status = file_stat(share['path'],file)
status = file_stat(share,file)
files.append(status)
return jsonify(files), 200
@@ -382,8 +382,9 @@ def file_ls(name, token):
maxlen = max(maxlen, len(file))
details = []
details.append(
"%%16s %%8s %%-%ds %%s"%( maxlen, )%(
"%%16s %%4s %%8s %%-%ds %%s"%( maxlen, )%(
'Modified',
'ToRm',
'Size',
'Name',
'Type',
@@ -391,10 +392,11 @@ def file_ls(name, token):
)
details.append("="*80)
for file in files:
status = file_stat(share['path'],file)
status = file_stat(share,file)
details.append(
"%%16s %%8s %%-%ds %%s"%( maxlen, )%(
"%%16s %%4s %%8s %%-%ds %%s"%( maxlen, )%(
status['mtime'],
status['to_remove'],
status['hsize'],
status['name'],
status['mime'],
@@ -438,7 +440,7 @@ def list_view(name, token = None):
for file in iter_folder_files(share['path'], version_folder = app.config['VERSION_FOLDER']):
if file_autoremove(file, share, notify):
continue
status = file_stat(share['path'],file)
status = file_stat(share,file)
status.update({
'token': get_direct_token(share, file),
})
@@ -465,7 +467,8 @@ def list_view(name, token = None):
direct = allow_direct,
expire = get_or_none('expire', share),
description = get_or_none('description', share, ""),
script_api = script_api
script_api = script_api,
autoremove = get_or_none('autoremove', share, 0)
)
@@ -605,7 +608,7 @@ def script_download(name = None, token = None):
return share
commands = []
for file in iter_folder_files(share['path'], version_folder = app.config['VERSION_FOLDER']):
status = file_stat(share['path'], file)
status = file_stat(share, file)
commands.append('get_file "%s"'%(
status['url'],
))
@@ -625,7 +628,7 @@ def script_direct(name = None, token = None):
return share
commands = []
for file in iter_folder_files(share['path'], version_folder = app.config['VERSION_FOLDER']):
status = file_stat(share['path'], file)
status = file_stat(share, file)
commands.append('get_file "%s" "%s"'%(
status['url'],
get_direct_token(share, file)

View File

@@ -63,7 +63,7 @@ h1 {
margin-bottom: 1em;
}
td,th {
min-width: 10em;
min-width: 5em;
padding-right: 2em;
padding-top: 0.2em;
padding-bottom: 0.2em;

View File

@@ -62,12 +62,12 @@ _update_client() {
}
_list() {
curl -s "$FLEES_ROOTURL/file/ls/$FLEES_SHARE/$FLEES_TOKEN"
curl -L -s "$FLEES_ROOTURL/file/ls/$FLEES_SHARE/$FLEES_TOKEN"
printf "\n"
}
_simple_list() {
curl -s "$FLEES_ROOTURL/file/list/$FLEES_SHARE/$FLEES_TOKEN"
curl -L -s "$FLEES_ROOTURL/file/list/$FLEES_SHARE/$FLEES_TOKEN"
printf "\n"
}
@@ -101,13 +101,13 @@ _write() {
}
_write_folder() { # name, file
tar c "$2" | curl -F "file=@-;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}" | cat -
tar c "$2" | curl -L -F "file=@-;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}" | cat -
}
_write_file() { # name, file
curl -F "file=@$2;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}" | cat -
curl -L -F "file=@$2;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}" | cat -
}
_write_stdin() { # name
cat - | curl -F "file=@-;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}"
cat - | curl -L -F "file=@-;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}"
}
_read() {
@@ -131,27 +131,27 @@ _read() {
}
_read_file() { # name, file
curl "$FLEES_ROOTURL/download/$FLEES_SHARE/$FLEES_TOKEN/$1" -o "$2"
curl -L "$FLEES_ROOTURL/download/$FLEES_SHARE/$FLEES_TOKEN/$1" -o "$2"
}
_read_stdout() { # name
curl -s "$FLEES_ROOTURL/download/$FLEES_SHARE/$FLEES_TOKEN/$1"
curl -L -s "$FLEES_ROOTURL/download/$FLEES_SHARE/$FLEES_TOKEN/$1"
}
_delete() { # name
read -p "Sure to delete: $1 ? Break to exit " foo
exitcode=$( curl -s "$FLEES_ROOTURL/file/delete/$FLEES_SHARE/$FLEES_TOKEN/$1" )
exitcode=$( curl -L -s "$FLEES_ROOTURL/file/delete/$FLEES_SHARE/$FLEES_TOKEN/$1" )
if [[ ! "$exitcode" = "OK" ]]; then
echo "Failed deletion"
fi
}
_url() { # name
curl -s "$FLEES_ROOTURL/file/direct/$FLEES_SHARE/$FLEES_TOKEN/$1"
curl -L -s "$FLEES_ROOTURL/file/direct/$FLEES_SHARE/$FLEES_TOKEN/$1"
echo ''
}
_upload_url() {
echo "This information is a security risk, watch where it's shared"
echo "# python2 <( curl -s $FLEES_ROOTURL/script/upload_split/$FLEES_SHARE/$FLEES_TOKEN ) file_to_upload.ext"
echo "# python2 <( curl -L -s $FLEES_ROOTURL/script/upload_split/$FLEES_SHARE/$FLEES_TOKEN ) file_to_upload.ext"
exit
}
_self_url() {

View File

@@ -68,6 +68,9 @@
<th>Name
<th class=td_right>Size(MB)
<th>Mod.Time
{% if autoremove > 0 %}
<th>Remove in
{% endif %}
</tr>
</thead>
<tbody>
@@ -89,6 +92,9 @@
{% endif %}
<td class=td_right>{{ entry.size|safe }}
<td>{{ entry.mtime|safe }}
{% if autoremove > 0 %}
<td class="td_right">{{ entry.to_remove | safe }}
{% endif %}
</tr>
{% endfor %}
</tbody>

View File

@@ -154,9 +154,18 @@ def file_mime(filename):
# magic not imported
return "NA"
def file_stat(path, filename):
full_path = os.path.join(path, filename)
def file_stat(share, filename):
full_path = os.path.join(share['path'], filename)
s = os.stat(full_path)
autoremove = get_or_none('autoremove', share, 0)
if autoremove == 0:
to_remove = "NA"
else:
now = datetime.now()
then = datetime.fromtimestamp(s.st_mtime)
diff = now - then
to_remove = "%d d"%( autoremove - diff.days, )
return {
'size': file_size_MB(s.st_size),
'hsize': file_size_human(s.st_size, HTML = False),
@@ -164,7 +173,8 @@ def file_stat(path, filename):
'name': filename,
'url': path2url(filename),
'editable': (s.st_size < 65536 and filename.endswith(".txt")),
'mime': file_mime(full_path)
'mime': file_mime(full_path),
'to_remove': to_remove
}