diff --git a/README.md b/README.md index 8b58e49d..11d0effb 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ turn your phone or raspi into a portable file server with resumable uploads/down * [optional dependencies](#optional-dependencies) - install these to enable bonus features * [install recommended deps](#install-recommended-deps) * [optional gpl stuff](#optional-gpl-stuff) -* [sfx](#sfx) - there are two self-contained "binaries" +* [sfx](#sfx) - the self-contained "binary" * [sfx repack](#sfx-repack) - reduce the size of an sfx by removing features * [install on android](#install-on-android) * [reporting bugs](#reporting-bugs) - ideas for context to include in bug reports @@ -1075,6 +1075,10 @@ mandatory deps: install these to enable bonus features +enable ftp-server: +* for just plaintext FTP, `pyftpdlib` (is built into the SFX) +* with TLS encryption, `pyftpdlib pyopenssl` + enable music tags: * either `mutagen` (fast, pure-python, skips a few tags, makes copyparty GPL? idk) * or `ffprobe` (20x slower, more accurate, possibly dangerous depending on your distro and users) @@ -1101,13 +1105,7 @@ these are standalone programs and will never be imported / evaluated by copypart # sfx -there are two self-contained "binaries": -* [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) -- pure python, works everywhere, **recommended** -* [copyparty-sfx.sh](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.sh) -- smaller, but only for linux and macos, kinda deprecated - -launch either of them (**use sfx.py on systemd**) and it'll unpack and run copyparty, assuming you have python installed of course - -pls note that `copyparty-sfx.sh` will fail if you rename `copyparty-sfx.py` to `copyparty.py` and keep it in the same folder because `sys.path` is funky +the self-contained "binary" [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) will unpack itself and run copyparty, assuming you have python installed of course ## sfx repack @@ -1182,8 +1180,8 @@ mv /tmp/pe-copyparty/copyparty/web/deps/ copyparty/web/deps/ then build the sfx using any of the following examples: ```sh -./scripts/make-sfx.sh # both python and sh editions -./scripts/make-sfx.sh no-sh gz # just python with gzip +./scripts/make-sfx.sh # regular edition +./scripts/make-sfx.sh gz no-cm # gzip-compressed + no fancy markdown editor ``` diff --git a/scripts/copyparty-repack.sh b/scripts/copyparty-repack.sh index e11eaccd..50ba7c03 100755 --- a/scripts/copyparty-repack.sh +++ b/scripts/copyparty-repack.sh @@ -12,21 +12,18 @@ set -e # # output summary (filesizes and contents): # -# 535672 copyparty-extras/sfx-full/copyparty-sfx.sh # 550760 copyparty-extras/sfx-full/copyparty-sfx.py # `- original unmodified sfx from github # # 572923 copyparty-extras/sfx-full/copyparty-sfx-gz.py # `- unmodified but recompressed from bzip2 to gzip # -# 341792 copyparty-extras/sfx-ent/copyparty-sfx.sh # 353975 copyparty-extras/sfx-ent/copyparty-sfx.py # 376934 copyparty-extras/sfx-ent/copyparty-sfx-gz.py # `- removed iOS ogg/opus/vorbis audio decoder, # removed the audio tray mouse cursor, # "enterprise edition" # -# 259288 copyparty-extras/sfx-lite/copyparty-sfx.sh # 270004 copyparty-extras/sfx-lite/copyparty-sfx.py # 293159 copyparty-extras/sfx-lite/copyparty-sfx-gz.py # `- also removed the codemirror markdown editor @@ -81,7 +78,7 @@ cache="$od/.copyparty-repack.cache" # fallback to awk (sorry) awk -F\" '/"browser_download_url".*(\.tar\.gz|-sfx\.)/ {print$4}' ) | - grep -E '(sfx\.(sh|py)|tar\.gz)$' | + grep -E '(sfx\.py|tar\.gz)$' | tee /dev/stderr | tr -d '\r' | tr '\n' '\0' | xargs -0 bash -c 'dl_files "$@"' _ @@ -139,11 +136,11 @@ repack() { ) } -repack sfx-full "re gz no-sh" +repack sfx-full "re gz" repack sfx-ent "re no-dd" -repack sfx-ent "re no-dd gz no-sh" +repack sfx-ent "re no-dd gz" repack sfx-lite "re no-dd no-cm no-hl" -repack sfx-lite "re no-dd no-cm no-hl gz no-sh" +repack sfx-lite "re no-dd no-cm no-hl gz" # move fuse and up2k clients into copyparty-extras/, diff --git a/scripts/make-sfx.sh b/scripts/make-sfx.sh index 26fe6ddb..e8b9caf4 100755 --- a/scripts/make-sfx.sh +++ b/scripts/make-sfx.sh @@ -14,8 +14,6 @@ help() { exec cat <<'EOF' # # `gz` creates a gzip-compressed python sfx instead of bzip2 # -# `no-sh` makes just the python sfx, skips the sh/unix sfx -# # `no-cm` saves ~82k by removing easymde/codemirror # (the fancy markdown editor) # @@ -64,8 +62,6 @@ pybin=$(command -v python3 || command -v python) || { } use_gz= -do_sh=1 -do_py=1 zopf=2560 while [ ! -z "$1" ]; do case $1 in @@ -76,8 +72,6 @@ while [ ! -z "$1" ]; do no-hl) no_hl=1 ; ;; no-dd) no_dd=1 ; ;; no-cm) no_cm=1 ; ;; - no-sh) do_sh= ; ;; - no-py) do_py= ; ;; fast) zopf=100 ; ;; *) help ; ;; esac @@ -363,41 +357,27 @@ pe=bz2 echo compressing tar # detect best level; bzip2 -7 is usually better than -9 -[ $do_py ] && { for n in {2..9}; do cp tar t.$n; $pc -$n t.$n & done; wait; mv -v $(ls -1S t.*.$pe | tail -n 1) tar.bz2; } -[ $do_sh ] && { for n in {2..9}; do cp tar t.$n; xz -ze$n t.$n & done; wait; mv -v $(ls -1S t.*.xz | tail -n 1) tar.xz; } +for n in {2..9}; do cp tar t.$n; $pc -$n t.$n & done; wait; mv -v $(ls -1S t.*.$pe | tail -n 1) tar.bz2 rm t.* || true exts=() -[ $do_sh ] && { -exts+=(.sh) -echo creating unix sfx -( - sed "s/PACK_TS/$ts/; s/PACK_HTS/$hts/; s/CPP_VER/$ver/" <../scripts/sfx.sh | - grep -E '^sfx_eof$' -B 9001; - cat tar.xz -) >$sfx_out.sh +echo creating sfx + +py=../scripts/sfx.py +suf= +[ $use_gz ] && { + sed -r 's/"r:bz2"/"r:gz"/' <$py >$py.t + py=$py.t + suf=-gz } +$pybin $py --sfx-make tar.bz2 $ver $ts +mv sfx.out $sfx_out$suf.py -[ $do_py ] && { - echo creating generic sfx - - py=../scripts/sfx.py - suf= - [ $use_gz ] && { - sed -r 's/"r:bz2"/"r:gz"/' <$py >$py.t - py=$py.t - suf=-gz - } - - $pybin $py --sfx-make tar.bz2 $ver $ts - mv sfx.out $sfx_out$suf.py - - exts+=($suf.py) - [ $use_gz ] && - rm $py -} +exts+=($suf.py) +[ $use_gz ] && + rm $py chmod 755 $sfx_out* @@ -408,4 +388,4 @@ for ext in ${exts[@]}; do done # apk add bash python3 tar xz bzip2 -# while true; do ./make-sfx.sh; for f in ..//dist/copyparty-sfx.{sh,py}; do mv $f $f.$(wc -c <$f | awk '{print$1}'); done; done +# while true; do ./make-sfx.sh; f=../dist/copyparty-sfx.py; mv $f $f.$(wc -c <$f | awk '{print$1}'); done diff --git a/scripts/rls.sh b/scripts/rls.sh index 26a1b9bf..19a23a75 100755 --- a/scripts/rls.sh +++ b/scripts/rls.sh @@ -19,19 +19,13 @@ rm -rf ../dist ./make-tgz-release.sh $v rm -f ../dist/copyparty-sfx.* -./make-sfx.sh no-sh -../dist/copyparty-sfx.py -h +f=../dist/copyparty-sfx.py +./make-sfx.sh +$f -h -ar= while true; do - for ((a=0; a<100; a++)); do - for f in ../dist/copyparty-sfx.{py,sh}; do - [ -e $f ] || continue; - mv $f $f.$(wc -c <$f | awk '{print$1}') - done - ./make-sfx.sh re $ar - done - ar=no-sh + mv $f $f.$(wc -c <$f | awk '{print$1}') + ./make-sfx.sh re $ar done # git tag -d v$v; git push --delete origin v$v