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

View File

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

View File

@@ -62,12 +62,12 @@ _update_client() {
} }
_list() { _list() {
curl -s "$FLEES_ROOTURL/file/ls/$FLEES_SHARE/$FLEES_TOKEN" curl -L -s "$FLEES_ROOTURL/file/ls/$FLEES_SHARE/$FLEES_TOKEN"
printf "\n" printf "\n"
} }
_simple_list() { _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" printf "\n"
} }
@@ -101,13 +101,13 @@ _write() {
} }
_write_folder() { # name, file _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 _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 _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() { _read() {
@@ -131,27 +131,27 @@ _read() {
} }
_read_file() { # name, file _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 _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 _delete() { # name
read -p "Sure to delete: $1 ? Break to exit " foo 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 if [[ ! "$exitcode" = "OK" ]]; then
echo "Failed deletion" echo "Failed deletion"
fi fi
} }
_url() { # name _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 '' echo ''
} }
_upload_url() { _upload_url() {
echo "This information is a security risk, watch where it's shared" 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 exit
} }
_self_url() { _self_url() {

View File

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

View File

@@ -154,9 +154,18 @@ def file_mime(filename):
# magic not imported # magic not imported
return "NA" return "NA"
def file_stat(path, filename): def file_stat(share, filename):
full_path = os.path.join(path, filename)
full_path = os.path.join(share['path'], filename)
s = os.stat(full_path) 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 { return {
'size': file_size_MB(s.st_size), 'size': file_size_MB(s.st_size),
'hsize': file_size_human(s.st_size, HTML = False), 'hsize': file_size_human(s.st_size, HTML = False),
@@ -164,7 +173,8 @@ def file_stat(path, filename):
'name': filename, 'name': filename,
'url': path2url(filename), 'url': path2url(filename),
'editable': (s.st_size < 65536 and filename.endswith(".txt")), 'editable': (s.st_size < 65536 and filename.endswith(".txt")),
'mime': file_mime(full_path) 'mime': file_mime(full_path),
'to_remove': to_remove
} }