mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
v1.9.4
This commit is contained in:
parent
767696185b
commit
cadaeeeace
|
@ -287,6 +287,10 @@ server notes:
|
||||||
* iPhones: the volume control doesn't work because [apple doesn't want it to](https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#//apple_ref/doc/uid/TP40009523-CH5-SW11)
|
* iPhones: the volume control doesn't work because [apple doesn't want it to](https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#//apple_ref/doc/uid/TP40009523-CH5-SW11)
|
||||||
* `AudioContext` will probably never be a viable workaround as apple introduces new issues faster than they fix current ones
|
* `AudioContext` will probably never be a viable workaround as apple introduces new issues faster than they fix current ones
|
||||||
|
|
||||||
|
* iPhones: the preload feature (in the media-player-options tab) can cause a tiny audio glitch 20sec before the end of each song, but disabling it may cause worse iOS bugs to appear instead
|
||||||
|
* just a hunch, but disabling preloading may cause playback to stop entirely, or possibly mess with bluetooth speakers
|
||||||
|
* tried to add a tooltip regarding this but looks like apple broke my tooltips
|
||||||
|
|
||||||
* Windows: folders cannot be accessed if the name ends with `.`
|
* Windows: folders cannot be accessed if the name ends with `.`
|
||||||
* python or windows bug
|
* python or windows bug
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
VERSION = (1, 9, 3)
|
VERSION = (1, 9, 4)
|
||||||
CODENAME = "prometheable"
|
CODENAME = "prometheable"
|
||||||
BUILD_DT = (2023, 8, 31)
|
BUILD_DT = (2023, 9, 2)
|
||||||
|
|
||||||
S_VERSION = ".".join(map(str, VERSION))
|
S_VERSION = ".".join(map(str, VERSION))
|
||||||
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
||||||
|
|
|
@ -2895,12 +2895,26 @@ class HttpCli(object):
|
||||||
logmsg = "{:4} {} ".format("", self.req)
|
logmsg = "{:4} {} ".format("", self.req)
|
||||||
self.keepalive = False
|
self.keepalive = False
|
||||||
|
|
||||||
|
cancmp = not self.args.no_tarcmp
|
||||||
|
|
||||||
if fmt == "tar":
|
if fmt == "tar":
|
||||||
mime = "application/x-tar"
|
|
||||||
packer: Type[StreamArc] = StreamTar
|
packer: Type[StreamArc] = StreamTar
|
||||||
|
if cancmp and uarg.startswith("gz"):
|
||||||
|
mime = "application/gzip"
|
||||||
|
ext = "tar.gz"
|
||||||
|
elif cancmp and uarg.startswith("bz2"):
|
||||||
|
mime = "application/x-bzip"
|
||||||
|
ext = "tar.bz2"
|
||||||
|
elif cancmp and uarg.startswith("xz"):
|
||||||
|
mime = "application/x-xz"
|
||||||
|
ext = "tar.xz"
|
||||||
|
else:
|
||||||
|
mime = "application/x-tar"
|
||||||
|
ext = "tar"
|
||||||
else:
|
else:
|
||||||
mime = "application/zip"
|
mime = "application/zip"
|
||||||
packer = StreamZip
|
packer = StreamZip
|
||||||
|
ext = "zip"
|
||||||
|
|
||||||
fn = items[0] if items and items[0] else self.vpath
|
fn = items[0] if items and items[0] else self.vpath
|
||||||
if fn:
|
if fn:
|
||||||
|
@ -2925,7 +2939,7 @@ class HttpCli(object):
|
||||||
ufn = b"".join(zbl).decode("ascii")
|
ufn = b"".join(zbl).decode("ascii")
|
||||||
|
|
||||||
cdis = "attachment; filename=\"{}.{}\"; filename*=UTF-8''{}.{}"
|
cdis = "attachment; filename=\"{}.{}\"; filename*=UTF-8''{}.{}"
|
||||||
cdis = cdis.format(afn, fmt, ufn, fmt)
|
cdis = cdis.format(afn, ext, ufn, ext)
|
||||||
self.log(cdis)
|
self.log(cdis)
|
||||||
self.send_headers(None, mime=mime, headers={"Content-Disposition": cdis})
|
self.send_headers(None, mime=mime, headers={"Content-Disposition": cdis})
|
||||||
|
|
||||||
|
@ -2943,10 +2957,12 @@ class HttpCli(object):
|
||||||
self.log("transcoding to [{}]".format(cfmt))
|
self.log("transcoding to [{}]".format(cfmt))
|
||||||
fgen = gfilter(fgen, self.thumbcli, self.uname, vpath, cfmt)
|
fgen = gfilter(fgen, self.thumbcli, self.uname, vpath, cfmt)
|
||||||
|
|
||||||
cmp = "" if self.args.no_tarcmp else uarg
|
|
||||||
|
|
||||||
bgen = packer(
|
bgen = packer(
|
||||||
self.log, fgen, utf8="utf" in uarg, pre_crc="crc" in uarg, cmp=cmp
|
self.log,
|
||||||
|
fgen,
|
||||||
|
utf8="utf" in uarg,
|
||||||
|
pre_crc="crc" in uarg,
|
||||||
|
cmp=uarg if cancmp else "",
|
||||||
)
|
)
|
||||||
bsent = 0
|
bsent = 0
|
||||||
for buf in bgen.gen():
|
for buf in bgen.gen():
|
||||||
|
|
|
@ -376,8 +376,8 @@ var Ls = {
|
||||||
"fu_xe2": "404: File not found??",
|
"fu_xe2": "404: File not found??",
|
||||||
|
|
||||||
"fz_tar": "plain gnu-tar file (linux / mac)",
|
"fz_tar": "plain gnu-tar file (linux / mac)",
|
||||||
"fz_targz": "tar with gzip level 3 compression",
|
"fz_targz": "tar with gzip level 3 compression$N$Nthis is usually very slow, so$Nuse uncompressed tar instead",
|
||||||
"fz_tarxz": "tar with xz level 1 compression",
|
"fz_tarxz": "tar with xz level 1 compression$N$Nthis is usually very slow, so$Nuse uncompressed tar instead",
|
||||||
"fz_zip8": "zip with utf8 filenames (maybe wonky on windows 7 and older)",
|
"fz_zip8": "zip with utf8 filenames (maybe wonky on windows 7 and older)",
|
||||||
"fz_zipd": "zip with traditional cp437 filenames, for really old software",
|
"fz_zipd": "zip with traditional cp437 filenames, for really old software",
|
||||||
"fz_zipc": "cp437 with crc32 computed early,$Nfor MS-DOS PKZIP v2.04g (october 1993)$N(takes longer to process before download can start)",
|
"fz_zipc": "cp437 with crc32 computed early,$Nfor MS-DOS PKZIP v2.04g (october 1993)$N(takes longer to process before download can start)",
|
||||||
|
@ -842,8 +842,8 @@ var Ls = {
|
||||||
"fu_xe2": "404: Filen finnes ikke??",
|
"fu_xe2": "404: Filen finnes ikke??",
|
||||||
|
|
||||||
"fz_tar": "ukomprimert gnu-tar arkiv, for linux og mac",
|
"fz_tar": "ukomprimert gnu-tar arkiv, for linux og mac",
|
||||||
"fz_targz": "gnu-tar pakket med gzip (nivå 3)",
|
"fz_targz": "gnu-tar pakket med gzip (nivå 3)$N$NNB: denne er veldig treg;$Nukomprimert tar er bedre",
|
||||||
"fz_tarxz": "gnu-tar pakket med xz (nivå 1)",
|
"fz_tarxz": "gnu-tar pakket med xz (nivå 1)$N$NNB: denne er veldig treg;$Nukomprimert tar er bedre",
|
||||||
"fz_zip8": "zip med filnavn i utf8 (noe problematisk på windows 7 og eldre)",
|
"fz_zip8": "zip med filnavn i utf8 (noe problematisk på windows 7 og eldre)",
|
||||||
"fz_zipd": "zip med filnavn i cp437, for høggamle maskiner",
|
"fz_zipd": "zip med filnavn i cp437, for høggamle maskiner",
|
||||||
"fz_zipc": "cp437 med tidlig crc32,$Nfor MS-DOS PKZIP v2.04g (oktober 1993)$N(øker behandlingstid på server)",
|
"fz_zipc": "cp437 med tidlig crc32,$Nfor MS-DOS PKZIP v2.04g (oktober 1993)$N(øker behandlingstid på server)",
|
||||||
|
|
|
@ -1,3 +1,29 @@
|
||||||
|
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||||
|
# 2023-0831-2211 `v1.9.3` iOS and http fixes
|
||||||
|
|
||||||
|
## new features
|
||||||
|
* iPhones and iPads are now able to...
|
||||||
|
* 9986136dfb2364edb35aa9fbb87410641c6d6af3 play entire albums while the screen is off without the music randomly stopping
|
||||||
|
* apple keeps breaking AudioContext in new and interesting ways; time to give up (no more equalizer)
|
||||||
|
* 1c0d978979a703edeb792e552b18d3b7695b2d90 perform search queries and execude js code
|
||||||
|
* by translating [smart-quotes](https://stackoverflow.com/questions/48678359/ios-11-safari-html-disable-smart-punctuation) into regular `'` and `"` characters
|
||||||
|
* python 3.12 support
|
||||||
|
* technically a bugfix since it was added [a year ago](https://github.com/9001/copyparty/commit/32e22dfe84d5e0b13914b4d0e15c1b8c9725a76d) way before the first py3.12 alpha was released but turns out i botched it, oh well
|
||||||
|
* filter error messages so they never include the filesystem path where copyparty's python files reside
|
||||||
|
* print more context in server logs if someone hits an unexpected permission-denied
|
||||||
|
|
||||||
|
# bugfixes
|
||||||
|
found some iffy stuff combing over the code but, as far as I can tell, luckily none of these were dangerous:
|
||||||
|
* URL normalization was a bit funky, but it appears everything access-control-related was unaffected
|
||||||
|
* some url parameters were double-decoded, causing the unpost filtering and file renaming to fail if the values contained `%`
|
||||||
|
* clients could cause the server to return an invalid cache-control header, but newlines and control-characters got rejected correctly
|
||||||
|
* minor cosmetics / qol fixes:
|
||||||
|
* reduced flickering on page load in chrome
|
||||||
|
* fixed some console spam in search results
|
||||||
|
* markdown documents now have the same line-height in directory listings and the editor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||||
# 2023-0826-2116 `v1.9.2` bigger hammer
|
# 2023-0826-2116 `v1.9.2` bigger hammer
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue