copyparty 1.19.18__tar.gz → 1.19.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {copyparty-1.19.18 → copyparty-1.19.20}/PKG-INFO +4 -2
 - {copyparty-1.19.18 → copyparty-1.19.20}/README.md +3 -1
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/__version__.py +2 -2
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/authsrv.py +3 -1
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/httpcli.py +9 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/partyfuse.py.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/u2c.py.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/webdav-cfg.txt.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/baguettebox.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser.html +0 -1
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/dbg-audio.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md2.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md2.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/mde.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/mde.js.gz +0 -0
 - copyparty-1.19.20/copyparty/web/msg.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/rups.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/rups.js.gz +0 -0
 - copyparty-1.19.20/copyparty/web/shares.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/shares.html +3 -2
 - copyparty-1.19.20/copyparty/web/shares.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/splash.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/splash.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/svcs.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/chi.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/cze.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/deu.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/epo.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/fin.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/fra.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/grc.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/ita.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/kor.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/nld.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/nno.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/nor.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/pol.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/por.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/rus.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/spa.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/swe.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/tur.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/ukr.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/ui.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/up2k.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/util.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/w.hash.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/PKG-INFO +4 -2
 - {copyparty-1.19.18 → copyparty-1.19.20}/pyproject.toml +8 -0
 - copyparty-1.19.18/copyparty/web/msg.css.gz +0 -0
 - copyparty-1.19.18/copyparty/web/shares.css.gz +0 -0
 - copyparty-1.19.18/copyparty/web/shares.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/LICENSE +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/__main__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/bos/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/bos/bos.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/bos/path.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_mp.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_mpw.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_thr.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_util.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/cert.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/cfg.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/dxml.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/fsutil.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/ftpd.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/httpconn.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/httpsrv.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/ico.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/mdns.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/metrics.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/mtag.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/multicast.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/pwhash.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/qrkode.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/res/COPYING.txt +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/res/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/res/insecure.pem +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/smbd.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/ssdp.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/star.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/bimap.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/bit.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/buffer.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/dns.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/label.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/lex.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/ranges.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/_posix.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/_shared.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/_win32.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/qrcodegen.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/surrogateescape.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/sutil.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/svchub.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/szip.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/tcpsrv.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/tftpd.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/th_cli.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/th_srv.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/u2idx.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/up2k.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/util.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser2.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/cf.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/__init__.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/busy.mp3.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/easymde.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/easymde.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/fuse.py +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/marked.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/mini-fa.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/mini-fa.woff +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/prism.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/prism.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/prismd.css.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/scp.woff2 +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/sha512.ac.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/sha512.hw.js.gz +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/idp.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/mde.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/msg.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/opds.xml +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/rups.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/splash.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/svcs.html +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/SOURCES.txt +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/dependency_links.txt +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/entry_points.txt +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/requires.txt +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/top_level.txt +0 -0
 - {copyparty-1.19.18 → copyparty-1.19.20}/setup.cfg +0 -0
 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Metadata-Version: 2.4
         
     | 
| 
       2 
2 
     | 
    
         
             
            Name: copyparty
         
     | 
| 
       3 
     | 
    
         
            -
            Version: 1.19. 
     | 
| 
      
 3 
     | 
    
         
            +
            Version: 1.19.20
         
     | 
| 
       4 
4 
     | 
    
         
             
            Summary:   Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
         
     | 
| 
       5 
5 
     | 
    
         
             
            Author-email: ed <copyparty@ocv.me>
         
     | 
| 
       6 
6 
     | 
    
         
             
            License: MIT
         
     | 
