#!/bin/ash set -ex # patch musl cve https://www.openwall.com/lists/musl/2025/02/13/1 apk add -U grep grep -aobRE 'euckr[^\w]ksc5601[^\w]ksx1001[^\w]cp949[^\w]' /lib/ | awk -F: '$2>999{printf "%d %s\n",$2,$1}' | while read ofs fn do printf -- '-----\0-------\0-------\0-----\0' | dd bs=1 iflag=fullblock conv=notrunc seek=$ofs of=$fn; done 2>&1 | tee /dev/stderr | grep -E copied, | wc -l | grep '^2$' apk del grep # cleanup for flavors with python build steps (dj/iv) rm -rf /var/cache/apk/* /root/.cache # initial config; common for all flavors mkdir /cfg /w chmod 777 /cfg /w echo % /cfg > initcfg # unpack sfx and dive in python3 copyparty-sfx.py --version cd /tmp/pe-copyparty.0 # steal the stuff we need mv copyparty partftpy ftp/* /usr/lib/python3.*/site-packages/ # golf cd /usr/lib/python3.*/ rm -rf \ /tmp/pe-* /z/copyparty-sfx.py \ ensurepip pydoc_data turtle.py turtledemo lib2to3 # drop bytecode find / -xdev -name __pycache__ -print0 | xargs -0 rm -rf # build the stuff we want python3 -m compileall -qj4 site-packages sqlite3 xml # drop the stuff we dont find -name __pycache__ | grep -E 'ty/web/|/pycpar' | tr '\n' '\0' | xargs -0 rm -rf # two-for-one: # 1) smoketest copyparty even starts # 2) build any bytecode we missed # this tends to race other builders (alle gode ting er tre) cd /z python3 -m copyparty \ --ign-ebind -p$((1024+RANDOM)),$((1024+RANDOM)),$((1024+RANDOM)) \ --no-crt -qi127.1 --exit=idx -e2dsa -e2ts # output from -e2d rm -rf .hist