
    h=                        d dl mZmZ dZ eej                               Zd Zd Zd Z	dddd	d
dddddd
Z
i dddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJi dKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddd
dddddddddddddddi dddddddddddddddddddddddddddddddddddddddddddddddddddddϜdddddd՜ddddddۜi ddݓddߓddddddddddddddddddddddddddddddddd dZej                         D  ci c]0  } | j                         D ]  \  }}|j                  d      d    | 2 c}}} Zyc c}}} w (      )print_functionunicode_literalszza c e2d e2ds e2dsa e2t e2ts e2tsr e2v e2vp e2vu ed emp i j lo mcr mte mth mtm mtp nb nc nid nih nth nw p q s ss sss v z zvc                  @    ddddddddd	d
ddddd} dD ]  }|| |<   	 | S )zargv-to-volflag: simple boolsdavauthdavrtdotshardlinkonlynoclonenodirsznodupenoforgetnopipenorobotsnotaildthumbdvthumbdathumb)dav_authdav_rtedhardlink_onlyno_cloneno_dirszno_dupe	no_forgetno_pipe	no_robotsno_tailno_thumb	no_vthumb	no_athumb) dedupdotsrche2de2dse2dsae2te2tse2tsre2ve2vue2vpexpgridgselhardlinkmagicno_db_ipno_sb_mdno_sb_lgnsortog
og_no_head
og_s_titlerandreflinkrmagicrsswo_up_readmexdevxlinkxvolzipmaxu retks     B/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/cfg.pyvf_bmaprG      s[     'C ! "D AE"F J    c            	      4    ddddddddd	} d
D ]  }|| |<   	 | S )zargv-to-volflag: simple valuesnohashnoidxscan	safededupconvtthsizecropth3x)no_hashno_idx	re_maxage
safe_dedupth_convtth_sizeth_cropth_x3),bup_ckchmod_dchmod_fdbd	forget_iphsortn	html_headlg_sbfmd_sbflg_sbamd_sbamd_histnrandu2owog_descog_siteog_thog_title
og_title_a
og_title_v
og_title_iog_tplog_uaput_ckput_namemv_retryrm_retrysorttail_fd	tail_rate	tail_tmaxtail_whotcolortxt_eolunlistu2abortu2tsuidgidups_whozip_whozipmaxnzipmaxszipmaxtrB   rC   s     rF   vf_vmapr   D   sI     !	C- .\ A].^ JrH   c                  "    i } dD ]  }|| |<   	 | S )zargv-to-volflag: complex/lists)exp_lgexp_mdext_thmtemthmtpxacxadxarxauxbanxbcxbdxbrxbuxiuxmrB   rC   s     rF   vf_cmapr      s*    
C & A'( JrH   z*read; list folder contents, download filesz0write; upload files; need "r" to see the uploadsz5move; move files and folders; need "w" at destinationz,delete; permanently delete files and foldersz/dots; user can ask to show dotfiles in listingsz3get; download files, but cannot see folder contentsz<upget; same as "g" but can see filekeys of their own uploadsz5html; same as "g" but folders return their index.htmlz*admin; can see uploader IPs, config-reloadz7all; same as 'rwmda.' (read/write/move/delete/dotfiles))
rwmd.gGhaAr"   z'enable symlink-based file deduplicationr0   z[enable hardlink-based file deduplication,
with fallback on symlinks when that is impossibler	   zSdedup with hardlink only, never symlink;
make a full copy if hardlink is impossibler:   z[enable reflink-based file deduplication,
with fallback on full copy when that is impossiblerM   z-verify on-disk data before using it for dedupr
   z5take dupe data from clients, even if available on HDDr   z8rejects existing files (instead of linking/cloning them)zchmod_d=755z$unix-permission for new dirs/folderszchmod_f=644zunix-permission for new fileszuid=573z2change owner of new files/folders to unix-user 573zgid=999z3change owner of new files/folders to unix-group 999sparsez7force use of sparse files, mainly for s3-backed storagenosparsez1deny use of sparse files, mainly for slow storagedawzlenable full WebDAV write support (dangerous);
PUT-operations will now [1;31mOVERWRITE[0;35m existing filesnosubz1forces all uploads into the top folder of the vfsr1   z/enables filetype detection for nameless uploadsrr   z&fallback filename for nameless uploadsz.default checksum-hasher for PUT/WebDAV uploadsz-default checksum-hasher for bup/basic uploadsz7allows server-side gzip compression of uploads with ?gzz7allows server-side lzma compression of uploads with ?xzz2forces server-side compression, optional arg: xz,9)rq   rZ   gzxzpkzmax 250 uploads over 15minz-max 1 GiB over 5min (suffixes: b, k, m, g, t)z5total volume size max 1 GiB (suffixes: b, k, m, g, t)z2max 4096 files in volume (suffixes: b, k, m, g, t)z5return medialinks for non-up2k uploads (not hotlinks)z:write-only users can upload logues without getting renamedz3force randomized filenames, 9 chars long by defaultz%randomized filenames are N chars longz2overwrite existing files? 0=no 1=if-older 2=alwaysz/[f]orce [c]lient-last-modified or [u]pload-timezDallow aborting unfinished uploads? 0=no 1=strict 2=ip-chk 3=acct-chkz&allow filesizes between 1 KiB and 3MiBzensure 1 GiB free disk space)zmaxn=250,600zmaxb=1g,300zvmaxb=1gzvmaxn=4k
medialinksr=   r9   znrand=Nzu2ow=Nzu2ts=fcz	u2abort=1zsz=1k-3mzdf=1gz/3 levels of subfolders with 100 entries in eachzdate-formatted organizingz uploads are deleted after 1 hour)z
rotn=100,3zrotf=%Y-%m/%d-%Hzlifetime=3600r$   z=enable database; makes files searchable + enables upload-undor%   z>scan writable folders for new files on startup; also sets -e2dr&   z:scans all folders for new files on startup; also sets -e2dr'   z@enable multimedia indexing; makes it possible to search for tagsr(   z7scan existing files for tags on startup; also sets -e2tr)   z:delete all metadata from DB (full rescan); also sets -e2tsd2tsz/disables metadata collection for existing filesr*   z@verify integrity on startup by hashing files and comparing to dbr+   z=when e2v fails, update the db (assume on-disk files are good)r,   z(when e2v fails, panic and quit copypartyd2dsz*disables onboot indexing, overrides -e2ds*d2tz-disables metadata collection, overrides -e2t*d2vz+disables file verification, overrides -e2v*d2dz+disables all database stuff, overrides -e2*zhist=/tmp/cdbz,puts thumbnails and indexes at that locationzdbpath=/tmp/cdbzputs indexes at that locationzlandmark=fooz$disable db if file foo doesn't existz3scan for new files every 60sec, same as --re-maxagez1skips hashing file contents if path matches *.isoz2fully ignores the contents at paths matching *.isoz)don't forget files when deleted from diskz'forget uploader-IP after 30 days (GDPR)z2never store uploader-IP in the db; disables unpostz.avoid excessive reindexing on android sdcardfsz"database speed-durability tradeoffz1cross-volume dupe detection / linking (dangerous)z%do not descend into other filesystemsz.do not follow symlinks leaving the volume rootzshow dotfiles in search resultsz)hide dotfiles in search results (default)z3exclude search results with URL matching this regex)zscan=60znohash=\.iso$znoidx=\.iso$r   zforget_ip=43200r2   fat32zdbd=[acid|swal|wal|yolo]r?   r>   r@   r#   	nodotsrch	srch_exclzmedia-tags to index/displayzmedia-tags to hide by defaultzYuses the "audio-bpm.py" program to
generate ".bpm" tags from uploads (f = overwrite tags)zcollects two tags at once)zmte=artist,titlezmth=fmt,res,aczmtp=.bpm=f,audio-bpm.pyzmtp=ahash,vhash=media-hash.pyzdisables all thumbnailszdisables video thumbnailsz(disables audio thumbnails (spectrograms)zdisables image thumbnailsz#compress audio waveforms 33% betterzthumbnail res; WxHzcenter-cropping (y/n/fy/fn)z3x resolution (y/n/fy/fn)zconversion timeout in secondsz,use /b.png as thumbnail for file-extension s)
r   r   r   dithumbpngquantrO   rP   rQ   rN   zext_th=s=/b.pngz handle 404s by executing PY filez handle 403s by executing PY file)zon404=PYzon403=PYz'execute CMD before a file upload startsz)execute CMD after  a file upload finishesz8execute CMD after  all uploads finish and volume is idlezexecute CMD before a file copyzexecute CMD after  a file copyz%execute CMD before a file rename/movez%execute CMD after  a file rename/movez execute CMD before a file deletez execute CMD after  a file deletezexecute CMD on messagez"execute CMD if someone gets banned)zxbu=CMDzxau=CMDzxiu=CMDzxbc=CMDzxac=CMDzxbr=CMDzxar=CMDzxbd=CMDzxad=CMDzxm=CMDzxban=CMDr.   zshow grid/thumbnails by defaultr/   z"select files in grid by ctrl-clickru   zdefault sort orderr5   z+natural-sort of leading digits in filenamesr_   z)number of sort-rules to add to media URLsr|   zdont list files matching REGEXzhtml_head=TXTz5includes TXT in the <head>, or @PATH for file at PATHztcolor=#fc0z3theme color (a hint for webbrowsers, discord, etc.)r   zdon't show total folder sizerobotsz+allows indexing by search engines (default)r   z#kindly asks search engines to leaveunlistcrz&don't list read-access in controlpanelunlistcwz'don't list write-access in controlpanelr3   z%disable js sandbox for markdown filesr4   z(disable js sandbox for prologue/epiloguesb_mdz.enable js sandbox for markdown files (default)sb_lgz1enable js sandbox for prologue/epilogue (default)z.list of markdown-sandbox safeguards to disablez,list of *logue-sandbox safeguards to disablez/value of iframe allow-prop for markdown-sandboxz-value of iframe allow-prop for *logue-sandboxz%return html and markdown as text/html)rb   ra   rd   rc   nohtmlzenable OG (disables hotlinking)z.sitename; defaults to --name, disable with '-'z0description text for all files; disable with '-'z-thumbnail format; j / jf / jf3 / w / w3 / ...z7audio title format; default: {{ artist }} - {{ title }}z(video title format; default: {{ title }}z(image title format; default: {{ title }}z+fallback title if there's nothing in the dbz*force default title; do not read from tagsz#custom html; see --og-tpl in --helpz)you want to add tags manually with og_tplz=if defined: only send OG html if useragent matches this regex)r6   ri   rh   zog_th=jfrl   rm   rn   zog_title=foor8   ro   r7   rp   z=where to put markdown backups; s=subfolder, v=volHist, n=nopez)enable textfile expansion; see --help-expz4placeholders to expand in markdown files; see --helpz7placeholders to expand in prologue/epilogue; see --helpz4enable EOL conversion when writing docs (LF or CRLF))re   r-   r   r   z
txt_eol=lfz4disable ?tail (download a growing file continuously)z/check if file was replaced (new fd) every 1 secz check for new data every 0.2 seczkill connection after 30 secz4restrict ?tail access (1=admins,2=authed,3=everyone))r   z	tail_fd=1ztail_rate=0.2ztail_tmax=30z
tail_who=2r   zRallow all users with read-access to
enable the option to show dotfiles in listingszfk=8zgenerates per-file accesskeys,
which are then required at the "g" permission;
keys are invalidated if filesize or inode changeszfka=8zgenerates slightly weaker per-file accesskeys,
which are then required at the "g" permission;
not affected by filesize or inode numberszdk=8zgenerates per-directory accesskeys,
which are then required at the "g" permission;
keys are invalidated if filesize or inode changesdksz4per-directory accesskeys allow browsing into subdirsdkyzuallow seeing files (not folders) inside a specific folder
with "g" perm, and does not require a valid dirkey to do sor<   z&allow '?rss' URL suffix (experimental)r;   z(expensive analysis for mimetype accuracyz	ups_who=2z+restrict viewing the list of recent uploadsz	zip_who=2z&restrict access to download-as-zip/tarz
zipmaxn=9kz.reject download-as-zip if more than 9000 filesz
zipmaxs=2gz)reject download-as-zip if size over 2 GiBz
zipmaxt=noz.reply with 'no' if download-as-zip exceeds maxrA   z4zip-size-limit does not apply to authenticated usersr   z3disable race-the-beam (download unfinished uploads)rs   z+ms-windows: timeout for renaming busy filesrt   z+ms-windows: timeout for deleting busy filesz+ask webdav clients to login for all folderszzshow lastmod time of symlink destination, not the link itself
(note: this option is always enabled for recursive listings))r   r   )zuploads, generalzupload ruleszGupload rotation
(moves all uploads into the specified folder structure)zdatabase, generalzTdatabase, audio tags
"mte", "mth", "mtp", "mtm" all work the same as -mte, -mth, ...
thumbnailsz.handlers
(better explained in --help-handlers)z.event hooks
(better explained in --help-hooks)zclient and uxzopengraph (discord embeds)	textfilestailingothers=N)
__future__r   r   zssetsplitonedashrG   r   r   	permdescsflagcatsvaluesitems	flagdescs)tabrE   vs   000rF   <module>r      s   7 B
bhhj/5p;|6 
6	;	@	7	:	>	G	@	5	B	:r 	n 	q	
 	D 	J 	L 	= 	6 	G 	H 	K 	G 	  E 	D  	B!" 	<#$ CAGGB-2 5FKHMTE:FD[</  H7;Q
 N P  	M  	Q	 
 	I  	M  	A  	Q  	O  	:  	<  	>  	<  	<  	G   	:! " 	># $ IMM?DHA$HD7@4@J? D :9#)D	^ ,.=.9&-+0I 768
 =>M33::55*8814 	$ 	>	
 	= 	2 	P 	L 	1 	? 	9 	< 	= 	; 	>  	A!" 	D#$ C@CA9-2 0CECO@@EB7AP# S:HKL IF;6Le  T 	  ] 	  Y	
 	E 	  H 	7 	< 	B 	= 	F 	A 	F 	I 	G  	A!" 	A#$ A O'Kzz ,4??+<UUCUAQWWS\!_aU_U	Us   5G