| 
         @@ -3047,7 +3047,9 @@ enable sending [zeromq messages](#zeromq) from event-hooks: `pyzmq` 
     | 
|
| 
       3047 
3047 
     | 
    
         | 
| 
       3048 
3048 
     | 
    
         
             
            enable [smb](#smb-server) support (**not** recommended): `impacket==0.12.0`
         
     | 
| 
       3049 
3049 
     | 
    
         | 
| 
       3050 
     | 
    
         
            -
            `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram 
     | 
| 
      
 3050 
     | 
    
         
            +
            `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram
         
     | 
| 
      
 3051 
     | 
    
         
            +
            * to install `pyvips` on Linux: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
         
     | 
| 
      
 3052 
     | 
    
         
            +
            * to install `pyvips` on windows: `pip install --user -U "pyvips[binary]"`
         
     | 
| 
       3051 
3053 
     | 
    
         | 
| 
       3052 
3054 
     | 
    
         
             
            to install FFmpeg on Windows, grab [a recent build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) -- you need `ffmpeg.exe` and `ffprobe.exe` from inside the `bin` folder; copy them into `C:\Windows\System32` or any other folder that's in your `%PATH%`
         
     | 
| 
       3053 
3055 
     | 
    
         | 
| 
         @@ -2982,7 +2982,9 @@ enable sending [zeromq messages](#zeromq) from event-hooks: `pyzmq` 
     | 
|
| 
       2982 
2982 
     | 
    
         | 
| 
       2983 
2983 
     | 
    
         
             
            enable [smb](#smb-server) support (**not** recommended): `impacket==0.12.0`
         
     | 
| 
       2984 
2984 
     | 
    
         | 
| 
       2985 
     | 
    
         
            -
            `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram 
     | 
| 
      
 2985 
     | 
    
         
            +
            `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram
         
     | 
| 
      
 2986 
     | 
    
         
            +
            * to install `pyvips` on Linux: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
         
     | 
| 
      
 2987 
     | 
    
         
            +
            * to install `pyvips` on windows: `pip install --user -U "pyvips[binary]"`
         
     | 
| 
       2986 
2988 
     | 
    
         | 
| 
       2987 
2989 
     | 
    
         
             
            to install FFmpeg on Windows, grab [a recent build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) -- you need `ffmpeg.exe` and `ffprobe.exe` from inside the `bin` folder; copy them into `C:\Windows\System32` or any other folder that's in your `%PATH%`
         
     | 
| 
       2988 
2990 
     | 
    
         | 
| 
         @@ -3040,6 +3040,7 @@ class AuthSrv(object): 
     | 
|
| 
       3040 
3040 
     | 
    
         
             
                            "lifetime": vf.get("lifetime") or 0,
         
     | 
| 
       3041 
3041 
     | 
    
         
             
                            "unlist": vf.get("unlist") or "",
         
     | 
| 
       3042 
3042 
     | 
    
         
             
                            "sb_lg": "" if "no_sb_lg" in vf else (vf.get("lg_sbf") or "y"),
         
     | 
| 
      
 3043 
     | 
    
         
            +
                            "sb_md": "" if "no_sb_md" in vf else (vf.get("md_sbf") or "y"),
         
     | 
| 
       3043 
3044 
     | 
    
         
             
                        }
         
     | 
| 
       3044 
3045 
     | 
    
         
             
                        if "ufavico_h" in vf:
         
     | 
| 
       3045 
3046 
     | 
    
         
             
                            vn.js_ls["ufavico"] = vf["ufavico_h"]
         
     | 
| 
         @@ -3061,7 +3062,8 @@ class AuthSrv(object): 
     | 
|
| 
       3061 
3062 
     | 
    
         
             
                            "have_emp": int(self.args.emp),
         
     | 
| 
       3062 
3063 
     | 
    
         
             
                            "md_no_br": int(vf.get("md_no_br") or 0),
         
     | 
| 
       3063 
3064 
     | 
    
         
             
                            "ext_th": vf.get("ext_th_d") or {},
         
     | 
| 
       3064 
     | 
    
         
            -
                            " 
     | 
| 
      
 3065 
     | 
    
         
            +
                            "sb_lg": vn.js_ls["sb_lg"],
         
     | 
| 
      
 3066 
     | 
    
         
            +
                            "sb_md": vn.js_ls["sb_md"],
         
     | 
| 
       3065 
3067 
     | 
    
         
             
                            "sba_md": vf.get("md_sba") or "",
         
     | 
| 
       3066 
3068 
     | 
    
         
             
                            "sba_lg": vf.get("lg_sba") or "",
         
     | 
| 
       3067 
3069 
     | 
    
         
             
                            "txt_ext": self.args.textfiles.replace(",", " "),
         
     | 
| 
         @@ -5990,6 +5990,15 @@ class HttpCli(object): 
     | 
|
| 
       5990 
5990 
     | 
    
         
             
                    if self.uname != self.args.shr_adm:
         
     | 
| 
       5991 
5991 
     | 
    
         
             
                        rows = [x for x in rows if x[5] == self.uname]
         
     | 
| 
       5992 
5992 
     | 
    
         | 
| 
      
 5993 
     | 
    
         
            +
                    q = "select vp from sf where k=? limit 99"
         
     | 
| 
      
 5994 
     | 
    
         
            +
                    for r in rows:
         
     | 
| 
      
 5995 
     | 
    
         
            +
                        if not r[4]:
         
     | 
| 
      
 5996 
     | 
    
         
            +
                            r[4] = "---"
         
     | 
| 
      
 5997 
     | 
    
         
            +
                        else:
         
     | 
| 
      
 5998 
     | 
    
         
            +
                            zstl = cur.execute(q, (r[0],)).fetchall()
         
     | 
| 
      
 5999 
     | 
    
         
            +
                            zsl = [html_escape(zst[0]) for zst in zstl]
         
     | 
| 
      
 6000 
     | 
    
         
            +
                            r[4] = "<br />".join(zsl)
         
     | 
| 
      
 6001 
     | 
    
         
            +
             
     | 
| 
       5993 
6002 
     | 
    
         
             
                    html = self.j2s(
         
     | 
| 
       5994 
6003 
     | 
    
         
             
                        "shares", this=self, shr=self.args.shr, rows=rows, now=int(time.time())
         
     | 
| 
       5995 
6004 
     | 
    
         
             
                    )
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         @@ -14,8 +14,9 @@ 
     | 
|
| 
       14 
14 
     | 
    
         
             
            </head>
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            <body>
         
     | 
| 
       17 
     | 
    
         
            -
            	<div id="wrap">
         
     | 
| 
      
 17 
     | 
    
         
            +
            	<div id="wrap" class="terse">
         
     | 
| 
       18 
18 
     | 
    
         
             
            		<a href="{{ r }}/?shares">refresh</a>
         
     | 
| 
      
 19 
     | 
    
         
            +
            		<a id="xpnd" href="#">files</a>
         
     | 
| 
       19 
20 
     | 
    
         
             
            		<a href="{{ r }}/?h">control-panel</a>
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
                    <span>axs = perms (read,write,move,delet)</span>
         
     | 
| 
         @@ -46,7 +47,7 @@ 
     | 
|
| 
       46 
47 
     | 
    
         
             
                        <td>{{ "yes" if pw else "--" }}</td>
         
     | 
| 
       47 
48 
     | 
    
         
             
                        <td><a href="{{ r }}/{{ vp|e }}">/{{ vp|e }}</a></td>
         
     | 
| 
       48 
49 
     | 
    
         
             
                        <td>{{ pr }}</td>
         
     | 
| 
       49 
     | 
    
         
            -
                        <td>{{ st }}</td>
         
     | 
| 
      
 50 
     | 
    
         
            +
                        <td><div>{{ st }}</div></td>
         
     | 
| 
       50 
51 
     | 
    
         
             
                        <td>{{ un|e }}</td>
         
     | 
| 
       51 
52 
     | 
    
         
             
                        <td>{{ t0 }}</td>
         
     | 
| 
       52 
53 
     | 
    
         
             
                        <td>{{ t1 }}</td>
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Metadata-Version: 2.4
         
     | 
| 
       2 
2 
     | 
    
         
             
            Name: copyparty
         
     | 
| 
       3 
     | 
    
         
            -
            Version: 1.19. 
     | 
| 
      
 3 
     | 
    
         
            +
            Version: 1.19.20
         
     | 
| 
       4 
4 
     | 
    
         
             
            Summary:   Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
         
     | 
| 
       5 
5 
     | 
    
         
             
            Author-email: ed <copyparty@ocv.me>
         
     | 
| 
       6 
6 
     | 
    
         
             
            License: MIT
         
     | 
| 
         @@ -3047,7 +3047,9 @@ enable sending [zeromq messages](#zeromq) from event-hooks: `pyzmq` 
     | 
|
| 
       3047 
3047 
     | 
    
         | 
| 
       3048 
3048 
     | 
    
         
             
            enable [smb](#smb-server) support (**not** recommended): `impacket==0.12.0`
         
     | 
| 
       3049 
3049 
     | 
    
         | 
| 
       3050 
     | 
    
         
            -
            `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram 
     | 
| 
      
 3050 
     | 
    
         
            +
            `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram
         
     | 
| 
      
 3051 
     | 
    
         
            +
            * to install `pyvips` on Linux: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
         
     | 
| 
      
 3052 
     | 
    
         
            +
            * to install `pyvips` on windows: `pip install --user -U "pyvips[binary]"`
         
     | 
| 
       3051 
3053 
     | 
    
         | 
| 
       3052 
3054 
     | 
    
         
             
            to install FFmpeg on Windows, grab [a recent build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) -- you need `ffmpeg.exe` and `ffprobe.exe` from inside the `bin` folder; copy them into `C:\Windows\System32` or any other folder that's in your `%PATH%`
         
     | 
| 
       3053 
3055 
     | 
    
         | 
| 
         @@ -163,3 +163,11 @@ follow_imports = "silent" 
     | 
|
| 
       163 
163 
     | 
    
         | 
| 
       164 
164 
     | 
    
         
             
            [[tool.mypy.overrides]]
         
     | 
| 
       165 
165 
     | 
    
         
             
            no_implicit_reexport = false
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
            # =====================================================================
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            [tool.pyright]
         
     | 
| 
      
 170 
     | 
    
         
            +
            reportMissingImports = true
         
     | 
| 
      
 171 
     | 
    
         
            +
            reportMissingTypeStubs = false
         
     | 
| 
      
 172 
     | 
    
         
            +
            typeCheckingMode = "on"
         
     | 
| 
      
 173 
     | 
    
         
            +
            pythonVersion = "3.13.7"
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |