Skip to content

Releases: 9001/copyparty

babel

04 Dec 00:12
Compare
Choose a tag to compare

named after that other thing, not the song

new features

  • new protocols!
    • native IPv6 support, no longer requiring a reverse-proxy for that
    • webdav server -- read/write-access to copyparty straight from windows explorer, macos finder, kde/gnome
    • smb/cifs server -- extremely buggy and unsafe, for when there is no other choice
    • zeroconf -- copyparty announces itself on the LAN, showing up in various file managers
    • commands to mount copyparty as a local disk are in the web-UI at control-panel --> connect
  • detect buggy / malicious clients spamming the server with idle connections
    • first tries to be nice with Connection: close (enough to fix windows-webdav)
    • eventually bans the IP for --loris minutes (default: 1 hour)
  • new arg --xlink for cross-volume detection of duplicate files on upload
  • new arg --no-snap to disable upload tracking on restart
    • will not create .hist folders unless required for thumbnails or markdown backups
  • config includes -- split your config across multiple config files
  • ux improvements
    • hotkey ? shows a summary of all the hotkeys
    • hotkey Y to download selected files
    • position indicator when hovering over the audio scrubber
    • textlabel on the volume slider
    • placeholder values in textboxes
    • options to hide scrollbars, compact media player, follow playing song
    • phone-specific
      • buttons for prev/next folder
      • much better ui for hiding folder columns

bugfixes

  • now possible to upload files larger than 697 GiB
    • technically a breaking change if you wrote your own up2k client
      • please let me know if you did because that's awesome
  • several macos issues due to hardcoded syscall numbers
  • sfx: fix python 3.12 support (forbids nullbytes in source code)
  • use ctypes to discover network config -- fixes grapheneos, non-english windows
  • detect firefox showing stale markdown documents in the editor
  • detect+ban password bruteforcing on ftp too
  • http 206 failing on empty files
  • incorrect header timestamps on non-english locales
  • remind ftp clients that you cannot cd into an image file -- fixes kde dolphin
  • ux fixes
    • uploader survives running into inaccessible folders
    • middleclick documents in the textviewer sidebar to open in a new tab
    • playing really long audio files (1 week or more) would spinlock the browser

other changes

  • autodetect max number of clients based on OS limits
    • -nc is probably no longer necessary when running behind a reverse-proxy
  • allow/try playing mkv files in chrome
  • markdown documents returned as plaintext unless ?v
  • only compress -lo logfiles if filename ends with .xz
  • changed sfx compression from bz2 to gz
    • startup is slightly faster
    • better compatibility with embedded linux
  • copyparty64.exe -- 64bit edition for running inside WinPE
    • which was an actual feature request, believe it or not!
  • more attempts at avoiding the firefox fd leak
    • if you are uploading many small files and the browser keeps crashing, use chrome instead
      • or the commandline client, which is now available for download straight from copyparty
        • control-panel --> connect --> up2k.py

wav2opus

13 Oct 21:52
Compare
Choose a tag to compare

bugfixes

  • the option to transcode flac to opus while playing audio in the browser was supposed to transcode wav-files as well, instead of being extremely hazardous to mobile data plans (sorry)
  • --license didn't work if copyparty was installed from pip

release-specific notes

this release includes an additional sfx build, copyparty-sfx-gz.py, which is the same as the normal copyparty-sfx.py except it's more likely to work on embedded linux devices since it uses gzip compression instead of bzip2

for future releases, you can use a script to automatically grab the latest sfx and convert it to gzip by downloading and running copyparty-repack.sh on either linux, macos, or windows-msys2 -- see sfx-repack for more info

qr-code

09 Oct 09:58
Compare
Choose a tag to compare

new features

  • display a server qr-code (screenshot) on startup
    • primarily for running copyparty on a phone and accessing it from another
    • optionally specify a path or password with --qrl lootbox/?pw=hunter2
    • uses the server's exteral ip (default route) unless --qri specifies a domain / ip-prefix
    • classic cp437 for space efficiency; some misbehaving terminals / fonts need --qrz 2
  • new permission G returns the filekey of uploaded files for users without read-access
    • when combined with permission w and volflag fk, uploaded files will not be accessible unless the filekey is provided in the url, and G provides the filekey to the uploader unlike g
  • filekeys are added to the unpost listing

bugfixes

  • renaming / moving folders is now at least 120x faster
    • and that's on nvme drives, so probably like 2000x on HDDs
  • uploads to volumes with lifetimes could get instapurged depending on browser and browser settings
  • ux fixes
    • FINALLY fixed messageboxes appearing offscreen on phones (and some other layout issues)
    • stop asking about folder-uploads on phones because they dont support it
    • on android-firefox, default to truncating huge folders with the load-more button due to ff onscroll being buggy
    • audioplayer looking funky if ffmpeg unavailable
  • waveform-seekbar cache expiration (the thumbcleaner complaining about png files)
  • ie11 panic when opening a folder which contains a file named up2k
    • turns out <a name=foo> becomes window.foo unless that's already declared somewhere in js -- luckily other browsers "only" do that with IDs

signal in the noise

26 Sep 21:16
Compare
Choose a tag to compare

new features

  • --bak-flips saves a copy of corrupted / bitflipped up2k uploads
    • comparing against a good copy can help pinpoint the culprit
    • also see tracking bitflips

bugfixes

  • some edgecases where deleted files didn't get dropped from the db
    • can reduce performance over time, hitting the filesystem more than necessary

fuhgeddaboudit

25 Sep 13:05
Compare
Choose a tag to compare

new features

  • forget incoming uploads by deleting the name-reservation
    • (the zerobyte file with the actual filename, not the .PARTIAL)
    • can take 5min to kick in

bugfixes

  • zfs on ubuntu 20.04 would reject files with big unicode names such as 148. Профессор Лебединский, Виктор Бондарюк, Дмитрий Нагиев - Я её хой (Я танцую пьяный на столе) (feat. Виктор Бондарюк & Дмитрий Нагиев).mp3
    • usually not a problem since copyparty truncates names to fit filesystem limits, except zfs uses a nonstandard errorcode
  • in the "print-message-to-serverlog" feature, a unicode message larger than one tcp-frame could decode incorrectly

fix api compat

24 Sep 13:33
Compare
Choose a tag to compare

bugfixes

  • v1.4.0 accidentally required all clients to use the new up2k.js to continue uploading; support the old js too

mostly reliable

23 Sep 21:37
Compare
Choose a tag to compare

new features

  • huge folders are lazily rendered for a massive speedup, #11
    • also reduces the number of ?tree requests; helps a tiny bit on server load
  • selfdestruct timer on uploaded files -- see link for howto and side-effects
  • ban clients trying to bruteforce passwords
    • arg --ban-pw, default 9,60,1440, bans for 1440min after 9 wrong passwords in 60min
    • clients repeatedly trying the same password (due to a bug or whatever) are not counted
    • does a /64 range-ban for IPv6 offenders
    • arg --ban-404, disabled by default, bans for excessive 404s / directory-scanning
      • but that breaks up2k turbo-mode and probably some other eccentric usecases
  • waveform seekbar (screenshot)
  • the up2k upload button can do folders recursively now
    • but only a single folder can be selected at a time, making drag-drop the obvious choice still
  • gridview is now less jank, #12
  • togglebuttons for desktop-notifications and audio-jingle when upload completes
  • stop exposing uploader IPs when avoiding filename collisions
    • IPs are now HMAC'ed with urandom stored at ~/.config/copyparty/iphash
  • stop crashing chrome; generate PNGs rather than SVGs for filetype icons
  • terminate connections with SHUT_WR and flush with siocoutq
    • makes buggy enterprise proxies behave less buggy
    • do a read-spin on windows for almost the same effect
  • improved upload scheduling
    • unfortunately removes the 0.0%, NaN:aN, N.aN MB/s easteregg
  • arg --magic enables filetype detection on nameless uploads based on libmagic
  • mtp modifiers to let tagparsers keep their stdout/stderr instead of capturing
    • c0 disables all capturing, c1 captures stdout only, c2 only stderr, and c3 (default) captures both
  • arg --write-uplog enables the old default of writing upload reports on POSTs
    • kinda pointless and was causing issues in prisonparty
  • upload modifiers for terse replies and to randomize filenames
  • other optimizations
    • 30% faster tag collection on directory listings
    • 8x faster rendering of huge tagsets
  • new mtps guestbook and guestbook-read, for example for comment-fields on uploads
  • arg --stackmon now takes dateformat filenames to produce multiple files
  • arg --mtag-vv to debug tagparser configs
  • arg --version shows copyparty version and exits
  • arg --license shows a list of embedded dependencies + their licenses
  • arg --no-forget and volflag :c,noforget keeps deleted files in the up2k db/index
    • useful if you're shuffling uploads to s3/gdrive/etc and still want deduplication

bugfixes

  • upload deduplication using symlinks on windows
  • increase timeouts to run better on servers with extremely overloaded HDDs
    • arg --mtag-to (default 60 sec, was 10) can be reduced for faster tag scanning
  • incorrect filekeys for files symlinked into another volume
  • playback could start mid-song if skipping back and forth between songs
  • use affinity mask to determine how many CPU cores are available
  • restore .bin-suffix for nameless PUT/POSTs (disappeared in v1.0.11)
  • fix glitch in uploader-UI when upload queue is bigger than 1 TiB
  • avoid a firefox race-condition accessing the navigation history
  • sfx tmpdir keepalive when flipflopping between unix users
  • reject anon ftp if anon has no read/write
  • improved autocorrect for poor ffmpeg builds
  • patch popen on older pythons so collecting tags on windows is always possible
  • misc ui/ux fixes
    • filesearch layout in read-only folders
    • more comfy fadein/fadeout on play/pause
    • total-ETA going crazy when an overloaded server drops requests
    • stop trying to play into the next folder while in search results
    • improve warnings/errors in the uploader ui
      • some errors which should have been warnings are now warnings
      • autohide warnings/errors when they are remedied
    • delay starting the audiocontext until necessary
      • reduces cpu-load by 0.2% and fixes chrome claiming the tab is playing audio

copyparty.exe

now introducing copyparty.exe!   only suitable for the rainiest of days ™

first thing you'll see when you run it is a warning to «please use the python-sfx instead»,

  • copyparty.exe was compiled using 32bit python3.7 to support windows7, meaning it won't receive any security patches
  • copyparty-sfx.py uses your system libraries instead so it'll stay safe for much longer while also having better performance

so the exe might be super useful in a pinch on a secluded LAN but otherwise Absolutely Not Recommended

you can download ffmpeg and ffprobe into the same folder if you want multimedia-info, audio-transcoding or thumbnails/spectrograms/waveforms -- those binaries were built with just enough features to cover what copyparty wants, but much like copyparty.exe itself (so due to security reasons) it is strongly recommended to instead grab a recent official build every once in a while

and finally some good news

  • the chrome memory leak will be fixed in v107
  • and firefox may fix the crash in v106 or so
  • and the release title / this season's codename stems from a cpp instance recently being slammed with terabytes of uploads running on a struggling server mostly without breaking a sweat 👍

gc kiting

18 Aug 17:48
Compare
Choose a tag to compare

bugfixes

  • found a janky workaround for the remaining chrome wasm gc bug
    • worker-global typedarray holding on to the first and last byte of the filereader output while wasm chews on it
    • overhead is small enough, slows down firefox by 2~3%
    • seems to work on many chrome versions but no guarantees
      • still OOM's some 93 and 97 betas, probably way more

other changes

  • disable mt by default on https-desktop-chrome
    • avoids the gc bug entirely (except for plaintext-http and phones)
    • chrome doesn't parallelize crypto.subtle.digest anyways

pls let me stop finding chrome bugs

17 Aug 23:28
Compare
Choose a tag to compare

two browser-bugs in two hours, man i just wanna play horizon

bugfixes

  • chrome randomly running out of memory while hashing files and mt is enabled
    • the gc suddenly gives up collecting the filereaders
    • fixed by reusing a pool of readers instead
  • chrome failing to gc Any Buffers At All while hashing files and mt is enabled on plaintext http
    • this one's funkier, they've repeatedly fixed and broke it like 6 times between chrome 84 and 106
    • looks like it just forgets about everything that's passed into wasm
    • no way around it, just show a popup explaining how to disable multithreaded hashing

fix windows db

15 Aug 18:56
Compare
Choose a tag to compare

after two exciting releases, time for something boring

new features

  • upload-info (ip and timestamp) is provided to mtp tagparser plugins as json
  • tagscanner will index fmt (file-format / container type) by default
    • and description can be enabled in -mte

bugfixes

  • v1.3.12 broke file-indexing on windows if an entire HDD was mounted as a volume