From fba7d62c39c329fc92434056bd54dd84937afa84 Mon Sep 17 00:00:00 2001 From: James French Date: Wed, 27 Sep 2023 08:18:39 +0200 Subject: [PATCH] news/sabnzbd: Update to 4.1.0 ChangeLog: https://github.com/sabnzbd/sabnzbd/releases/tag/4.1.0 Changes since 4.0.3 * Added a dark mode for the Config, Login, and Wizard pages. * Added multi-select to the History. * Show the number of items in post-processing when in Tabbed mode. * Added option verify_xff_header to include X-Forwarded-For when * validating if connections should be accepted when using a proxy. * Added option to purge log files from the Folders Config page. * Moved Server IP address selection and On failure, try alternative NZB to Special settings. * Special setting ipv6_servers changed to on/off. * Only use 7zip to unpack .zip files. * Windows: Added option enable_multipar to use par2cmdline-turbo * instead of Multipar for verification and repair. It is faster, * but on Windows it can fail on special (UTF8) filenames. * macOS: Switched to par2cmdline-turbo for verification and repair. * Linux: Detect more recent versions of 7zip. * Windows: Use All Users locations during installation of shortcuts. * Windows/macOS: Updated Python to 3.11.5, 7Zip to 23.01 and * UnRar to 6.23. All these updates include security fixes. Bugfixes since 4.0.3 * Series duplicate detection did not detect duplicates. * Sorting would append .1 to some filenames. * If a paused queue contained items with Force priority, * items with a lower priority would also be downloaded. * Not all API-keys were removed during log-sanitization. * In certain situations, not all data would be written to disk. * Folder names could be sanitized too eagerly. * Some articles would fail to decode. * QuickCheck could wrongly rename files with identical content. * Warning about Scripts Folder location was triggered incorrectly. PR: 274114 Reported by: james@french.id.au (maintainer) --- news/sabnzbd/Makefile | 3 +- news/sabnzbd/distinfo | 6 +- news/sabnzbd/files/patch-sabctools | 116 ------------------ .../sabnzbd/files/patch-sabnzbd_newsunpack.py | 11 -- news/sabnzbd/pkg-plist | 2 + 5 files changed, 6 insertions(+), 132 deletions(-) delete mode 100644 news/sabnzbd/files/patch-sabctools delete mode 100644 news/sabnzbd/files/patch-sabnzbd_newsunpack.py diff --git a/news/sabnzbd/Makefile b/news/sabnzbd/Makefile index 9821244c0149..1b7cbeb9e167 100644 --- a/news/sabnzbd/Makefile +++ b/news/sabnzbd/Makefile @@ -1,6 +1,5 @@ PORTNAME= sabnzbd -DISTVERSION= 4.0.2 -PORTREVISION= 1 +DISTVERSION= 4.1.0 CATEGORIES= news MASTER_SITES= https://github.com/sabnzbd/sabnzbd/releases/download/${DISTVERSION}/ DISTNAME= SABnzbd-${DISTVERSION}-src diff --git a/news/sabnzbd/distinfo b/news/sabnzbd/distinfo index 6433ee11ccf8..eb7593029619 100644 --- a/news/sabnzbd/distinfo +++ b/news/sabnzbd/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1688165296 -SHA256 (SABnzbd-4.0.2-src.tar.gz) = 2783f225057031869dff74f7eb191f54f35e8abe60906fcaaa94ab7772166c4e -SIZE (SABnzbd-4.0.2-src.tar.gz) = 5081392 +TIMESTAMP = 1695777660 +SHA256 (SABnzbd-4.1.0-src.tar.gz) = 24cdc711a9a9425b65b53dd5c084f78cc0f6d978c5c712481b7031751d569588 +SIZE (SABnzbd-4.1.0-src.tar.gz) = 5074695 diff --git a/news/sabnzbd/files/patch-sabctools b/news/sabnzbd/files/patch-sabctools deleted file mode 100644 index da0463501ac0..000000000000 --- a/news/sabnzbd/files/patch-sabctools +++ /dev/null @@ -1,116 +0,0 @@ -Obtained from: https://github.com/sabnzbd/sabnzbd/commit/a179f2a895259e49f3679405ad59cac06e0bf2d9 - https://github.com/sabnzbd/sabnzbd/commit/a951361fa639235e9252cd32c5c7264ff0f1a70a - ---- requirements.txt.orig 2023-06-07 19:24:42 UTC -+++ requirements.txt -@@ -1,6 +1,6 @@ - # Main requirements - # Note that not all sub-dependencies are listed, but only ones we know could cause trouble --sabctools==7.0.2 -+sabctools==7.1.1 - cheetah3==3.2.6.post1 - cffi==1.15.1 - pycparser==2.21 ---- sabnzbd/assembler.py.orig 2023-06-07 19:24:42 UTC -+++ sabnzbd/assembler.py -@@ -27,6 +27,7 @@ from threading import Thread - import ctypes - from typing import Tuple, Optional, List - -+import sabctools - import sabnzbd - from sabnzbd.misc import get_all_passwords, match_str - from sabnzbd.filesystem import ( -@@ -160,13 +161,21 @@ class Assembler(Thread): - - @staticmethod - def assemble(nzo: NzbObject, nzf: NzbFile, file_done: bool): -- """Assemble a NZF from its table of articles -- 1) Partial write: write what we have -- 2) Nothing written before: write all -- """ -+ """Assemble a NZF from its table of articles""" - -+ # When a file exists, we cannot use "w+b" -+ if os.path.exists(nzf.filepath): -+ open_mode = "r+b" -+ file_sparse = True -+ else: -+ open_mode = "w+b" -+ file_sparse = False -+ - # We write large article-sized chunks, so we can safely skip the buffering of Python -- with open(nzf.filepath, "ab", buffering=0) as fout: -+ with open(nzf.filepath, open_mode, buffering=0) as fout: -+ # Track position, so we can prevent a seek if writing continuous -+ file_position = 0 -+ - for article in nzf.decodetable: - # Break if deleted during writing - if nzo.status is Status.DELETED: -@@ -178,9 +187,25 @@ class Assembler(Thread): - - # Write all decoded articles - if article.decoded: -+ # On first write try to make the file sparse -+ if not file_sparse and article.file_size is not None and article.file_size > 0: -+ file_sparse = True -+ try: -+ sabctools.sparse(fout, article.file_size) -+ except: -+ logging.debug("Failed to make %s sparse with length %d", nzf.filepath, article.file_size) -+ logging.debug("Traceback: ", exc_info=True) -+ - data = sabnzbd.ArticleCache.load_article(article) - # Could be empty in case nzo was deleted - if data: -+ if article.data_begin is not None: -+ # Seek ahead if needed -+ if article.data_begin != file_position: -+ fout.seek(article.data_begin) -+ file_position = article.data_begin + len(data) -+ else: -+ fout.seek(0, os.SEEK_END) - fout.write(data) - nzf.update_crc32(article.crc32, len(data)) - article.on_disk = True ---- sabnzbd/constants.py.orig 2023-06-07 19:24:42 UTC -+++ sabnzbd/constants.py -@@ -49,7 +49,7 @@ RENAMES_FILE = "__renames__" - ATTRIB_FILE = "SABnzbd_attrib" - REPAIR_REQUEST = "repair-all.sab" - --SABCTOOLS_VERSION_REQUIRED = "7.0.2" -+SABCTOOLS_VERSION_REQUIRED = "7.1.0" - - DB_HISTORY_VERSION = 1 - DB_HISTORY_NAME = "history%s.db" % DB_HISTORY_VERSION ---- sabnzbd/decoder.py.orig 2023-06-07 19:24:42 UTC -+++ sabnzbd/decoder.py -@@ -172,7 +172,7 @@ def decode(article: Article, raw_data: bytearray): - - def decode_yenc(article: Article, data: bytearray) -> bytearray: - # Let SABCTools do all the heavy lifting -- yenc_filename, article.data_begin, article.data_size, crc_correct = sabctools.yenc_decode(data) -+ yenc_filename, article.file_size, article.data_begin, article.data_size, crc_correct = sabctools.yenc_decode(data) - - nzf = article.nzf - # Assume it is yenc ---- sabnzbd/nzbstuff.py.orig 2023-06-07 19:24:42 UTC -+++ sabnzbd/nzbstuff.py -@@ -163,6 +163,7 @@ ArticleSaver = ( - "bytes", - "lowest_partnum", - "decoded", -+ "file_size", - "data_begin", - "data_size", - "on_disk", -@@ -187,6 +188,7 @@ class Article(TryList): - self.fetcher_priority: int = 0 - self.tries: int = 0 # Try count - self.decoded: bool = False -+ self.file_size: Optional[int] = None - self.data_begin: Optional[int] = None - self.data_size: Optional[int] = None - self.on_disk: bool = False diff --git a/news/sabnzbd/files/patch-sabnzbd_newsunpack.py b/news/sabnzbd/files/patch-sabnzbd_newsunpack.py deleted file mode 100644 index 65a739398ad0..000000000000 --- a/news/sabnzbd/files/patch-sabnzbd_newsunpack.py +++ /dev/null @@ -1,11 +0,0 @@ ---- sabnzbd/newsunpack.py.orig 2022-01-28 10:50:34 UTC -+++ sabnzbd/newsunpack.py -@@ -136,6 +136,8 @@ def find_programs(curdir: str): - if not sabnzbd.newsunpack.SEVENZIP_COMMAND: - sabnzbd.newsunpack.SEVENZIP_COMMAND = find_on_path("7za") # 7za = 7z stand-alone executable - if not sabnzbd.newsunpack.SEVENZIP_COMMAND: -+ sabnzbd.newsunpack.SEVENZIP_COMMAND = find_on_path("7zz") -+ if not sabnzbd.newsunpack.SEVENZIP_COMMAND: - sabnzbd.newsunpack.SEVENZIP_COMMAND = find_on_path("7z") - - if not (sabnzbd.WIN32 or sabnzbd.DARWIN): diff --git a/news/sabnzbd/pkg-plist b/news/sabnzbd/pkg-plist index 331b71e6b415..fe81e5ab6dcf 100644 --- a/news/sabnzbd/pkg-plist +++ b/news/sabnzbd/pkg-plist @@ -143,6 +143,8 @@ bin/SABnzbd.py %%DATADIR%%/interfaces/Config/templates/staticcfg/bootstrap/fonts/glyphicons-halflings-regular.svg %%DATADIR%%/interfaces/Config/templates/staticcfg/bootstrap/fonts/glyphicons-halflings-regular.ttf %%DATADIR%%/interfaces/Config/templates/staticcfg/bootstrap/js/bootstrap.min.js +%%DATADIR%%/interfaces/Config/templates/staticcfg/css/Auto.css +%%DATADIR%%/interfaces/Config/templates/staticcfg/css/Night.css %%DATADIR%%/interfaces/Config/templates/staticcfg/css/chartist.min.css %%DATADIR%%/interfaces/Config/templates/staticcfg/css/login.css %%DATADIR%%/interfaces/Config/templates/staticcfg/css/style.css