mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
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)
This commit is contained in:
parent
9b65e5946f
commit
fba7d62c39
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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):
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user