6 Commits

Author SHA256 Message Date
0b1d7c1f4f Accepting request 1320845 from server:irc
OBS-URL: https://build.opensuse.org/request/show/1320845
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/znc?expand=0&rev=34
2025-12-02 16:22:38 +00:00
8c6ee60d36 - Add znc-swig-4.4.patch: Fix build against swig 4.4
Patch submitted at https://github.com/znc/znc/pull/1986

OBS-URL: https://build.opensuse.org/package/show/server:irc/znc?expand=0&rev=110
2025-12-02 12:58:59 +00:00
7b76402c80 Accepting request 1290201 from server:irc
OBS-URL: https://build.opensuse.org/request/show/1290201
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/znc?expand=0&rev=33
2025-07-06 15:07:26 +00:00
299e3221b7 - update to 1.10.1:
* Fix use-after-free in capabilities handling. The visible effect of this was
    either crash, or some capabilities having wrong state
  * Fix nullptr dereference in TAGMSG handling
  * Preserve `DisableClientCap/DisableServerCap` settings when writing config
  * The listening unix socket can now be configured to belong to a specific
    group and/or to have a specific file access mode. The syntax for AddPort
    command is `unix:ssl,group=mygroup,mode=666:/path`, some of these options
    can be skipped if the feature is not needed

OBS-URL: https://build.opensuse.org/package/show/server:irc/znc?expand=0&rev=108
2025-07-03 11:48:21 +00:00
dbaaaf45b2 Accepting request 1284802 from server:irc
OBS-URL: https://build.opensuse.org/request/show/1284802
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/znc?expand=0&rev=32
2025-06-11 14:27:48 +00:00
da9b59877a - update to 1.10.0:
* SASL v3.1 and v3.2 for clients
  * Added a way to disable capabilities
  * Warn user if flood protection is delaying the messages for too long
  * Added experimental support for unix sockets
  * `znc --makepem` now takes the CN from `gethostname()` and `uname()` if available
  * Fixed high CPU usage when ZNC is connecting to a server
  * Sped up capability negotiation with the server
  * Don't forward client JOINs during registration
  * Fixed the translation pipeline again
  * Fixed sending server passwords with spaces in them
  * CTCP sent to `*status` shouldn't reach server
  * Made PING skip the flood protection queue just like PONG does
  * Made CTCP flood timer use monotonic time
  * certauth: it's no longer required to send a garbage password via `PASS` command, if
    the client uses SASL EXTERNAL
  * log: don't log user quits to logs of channels that are disabled
  * modperl: removed usage of deprecated keywords `given`/`when`
  * sasl: if RequireAuth is set, but SASL failed, don't disable the network anymore
  * webadmin:
    - fixed editing fields which are allowed to be edited while
      `DenySetNetwork` is set.
    - removed old compatibility code for pre-0.090 versions of parsing
      arguments to module to open another web port.

OBS-URL: https://build.opensuse.org/package/show/server:irc/znc?expand=0&rev=106
2025-06-11 11:37:52 +00:00
7 changed files with 214 additions and 47 deletions

3
znc-1.10.1.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4e6e76851dbf2606185972b53ec5decad68fe53b63a56e4df8b8b3c0a6c46800
size 2310976

BIN
znc-1.10.1.tar.gz.sig Normal file

Binary file not shown.

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e8a7cf80e19aad510b4e282eaf61b56bc30df88ea2e0f64fadcdd303c4894f3c
size 2236498

Binary file not shown.

118
znc-swig-4.4.patch Normal file
View File

