diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
| commit | b590c8d7572b727d565cc0b8ff660d43569845de (patch) | |
| tree | 06f7a4102ea4e845df8b66660f252920d52952f9 /net-nntp | |
| parent | 24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff) | |
| download | baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip | |
Adding metadata
Diffstat (limited to 'net-nntp')
45 files changed, 2043 insertions, 0 deletions
diff --git a/net-nntp/leafnode/Manifest b/net-nntp/leafnode/Manifest new file mode 100644 index 000000000000..3f782a13c138 --- /dev/null +++ b/net-nntp/leafnode/Manifest @@ -0,0 +1,2 @@ +DIST leafnode-1.11.11.tar.xz 453396 BLAKE2B 70471c7a68dd8c679d119bbca28c0073d78b3d577d3d64aa22540939125aa0bba464e161b6f24d78b6af771df2e0a8b9313c547e3469c4c9b406f7180a4564ec SHA512 a031306389c2c85777c6e9fc3c8529a5ef420e95be301ee60189f20db10cd8cf9328fac8adcd7f56b96d0e4a9c9c9a0c036775e604bd8f6749e5facc8e8228e7 +DIST leafnode-1.12.0.tar.xz 464572 BLAKE2B 25e86ed87e81fb8551fd7b613464d1989eef896bdad585b8d5a94b311402856f336e027c5d56a37a4f488f2a3d5531f8763add2ae4582f2c310e5581dd73de10 SHA512 99cc49b4cbfb6b6d5fdcb64fcc8b77aabd6b675cf6ea51e2aaf275830014171c408f21fd88729c5422b5845bcd27fcf9a1640f54e449f7fbe5d956a05afe10d7 diff --git a/net-nntp/leafnode/files/fetchnews.cron b/net-nntp/leafnode/files/fetchnews.cron new file mode 100644 index 000000000000..cd4569e6d656 --- /dev/null +++ b/net-nntp/leafnode/files/fetchnews.cron @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Uncomment the following if you want to regularly +# fetch new messages from your news server. +# +# +# This is part of the leafnode package. +# + +#/usr/sbin/fetchnews diff --git a/net-nntp/leafnode/files/leafnode-1.11.11-checkpeerlocal_ipv6_fix.patch b/net-nntp/leafnode/files/leafnode-1.11.11-checkpeerlocal_ipv6_fix.patch new file mode 100644 index 000000000000..ef215e4c1857 --- /dev/null +++ b/net-nntp/leafnode/files/leafnode-1.11.11-checkpeerlocal_ipv6_fix.patch @@ -0,0 +1,19 @@ +diff -x '*~' -purN a/checkpeerlocal.c b/checkpeerlocal.c +--- a/checkpeerlocal.c 2015-08-25 00:03:26.000000000 +0200 ++++ b/checkpeerlocal.c 2017-07-14 20:12:26.109653383 +0200 +@@ -208,6 +208,7 @@ int checkpeerlocal(int sock) + } + #endif + ++#ifdef HAVE_IPV6 + if (IN6_IS_ADDR_V4MAPPED(&addr.sin6.sin6_addr)) { + /* map to IPv4 */ + struct sockaddr_in si; +@@ -216,6 +217,7 @@ int checkpeerlocal(int sock) + memcpy(&addr.sin, &si, sizeof(struct sockaddr_in)); + D(pat(&addr.sa)); + } ++#endif + + if (getifaddrs(&ifap) != 0) { + D(printf("getifaddrs failed: %s\n", strerror(errno))); diff --git a/net-nntp/leafnode/files/leafnode-1.11.11-configure.patch b/net-nntp/leafnode/files/leafnode-1.11.11-configure.patch new file mode 100644 index 000000000000..bf27312579ce --- /dev/null +++ b/net-nntp/leafnode/files/leafnode-1.11.11-configure.patch @@ -0,0 +1,12 @@ +Fix handwritten check for SIOCGIFALIAS on FreeBSD +https://bugs.gentoo.org/900268 +--- a/configure.ac ++++ b/configure.ac +@@ -413,6 +413,7 @@ + #include <stddef.h> + #include <sys/types.h> + #include <sys/socket.h> ++ #include <sys/ioctl.h> + #ifdef HAVE_SYS_SOCKIO_H + #include <sys/sockio.h> + #endif diff --git a/net-nntp/leafnode/files/leafnode.xinetd b/net-nntp/leafnode/files/leafnode.xinetd new file mode 100644 index 000000000000..fc36ecaaaa03 --- /dev/null +++ b/net-nntp/leafnode/files/leafnode.xinetd @@ -0,0 +1,12 @@ +# default: off +# description: Leafnode - accepts connections on port 119 (NNTP) + +service nntp +{ + socket_type = stream + protocol = tcp + wait = no + user = news + server = /usr/sbin/leafnode + disable = yes +} diff --git a/net-nntp/leafnode/files/texpire.cron b/net-nntp/leafnode/files/texpire.cron new file mode 100644 index 000000000000..643da1ee9000 --- /dev/null +++ b/net-nntp/leafnode/files/texpire.cron @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Uncomment the following if you want to +# clean up your news spool regularly. +# +# +# This is part of the leafnode package. +# + +#/usr/sbin/texpire diff --git a/net-nntp/leafnode/leafnode-1.11.11-r2.ebuild b/net-nntp/leafnode/leafnode-1.11.11-r2.ebuild new file mode 100644 index 000000000000..2e28120642b1 --- /dev/null +++ b/net-nntp/leafnode/leafnode-1.11.11-r2.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="A USENET software package designed for small sites" +HOMEPAGE="http://leafnode.sourceforge.net/" +SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.xz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ppc x86" +IUSE="ipv6" + +DEPEND=">=dev-libs/libpcre-3.9" +RDEPEND="${DEPEND} + virtual/inetd" +DOCS=( CREDITS ChangeLog FAQ.txt FAQ.pdf INSTALL NEWS README-daemontools \ + UNINSTALL-daemontools README README-MAINTAINER README-FQDN ) + +PATCHES=( + "${FILESDIR}/${P}-checkpeerlocal_ipv6_fix.patch" + "${FILESDIR}/${PN}-1.11.11-configure.patch" +) + +src_prepare() { + default + + # bug https://bugs.gentoo.org/900268 + eautoreconf +} + +src_configure() { + econf \ + --sysconfdir=/etc/leafnode \ + --localstatedir=/var \ + --with-spooldir=/var/spool/news \ + $(use_with ipv6) +} + +src_install() { + default + + keepdir \ + /var/lib/news \ + /var/spool/news/{failed.postings,interesting.groups,leaf.node,out.going,temp.files} \ + /var/spool/news/message.id/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} + + fowners -R news:news /var/{lib,spool}/news + + insinto /etc/xinetd.d + newins "${FILESDIR}"/leafnode.xinetd leafnode-nntp + + exeinto /etc/cron.hourly + newexe "${FILESDIR}"/fetchnews.cron fetchnews + exeinto /etc/cron.daily + newexe "${FILESDIR}"/texpire.cron texpire + + dodoc FAQ.html FAQ.xml README-FQDN.html +} diff --git a/net-nntp/leafnode/leafnode-1.12.0-r1.ebuild b/net-nntp/leafnode/leafnode-1.12.0-r1.ebuild new file mode 100644 index 000000000000..3e7f21c21130 --- /dev/null +++ b/net-nntp/leafnode/leafnode-1.12.0-r1.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="A USENET software package designed for small sites" +HOMEPAGE="https://leafnode.sourceforge.io/" +SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.xz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" + +DEPEND=">=dev-libs/libpcre2-10" +RDEPEND="${DEPEND} + virtual/inetd" +DOCS=( CREDITS ChangeLog FAQ.txt FAQ.pdf INSTALL NEWS UNINSTALL-daemontools README README-MAINTAINER README-FQDN ) + +PATCHES=( "${FILESDIR}/${PN}-1.11.11-configure.patch" ) + +src_prepare() { + default + + # bug https://bugs.gentoo.org/900268 + eautoreconf +} + +src_configure() { + econf \ + --sysconfdir=/etc/leafnode \ + --localstatedir=/var \ + --with-spooldir=/var/spool/news \ + --with-ipv6 +} + +src_install() { + default + + keepdir \ + /var/lib/news \ + /var/spool/news/{failed.postings,interesting.groups,leaf.node,out.going,temp.files} \ + /var/spool/news/message.id/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} + + fowners -R news:news /var/{lib,spool}/news + + insinto /etc/xinetd.d + newins "${FILESDIR}"/leafnode.xinetd leafnode-nntp + + exeinto /etc/cron.hourly + newexe "${FILESDIR}"/fetchnews.cron fetchnews + exeinto /etc/cron.daily + newexe "${FILESDIR}"/texpire.cron texpire + + dodoc FAQ.html FAQ.xml README-FQDN.html +} diff --git a/net-nntp/leafnode/metadata.xml b/net-nntp/leafnode/metadata.xml new file mode 100644 index 000000000000..3302b4427264 --- /dev/null +++ b/net-nntp/leafnode/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <upstream> + <remote-id type="cpe">cpe:/a:leafnode:leafnode</remote-id> + </upstream> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/net-nntp/newspost/Manifest b/net-nntp/newspost/Manifest new file mode 100644 index 000000000000..efbe5818568f --- /dev/null +++ b/net-nntp/newspost/Manifest @@ -0,0 +1 @@ +DIST newspost-2.1.1.tar.gz 61412 BLAKE2B f5dad9ff397ed8536961c7364b9ade1e325bda8fa2fbd2e874c4db022112d45accb1d7800fd0c52eed5a17cc7e9298600b9ec6a6e95eccb560090f0c42d5de57 SHA512 d7f5b583ef5619a65e87f2ce2edbad307d60da7f29e5c6bef8eaa7c757f97f82f08654409a75ea7b28e5575fd267af57cbc170f467f6737f701bfbd6bd4b2f66 diff --git a/net-nntp/newspost/files/CAN-2005-0101.patch b/net-nntp/newspost/files/CAN-2005-0101.patch new file mode 100644 index 000000000000..c81936be61ba --- /dev/null +++ b/net-nntp/newspost/files/CAN-2005-0101.patch @@ -0,0 +1,11 @@ +--- a/base/socket.c ++++ b/base/socket.c +@@ -126,7 +126,7 @@ + + i = 0; + pi = buffer; +- while (TRUE) { ++ while (read_count < STRING_BUFSIZE - 1) { + retval = read(sockfd, pi, 1); + if(retval < 0) + ui_socket_error(errno); diff --git a/net-nntp/newspost/files/newspost-2.1.1-c23.patch b/net-nntp/newspost/files/newspost-2.1.1-c23.patch new file mode 100644 index 000000000000..a17e6b23f93b --- /dev/null +++ b/net-nntp/newspost/files/newspost-2.1.1-c23.patch @@ -0,0 +1,309 @@ +file_entry_alloc takes no argument and most callers pass none. Also, add +modern definitions. + +https://bugs.gentoo.org/944984 +--- a/base/newspost.c ++++ b/base/newspost.c +@@ -108,7 +108,7 @@ static int encode_and_post(newspost_data *data, SList *file_list, + else { + /* post any sfv files... */ + if (data->sfv != NULL) { +- file_data = file_entry_alloc(file_data); ++ file_data = file_entry_alloc(); + file_data->filename = + buff_create(file_data->filename, "%s", data->sfv->data); + if (stat(data->sfv->data, &file_data->fileinfo) == -1) +--- a/base/nntp.c ++++ b/base/nntp.c +@@ -73,7 +73,8 @@ boolean nntp_logon(newspost_data *data) { + return TRUE; + } + +-void nntp_logoff() { ++void ++nntp_logoff (void) { + char tmpbuffer[STRING_BUFSIZE]; + nntp_issue_command("QUIT"); + nntp_get_response(tmpbuffer); +--- a/base/socket.c ++++ b/base/socket.c +@@ -98,7 +98,8 @@ defined(__SVR4) || defined(__svr4__)) + return 0; + } + +-void socket_close() { ++void ++socket_close (void) { + if (sockfd >= 0) + close(sockfd); + } +--- a/parchive/md5.c ++++ b/parchive/md5.c +@@ -102,9 +102,7 @@ static void md5_process_bytes (const void *buffer, size_t len, + resulting message digest number will be written into the 16 bytes + beginning at RESBLOCK. */ + i64 +-md5_stream (stream, resblock) +- FILE *stream; +- void *resblock; ++md5_stream (FILE *stream, void *resblock) + { + /* Important: BLOCKSIZE must be a multiple of 64. */ + #define BLOCKSIZE 4096 +@@ -165,10 +163,7 @@ md5_stream (stream, resblock) + output yields to the wanted ASCII representation of the message + digest. */ + void * +-md5_buffer (buffer, len, resblock) +- const char *buffer; +- size_t len; +- void *resblock; ++md5_buffer (const char *buffer, size_t len, void *resblock) + { + struct md5_ctx ctx; + +@@ -189,9 +184,8 @@ md5_buffer (buffer, len, resblock) + + /* Initialize structure containing state of computation. + (RFC 1321, 3.3: Step 3) */ +-static void +-md5_init_ctx (ctx) +- struct md5_ctx *ctx; ++static void ++md5_init_ctx (struct md5_ctx *ctx) + { + ctx->A = 0x67452301; + ctx->B = 0xefcdab89; +@@ -208,9 +202,7 @@ md5_init_ctx (ctx) + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ + static void * +-md5_read_ctx (ctx, resbuf) +- const struct md5_ctx *ctx; +- void *resbuf; ++md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) + { + u8 *rb = resbuf; + u32 v; +@@ -241,9 +233,7 @@ md5_read_ctx (ctx, resbuf) + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ + static void * +-md5_finish_ctx (ctx, resbuf) +- struct md5_ctx *ctx; +- void *resbuf; ++md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) + { + /* Take yet unprocessed bytes into account. */ + u32 bytes = ctx->buflen; +@@ -277,11 +267,8 @@ md5_finish_ctx (ctx, resbuf) + return md5_read_ctx (ctx, resbuf); + } + +-static void +-md5_process_bytes (buffer, len, ctx) +- const void *buffer; +- size_t len; +- struct md5_ctx *ctx; ++static void ++md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx) + { + /* When we already have some bits in our internal buffer concatenate + both inputs first. */ +@@ -334,11 +321,8 @@ md5_process_bytes (buffer, len, ctx) + /* Process LEN bytes of BUFFER, accumulating context into CTX. + It is assumed that LEN % 64 == 0. */ + +-static void +-md5_process_block (buffer, len, ctx) +- const void *buffer; +- size_t len; +- struct md5_ctx *ctx; ++static void ++md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx) + { + u32 correct_words[16]; + const u8 *words = buffer; +--- a/ui/main.c ++++ b/ui/main.c +@@ -31,7 +31,7 @@ boolean temporary_prefix = FALSE; + + const char *EDITOR = NULL; + +-static void signal_handler(); ++static void signal_handler(int signum); + + int main(int argc, char **argv) { + newspost_data main_data; +@@ -159,7 +159,7 @@ int main(int argc, char **argv) { + tmpdir_ptr = main_data.tmpdir; + + if ((main_data.text == TRUE) && (file_list == NULL)) { +- file_data = file_entry_alloc(file_data); ++ file_data = file_entry_alloc(); + file_data->filename = buff_create(file_data->filename, + "%s/message", main_data.tmpdir->data); + command = buff_create(command, "%s %s", +@@ -324,7 +324,7 @@ int main(int argc, char **argv) { + } + } + +-static void signal_handler() { ++static void signal_handler(int signum) { + Buff *command = NULL; + + fprintf(stderr, "\nSignal received"); +--- a/ui/options.c ++++ b/ui/options.c +@@ -890,7 +890,8 @@ void check_options(newspost_data *data) { + exit(EXIT_BAD_HEADER_LINE); + } + +-void print_help() { ++void ++print_help (void) { + version_info(); + printf("\n\nUsage: newspost [OPTIONS [ARGUMENTS]]" + " file1 file2 file3..."); +@@ -1123,7 +1124,8 @@ static void parse_delay_option(const char *option) { + post_delay = 3; + } + +-static void version_info() { ++static void ++version_info (void) { + printf("\n" NEWSPOSTNAME " version " VERSION + "\nCopyright (C) 2001 - 2003 Jim Faulkner" + "\nThis is free software; see the source for" +--- a/ui/ui.c ++++ b/ui/ui.c +@@ -52,7 +52,8 @@ void ui_tmpdir_create_failed(const char *dirname, int error) { + dirname, strerror(error)); + } + +-void ui_sfv_gen_start() { ++void ++ui_sfv_gen_start (void) { + printf("\nGenerating SFV file..."); + fflush(stdout); + } +@@ -68,12 +69,14 @@ void ui_sfv_gen_error(const char *filename, int error) { + (error == 0) ? strerror(error) : "", filename); + } + +-void ui_crc_start() { ++void ++ui_crc_start (void) { + printf("\nCalculating CRCs..."); + fflush(stdout); + } + +-void ui_crc_done() { ++void ++ui_crc_done (void) { + printf(" done"); + fflush(stdout); + } +@@ -84,12 +87,14 @@ void ui_crc_error(const char *filename, int error) { + (error == 0) ? strerror(error) : "", filename); + } + +-void ui_par_gen_start() { ++void ++ui_par_gen_start (void) { + printf("\nAdding files to PAR archive..."); + fflush(stdout); + } + +-void ui_par_gen_error() { ++void ++ui_par_gen_error (void) { + fprintf(stderr, + "\nWARNING: Error while creating PAR files"); + } +@@ -99,7 +104,8 @@ void ui_par_file_add_done(const char *filename) { + fflush(stdout); + } + +-void ui_par_volume_create_start() { ++void ++ui_par_volume_create_start (void) { + printf("\nCreating PAR volumes..."); + fflush(stdout); + } +@@ -244,7 +250,8 @@ void ui_socket_connect_start(const char *servername) { + } + } + +-void ui_socket_connect_done() { ++void ++ui_socket_connect_done (void) { + if (verbosity == TRUE) { + printf(" done."); + fflush(stdout); +@@ -258,7 +265,8 @@ void ui_nntp_logon_start(const char *servername) { + } + } + +-void ui_nntp_logon_done() { ++void ++ui_nntp_logon_done (void) { + if (verbosity == TRUE) { + printf(" done.\n"); + fflush(stdout); +@@ -300,7 +308,8 @@ void ui_posting_prefix_start(const char *filename) { + fflush(stdout); + } + +-void ui_posting_prefix_done() { ++void ++ui_posting_prefix_done (void) { + files_posted++; + printf(" done.\n"); + fflush(stdout); +@@ -308,7 +317,8 @@ void ui_posting_prefix_done() { + + /* when the prefix does not get posted + i.e. is the prefix a text file? */ +-void ui_posting_prefix_failed() { ++void ++ui_posting_prefix_failed (void) { + fprintf(stderr, + "\nWARNING: Posting failed. Is it really a text file?"); + } +@@ -404,7 +414,8 @@ void ui_nntp_posting_failed(const char *response) { + "\nWARNING: Posting failed: %s", response); + } + +-void ui_nntp_posting_retry() { ++void ++ui_nntp_posting_retry (void) { + fprintf(stderr, + "Retrying"); + } +@@ -490,11 +501,13 @@ void ui_posting_file_start(newspost_data *data, file_entry *filedata, + fflush(stdout); + } + +-void ui_posting_file_done() { ++void ++ui_posting_file_done (void) { + files_posted++; + } + +-void ui_post_done() { ++void ++ui_post_done (void) { + time_t totaltime = (time(NULL) - start_time); + long totalbps; + +@@ -525,7 +538,8 @@ void ui_generic_error(int error) { + "\nWARNING: %s", strerror(error)); + } + +-void ui_too_many_failures() { ++void ++ui_too_many_failures (void) { + fprintf(stderr, "\nToo many failures." + "\nGiving up.\n"); + exit(EXIT_POSTING_FAILED); diff --git a/net-nntp/newspost/files/newspost-2.1.1-glibc-2.10.patch b/net-nntp/newspost/files/newspost-2.1.1-glibc-2.10.patch new file mode 100644 index 000000000000..8778ab41c253 --- /dev/null +++ b/net-nntp/newspost/files/newspost-2.1.1-glibc-2.10.patch @@ -0,0 +1,53 @@ +--- a/base/newspost.c ++++ b/base/newspost.c +@@ -342,7 +342,7 @@ + file = fopen(filename, "r"); + if (file != NULL) { + while (!feof(file)) { +- line = getline(line, file); ++ line = get_line(line, file); + if(line == NULL){ + text_buffer = buff_add(text_buffer, "\r\n"); + continue; +--- a/base/utils.c ++++ b/base/utils.c +@@ -43,7 +43,7 @@ + return NULL; + } + +-Buff * getline(Buff *buff, FILE *file){ ++Buff * get_line(Buff *buff, FILE *file){ + int c = fgetc(file); + buff = buff_free(buff); + while(TRUE){ +--- a/base/utils.h ++++ b/base/utils.h +@@ -26,7 +26,7 @@ + file_entry * file_entry_alloc(); + file_entry * file_entry_free(file_entry *fe); + +-Buff * getline(Buff *buff, FILE *file); ++Buff * get_line(Buff *buff, FILE *file); + Buff *buff_add(Buff *buff, char *data, ... ); + Buff * buff_free(Buff *buff); + Buff *buff_create(Buff *buff, char *data, ... ); +--- a/ui/options.c ++++ b/ui/options.c +@@ -332,7 +332,7 @@ + file = fopen(filename->data, "r"); + if (file != NULL) { + while (!feof(file)) { +- line = getline(line, file); ++ line = get_line(line, file); + linenum++; + if(line == NULL) continue; + +@@ -429,7 +429,7 @@ + linenum = 0; + while (linenum < 8) { + linenum++; +- line = getline(line, file); ++ line = get_line(line, file); + if(line == NULL) continue; + + switch (linenum) { diff --git a/net-nntp/newspost/files/newspost-2.1.1-nntp.patch b/net-nntp/newspost/files/newspost-2.1.1-nntp.patch new file mode 100644 index 000000000000..7482d6203e0e --- /dev/null +++ b/net-nntp/newspost/files/newspost-2.1.1-nntp.patch @@ -0,0 +1,69 @@ +--- a/base/nntp.c ++++ b/base/nntp.c +@@ -26,6 +26,10 @@ + *** Public Routines + **/ + ++int _nntp_post(const char *subject, newspost_data *data, ++ const char *buffer, long length, ++ boolean no_ui_updates); ++ + boolean nntp_logon(newspost_data *data) { + char buffer[STRING_BUFSIZE]; + +@@ -78,6 +82,35 @@ + int nntp_post(const char *subject, newspost_data *data, + const char *buffer, long length, + boolean no_ui_updates) { ++ int retval = _nntp_post(subject, data, buffer, length, no_ui_updates); ++ ++ if (retval == POSTING_FAILED-64) { ++ /* try log out then back in */ ++ ui_nntp_posting_retry(); ++ nntp_logoff(); ++ socket_close(); ++ sleep(5); ++ ++ /* create the socket */ ++ ui_socket_connect_start(data->address->data); ++ retval = socket_create(data->address->data, data->port); ++ if (retval < 0) ++ return retval; ++ ui_socket_connect_done(); ++ ++ ui_nntp_logon_start(data->address->data); ++ if (nntp_logon(data) == FALSE) ++ return POSTING_FAILED; ++ ui_nntp_logon_done(); ++ ++ retval = _nntp_post(subject, data, buffer, length, no_ui_updates); ++ } ++ return retval; ++} ++ ++int _nntp_post(const char *subject, newspost_data *data, ++ const char *buffer, long length, ++ boolean no_ui_updates) { + char response[STRING_BUFSIZE]; + const char *pi; + long i, chunksize; +@@ -95,7 +128,7 @@ + if (strncmp(response, NNTP_PROCEED_WITH_POST, 3) != 0) { + /* this shouldn't really happen */ + ui_nntp_unknown_response(response); +- return POSTING_FAILED; ++ return POSTING_FAILED-64; + } + + buff = buff_add(buff, "From: %s\r\n", data->from->data); +--- a/base/utils.c ++++ b/base/utils.c +@@ -44,7 +44,7 @@ + } + + Buff * getline(Buff *buff, FILE *file){ +- char c = fgetc(file); ++ int c = fgetc(file); + buff = buff_free(buff); + while(TRUE){ + if((c == '\n') diff --git a/net-nntp/newspost/metadata.xml b/net-nntp/newspost/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/net-nntp/newspost/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/net-nntp/newspost/newspost-2.1.1-r3.ebuild b/net-nntp/newspost/newspost-2.1.1-r3.ebuild new file mode 100644 index 000000000000..f469d278ca68 --- /dev/null +++ b/net-nntp/newspost/newspost-2.1.1-r3.ebuild @@ -0,0 +1,38 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="usenet binary autoposter for unix" +HOMEPAGE="http://newspost.unixcab.org/" +SRC_URI="http://newspost.unixcab.org/download/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ppc x86" + +PATCHES=( + # Should fix some problems with unexpected server replies, cf. bug 185468 + "${FILESDIR}"/${P}-nntp.patch + "${FILESDIR}"/CAN-2005-0101.patch + "${FILESDIR}"/${P}-glibc-2.10.patch + "${FILESDIR}"/${P}-c23.patch +) + +src_prepare() { + default + + sed -e "/-strip newspost/d" -i Makefile || die +} + +src_compile() { + emake CC="$(tc-getCC)" LIBS="${LDFLAGS}" main +} + +src_install() { + dobin newspost + doman man/man1/newspost.1 + dodoc CHANGES README +} diff --git a/net-nntp/nzbget/Manifest b/net-nntp/nzbget/Manifest new file mode 100644 index 000000000000..5e184c18073b --- /dev/null +++ b/net-nntp/nzbget/Manifest @@ -0,0 +1,8 @@ +DIST nzbget-25.0.tar.gz 7315774 BLAKE2B af116e68bd716402b5c55becf0d9ea89e959ddb0dd4f6359ac315a8d489d9351954b17784bdfd5bf134abe602a7a24574d74d2744f5d89f59c7e87dcea10db8b SHA512 0e265af8e20d2de585698750dd42ea84f7001f74b8ffab22929de4face27ed49ba64ef72afa167f0cca4e5db7f6bd6b5d2f4194e5311ffcbda39e613f7643450 +DIST nzbget-25.4.tar.gz 7333569 BLAKE2B ee4a70790a39b366bb3b023106fad92b1817a5a27947f66f24097d74a587093a628462d83c588edbc7cdc11e65a653f006537be7cb87342111dab1da2cab2920 SHA512 d60967b911d186c9e189ade9011c222852fc633094fff66002430139bef8795bd06d5e54220e81b402da6f7b2b87dae4767a58854098c92bc89844d2ee2baa5e +DIST nzbget-26.0.tar.gz 7386372 BLAKE2B 189554c285da93521495041461dd4b4ad9fae302a6ecddfe65b060ae93e19d658db3475bd9991dcf264592d5f3d2a738f374a01191b3c035bbb8c810c0694ddb SHA512 9cac3a6f1a43e9d0879c44764288a088e8404fcd939acff8a441e83934ea310405835cd0ea381f822f0c078cfc2876f364f55fd72167213d667b15510719cea3 +DIST nzbget-26.1.tar.gz 7369685 BLAKE2B 59c28b53992c4e6109023f5b89ad1351df23bfd0d638ba77af09d876bb2f1db7ae54f1f128181a2e430e39e0403a632622ad8abcabbd8ee3136bc22ba7805373 SHA512 2060de94a75c0d9e73a4473a987c95b32134ab548b5064f5b2fd08ea0abc63f3788a159120584d447be7a6d9826319f7a465a79ca2ed6f782419abfc596c1f5b +DIST nzbgetcom-par2turbo-1.2.0-nzbget-20250213.tar.gz 3964785 BLAKE2B 049771c21a5febe453d2866eebca3a91c145f5b054f2dfa8226d0b5245753506c184f1ad7739bd76eaad0343e87bc0e7abc2830b3cedd6e459bef64f596e3853 SHA512 fdf639759361440fef6948a61391ad579070575a2d9a62a39b0e5ff87beb365d4baab2a56fffb672e78a2094748fbf0d17abc50144914e5fb5ffe432e9c02a9d +DIST nzbgetcom-par2turbo-1.3.0-20250808.tar.gz 3970409 BLAKE2B 5a851afa42c5540d49f7f5657ccdd47fa5ab45a2057075944b30d5cceabb5ef847984fe73cbdf849af2e98cc527d19dac9ac920ec481ae7802282af173f274bd SHA512 0bfdd05c5a7235a8ff1e7a6f46d852c3263141a80619496ebcdae227281729a6442029384aa498b268062717f40063a49d31c1b0d4b713ca6cb6ff15303dcfbe +DIST nzbgetcom-par2turbo-1.4.0-20260323.tar.gz 3998503 BLAKE2B 9fb7d20d6528c7f78b11640aa3d396352dd91426b69da919bf59ac8d965cef9fd270d84ce042592e0fb8e77525ef0df2e24e3804310ca75b9a67a011128119aa SHA512 8408425f62191f5ee8d8b7826052f3cead468d3e3f5a2e265c8f2ae295488231d675aa8327e3794734d75edcbeea156cff9f78e0415020e08aa272e21d739fc8 +DIST nzbgetcom-rapidyenc-1.1.1-20260217.tar.gz 116309 BLAKE2B 56c5ffcc965375b0ab893f18a8d44bc3aec7ef5735589fa5a42655c964a4fbbdab15595d6e295e51d4cf2883b7c08f00f94bc01d197424f37c22d2a467072a23 SHA512 7b5bc009c7e9ae273969c1ca6faf2537448b4fe35aa52d81841af082e104a831cfcb80534058a0ca905dd47e528d708b21e786bf83470d374e824a40a7ebef5e diff --git a/net-nntp/nzbget/files/nzbget-24.6-build-with-par2-turbo-offline.patch b/net-nntp/nzbget/files/nzbget-24.6-build-with-par2-turbo-offline.patch new file mode 100644 index 000000000000..462e05aa96b2 --- /dev/null +++ b/net-nntp/nzbget/files/nzbget-24.6-build-with-par2-turbo-offline.patch @@ -0,0 +1,17 @@ +Patch the build system to support par2-turbo downloaded into the source +directory. +--- a/cmake/par2-turbo.cmake ++++ b/cmake/par2-turbo.cmake +@@ -42,11 +42,7 @@ endif() + ExternalProject_add( + par2-turbo + PREFIX par2-turbo +- GIT_REPOSITORY https://github.com/nzbgetcom/par2cmdline-turbo.git +- GIT_TAG v1.2.0-nzbget-20250213 +- TLS_VERIFY TRUE +- GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE ++ URL par2-turbo + DOWNLOAD_EXTRACT_TIMESTAMP TRUE + BUILD_BYPRODUCTS ${PAR2_LIBS} + CMAKE_ARGS ${CMAKE_ARGS} diff --git a/net-nntp/nzbget/files/nzbget-25.3-build-with-par2-turbo-offline.patch b/net-nntp/nzbget/files/nzbget-25.3-build-with-par2-turbo-offline.patch new file mode 100644 index 000000000000..4b6222f14ed0 --- /dev/null +++ b/net-nntp/nzbget/files/nzbget-25.3-build-with-par2-turbo-offline.patch @@ -0,0 +1,17 @@ +Patch the build system to support par2-turbo downloaded into the source +directory. +--- a/cmake/par2-turbo.cmake ++++ b/cmake/par2-turbo.cmake +@@ -42,11 +42,7 @@ endif() + ExternalProject_add( + par2-turbo + PREFIX par2-turbo +- GIT_REPOSITORY https://github.com/nzbgetcom/par2cmdline-turbo.git +- GIT_TAG v1.3.0-20250808 +- TLS_VERIFY TRUE +- GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE ++ URL par2-turbo + DOWNLOAD_EXTRACT_TIMESTAMP TRUE + BUILD_BYPRODUCTS ${PAR2_LIBS} + CMAKE_ARGS ${CMAKE_ARGS} diff --git a/net-nntp/nzbget/files/nzbget-26.0-fix-include-order.patch b/net-nntp/nzbget/files/nzbget-26.0-fix-include-order.patch new file mode 100644 index 000000000000..654b6a46377e --- /dev/null +++ b/net-nntp/nzbget/files/nzbget-26.0-fix-include-order.patch @@ -0,0 +1,29 @@ +From 063e1cd82ee719b18a1dae40f65c0971de44edef Mon Sep 17 00:00:00 2001 +From: Louis Sautier <sautier.louis@gmail.com> +Date: Sun, 15 Feb 2026 19:29:04 +0100 +Subject: [PATCH] Fix missing nzbget.h includes causing compilation errors + (#736) + +--- a/daemon/queue/UrlCoordinator.cpp ++++ b/daemon/queue/UrlCoordinator.cpp +@@ -18,9 +18,8 @@ + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +- +-#include "Unpack.h" + #include "nzbget.h" ++#include "Unpack.h" + + #include "UrlCoordinator.h" + #include "Options.h" +--- a/daemon/systemhealth/PathsValidator.cpp ++++ b/daemon/systemhealth/PathsValidator.cpp +@@ -17,6 +17,7 @@ + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + ++#include "nzbget.h" + #include "Options.h" + #include "Status.h" + #include "Validators.h" diff --git a/net-nntp/nzbget/files/nzbget-26.1-build-with-par2-turbo-offline.patch b/net-nntp/nzbget/files/nzbget-26.1-build-with-par2-turbo-offline.patch new file mode 100644 index 000000000000..1d7322862765 --- /dev/null +++ b/net-nntp/nzbget/files/nzbget-26.1-build-with-par2-turbo-offline.patch @@ -0,0 +1,17 @@ +Patch the build system to support par2-turbo downloaded into the source +directory. +--- a/cmake/par2-turbo.cmake ++++ b/cmake/par2-turbo.cmake +@@ -42,11 +42,7 @@ endif() + ExternalProject_add( + par2-turbo + PREFIX par2-turbo +- GIT_REPOSITORY https://github.com/nzbgetcom/par2cmdline-turbo.git +- GIT_TAG v1.4.0-20260323 +- TLS_VERIFY TRUE +- GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE ++ URL par2-turbo + DOWNLOAD_EXTRACT_TIMESTAMP TRUE + BUILD_BYPRODUCTS ${PAR2_LIBS} + CMAKE_ARGS ${CMAKE_ARGS} diff --git a/net-nntp/nzbget/files/nzbget-26.1-build-with-rapidyenc-offline.patch b/net-nntp/nzbget/files/nzbget-26.1-build-with-rapidyenc-offline.patch new file mode 100644 index 000000000000..c4e6b5e27119 --- /dev/null +++ b/net-nntp/nzbget/files/nzbget-26.1-build-with-rapidyenc-offline.patch @@ -0,0 +1,17 @@ +Patch the build system to support rapidyenc downloaded into the source +directory. +--- a/cmake/rapidyenc.cmake ++++ b/cmake/rapidyenc.cmake +@@ -49,11 +49,7 @@ endif() + ExternalProject_add( + rapidyenc + PREFIX rapidyenc +- GIT_REPOSITORY https://github.com/nzbgetcom/rapidyenc.git +- GIT_TAG v1.1.1-20260217 +- TLS_VERIFY TRUE +- GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE ++ URL rapidyenc + DOWNLOAD_EXTRACT_TIMESTAMP TRUE + BUILD_BYPRODUCTS ${RAPIDYENC_LIBS} + CMAKE_ARGS ${CMAKE_ARGS} diff --git a/net-nntp/nzbget/files/nzbget-26.1-fix-include-order.patch b/net-nntp/nzbget/files/nzbget-26.1-fix-include-order.patch new file mode 100644 index 000000000000..d6d3c0a1375d --- /dev/null +++ b/net-nntp/nzbget/files/nzbget-26.1-fix-include-order.patch @@ -0,0 +1,13 @@ +Fix missing nzbget.h include before other headers in Cleanup.cpp, +--- a/daemon/postprocess/Cleanup.cpp ++++ b/daemon/postprocess/Cleanup.cpp +@@ -19,8 +19,8 @@ + */ + + +-#include "DownloadInfo.h" + #include "nzbget.h" ++#include "DownloadInfo.h" + #include "Cleanup.h" + #include "Log.h" + #include "Util.h" diff --git a/net-nntp/nzbget/files/nzbget.confd b/net-nntp/nzbget/files/nzbget.confd new file mode 100644 index 000000000000..ee8f38c1aefd --- /dev/null +++ b/net-nntp/nzbget/files/nzbget.confd @@ -0,0 +1,15 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# /etc/conf.d/nzbget +# Config file for nzbget init script + +# Which user to run nzbget as +NZBGET_USER="nzbget" +NZBGET_GROUP="nzbget" + +# Location of config file +NZBGET_CONFIGFILE="/etc/nzbgetd.conf" + +# Other options +NZBGET_OPTS="" diff --git a/net-nntp/nzbget/files/nzbget.initd-r1 b/net-nntp/nzbget/files/nzbget.initd-r1 new file mode 100644 index 000000000000..2a9fae6c32b4 --- /dev/null +++ b/net-nntp/nzbget/files/nzbget.initd-r1 @@ -0,0 +1,28 @@ +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload" + +description="A command-line based binary newsgrabber supporting .nzb files" +pidfile=/run/nzbget/nzbget.pid +command=/usr/bin/nzbget +command_args="--configfile \"${NZBGET_CONFIGFILE}\" \ + --daemon --option LockFile=${pidfile} \ + ${NZBGET_OPTS}" +start_stop_daemon_args="--user \"${NZBGET_USER}\" \ + --group \"${NZBGET_GROUP}\"" + +depend() { + need localmount net +} + +start_pre() { + checkpath -d -m 0755 -o "${NZBGET_USER}":"${NZBGET_GROUP}" /run/nzbget +} + +reload() { + ebegin "Reloading ${RC_SVCNAME}" + ${command} --configfile "${NZBGET_CONFIGFILE}" --reload >/dev/null + eend $? +} diff --git a/net-nntp/nzbget/files/nzbget.service b/net-nntp/nzbget/files/nzbget.service new file mode 100644 index 000000000000..031307e3efa4 --- /dev/null +++ b/net-nntp/nzbget/files/nzbget.service @@ -0,0 +1,18 @@ +[Unit] +Description=NZBGet binary newsgrabber +Documentation=https://nzbget.net/Documentation +After=network.target + +[Service] +User=nzbget +Group=nzbget +Type=forking +PIDFile=/run/nzbget/nzbget.pid +RuntimeDirectory=nzbget +RuntimeDirectoryMode=0755 +ExecStart=/usr/bin/nzbget -c /etc/nzbgetd.conf -o LockFile=/run/nzbget/nzbget.pid -D +ExecStop=/usr/bin/nzbget -c /etc/nzbgetd.conf -Q +ExecReload=/usr/bin/nzbget -c /etc/nzbgetd.conf -O + +[Install] +WantedBy=multi-user.target diff --git a/net-nntp/nzbget/metadata.xml b/net-nntp/nzbget/metadata.xml new file mode 100644 index 000000000000..26b0c29abb23 --- /dev/null +++ b/net-nntp/nzbget/metadata.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>swegener@gentoo.org</email> + <name>Sven Wegener</name> + </maintainer> + <maintainer type="person"> + <email>sbraz@gentoo.org</email> + <name>Louis Sautier</name> + </maintainer> + <use> + <flag name="parcheck">Enable support for checking PAR archives</flag> + </use> + <upstream> + <bugs-to>https://github.com/nzbgetcom/nzbget/issues</bugs-to> + </upstream> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/net-nntp/nzbget/nzbget-25.0.ebuild b/net-nntp/nzbget/nzbget-25.0.ebuild new file mode 100644 index 000000000000..07a9a0d2b3db --- /dev/null +++ b/net-nntp/nzbget/nzbget-25.0.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake systemd + +PAR2_TURBO_VER="1.2.0-nzbget-20250213" +DESCRIPTION="A command-line based binary newsgrabber supporting .nzb files" +HOMEPAGE="https://nzbget.com/" +SRC_URI=" + parcheck? ( + https://github.com/nzbgetcom/par2cmdline-turbo/archive/v${PAR2_TURBO_VER}.tar.gz + -> nzbgetcom-par2turbo-${PAR2_TURBO_VER}.tar.gz + ) + https://github.com/nzbgetcom/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz +" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="amd64 arm ~arm64 ppc x86" +IUSE="ncurses +parcheck ssl test zlib" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/boost:= + dev-libs/libxml2:= + ncurses? ( sys-libs/ncurses:0= ) + ssl? ( dev-libs/openssl:0=[-bindist(-)] ) + zlib? ( virtual/zlib:= )" +RDEPEND=" + ${DEPEND} + acct-user/nzbget + acct-group/nzbget +" +BDEPEND=" + test? ( + || ( + app-arch/rar + app-arch/unrar + ) + ) + virtual/pkgconfig +" + +DOCS=( ChangeLog.md README.md nzbget.conf ) + +PATCHES=( + # Required to use par2-turbo downloaded into the source directory + "${FILESDIR}/${PN}-24.6-build-with-par2-turbo-offline.patch" +) + +src_prepare() { + if use parcheck; then + mv "${WORKDIR}/par2cmdline-turbo-${PAR2_TURBO_VER}" par2-turbo || die + fi + cmake_src_prepare + + # Update the main configuration file with the correct paths + sed -i nzbget.conf \ + -e "s:^WebDir=.*:WebDir=${EPREFIX}/usr/share/nzbget/webui:" \ + -e "s:^ConfigTemplate=.*:ConfigTemplate=${EPREFIX}/usr/share/nzbget/nzbget.conf:" \ + || die + # Update the daemon-specific configuration file (used by the OpenRC and + # systemd services) + sed nzbget.conf > nzbgetd.conf \ + -e "s:^MainDir=.*:MainDir=${EPREFIX}/var/lib/nzbget:" \ + -e "s:^LogFile=.*:LogFile=${EPREFIX}/var/log/nzbget/nzbget.log:" \ + -e 's:^DaemonUsername=.*:DaemonUsername=nzbget:' \ + || die +} + +src_configure() { + local mycmakeargs=( + -DDISABLE_CURSES=$(usex !ncurses) + -DDISABLE_PARCHECK=$(usex !parcheck) + -DDISABLE_TLS=$(usex !ssl) + -DDISABLE_GZIP=$(usex !zlib) + -DENABLE_TESTS=$(usex test) + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + insinto /etc + doins nzbget.conf + doins nzbgetd.conf + + # The configuration file's "ConfigTemplate" option points to this, we must + # make sure it exists as the Web UI reads it. It is not installed by + # default, see the "install-conf" target in cmake/install.cmake. + insinto /usr/share/nzbget + doins nzbget.conf + + keepdir /var/log/nzbget + + newinitd "${FILESDIR}"/nzbget.initd-r1 nzbget + newconfd "${FILESDIR}"/nzbget.confd nzbget + systemd_dounit "${FILESDIR}"/nzbget.service +} + +pkg_preinst() { + fowners nzbget:nzbget /var/log/nzbget + fperms 750 /var/log/nzbget + + fowners nzbget:nzbget /etc/nzbgetd.conf + fperms 640 /etc/nzbgetd.conf +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "Please add users that you want to be able to use the system-wide" + elog "nzbget daemon to the nzbget group. To access the daemon, run nzbget" + elog "with the --configfile /etc/nzbgetd.conf option." + elog + fi +} diff --git a/net-nntp/nzbget/nzbget-25.4.ebuild b/net-nntp/nzbget/nzbget-25.4.ebuild new file mode 100644 index 000000000000..111265d01c9c --- /dev/null +++ b/net-nntp/nzbget/nzbget-25.4.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake systemd + +PAR2_TURBO_VER="1.3.0-20250808" +DESCRIPTION="A command-line based binary newsgrabber supporting .nzb files" +HOMEPAGE="https://nzbget.com/" +SRC_URI=" + parcheck? ( + https://github.com/nzbgetcom/par2cmdline-turbo/archive/v${PAR2_TURBO_VER}.tar.gz + -> nzbgetcom-par2turbo-${PAR2_TURBO_VER}.tar.gz + ) + https://github.com/nzbgetcom/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz +" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="amd64 arm ~arm64 ~ppc x86" +IUSE="ncurses +parcheck ssl test zlib" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/boost:= + dev-libs/libxml2:= + ncurses? ( sys-libs/ncurses:0= ) + ssl? ( dev-libs/openssl:0=[-bindist(-)] ) + zlib? ( virtual/zlib:= )" +RDEPEND=" + ${DEPEND} + acct-user/nzbget + acct-group/nzbget +" +BDEPEND=" + test? ( + || ( + app-arch/rar + app-arch/unrar + ) + ) + virtual/pkgconfig +" + +DOCS=( ChangeLog.md README.md nzbget.conf ) + +PATCHES=( + # Required to use par2-turbo downloaded into the source directory + "${FILESDIR}/${PN}-25.3-build-with-par2-turbo-offline.patch" +) + +src_prepare() { + if use parcheck; then + mv "${WORKDIR}/par2cmdline-turbo-${PAR2_TURBO_VER}" par2-turbo || die + fi + cmake_src_prepare + + # Update the main configuration file with the correct paths + sed -i nzbget.conf \ + -e "s:^WebDir=.*:WebDir=${EPREFIX}/usr/share/nzbget/webui:" \ + -e "s:^ConfigTemplate=.*:ConfigTemplate=${EPREFIX}/usr/share/nzbget/nzbget.conf:" \ + || die + # Update the daemon-specific configuration file (used by the OpenRC and + # systemd services) + sed nzbget.conf > nzbgetd.conf \ + -e "s:^MainDir=.*:MainDir=${EPREFIX}/var/lib/nzbget:" \ + -e "s:^LogFile=.*:LogFile=${EPREFIX}/var/log/nzbget/nzbget.log:" \ + -e 's:^DaemonUsername=.*:DaemonUsername=nzbget:' \ + || die +} + +src_configure() { + local mycmakeargs=( + -DDISABLE_CURSES=$(usex !ncurses) + -DDISABLE_PARCHECK=$(usex !parcheck) + -DDISABLE_TLS=$(usex !ssl) + -DDISABLE_GZIP=$(usex !zlib) + -DENABLE_TESTS=$(usex test) + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + insinto /etc + doins nzbget.conf + doins nzbgetd.conf + + # The configuration file's "ConfigTemplate" option points to this, we must + # make sure it exists as the Web UI reads it. It is not installed by + # default, see the "install-conf" target in cmake/install.cmake. + insinto /usr/share/nzbget + doins nzbget.conf + + keepdir /var/log/nzbget + + newinitd "${FILESDIR}"/nzbget.initd-r1 nzbget + newconfd "${FILESDIR}"/nzbget.confd nzbget + systemd_dounit "${FILESDIR}"/nzbget.service +} + +pkg_preinst() { + fowners nzbget:nzbget /var/log/nzbget + fperms 750 /var/log/nzbget + + fowners nzbget:nzbget /etc/nzbgetd.conf + fperms 640 /etc/nzbgetd.conf +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "Please add users that you want to be able to use the system-wide" + elog "nzbget daemon to the nzbget group. To access the daemon, run nzbget" + elog "with the --configfile /etc/nzbgetd.conf option." + elog + fi +} diff --git a/net-nntp/nzbget/nzbget-26.0.ebuild b/net-nntp/nzbget/nzbget-26.0.ebuild new file mode 100644 index 000000000000..9096b2ab21b4 --- /dev/null +++ b/net-nntp/nzbget/nzbget-26.0.ebuild @@ -0,0 +1,122 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake systemd + +PAR2_TURBO_VER="1.3.0-20250808" +DESCRIPTION="A command-line based binary newsgrabber supporting .nzb files" +HOMEPAGE="https://nzbget.com/" +SRC_URI=" + parcheck? ( + https://github.com/nzbgetcom/par2cmdline-turbo/archive/v${PAR2_TURBO_VER}.tar.gz + -> nzbgetcom-par2turbo-${PAR2_TURBO_VER}.tar.gz + ) + https://github.com/nzbgetcom/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz +" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" +IUSE="ncurses +parcheck ssl test zlib" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/boost:= + dev-libs/libxml2:= + ncurses? ( sys-libs/ncurses:0= ) + ssl? ( dev-libs/openssl:0=[-bindist(-)] ) + zlib? ( virtual/zlib:= )" +RDEPEND=" + ${DEPEND} + acct-user/nzbget + acct-group/nzbget +" +BDEPEND=" + test? ( + || ( + app-arch/rar + app-arch/unrar + ) + ) + virtual/pkgconfig +" + +DOCS=( ChangeLog.md README.md nzbget.conf ) + +PATCHES=( + # Required to use par2-turbo downloaded into the source directory + "${FILESDIR}/${PN}-25.3-build-with-par2-turbo-offline.patch" + # Backported from https://github.com/nzbgetcom/nzbget/commit/063e1cd82ee719b18a1dae40f65c0971de44edef + "${FILESDIR}/${P}-fix-include-order.patch" +) + +src_prepare() { + if use parcheck; then + mv "${WORKDIR}/par2cmdline-turbo-${PAR2_TURBO_VER}" par2-turbo || die + fi + cmake_src_prepare + + # Update the main configuration file with the correct paths + sed -i nzbget.conf \ + -e "s:^WebDir=.*:WebDir=${EPREFIX}/usr/share/nzbget/webui:" \ + -e "s:^ConfigTemplate=.*:ConfigTemplate=${EPREFIX}/usr/share/nzbget/nzbget.conf:" \ + || die + # Update the daemon-specific configuration file (used by the OpenRC and + # systemd services) + sed nzbget.conf > nzbgetd.conf \ + -e "s:^MainDir=.*:MainDir=${EPREFIX}/var/lib/nzbget:" \ + -e "s:^LogFile=.*:LogFile=${EPREFIX}/var/log/nzbget/nzbget.log:" \ + -e 's:^DaemonUsername=.*:DaemonUsername=nzbget:' \ + || die +} + +src_configure() { + local mycmakeargs=( + -DDISABLE_CURSES=$(usex !ncurses) + -DDISABLE_PARCHECK=$(usex !parcheck) + -DDISABLE_TLS=$(usex !ssl) + -DDISABLE_GZIP=$(usex !zlib) + -DENABLE_TESTS=$(usex test) + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + insinto /etc + doins nzbget.conf + doins nzbgetd.conf + + # The configuration file's "ConfigTemplate" option points to this, we must + # make sure it exists as the Web UI reads it. It is not installed by + # default, see the "install-conf" target in cmake/install.cmake. + insinto /usr/share/nzbget + doins nzbget.conf + + keepdir /var/log/nzbget + + newinitd "${FILESDIR}"/nzbget.initd-r1 nzbget + newconfd "${FILESDIR}"/nzbget.confd nzbget + systemd_dounit "${FILESDIR}"/nzbget.service +} + +pkg_preinst() { + fowners nzbget:nzbget /var/log/nzbget + fperms 750 /var/log/nzbget + + fowners nzbget:nzbget /etc/nzbgetd.conf + fperms 640 /etc/nzbgetd.conf +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "Please add users that you want to be able to use the system-wide" + elog "nzbget daemon to the nzbget group. To access the daemon, run nzbget" + elog "with the --configfile /etc/nzbgetd.conf option." + elog + fi +} diff --git a/net-nntp/nzbget/nzbget-26.1.ebuild b/net-nntp/nzbget/nzbget-26.1.ebuild new file mode 100644 index 000000000000..d040e5ec3e61 --- /dev/null +++ b/net-nntp/nzbget/nzbget-26.1.ebuild @@ -0,0 +1,129 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake systemd + +PAR2_TURBO_VER="1.4.0-20260323" +RAPIDYENC_VER="1.1.1-20260217" +DESCRIPTION="A command-line based binary newsgrabber supporting .nzb files" +HOMEPAGE="https://nzbget.com/" +SRC_URI=" + parcheck? ( + https://github.com/nzbgetcom/par2cmdline-turbo/archive/v${PAR2_TURBO_VER}.tar.gz + -> nzbgetcom-par2turbo-${PAR2_TURBO_VER}.tar.gz + ) + https://github.com/nzbgetcom/rapidyenc/archive/v${RAPIDYENC_VER}.tar.gz + -> nzbgetcom-rapidyenc-${RAPIDYENC_VER}.tar.gz + https://github.com/nzbgetcom/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz +" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" +IUSE="ncurses +parcheck ssl test zlib" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/boost:= + dev-libs/libxml2:= + ncurses? ( sys-libs/ncurses:0= ) + ssl? ( dev-libs/openssl:0=[-bindist(-)] ) + zlib? ( virtual/zlib:= )" +RDEPEND=" + ${DEPEND} + acct-user/nzbget + acct-group/nzbget +" +BDEPEND=" + test? ( + || ( + app-arch/rar + app-arch/unrar + ) + ) + virtual/pkgconfig +" + +DOCS=( ChangeLog.md README.md nzbget.conf ) + +PATCHES=( + # Required to use par2-turbo downloaded into the source directory + "${FILESDIR}/${PN}-26.1-build-with-par2-turbo-offline.patch" + # Required to use rapidyenc downloaded into the source directory + "${FILESDIR}/${PN}-26.1-build-with-rapidyenc-offline.patch" + # Fix include order causing failures without precompiled headers, see + # https://github.com/nzbgetcom/nzbget/pull/782 + "${FILESDIR}/${PN}-26.1-fix-include-order.patch" +) + +src_prepare() { + if use parcheck; then + mv "${WORKDIR}/par2cmdline-turbo-${PAR2_TURBO_VER}" par2-turbo || die + fi + mv "${WORKDIR}/rapidyenc-${RAPIDYENC_VER}" rapidyenc || die + cmake_src_prepare + + # Update the main configuration file with the correct paths + sed -i nzbget.conf \ + -e "s:^WebDir=.*:WebDir=${EPREFIX}/usr/share/nzbget/webui:" \ + -e "s:^ConfigTemplate=.*:ConfigTemplate=${EPREFIX}/usr/share/nzbget/nzbget.conf:" \ + || die + # Update the daemon-specific configuration file (used by the OpenRC and + # systemd services) + sed nzbget.conf > nzbgetd.conf \ + -e "s:^MainDir=.*:MainDir=${EPREFIX}/var/lib/nzbget:" \ + -e "s:^LogFile=.*:LogFile=${EPREFIX}/var/log/nzbget/nzbget.log:" \ + -e 's:^DaemonUsername=.*:DaemonUsername=nzbget:' \ + || die +} + +src_configure() { + local mycmakeargs=( + -DDISABLE_CURSES=$(usex !ncurses) + -DDISABLE_PARCHECK=$(usex !parcheck) + -DDISABLE_TLS=$(usex !ssl) + -DDISABLE_GZIP=$(usex !zlib) + -DENABLE_TESTS=$(usex test) + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + insinto /etc + doins nzbget.conf + doins nzbgetd.conf + + # The configuration file's "ConfigTemplate" option points to this, we must + # make sure it exists as the Web UI reads it. It is not installed by + # default, see the "install-conf" target in cmake/install.cmake. + insinto /usr/share/nzbget + doins nzbget.conf + + keepdir /var/log/nzbget + + newinitd "${FILESDIR}"/nzbget.initd-r1 nzbget + newconfd "${FILESDIR}"/nzbget.confd nzbget + systemd_dounit "${FILESDIR}"/nzbget.service +} + +pkg_preinst() { + fowners nzbget:nzbget /var/log/nzbget + fperms 750 /var/log/nzbget + + fowners nzbget:nzbget /etc/nzbgetd.conf + fperms 640 /etc/nzbgetd.conf +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "Please add users that you want to be able to use the system-wide" + elog "nzbget daemon to the nzbget group. To access the daemon, run nzbget" + elog "with the --configfile /etc/nzbgetd.conf option." + elog + fi +} diff --git a/net-nntp/sabnzbd/Manifest b/net-nntp/sabnzbd/Manifest new file mode 100644 index 000000000000..5837dec445db --- /dev/null +++ b/net-nntp/sabnzbd/Manifest @@ -0,0 +1,2 @@ +DIST SABnzbd-4.5.5-src.tar.gz 5240879 BLAKE2B 3e2e061e7cff3b020d8807b81c01ea70f6a06cef13e5f02f935d3141c2b5e72921974a02faf16df302639a33d567d180b114ef5b4115eba45f9d50578cd2a273 SHA512 c388b87c894baa8b791b0f14b855f3a3b9114dcf9d3a7f0daba392f71b02271ec7419c1f03d9ca8c4b58fea541d7bb710bed097632aa4ebea75c391b5937a9ea +DIST SABnzbd-5.0.1-src.tar.gz 5300965 BLAKE2B 791544b944e42b158478bf4f13333cfa96cb256ac965959b2102b123810a46cb6dc96e90fe0b755dfe9569018a807aa039c81d647c2eaa7479cf153cf4933035 SHA512 940f997165eb7a511426512609e859ecd2b1474a6bf64d83f882de53beb73c5573f5d1f7ac645ada39dbd678e05b251df0d1429b13806aeaa96938ecc1769298 diff --git a/net-nntp/sabnzbd/files/sabnzbd-r1.ini b/net-nntp/sabnzbd/files/sabnzbd-r1.ini new file mode 100644 index 000000000000..5ccd7e19ca37 --- /dev/null +++ b/net-nntp/sabnzbd/files/sabnzbd-r1.ini @@ -0,0 +1,12 @@ +__version__ = 19 +[misc] +log_dir = /var/log/sabnzbd +admin_dir = /var/lib/sabnzbd/admin +cache_dir = /var/lib/sabnzbd/cache +complete_dir = /var/lib/sabnzbd/complete +download_dir = /var/lib/sabnzbd/download +dirscan_dir = /var/lib/sabnzbd/dirscan +nzb_backup_dir = /var/lib/sabnzbd/backup +auto_browser = 0 +host = :: +port = 8080 diff --git a/net-nntp/sabnzbd/files/sabnzbd-r1.initd b/net-nntp/sabnzbd/files/sabnzbd-r1.initd new file mode 100644 index 000000000000..eff3352a90b4 --- /dev/null +++ b/net-nntp/sabnzbd/files/sabnzbd-r1.initd @@ -0,0 +1,71 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +PIDFILE="/run/sabnzbd/sabnzbd.pid" + +depend() { + use dns +} + +get_var() { + grep -P -o -m 1 "(?<=^${1} = ).*" "${SABNZBD_CONFIGFILE}" || echo 0 +} + +start() { + ebegin "Starting SABnzbd" + + checkpath -q -d -o ${SABNZBD_USER}:${SABNZBD_GROUP} -m 0770 "$(dirname "${PIDFILE}")" + + start-stop-daemon \ + --quiet \ + --start \ + --user ${SABNZBD_USER} \ + --group ${SABNZBD_GROUP} \ + --pidfile "${PIDFILE}" \ + --wait 1000 \ + --exec /usr/share/sabnzbd/SABnzbd.py \ + -- \ + --config-file "${SABNZBD_CONFIGFILE}" \ + --logging "${SABNZBD_LOGGING}" \ + --daemon \ + --pidfile "${PIDFILE}" + + eend $? +} + +stop() { + local protocol="http" + local host="$(get_var "host")" + local port="$(get_var "port")" + + if [ $(get_var "enable_https") -eq 1 ]; then + protocol="https" + port="$(get_var "https_port")" + fi + + case "${host}" in + *:*) host="[${host}]" ;; + esac + + local url="${protocol}://${host}:${port}/sabnzbd/api?mode=shutdown" + + if [ $(get_var "disable_api_key") -eq 0 ]; then + url="${url}&apikey=$(get_var "api_key")" + fi + + local signals="TERM/1/KILL/1" + + ebegin "Stopping SABnzbd" + + if [ "$(wget -o /dev/null -t 1 -O - -T 10 "${url}")" = "ok" ]; then + signals="NULL/5/${signals}" + fi + + start-stop-daemon \ + --stop \ + --pidfile "${PIDFILE}" \ + --retry "${signals}" + + eend $? +} diff --git a/net-nntp/sabnzbd/files/sabnzbd.confd b/net-nntp/sabnzbd/files/sabnzbd.confd new file mode 100644 index 000000000000..c949355ec708 --- /dev/null +++ b/net-nntp/sabnzbd/files/sabnzbd.confd @@ -0,0 +1,6 @@ +SABNZBD_CONFIGFILE="/etc/sabnzbd/sabnzbd.ini" +SABNZBD_USER="sabnzbd" +SABNZBD_GROUP="sabnzbd" + +# 0 - error/warnings, 1 - info, 2 - debug +SABNZBD_LOGGING="1" diff --git a/net-nntp/sabnzbd/files/sabnzbd_at.service b/net-nntp/sabnzbd/files/sabnzbd_at.service new file mode 100644 index 000000000000..92c5eb91f171 --- /dev/null +++ b/net-nntp/sabnzbd/files/sabnzbd_at.service @@ -0,0 +1,10 @@ +[Unit] +Description=SABnzbd binary newsreader + +[Service] +ExecStart=/usr/share/sabnzbd/SABnzbd.py --logging 1 --browser 0 +User=sabnzbd +Group=sabnzbd + +[Install] +WantedBy=multi-user.target diff --git a/net-nntp/sabnzbd/metadata.xml b/net-nntp/sabnzbd/metadata.xml new file mode 100644 index 000000000000..085271e2aa70 --- /dev/null +++ b/net-nntp/sabnzbd/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>joe@wt.gd</email> + <name>Joe Kappus</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <upstream> + <remote-id type="cpe">cpe:/a:sabnzbd:sabnzbd</remote-id> + </upstream> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/net-nntp/sabnzbd/sabnzbd-4.5.5.ebuild b/net-nntp/sabnzbd/sabnzbd-4.5.5.ebuild new file mode 100644 index 000000000000..9c35201fb799 --- /dev/null +++ b/net-nntp/sabnzbd/sabnzbd-4.5.5.ebuild @@ -0,0 +1,178 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +PYTHON_COMPAT=( python3_{13..14} ) +PYTHON_REQ_USE="sqlite" + +inherit optfeature python-single-r1 systemd + +MY_PV="${PV/_alpha/Alpha}" +MY_PV="${MY_PV/_beta/Beta}" +MY_PV="${MY_PV/_rc/RC}" + +MY_P="SABnzbd-${MY_PV}" + +DESCRIPTION="Binary newsgrabber with web-interface" +HOMEPAGE="https://sabnzbd.org/" +SRC_URI="https://github.com/sabnzbd/sabnzbd/releases/download/${MY_PV}/${MY_P}-src.tar.gz" +S="${WORKDIR}/${MY_P}" + +# Sabnzbd is GPL-2 but bundles software with the following licenses. +LICENSE="GPL-2 BSD LGPL-2 MIT BSD-1" +SLOT="0" +KEYWORDS="amd64" +IUSE="test" +RESTRICT="!test? ( test )" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +DEPEND=" + acct-user/sabnzbd + acct-group/sabnzbd + ${PYTHON_DEPS} + $(python_gen_cond_dep ' + >=dev-python/apprise-1.9.2[${PYTHON_USEDEP}] + dev-python/chardet[${PYTHON_USEDEP}] + >=dev-python/cheetah3-3.4.0[${PYTHON_USEDEP}] + dev-python/cherrypy[${PYTHON_USEDEP}] + dev-python/configobj[${PYTHON_USEDEP}] + dev-python/cryptography[${PYTHON_USEDEP}] + >=dev-python/feedparser-6.0.11[${PYTHON_USEDEP}] + >=dev-python/guessit-3.8.0[${PYTHON_USEDEP}] + dev-python/notify2[${PYTHON_USEDEP}] + dev-python/portend[${PYTHON_USEDEP}] + dev-python/puremagic[${PYTHON_USEDEP}] + ~dev-python/rarfile-4.2[${PYTHON_USEDEP}] + ~dev-python/sabctools-8.2.6[${PYTHON_USEDEP}] + ') +" +RDEPEND=" + ${DEPEND} + || ( + >=app-arch/par2cmdline-0.8 + >=app-arch/par2cmdline-turbo-1.1.0 + ) + net-misc/wget +" +BDEPEND=" + test? ( + $(python_gen_cond_dep ' + dev-python/flaky[${PYTHON_USEDEP}] + >=dev-python/lxml-4.5.0[${PYTHON_USEDEP}] + >=dev-python/pyfakefs-5.6.0[${PYTHON_USEDEP}] + dev-python/pytest-asyncio[${PYTHON_USEDEP}] + dev-python/pytest-httpbin[${PYTHON_USEDEP}] + dev-python/pytest-httpserver[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/pytest[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/selenium[${PYTHON_USEDEP}] + dev-python/tavalidate[${PYTHON_USEDEP}] + >=dev-python/tavern-2[${PYTHON_USEDEP}] + dev-python/werkzeug[${PYTHON_USEDEP}] + dev-python/xmltodict[${PYTHON_USEDEP}] + ') + app-arch/7zip + app-arch/unrar + app-arch/unzip + www-apps/chromedriver-bin + ) +" + +src_test() { + local EPYTEST_IGNORE=( + # network sandbox + tests/test_getipaddress.py + tests/test_rss.py + tests/test_urlgrabber.py + tests/test_utils/test_happyeyeballs.py + tests/test_utils/test_internetspeed.py + ) + local EPYTEST_DESELECT=( + # network sandbox + 'tests/test_cfg.py::TestValidators::test_validate_host' + 'tests/test_consistency.py::TestWiki' + 'tests/test_newswrapper.py::TestNewsWrapper' + 'tests/test_happyeyeballs.py::TestHappyEyeballs' + 'tests/test_internetspeed.py::TestInternetSpeed' + 'tests/test_get_addrinfo.py' + # Just plain fails + 'tests/test_newsunpack.py::TestPar2Repair::test_basic' + # Does not work with pytest-8.x + 'tests/test_functional_api.py' + # Chromedriver tests don't want to behave in portage + 'tests/test_functional_config.py::TestBasicPages::test_base_pages' + 'tests/test_functional_config.py::TestBasicPages::test_base_submit_pages' + 'tests/test_functional_config.py::TestConfigLogin::test_login' + 'tests/test_functional_config.py::TestConfigCategories::test_page' + 'tests/test_functional_config.py::TestConfigRSS::test_rss_basic_flow' + 'tests/test_functional_config.py::TestConfigServers::test_add_and_remove_server' + 'tests/test_functional_downloads.py::TestDownloadFlow::test_download_basic_rar5' + 'tests/test_functional_downloads.py::TestDownloadFlow::test_download_zip' + 'tests/test_functional_downloads.py::TestDownloadFlow::test_download_7zip' + 'tests/test_functional_downloads.py::TestDownloadFlow::test_download_passworded' + 'tests/test_functional_downloads.py::TestDownloadFlow::test_download_fully_obfuscated' + 'tests/test_functional_downloads.py::TestDownloadFlow::test_download_unicode_rar' + 'tests/test_functional_misc.py::TestExtractPot::test_extract_pot' + 'tests/test_functional_misc.py::TestShowLogging::test_showlog' + 'tests/test_functional_misc.py::TestQueueRepair::test_queue_repair' + 'tests/test_functional_misc.py::TestDaemonizing::test_daemonizing' + 'tests/test_functional_sorting.py::TestDownloadSorting' + ) + + # The test suite is prone to being broken by random plugins that happen + # to be installed, so disable autoloading. + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + # Use PYTEST_PLUGINS instead of args to 'epytest' because the test suite + # calls pytest itself and the args would get lost. To get the list of plugins, + # if stuck, comment out the AUTOLOAD line above, look at the list of loaded + # plugins at the top of the pytest output, then translate those into module names + # by e.g. checking equery f. + local -x PYTEST_PLUGINS=pytest_mock,tavern,tavern._core.pytest,pyfakefs.pytest_plugin,pytest_asyncio.plugin + + epytest -s +} + +src_install() { + insinto /usr/share/${PN} + doins -r email icons interfaces locale po sabnzbd scripts tools + + exeinto /usr/share/${PN} + doexe SABnzbd.py + + python_fix_shebang "${ED}"/usr/share/${PN} + python_optimize "${ED}"/usr/share/${PN} + + newinitd "${FILESDIR}"/${PN}-r1.initd ${PN} + newconfd "${FILESDIR}"/${PN}.confd ${PN} + + diropts -o ${PN} -g ${PN} + dodir /etc/${PN} + keepdir /var/log/${PN} + + insinto "/etc/${PN}" + insopts -m 0600 -o "${PN}" -g "${PN}" + newins "${FILESDIR}"/${PN}-r1.ini ${PN}.ini + + dodoc ISSUES.txt README.mkd + + systemd_newunit "${FILESDIR}"/sabnzbd_at.service 'sabnzbd@.service' +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + # This is a new installation + einfo "Default directory: /var/lib/${PN}" + einfo + einfo "To add a user to the sabnzbd group so it can edit SABnzbd+ files, run:" + einfo + einfo " usermod -a -G sabnzbd <user>" + einfo + einfo "By default, SABnzbd will listen on TCP port 8080." + fi + + optfeature "7z archive support" app-arch/7zip + optfeature "rar archive support" app-arch/unrar app-arch/rar + optfeature "zip archive support" app-arch/unzip +} diff --git a/net-nntp/sabnzbd/sabnzbd-5.0.1.ebuild b/net-nntp/sabnzbd/sabnzbd-5.0.1.ebuild new file mode 100644 index 000000000000..5fd9736b476c --- /dev/null +++ b/net-nntp/sabnzbd/sabnzbd-5.0.1.ebuild @@ -0,0 +1,156 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +PYTHON_COMPAT=( python3_{13..14} ) +PYTHON_REQ_USE="sqlite" + +inherit optfeature python-single-r1 systemd + +MY_PV="${PV/_alpha/Alpha}" +MY_PV="${MY_PV/_beta/Beta}" +MY_PV="${MY_PV/_rc/RC}" + +MY_P="SABnzbd-${MY_PV}" + +DESCRIPTION="Binary newsgrabber with web-interface" +HOMEPAGE="https://sabnzbd.org/" +SRC_URI="https://github.com/sabnzbd/sabnzbd/releases/download/${MY_PV}/${MY_P}-src.tar.gz" +S="${WORKDIR}/${MY_P}" + +# SABnzbd is GPL-2+ but bundles JS/CSS libraries and Python modules +# with their own licenses (Bootstrap, jQuery, Knockout, rarfile, etc). +LICENSE="GPL-2+ Apache-2.0 CC-BY-3.0 ISC LGPL-2.1+ MIT" +SLOT="0" +KEYWORDS="~amd64" +IUSE="test" +RESTRICT="!test? ( test )" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +DEPEND=" + acct-user/sabnzbd + acct-group/sabnzbd + ${PYTHON_DEPS} + $(python_gen_cond_dep ' + >=dev-python/apprise-1.9.2[${PYTHON_USEDEP}] + dev-python/chardet[${PYTHON_USEDEP}] + >=dev-python/cheetah3-3.4.0[${PYTHON_USEDEP}] + dev-python/cherrypy[${PYTHON_USEDEP}] + dev-python/configobj[${PYTHON_USEDEP}] + dev-python/cryptography[${PYTHON_USEDEP}] + >=dev-python/feedparser-6.0.11[${PYTHON_USEDEP}] + >=dev-python/guessit-3.8.0[${PYTHON_USEDEP}] + dev-python/notify2[${PYTHON_USEDEP}] + dev-python/portend[${PYTHON_USEDEP}] + dev-python/puremagic[${PYTHON_USEDEP}] + ~dev-python/rarfile-4.2[${PYTHON_USEDEP}] + ~dev-python/sabctools-9.4.0[${PYTHON_USEDEP}] + ') +" +RDEPEND=" + ${DEPEND} + || ( + >=app-arch/par2cmdline-0.8 + >=app-arch/par2cmdline-turbo-1.1.0 + ) + net-misc/wget +" +BDEPEND=" + test? ( + $(python_gen_cond_dep ' + dev-python/flaky[${PYTHON_USEDEP}] + dev-python/lxml[${PYTHON_USEDEP}] + dev-python/pyfakefs[${PYTHON_USEDEP}] + dev-python/pytest-asyncio[${PYTHON_USEDEP}] + dev-python/pytest-httpbin[${PYTHON_USEDEP}] + dev-python/pytest-httpserver[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/pytest[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/selenium[${PYTHON_USEDEP}] + dev-python/tavalidate[${PYTHON_USEDEP}] + >=dev-python/tavern-3[${PYTHON_USEDEP}] + dev-python/werkzeug[${PYTHON_USEDEP}] + dev-python/xmltodict[${PYTHON_USEDEP}] + ') + app-arch/7zip + app-arch/unrar + app-arch/unzip + ) +" + +src_test() { + local EPYTEST_IGNORE=( + # network sandbox + tests/test_get_addrinfo.py + tests/test_getipaddress.py + tests/test_internetspeed.py + # Requires chromedriver + tests/test_functional_config.py + tests/test_functional_downloads.py + tests/test_functional_sorting.py + ) + local EPYTEST_DESELECT=( + # bug #973599 + 'tests/test_downloader.py::TestConnectionStateMachine::test_failed_connect_allows_retry' + # network sandbox + 'tests/test_cfg.py::TestValidators::test_validate_host' + 'tests/test_consistency.py::TestWiki' + 'tests/test_rss.py::TestRSS::test_rss_newznab_parser' + 'tests/test_rss.py::TestRSS::test_rss_nzedb_parser' + 'tests/test_urlgrabber.py::TestBuildRequest::test_http_basic' + 'tests/test_urlgrabber.py::TestBuildRequest::test_https_basic' + # Requires chromedriver + 'tests/test_functional_misc.py::TestShowLogging::test_showlog' + 'tests/test_functional_misc.py::TestQueueRepair::test_queue_repair' + 'tests/test_functional_misc.py::TestDaemonizing::test_daemonizing' + # Runs extract_pot.py which needs the git repo + 'tests/test_functional_misc.py::TestExtractPot::test_extract_pot' + ) + + epytest -s +} + +src_install() { + insinto /usr/share/${PN} + doins -r email icons interfaces locale po sabnzbd scripts tools + + exeinto /usr/share/${PN} + doexe SABnzbd.py + + python_fix_shebang "${ED}"/usr/share/${PN} + python_optimize "${ED}"/usr/share/${PN} + + newinitd "${FILESDIR}"/${PN}-r1.initd ${PN} + newconfd "${FILESDIR}"/${PN}.confd ${PN} + + diropts -o ${PN} -g ${PN} + dodir /etc/${PN} + keepdir /var/log/${PN} + + insinto "/etc/${PN}" + insopts -m 0600 -o "${PN}" -g "${PN}" + newins "${FILESDIR}"/${PN}-r1.ini ${PN}.ini + + dodoc ISSUES.txt README.mkd + + systemd_newunit "${FILESDIR}"/sabnzbd_at.service 'sabnzbd@.service' +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + # This is a new installation + einfo "Default directory: /var/lib/${PN}" + einfo + einfo "To add a user to the sabnzbd group so it can edit SABnzbd+ files, run:" + einfo + einfo " usermod -a -G sabnzbd <user>" + einfo + einfo "By default, SABnzbd will listen on TCP port 8080." + fi + + optfeature "7z archive support" app-arch/7zip + optfeature "rar archive support" app-arch/unrar app-arch/rar + optfeature "zip archive support" app-arch/unzip +} diff --git a/net-nntp/suck/Manifest b/net-nntp/suck/Manifest new file mode 100644 index 000000000000..54abbc71bd4b --- /dev/null +++ b/net-nntp/suck/Manifest @@ -0,0 +1 @@ +DIST suck-4.3.5.tar.gz 153874 BLAKE2B ecc7d20f8844890acae94bb154583ace66b02c594514e925500cb9337aa1678622622286aaefedda066e73236d136e2383a846f0013f7e65f657757ae6cee818 SHA512 7bf7196db62416800c040ff9afd545c8a62e50a7f8dcb914aef1105d4bdc57ec4c198b1a42d5ad4e3c9455ddca3d516a55ca9cc62c88e010e8ba8eb4fcbeb275 diff --git a/net-nntp/suck/metadata.xml b/net-nntp/suck/metadata.xml new file mode 100644 index 000000000000..1c44d249d208 --- /dev/null +++ b/net-nntp/suck/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>contact@hacktivis.me</email> + <name>Haelwenn (lanodan) Monnier</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/net-nntp/suck/suck-4.3.5.ebuild b/net-nntp/suck/suck-4.3.5.ebuild new file mode 100644 index 000000000000..115936d713ca --- /dev/null +++ b/net-nntp/suck/suck-4.3.5.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools + +DESCRIPTION="Grab news from a remote NNTP server and feed them to another" +HOMEPAGE="https://lazarus-pkgs.github.io/lazarus-pkgs/suck.html" +SRC_URI="https://github.com/lazarus-pkgs/suck/archive/${PV}.tar.gz -> ${P}.tar.gz" +LICENSE="public-domain" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="perl selinux ssl" + +RDEPEND=" + sys-libs/gdbm:= + ssl? ( + dev-libs/openssl:0= + ) +" +DEPEND="${RDEPEND} + sys-libs/db + perl? ( dev-lang/perl ) +" +RDEPEND+=" selinux? ( sec-policy/selinux-inn )" + +src_prepare() { + default + + rm java/*.class || die + + # Fix paths to the locations in Gentoo + sed -i \ + -e 's:/usr/bin/rnews:/usr/$(get_libdir)/news/bin/rnews:' \ + -e 's:/var/lib/news/history:/var/spool/news/db/history:' \ + suck_config.h || die "path adaption sed failed" + + eautoreconf +} + +src_configure() { + if use ssl; then + sed -i -e 's/^SSL_/#SSL_/' Makefile.in || die "ssl sed failed" + fi + + if use perl; then + sed -i -e 's/^PERL_/#PERL_/' Makefile.in || die "perl sed failed" + fi + + econf --without-inn-lib --without-inn-include +} + +src_compile() { + emake phrases.h + emake all lpost +} + +src_install() { + dobin lmove lpost rpost suck testhost + doman man/* + dodoc CHANGELOG CONTENTS README* + docinto java + dodoc java/* + docinto perl + dodoc perl/* + docinto sample + dodoc sample/* +} diff --git a/net-nntp/tin/Manifest b/net-nntp/tin/Manifest new file mode 100644 index 000000000000..d74d8a23b157 --- /dev/null +++ b/net-nntp/tin/Manifest @@ -0,0 +1 @@ +DIST tin-2.6.4.tar.xz 1640064 BLAKE2B 7a9ec66a55db282b2b3b7c977dfafd47cb72224873369ebbce05865a92719253f59a17d1b79fcee98c1c10a88e323eddcd88d40ea6719be96a407ed361aa4107 SHA512 63d7d8bf9d00644b05f128ab78960a1a1ccbeebbec9721517dc4971d07459d0a547adfd4eb8446a695d7303b43f45168a203c29f318b66fc79e4aba80cf8cc97 diff --git a/net-nntp/tin/metadata.xml b/net-nntp/tin/metadata.xml new file mode 100644 index 000000000000..f3c5a987b09d --- /dev/null +++ b/net-nntp/tin/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <upstream> + <doc>http://www.tin.org/bin/man.cgi?section=1&topic=tin</doc> + </upstream> + <use> + <flag name="cancel-locks">Enable Cancel-Lock header functionality</flag> + <flag name="gpg">Enable <pkg>app-crypt/gnupg</pkg> support</flag> + <flag name="libtls" restrict=">=net-nntp/tin-2.6.2">Prefer <pkg>dev-libs/libretls</pkg> as SSL/TLS provider (ineffective with USE=-ssl)</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/net-nntp/tin/tin-2.6.4.ebuild b/net-nntp/tin/tin-2.6.4.ebuild new file mode 100644 index 000000000000..95930a5eacdf --- /dev/null +++ b/net-nntp/tin/tin-2.6.4.ebuild @@ -0,0 +1,128 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit optfeature toolchain-funcs + +DESCRIPTION="A threaded NNTP and spool based UseNet newsreader" +HOMEPAGE="http://www.tin.org/" +SRC_URI="ftp://ftp.tin.org/pub/news/clients/tin/stable/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="amd64 arm ppc x86" +IUSE="cancel-locks debug gnutls gpg libtls nls sasl socks5 ssl" + +RDEPEND=" + dev-libs/icu:= + dev-libs/libpcre2:= + >=dev-libs/uriparser-0.9.8 + dev-libs/uulib + net-dns/libidn2:= + sys-libs/ncurses:= + virtual/zlib:= + virtual/libiconv + cancel-locks? ( >=net-libs/canlock-3.0:= ) + gpg? ( app-crypt/gnupg ) + nls? ( virtual/libintl ) + sasl? ( net-misc/gsasl[client] ) + socks5? ( net-proxy/dante ) + ssl? ( + gnutls? ( net-libs/gnutls:= ) + !gnutls? ( + libtls? ( dev-libs/libretls:= ) + !libtls? ( dev-libs/openssl:= ) + ) + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + app-alternatives/yacc + virtual/pkgconfig + nls? ( sys-devel/gettext ) +" + +QA_CONFIG_IMPL_DECL_SKIP=( + # Windows only (bug #900278) + memset_s + + # checking if the socks library uses socks4 prefix + Rinit + init +) + +DOCS=( + README{,.MAC,.WIN} + doc/{CHANGES{,.old},CREDITS,TODO,WHATSNEW,filtering} +) + +src_configure() { + tc-export AR CC RANLIB + tc-export_build_env + + # The build incorrectly discards its local -I if $CPPFLAGS is set. + if [[ -n ${BUILD_CPPFLAGS} ]]; then + BUILD_CPPFLAGS+=' -I$(INCDIR)' + fi + + local myeconfargs=( + $(use_enable cancel-locks) + $(use_with cancel-locks canlock) + + $(use_enable debug) + $(use_enable gpg pgp-gpg) + $(use_enable nls) + $(use_with socks5) + --disable-mime-strict-charset + --enable-nntp + --enable-prototypes + --without-pcre + --with-pcre2-config + --with-coffee # easter egg :) + --with-nntp-default-server="${TIN_DEFAULT_SERVER:-${NNTPSERVER:-news.gmane.io}}" + --with-screen=ncursesw + ) + + if use ssl; then + if use gnutls; then + myeconfargs+=( --with-nntps=gnutls ) + elif use libtls; then + myeconfargs+=( --with-nntps=libtls ) + else + myeconfargs+=( --with-nntps=openssl ) + fi + fi + + myeconfargs+=( + # set default paths for utilities + --with-editor="${EPREFIX}"/usr/libexec/editor + --with-gpg="${EPREFIX}"/usr/bin/gpg + --with-ispell="${EPREFIX}"/usr/bin/aspell + --with-mailer="${EPREFIX}"/bin/mail + + # set default paths for directories + --with-libdir="${EPREFIX}"/var/lib/news + --with-spooldir="${EPREFIX}"/var/spool/news + ) + + econf "${myeconfargs[@]}" +} + +src_compile() { + # To build from the root dir you have to call `make build`, not just `make`. + emake build +} + +src_install() { + default + + emake DESTDIR="${D}" install_sysdefs + emake -C src DESTDIR="${D}" install_nls_man + + dodoc doc/{*.sample,*.txt} +} + +pkg_postinst() { + optfeature "spell checker support" app-text/aspell +} |
