From 32e22dfe84d5e0b13914b4d0e15c1b8c9725a76d Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 3 Mar 2022 01:16:52 +0100 Subject: [PATCH] vendor asynchat for pyftpdlib --- copyparty/ftpd.py | 21 +++++++++++++++------ scripts/make-sfx.sh | 14 ++++++++++++++ scripts/sfx.ls | 3 +++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/copyparty/ftpd.py b/copyparty/ftpd.py index 4f476e26..61a20936 100644 --- a/copyparty/ftpd.py +++ b/copyparty/ftpd.py @@ -8,17 +8,26 @@ import time import logging import threading from typing import TYPE_CHECKING -from pyftpdlib.authorizers import DummyAuthorizer, AuthenticationFailed -from pyftpdlib.filesystems import AbstractedFS, FilesystemError -from pyftpdlib.handlers import FTPHandler -from pyftpdlib.servers import FTPServer -from pyftpdlib.ioloop import IOLoop -from pyftpdlib.log import config_logging from .__init__ import E from .util import Pebkac, fsenc, exclude_dotfiles from .bos import bos +try: + from pyftpdlib.ioloop import IOLoop +except ImportError: + p = os.path.join(E.mod, "vend") + print("loading asynchat from " + p) + sys.path.append(p) + from pyftpdlib.ioloop import IOLoop + +from pyftpdlib.authorizers import DummyAuthorizer, AuthenticationFailed +from pyftpdlib.filesystems import AbstractedFS, FilesystemError +from pyftpdlib.handlers import FTPHandler +from pyftpdlib.servers import FTPServer +from pyftpdlib.log import config_logging + + if TYPE_CHECKING: from .svchub import SvcHub diff --git a/scripts/make-sfx.sh b/scripts/make-sfx.sh index e8b9caf4..63d8b8d8 100755 --- a/scripts/make-sfx.sh +++ b/scripts/make-sfx.sh @@ -141,6 +141,14 @@ tmpdir="$( mkdir dep-ftp/ mv pyftpdlib dep-ftp/ + echo collecting asyncore, asynchat + for n in asyncore.py asynchat.py; do + f=../build/$n + [ -e "$f" ] || + (url=https://raw.githubusercontent.com/python/cpython/c4d45ee670c09d4f6da709df072ec80cb7dfad22/Lib/$n; + wget -O$f "$url" || curl -L "$url" >$f) + done + # msys2 tar is bad, make the best of it echo collecting source [ $clean ] && { @@ -151,6 +159,12 @@ tmpdir="$( (cd .. && tar -cf tar copyparty) && tar -xf ../tar } rm -f ../tar + + # insert asynchat + mkdir copyparty/vend + for n in asyncore.py asynchat.py; do + awk 'NR<4||NR>27;NR==4{print"# license: https://opensource.org/licenses/ISC\n"}' ../build/$n >copyparty/vend/$n + done } ver= diff --git a/scripts/sfx.ls b/scripts/sfx.ls index da5420ad..6ae3c847 100644 --- a/scripts/sfx.ls +++ b/scripts/sfx.ls @@ -32,6 +32,9 @@ copyparty/th_srv.py, copyparty/u2idx.py, copyparty/up2k.py, copyparty/util.py, +copyparty/vend, +copyparty/vend/asynchat.py, +copyparty/vend/asyncore.py, copyparty/web, copyparty/web/baguettebox.js, copyparty/web/browser.css,