@@ -0,0 +1,118 @@
Index: znc-1.10.1/modules/modpython/codegen.pl
===================================================================
--- znc-1.10.1.orig/modules/modpython/codegen.pl
+++ znc-1.10.1/modules/modpython/codegen.pl
@@ -49,6 +49,8 @@ print $out <<'EOF';
* Don't change it manually. *
***************************************************************************/
+#include "swig_version.h"
+
namespace {
inline swig_type_info* ZNC_SWIG_pchar_descriptor(void) {
static int init = 0;
@@ -60,11 +62,10 @@ namespace {
return info;
}
-// SWIG 4.2.0 replaced SWIG_Python_str_AsChar with SWIG_PyUnicode_AsUTF8AndSize.
-// SWIG doesn't provide any good way to detect SWIG version (other than parsing
-// `swig -version`), but it also introduced SWIG_NULLPTR in 4.2.0.
-// So let's abuse that define to do different code for new SWIG.
-#ifdef SWIG_NULLPTR
+// SWIG_VERSION is defined as 0x040200 for 4.2.0.
+// We use this to detect modern SWIG versions and avoid the "abuse" of
+// SWIG_NULLPTR, which was removed in SWIG 4.4.
+#if defined(SWIG_VERSION) && SWIG_VERSION >= 0x040200
// This is copied/adapted from SWIG 4.2.0 from pystrings.swg
inline int ZNC_SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) {
#if PY_VERSION_HEX>=0x03000000
Index: znc-1.10.1/modules/modpython/CMakeLists.txt
===================================================================
--- znc-1.10.1.orig/modules/modpython/CMakeLists.txt
+++ znc-1.10.1/modules/modpython/CMakeLists.txt
@@ -29,6 +29,17 @@ if(APPLE)
endif()
if(SWIG_FOUND)
+ set(SWIG_VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/swig_version.h")
+
+ add_custom_command(
+ OUTPUT "${SWIG_VERSION_HEADER}"
+ COMMAND ${CMAKE_COMMAND}
+ -DSWIG_EXECUTABLE=${SWIG_EXECUTABLE}
+ -DSWIG_VERSION_HEADER=${SWIG_VERSION_HEADER}
+ -P "${CMAKE_CURRENT_SOURCE_DIR}/generate_swig_version.cmake"
+ DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/generate_swig_version.cmake"
+ )
+
add_custom_command(
OUTPUT "pyfunctions.cpp"
COMMAND "${PERL_EXECUTABLE}"
@@ -36,7 +47,7 @@ if(SWIG_FOUND)
"${CMAKE_CURRENT_SOURCE_DIR}/functions.in"
"pyfunctions.cpp"
VERBATIM
- DEPENDS codegen.pl functions.in)
+ DEPENDS codegen.pl functions.in "${SWIG_VERSION_HEADER}")
add_custom_command(
OUTPUT "swigpyrun.h"
Index: znc-1.10.1/modules/modpython/generate_swig_version.cmake
===================================================================
--- /dev/null
+++ znc-1.10.1/modules/modpython/generate_swig_version.cmake
@@ -0,0 +1,53 @@
+# generate_swig_version.cmake
+execute_process(
+ COMMAND ${SWIG_EXECUTABLE} -version
+ OUTPUT_VARIABLE SWIG_OUTPUT
+ ERROR_VARIABLE SWIG_ERROR
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_STRIP_TRAILING_WHITESPACE
+)
+
+set(FULL_OUTPUT "${SWIG_OUTPUT}\n${SWIG_ERROR}")
+
+string(REGEX MATCH "SWIG Version ([0-9]+)\\.([0-9]+)\\.([0-9]+)" MATCH_FOUND "${FULL_OUTPUT}")
+
+if(MATCH_FOUND)
+ # Extract capture groups
+ set(SWIG_VERSION_MAJOR ${CMAKE_MATCH_1})
+ set(SWIG_VERSION_MINOR ${CMAKE_MATCH_2})
+ set(SWIG_VERSION_PATCH ${CMAKE_MATCH_3})
+
+ message(STATUS "Found SWIG Version: ${SWIG_VERSION_MAJOR}.${SWIG_VERSION_MINOR}.${SWIG_VERSION_PATCH}")
+
+ # Format: 0x<MAJ><MIN><PATCH> (assuming 8 bits per component)
+ # Calculation: (Major << 16) | (Minor << 8) | Patch
+
+ math(EXPR VERSION_NUM
+ "(${SWIG_VERSION_MAJOR} << 16) + (${SWIG_VERSION_MINOR} << 8) + ${SWIG_VERSION_PATCH}"
+ OUTPUT_FORMAT HEXADECIMAL
+ )
+
+ set(HEADER_FILE "swig_version.h")
+
+ file(WRITE ${SWIG_VERSION_HEADER}
+"// Auto-generated by CMake
+#ifndef SWIG_VERSION_META_H
+#define SWIG_VERSION_META_H
+
+#define SWIG_VERSION_MAJOR ${SWIG_VERSION_MAJOR}
+#define SWIG_VERSION_MINOR ${SWIG_VERSION_MINOR}
+#define SWIG_VERSION_PATCH ${SWIG_VERSION_PATCH}
+
+// Hex format 0xMAJMINPAT (e.g. 4.1.0 -> 0x40100)
+#define SWIG_VERSION ${VERSION_NUM}
+
+#endif // SWIG_VERSION_META_H
+"
+ )
+
+ message(STATUS "Generated ${HEADER_FILE} with version ${VERSION_NUM}")
+
+else()
+ message(WARNING "Could not parse SWIG version from output:\n${FULL_OUTPUT}")
+endif()
+

View File

@@ -1,3 +1,50 @@
-------------------------------------------------------------------
Tue Dec 2 10:14:11 UTC 2025 - Dominique Leuenberger <dimstar@opensuse.org>
- Add znc-swig-4.4.patch: Fix build against swig 4.4
Patch submitted at https://github.com/znc/znc/pull/1986
-------------------------------------------------------------------
Thu Jul 3 07:51:26 UTC 2025 - Richard Rahl <rrahl0@opensuse.org>
- update to 1.10.1:
* Fix use-after-free in capabilities handling. The visible effect of this was
either crash, or some capabilities having wrong state
* Fix nullptr dereference in TAGMSG handling
* Preserve `DisableClientCap/DisableServerCap` settings when writing config
* The listening unix socket can now be configured to belong to a specific
group and/or to have a specific file access mode. The syntax for AddPort
command is `unix:ssl,group=mygroup,mode=666:/path`, some of these options
can be skipped if the feature is not needed
-------------------------------------------------------------------
Tue Jun 10 14:48:13 UTC 2025 - Richard Rahl <rrahl0@opensuse.org>
- update to 1.10.0:
* SASL v3.1 and v3.2 for clients
* Added a way to disable capabilities
* Warn user if flood protection is delaying the messages for too long
* Added experimental support for unix sockets
* `znc --makepem` now takes the CN from `gethostname()` and `uname()` if available
* Fixed high CPU usage when ZNC is connecting to a server
* Sped up capability negotiation with the server
* Don't forward client JOINs during registration
* Fixed the translation pipeline again
* Fixed sending server passwords with spaces in them
* CTCP sent to `*status` shouldn't reach server
* Made PING skip the flood protection queue just like PONG does
* Made CTCP flood timer use monotonic time
* certauth: it's no longer required to send a garbage password via `PASS` command, if
the client uses SASL EXTERNAL
* log: don't log user quits to logs of channels that are disabled
* modperl: removed usage of deprecated keywords `given`/`when`
* sasl: if RequireAuth is set, but SASL failed, don't disable the network anymore
* webadmin:
- fixed editing fields which are allowed to be edited while
`DenySetNetwork` is set.
- removed old compatibility code for pre-0.090 versions of parsing
arguments to module to open another web port.
-------------------------------------------------------------------
Tue Sep 17 16:12:05 UTC 2024 - Richard Rahl <rrahl0@opensuse.org>

View File

@@ -1,7 +1,7 @@
#
# spec file for package znc
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: znc
Version: 1.9.1
Version: 1.10.1
Release: 0
Summary: Advanced IRC Bouncer
License: Apache-2.0
@@ -27,12 +27,13 @@ Source1: %{url}/releases/%{name}-%{version}.tar.gz.sig
Source2: https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xd5823cacb477191cac0075555ae420cc0209989e#/%{name}.keyring
Source3: %{name}.service
Patch0: no-timestamp.patch
Patch1: znc-swig-4.4.patch
BuildRequires: cmake >= 3.13
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: gettext
BuildRequires: libboost_locale-devel
BuildRequires: libboost_locale-devel >= 1.70
BuildRequires: perl
BuildRequires: pkgconfig
BuildRequires: swig >= 4.0.1
@@ -160,86 +161,87 @@ getent passwd %{name} >/dev/null || useradd -r -g %{name} -s /bin/false -c "znc
%files
%license LICENSE
%doc README.md
%{_unitdir}/%{name}.service
%{_sbindir}/rc%{name}
%{_bindir}/%{name}
%attr(750,%{name},%{name}) %{_var}/lib/%{name}
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/autoattach.so
%{_bindir}/%{name}
%{_datadir}/%{name}
%{_libdir}/%{name}/admindebug.so
%{_libdir}/%{name}/adminlog.so
%{_libdir}/%{name}/alias.so
%{_libdir}/%{name}/autoattach.so
%{_libdir}/%{name}/autocycle.so
%{_libdir}/%{name}/autoop.so
%{_libdir}/%{name}/autoreply.so
%{_libdir}/%{name}/autovoice.so
%{_libdir}/%{name}/awaynick.so
%{_libdir}/%{name}/awaystore.so
%{_libdir}/%{name}/block_motd.so
%{_libdir}/%{name}/blockuser.so
%{_libdir}/%{name}/bouncedcc.so
%{_libdir}/%{name}/buffextras.so
%{_libdir}/%{name}/cert.so
%{_libdir}/%{name}/certauth.so
%{_libdir}/%{name}/chansaver.so
%{_libdir}/%{name}/clearbufferonmsg.so
%{_libdir}/%{name}/clientnotify.so
%{_libdir}/%{name}/controlpanel.so
%{_libdir}/%{name}/corecaps.so
%{_libdir}/%{name}/crypt.so
%{_libdir}/%{name}/ctcpflood.so
%{_libdir}/%{name}/cyrusauth.so
%{_libdir}/%{name}/dcc.so
%{_libdir}/%{name}/disconkick.so
%{_libdir}/%{name}/fail2ban.so
%{_libdir}/%{name}/flooddetach.so
%{_libdir}/%{name}/identfile.so
%{_libdir}/%{name}/imapauth.so
%{_libdir}/%{name}/keepnick.so
%{_libdir}/%{name}/kickrejoin.so
%{_libdir}/%{name}/nickserv.so
%{_libdir}/%{name}/perform.so
%{_libdir}/%{name}/raw.so
%{_libdir}/%{name}/sample.so
%{_libdir}/%{name}/savebuff.so
%{_libdir}/%{name}/schat.so
%{_libdir}/%{name}/shell.so
%{_libdir}/%{name}/simple_away.so
%{_libdir}/%{name}/stickychan.so
%{_libdir}/%{name}/watch.so
%{_libdir}/%{name}/webadmin.so
%{_libdir}/%{name}/awaystore.so
%{_libdir}/%{name}/controlpanel.so
%{_libdir}/%{name}/cyrusauth.so
%{_libdir}/%{name}/missingmotd.so
%{_libdir}/%{name}/modules_online.so
%{_libdir}/%{name}/sasl.so
%{_libdir}/%{name}/adminlog.so
%{_libdir}/%{name}/autoreply.so
%{_libdir}/%{name}/autovoice.so
%{_libdir}/%{name}/block_motd.so
%{_libdir}/%{name}/blockuser.so
%{_libdir}/%{name}/buffextras.so
%{_libdir}/%{name}/cert.so
%{_libdir}/%{name}/certauth.so
%{_libdir}/%{name}/clearbufferonmsg.so
%{_libdir}/%{name}/ctcpflood.so
%{_libdir}/%{name}/disconkick.so
%{_libdir}/%{name}/flooddetach.so
%{_libdir}/%{name}/lastseen.so
%{_libdir}/%{name}/listsockets.so
%{_libdir}/%{name}/log.so
%{_libdir}/%{name}/missingmotd.so
%{_libdir}/%{name}/modules_online.so
%{_libdir}/%{name}/nickserv.so
%{_libdir}/%{name}/notes.so
%{_libdir}/%{name}/notify_connect.so
%{_libdir}/%{name}/perform.so
%{_libdir}/%{name}/raw.so
%{_libdir}/%{name}/route_replies.so
%{_libdir}/%{name}/send_raw.so
%{_libdir}/%{name}/stripcontrols.so
%{_libdir}/%{name}/sample.so
%{_libdir}/%{name}/samplewebapi.so
%{_libdir}/%{name}/corecaps.so
%{_datadir}/%{name}
%{_libdir}/%{name}/sasl.so
%{_libdir}/%{name}/saslplainauth.so
%{_libdir}/%{name}/savebuff.so
%{_libdir}/%{name}/schat.so
%{_libdir}/%{name}/send_raw.so
%{_libdir}/%{name}/shell.so
%{_libdir}/%{name}/simple_away.so
%{_libdir}/%{name}/stickychan.so
%{_libdir}/%{name}/stripcontrols.so
%{_libdir}/%{name}/watch.so
%{_libdir}/%{name}/webadmin.so
%{_mandir}/man?/%{name}.?%{?ext_man}
%attr(750,%{name},%{name}) %{_var}/lib/%{name}
%{_sbindir}/rc%{name}
%{_unitdir}/%{name}.service
%files lang -f %{name}.lang
%files perl
%{_libdir}/%{name}/modperl.so
%dir %{_libdir}/%{name}/modperl
%{_libdir}/%{name}/modperl.so
%{_libdir}/%{name}/modperl/ZNC.pm
%{_libdir}/%{name}/modperl/ZNC.so
%{_libdir}/%{name}/modperl/startup.pl
%{_libdir}/%{name}/perleval.pm
%files python3
%{_libdir}/%{name}/pyeval.py
%{_libdir}/%{name}/modpython.so
%dir %{_libdir}/%{name}/modpython/
%{_libdir}/%{name}/modpython.so
%{_libdir}/%{name}/modpython/_znc_core.so
%{_libdir}/%{name}/modpython/znc.py
%{_libdir}/%{name}/modpython/znc_core.py
%{_libdir}/%{name}/pyeval.py
%files tcl
%{_libdir}/%{name}/modtcl.so