* upgrade to partftpy 0.4.0
  * workarounds for buggy clients/servers
  * improved ipv6 support, especially on macos
  * improved robustness on unreliable networks

* make `--tftp4` separate from `--ftp4`
This commit is contained in:
ed 2024-06-16 21:20:09 +02:00
parent c9281f8912
commit 452592519d
6 changed files with 7 additions and 10 deletions

View file

@ -1047,6 +1047,7 @@ def add_webdav(ap):
def add_tftp(ap): def add_tftp(ap):
ap2 = ap.add_argument_group('TFTP options (UDP only)') ap2 = ap.add_argument_group('TFTP options (UDP only)')
ap2.add_argument("--tftp", metavar="PORT", type=int, help="enable TFTP server on \033[33mPORT\033[0m, for example \033[32m69 \033[0mor \033[32m3969") ap2.add_argument("--tftp", metavar="PORT", type=int, help="enable TFTP server on \033[33mPORT\033[0m, for example \033[32m69 \033[0mor \033[32m3969")
ap2.add_argument("--tftp4", action="store_true", help="only listen on IPv4")
ap2.add_argument("--tftpv", action="store_true", help="verbose") ap2.add_argument("--tftpv", action="store_true", help="verbose")
ap2.add_argument("--tftpvv", action="store_true", help="verboser") ap2.add_argument("--tftpvv", action="store_true", help="verboser")
ap2.add_argument("--tftp-no-fast", action="store_true", help="debug: disable optimizations") ap2.add_argument("--tftp-no-fast", action="store_true", help="debug: disable optimizations")

View file

@ -150,11 +150,6 @@ class Tftpd(object):
self._disarm(fos) self._disarm(fos)
ip = next((x for x in self.args.i if ":" not in x), None)
if not ip:
self.log("tftp", "IPv6 not supported for tftp; listening on 0.0.0.0", 3)
ip = "0.0.0.0"
self.port = int(self.args.tftp) self.port = int(self.args.tftp)
self.srv = [] self.srv = []
self.ips = [] self.ips = []
@ -168,7 +163,7 @@ class Tftpd(object):
if "::" in ips: if "::" in ips:
ips.append("0.0.0.0") ips.append("0.0.0.0")
if self.args.ftp4: if self.args.tftp4:
ips = [x for x in ips if ":" not in x] ips = [x for x in ips if ":" not in x]
ips = list(ODict.fromkeys(ips)) # dedup ips = list(ODict.fromkeys(ips)) # dedup

View file

@ -231,6 +231,7 @@ IMPLICATIONS = [
["e2vu", "e2v"], ["e2vu", "e2v"],
["e2vp", "e2v"], ["e2vp", "e2v"],
["e2v", "e2d"], ["e2v", "e2d"],
["tftpvv", "tftpv"],
["smbw", "smb"], ["smbw", "smb"],
["smb1", "smb"], ["smb1", "smb"],
["smbvvv", "smbvv"], ["smbvvv", "smbvv"],

View file

@ -49,7 +49,7 @@ thumbnails2 = ["pyvips"]
audiotags = ["mutagen"] audiotags = ["mutagen"]
ftpd = ["pyftpdlib"] ftpd = ["pyftpdlib"]
ftps = ["pyftpdlib", "pyopenssl"] ftps = ["pyftpdlib", "pyopenssl"]
tftpd = ["partftpy>=0.3.1"] tftpd = ["partftpy>=0.4.0"]
pwhash = ["argon2-cffi"] pwhash = ["argon2-cffi"]
[project.scripts] [project.scripts]

View file

@ -219,9 +219,9 @@ necho() {
mv pyftpdlib ftp/ mv pyftpdlib ftp/
necho collecting partftpy necho collecting partftpy
f="../build/partftpy-0.3.1.tar.gz" f="../build/partftpy-0.4.0.tar.gz"
[ -e "$f" ] || [ -e "$f" ] ||
(url=https://files.pythonhosted.org/packages/37/79/1a1de1d3fdf27ddc9c2d55fec6552e7b8ed115258fedac6120679898b83d/partftpy-0.3.1.tar.gz; (url=https://files.pythonhosted.org/packages/8c/96/642bb3ddcb07a2c6764eb29aa562d1cf56877ad6c330c3c8921a5f05606d/partftpy-0.4.0.tar.gz;
wget -O$f "$url" || curl -L "$url" >$f) wget -O$f "$url" || curl -L "$url" >$f)
tar -zxf $f tar -zxf $f

View file

@ -141,7 +141,7 @@ args = {
"audiotags": ["mutagen"], "audiotags": ["mutagen"],
"ftpd": ["pyftpdlib"], "ftpd": ["pyftpdlib"],
"ftps": ["pyftpdlib", "pyopenssl"], "ftps": ["pyftpdlib", "pyopenssl"],
"tftpd": ["partftpy>=0.3.1"], "tftpd": ["partftpy>=0.4.0"],
"pwhash": ["argon2-cffi"], "pwhash": ["argon2-cffi"],
}, },
"entry_points": {"console_scripts": ["copyparty = copyparty.__main__:main"]}, "entry_points": {"console_scripts": ["copyparty = copyparty.__main__:main"]},