mirror of
https://github.com/9001/copyparty.git
synced 2025-11-09 08:06:43 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
322b9abadc | ||
|
|
0aaf954cea | ||
|
|
c2d22aa3d1 | ||
|
|
6934c75bba | ||
|
|
c58cf78f86 | ||
|
|
7f0de790ab |
10
.vscode/tasks.json
vendored
Normal file
10
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "pre",
|
||||||
|
"command": "true;rm -rf inc/* inc/.hist/;mkdir -p inc;",
|
||||||
|
"type": "shell"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
VERSION = (0, 7, 1)
|
VERSION = (0, 7, 2)
|
||||||
CODENAME = "keeping track"
|
CODENAME = "keeping track"
|
||||||
BUILD_DT = (2021, 1, 23)
|
BUILD_DT = (2021, 1, 29)
|
||||||
|
|
||||||
S_VERSION = ".".join(map(str, VERSION))
|
S_VERSION = ".".join(map(str, VERSION))
|
||||||
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import hashlib
|
|||||||
import threading
|
import threading
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from .__init__ import WINDOWS, PY2
|
from .__init__ import WINDOWS
|
||||||
from .util import Pebkac, Queue, fsdec, fsenc, sanitize_fn, ren_open, atomic_move
|
from .util import Pebkac, Queue, fsdec, fsenc, sanitize_fn, ren_open, atomic_move
|
||||||
|
|
||||||
HAVE_SQLITE3 = False
|
HAVE_SQLITE3 = False
|
||||||
@@ -296,7 +296,12 @@ class Up2k(object):
|
|||||||
names = [job[x] for x in ["name", "tnam"] if x in job]
|
names = [job[x] for x in ["name", "tnam"] if x in job]
|
||||||
for fn in names:
|
for fn in names:
|
||||||
path = os.path.join(job["ptop"], job["prel"], fn)
|
path = os.path.join(job["ptop"], job["prel"], fn)
|
||||||
if not os.path.exists(path):
|
try:
|
||||||
|
if os.path.getsize(path) > 0:
|
||||||
|
# upload completed or both present
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
# missing; restart
|
||||||
job = None
|
job = None
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
@@ -530,6 +535,8 @@ class Up2k(object):
|
|||||||
self.registry[job["ptop"]][job["wark"]] = job
|
self.registry[job["ptop"]][job["wark"]] = job
|
||||||
pdir = os.path.join(job["ptop"], job["prel"])
|
pdir = os.path.join(job["ptop"], job["prel"])
|
||||||
job["name"] = self._untaken(pdir, job["name"], job["t0"], job["addr"])
|
job["name"] = self._untaken(pdir, job["name"], job["t0"], job["addr"])
|
||||||
|
# if len(job["name"].split(".")) > 8:
|
||||||
|
# raise Exception("aaa")
|
||||||
|
|
||||||
tnam = job["name"] + ".PARTIAL"
|
tnam = job["name"] + ".PARTIAL"
|
||||||
suffix = ".{:.6f}-{}".format(job["t0"], job["addr"])
|
suffix = ".{:.6f}-{}".format(job["t0"], job["addr"])
|
||||||
@@ -554,7 +561,7 @@ class Up2k(object):
|
|||||||
|
|
||||||
def _snapshot(self):
|
def _snapshot(self):
|
||||||
persist_interval = 30 # persist unfinished uploads index every 30 sec
|
persist_interval = 30 # persist unfinished uploads index every 30 sec
|
||||||
discard_interval = 3600 # drop unfinished uploads after 1 hour inactivity
|
discard_interval = 21600 # drop unfinished uploads after 6 hours inactivity
|
||||||
prev = {}
|
prev = {}
|
||||||
while True:
|
while True:
|
||||||
time.sleep(persist_interval)
|
time.sleep(persist_interval)
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ function up2k_init(have_crypto) {
|
|||||||
|
|
||||||
var parallel_uploads = cfg_get('nthread');
|
var parallel_uploads = cfg_get('nthread');
|
||||||
var multitask = bcfg_get('multitask', true);
|
var multitask = bcfg_get('multitask', true);
|
||||||
|
var ask_up = bcfg_get('ask_up', true);
|
||||||
|
|
||||||
var col_hashing = '#00bbff';
|
var col_hashing = '#00bbff';
|
||||||
var col_hashed = '#004466';
|
var col_hashed = '#004466';
|
||||||
@@ -297,7 +298,7 @@ function up2k_init(have_crypto) {
|
|||||||
for (var a = 0; a < good_files.length; a++)
|
for (var a = 0; a < good_files.length; a++)
|
||||||
msg.push(good_files[a].name);
|
msg.push(good_files[a].name);
|
||||||
|
|
||||||
if (!confirm(msg.join('\n')))
|
if (ask_up && !confirm(msg.join('\n')))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (var a = 0; a < good_files.length; a++) {
|
for (var a = 0; a < good_files.length; a++) {
|
||||||
@@ -839,6 +840,11 @@ function up2k_init(have_crypto) {
|
|||||||
bcfg_set('multitask', multitask);
|
bcfg_set('multitask', multitask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function tgl_ask_up() {
|
||||||
|
ask_up = !ask_up;
|
||||||
|
bcfg_set('ask_up', ask_up);
|
||||||
|
}
|
||||||
|
|
||||||
function nop(ev) {
|
function nop(ev) {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
this.click();
|
this.click();
|
||||||
@@ -855,6 +861,7 @@ function up2k_init(have_crypto) {
|
|||||||
|
|
||||||
ebi('nthread').addEventListener('input', bumpthread, false);
|
ebi('nthread').addEventListener('input', bumpthread, false);
|
||||||
ebi('multitask').addEventListener('click', tgl_multitask, false);
|
ebi('multitask').addEventListener('click', tgl_multitask, false);
|
||||||
|
ebi('ask_up').addEventListener('click', tgl_ask_up, false);
|
||||||
|
|
||||||
var nodes = ebi('u2conf').getElementsByTagName('a');
|
var nodes = ebi('u2conf').getElementsByTagName('a');
|
||||||
for (var a = nodes.length - 1; a >= 0; a--)
|
for (var a = nodes.length - 1; a >= 0; a--)
|
||||||
|
|||||||
@@ -194,6 +194,12 @@
|
|||||||
#u2conf input+a {
|
#u2conf input+a {
|
||||||
background: #d80;
|
background: #d80;
|
||||||
}
|
}
|
||||||
|
#u2conf input[type="checkbox"]+label {
|
||||||
|
color: #f5a;
|
||||||
|
}
|
||||||
|
#u2conf input[type="checkbox"]:checked+label {
|
||||||
|
color: #fc5;
|
||||||
|
}
|
||||||
#u2foot {
|
#u2foot {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
|
|||||||
@@ -43,10 +43,14 @@
|
|||||||
<input class="txtbox" id="nthread" value="2" />
|
<input class="txtbox" id="nthread" value="2" />
|
||||||
<a href="#" id="nthread_add">+</a>
|
<a href="#" id="nthread_add">+</a>
|
||||||
</td>
|
</td>
|
||||||
<td rowspan="2">
|
<td rowspan="2" style="padding-left:1.5em">
|
||||||
<input type="checkbox" id="multitask" />
|
<input type="checkbox" id="multitask" />
|
||||||
<label for="multitask">hash while<br />uploading</label>
|
<label for="multitask">hash while<br />uploading</label>
|
||||||
</td>
|
</td>
|
||||||
|
<td rowspan="2">
|
||||||
|
<input type="checkbox" id="ask_up" />
|
||||||
|
<label for="ask_up">ask for<br />confirmation</label>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ exit 1
|
|||||||
## (supports linux/macos, probably windows+msys2)
|
## (supports linux/macos, probably windows+msys2)
|
||||||
|
|
||||||
gzip -d < .hist/up2k.snap | jq -r '.[].tnam' | while IFS= read -r f; do rm -f -- "$f"; done
|
gzip -d < .hist/up2k.snap | jq -r '.[].tnam' | while IFS= read -r f; do rm -f -- "$f"; done
|
||||||
gzip -d < .hist/up2k.snap | jq -r '.[].name' | while IFS= read -r f; do wc -c -- "$f" | grep -qiE '^[^0-9a-z]*0' & rm -f -- "$f"; done
|
gzip -d < .hist/up2k.snap | jq -r '.[].name' | while IFS= read -r f; do wc -c -- "$f" | grep -qiE '^[^0-9a-z]*0' && rm -f -- "$f"; done
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -3,12 +3,15 @@ set -e
|
|||||||
echo
|
echo
|
||||||
|
|
||||||
# osx support
|
# osx support
|
||||||
command -v gtar >/dev/null &&
|
# port install gnutar findutils gsed coreutils
|
||||||
command -v gfind >/dev/null && {
|
gtar=$(command -v gtar || command -v gnutar) || true
|
||||||
tar() { gtar "$@"; }
|
[ ! -z "$gtar" ] && command -v gfind >/dev/null && {
|
||||||
|
tar() { $gtar "$@"; }
|
||||||
sed() { gsed "$@"; }
|
sed() { gsed "$@"; }
|
||||||
find() { gfind "$@"; }
|
find() { gfind "$@"; }
|
||||||
sort() { gsort "$@"; }
|
sort() { gsort "$@"; }
|
||||||
|
command -v grealpath >/dev/null &&
|
||||||
|
realpath() { grealpath "$@"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
which md5sum 2>/dev/null >/dev/null &&
|
which md5sum 2>/dev/null >/dev/null &&
|
||||||
|
|||||||
@@ -2,12 +2,16 @@
|
|||||||
set -e
|
set -e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
command -v gtar >/dev/null &&
|
# osx support
|
||||||
command -v gfind >/dev/null && {
|
# port install gnutar findutils gsed coreutils
|
||||||
tar() { gtar "$@"; }
|
gtar=$(command -v gtar || command -v gnutar) || true
|
||||||
|
[ ! -z "$gtar" ] && command -v gfind >/dev/null && {
|
||||||
|
tar() { $gtar "$@"; }
|
||||||
sed() { gsed "$@"; }
|
sed() { gsed "$@"; }
|
||||||
find() { gfind "$@"; }
|
find() { gfind "$@"; }
|
||||||
sort() { gsort "$@"; }
|
sort() { gsort "$@"; }
|
||||||
|
command -v grealpath >/dev/null &&
|
||||||
|
realpath() { grealpath "$@"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
which md5sum 2>/dev/null >/dev/null &&
|
which md5sum 2>/dev/null >/dev/null &&
|
||||||
|
|||||||
Reference in New Issue
Block a user