feat: Verbindungstest für Remote-Ziele optimiert und Versionsnummer auf 1.0.35 erhöht
This commit is contained in:
14
app.py
14
app.py
@@ -908,24 +908,24 @@ def delete_remote(tid):
|
|||||||
|
|
||||||
|
|
||||||
def test_remote(tid):
|
def test_remote(tid):
|
||||||
|
import tempfile, os as _os
|
||||||
remote = _remote_name(tid)
|
remote = _remote_name(tid)
|
||||||
# 1. Verbindung prüfen (Verzeichnis auflisten)
|
# 1. Verbindung prüfen
|
||||||
r = _rclone('lsd', f'{remote}:', timeout=20)
|
r = _rclone('lsd', f'{remote}:', timeout=20)
|
||||||
if r.returncode != 0:
|
if r.returncode != 0:
|
||||||
err = r.stderr.strip().splitlines()[-1] if r.stderr.strip() else 'Verbindung fehlgeschlagen'
|
err = r.stderr.strip().splitlines()[-1] if r.stderr.strip() else 'Verbindung fehlgeschlagen'
|
||||||
return False, f'Verbindung: {err}'
|
return False, f'Verbindung: {err}'
|
||||||
# 2. Schreibzugriff prüfen (Test-Datei schreiben und löschen)
|
# 2. Schreibzugriff prüfen: temporäres Verzeichnis + Datei, dann wieder löschen
|
||||||
test_file = f'{remote}:picopy_writetest_{int(time.time())}.tmp'
|
test_dir = f'{remote}:.picopy_writetest'
|
||||||
import tempfile, os as _os
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w', suffix='.tmp', delete=False) as tf:
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.tmp', delete=False) as tf:
|
||||||
tf.write('PiCopy write test')
|
tf.write('PiCopy write test')
|
||||||
tmp_path = tf.name
|
tmp_path = tf.name
|
||||||
try:
|
try:
|
||||||
rw = _rclone('copyto', tmp_path, test_file, timeout=20)
|
rw = _rclone('copy', tmp_path, test_dir, timeout=20)
|
||||||
if rw.returncode != 0:
|
if rw.returncode != 0:
|
||||||
err = rw.stderr.strip().splitlines()[-1] if rw.stderr.strip() else 'Schreiben fehlgeschlagen'
|
err = rw.stderr.strip().splitlines()[-1] if rw.stderr.strip() else 'Schreiben fehlgeschlagen'
|
||||||
return False, f'Kein Schreibzugriff: {err}'
|
return False, f'Kein Schreibzugriff: {err}'
|
||||||
_rclone('deletefile', test_file, timeout=10)
|
_rclone('purge', test_dir, timeout=10)
|
||||||
finally:
|
finally:
|
||||||
try: _os.unlink(tmp_path)
|
try: _os.unlink(tmp_path)
|
||||||
except Exception: pass
|
except Exception: pass
|
||||||
@@ -2290,8 +2290,6 @@ async function saveAP(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -- Upload-Ziele --------------------------------------------------------------
|
// -- Upload-Ziele --------------------------------------------------------------
|
||||||
const UT_ICONS={smb:'🖧',onedrive:'☁',drive:'📄',dropbox:'📦'};
|
|
||||||
const UT_LABELS={smb:'SMB/NAS',onedrive:'OneDrive',drive:'Google Drive',dropbox:'Dropbox'};
|
|
||||||
let utTargets=[], _utConn={};
|
let utTargets=[], _utConn={};
|
||||||
|
|
||||||
async function loadUTs(){utTargets=await api('/upload/targets');renderUTs();}
|
async function loadUTs(){utTargets=await api('/upload/targets');renderUTs();}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.0.34
|
1.0.35
|
||||||
Reference in New Issue
Block a user