--- /dev/null
+quassel (1:0.13.1-2) unstable; urgency=medium
+
+ * This revision of quassel contains an updated apparmor profile for quassel-
+ core. To load the new profile, use the following command on the server
+ running the core:
+
+ apparmor_parser -r /etc/apparmor.d/usr.bin.quasselcore
+
+ This only applies to quaseelcore, no action is required for clients.
+
+ -- Scott Kitterman <scott@kitterman.com> Sat, 11 Jan 2020 14:55:50 -0500
--- /dev/null
+quassel (1:0.13.1-5) unstable; urgency=medium
+
+ [ Christian Göttsche ]
+ * Start quasselcore with --require-ssl (Closes: #950244)
+
+ [ Felix Geyer ]
+ * Switch to debhelper compat level 12.
+
+ -- Felix Geyer <fgeyer@debian.org> Fri, 12 Feb 2021 18:40:17 +0100
+
+quassel (1:0.13.1-4) unstable; urgency=medium
+
+ [ Scott Kitterman ]
+ * Add explicit build-depeds on debhelper (>= 10.3~) since we use dh_missing
+ * Bump standards-version to 4.5.0 without further change
+ * Add Recommends: ca-certificates to quassel and quassel-client so network
+ certificates can be verified
+
+ [ Felix Geyer ]
+ * Add patches to fix building against Qt 5.14 from Ubuntu.
+ Thanks Dan Streetman! (Closes: #964687)
+
+ -- Felix Geyer <fgeyer@debian.org> Mon, 13 Jul 2020 23:13:31 +0200
+
+quassel (1:0.13.1-3) unstable; urgency=medium
+
+ * Delete quassel-core.NEWS, not needed
+ * Bump standards version to 4.4.1 without further change
+ * Switch from deboan/compat + debhelper to debhelper-compat
+
+ -- Scott Kitterman <scott@kitterman.com> Sat, 18 Jan 2020 15:55:00 -0500
+
+quassel (1:0.13.1-2) unstable; urgency=medium
+
+ [ Felix Geyer ]
+ * Fix quasselcore AppArmor denials when the config is saved. (Closes:
+ #940482)
+
+ [ Scott Kitterman ]
+ * Correct default channel for Debian
+ * Add NEWS entry about reloading the quaseelcore AppArmor profile
+
+ -- Scott Kitterman <scott@kitterman.com> Sat, 11 Jan 2020 15:00:28 -0500
+
+quassel (1:0.13.1-1) unstable; urgency=medium
+
+ [ Scott Kitterman ]
+ * New upstream bugfix release
+ * Do not explicitly set DEMBED_DATA=OFF, it is the default when KDE (Kf5)
+ integration is enabled
+ * Update debian/copyright
+ * Add hurd-i386 to libqt5webkit5-dev build-depends arch list, since it is
+ available there
+
+ [ Shane Synan ]
+ * Clean up and update manpages with new options for Quassel 0.13.1
+
+ -- Scott Kitterman <scott@kitterman.com> Fri, 15 Feb 2019 13:00:08 -0500
+
+quassel (1:0.13.0-4) unstable; urgency=medium
+
+ * Fix install of ufw profile so install is only attempted for quassel-core
+ (fixes arch all FTBFS)
+ * Replace obsolete dh_install --fail-missing with dh_missing --fail-missing
+
+ -- Scott Kitterman <scott@kitterman.com> Sun, 06 Jan 2019 04:33:59 -0500
+
+quassel (1:0.13.0-3) unstable; urgency=medium
+
+ [ Scott Kitterman ]
+ * Make quassel-data Multi-Arch: foreign
+ * Add apparmor profile (adopted from Ubuntu)
+ * Bump standards-version to 4.3.0 without further change
+
+ [ Michael Marley ]
+ * Add reload support to quasselcore service to re-read SSL certificates
+ * Add ufw profile (adopted from Ubuntu)
+
+ [ Shane Synan ]
+ * Clean up and update manpages with new options for Quassel 0.13.0
+ * Update manpages to mention file paths for quassel, quasselclient, and
+ quasselcore (Closes: #724617)
+
+ -- Scott Kitterman <scott@kitterman.com> Sat, 05 Jan 2019 23:45:11 -0500
+
+quassel (1:0.13.0-2) unstable; urgency=medium
+
+ * Upload to unstable
+ * Set -DWITH_OXYGEN_ICONS for compatibility for Oxygen users
+ * Add oxygen-icon-theme as an alternative Recommends to breeze-icon-theme
+ * Make debian/NEWS specific to quassel-core and quassel binaries
+
+ -- Scott Kitterman <scott@kitterman.com> Wed, 05 Dec 2018 00:34:55 -0500
+
+quassel (1:0.13.0-1) experimental; urgency=medium
+
+ * New upstream release (Closes: #915244)
+ - Delete debian/patches/03_force_icon_theme.patch, fixed upstream
+ - Refresh remaining patch
+ * Add libqt5webkit5-dev to build depends for archs where qtwebengine5-dev is
+ not available and update the qtwebengine5-dev arch list
+ * Set web backend during configure in debian/rules (Thanks to Michael
+ Marley)
+ * Update debian/copyright
+ * Add debian/NEWS item suggesting a backup of the database
+ * Add debian/patches/02_script_interpreter_path.patch to use correct path in
+ scripts
+ * Bump standards-version to 4.2.1 without further change
+ * Add qtmultimedia5-dev to build-depends
+ * Update debian/patches/01_default_network_channel.patch to connect via SSL
+ (TLS) when possible
+ * Add symlink to usr/bin/mpris-quassel from usr/share/quassel/scripts/mpris
+ so the script is available on the system path
+ * Change recommended icon theme to breeze-icon-theme to match Plasma default
+ * Include quassel unique icons for breeze and breeze-dark icon themes
+
+ -- Scott Kitterman <scott@kitterman.com> Mon, 03 Dec 2018 17:27:44 -0500
+
+quassel (1:0.12.5-3) unstable; urgency=medium
+
+ * Change postinst script to call runuser instead of su. (Closes: #906794)
+
+ -- Felix Geyer <fgeyer@debian.org> Sun, 07 Oct 2018 16:43:33 +0200
+
+quassel (1:0.12.5-2) unstable; urgency=high
+
+ * Build-depend on qtwebengine5-dev only for archs where it's available.
+
+ -- Felix Geyer <fgeyer@debian.org> Wed, 25 Apr 2018 22:58:59 +0200
+
+quassel (1:0.12.5-1) unstable; urgency=high
+
+ * New upstream release.
+ - Fixes a deserialization security vulnerability.
+ - Fixes a DoS while quassel is starting up.
+ * Drop Fix_the_ssl_check_with_Qt_5.6_and_gcc_5.patch, applied upstream.
+ * Build against Qt WebEngine instead of QtWebKit, following upstream.
+ * Move git repo to salsa.debian.org
+
+ -- Felix Geyer <fgeyer@debian.org> Wed, 25 Apr 2018 19:58:02 +0200
+
+quassel (1:0.12.4-3) unstable; urgency=medium
+
+ * Depend on default-dbus-session-bus | dbus-session-bus instead of dbus-x11.
+ (Closes: #836142)
+ * Provide support for --listen option in the init script and systemd service.
+ (Closes: #590645)
+ * Fix the OpenSSL detection.
+ - Add Fix_the_ssl_check_with_Qt_5.6_and_gcc_5.patch,
+ cherry picked from upstream.
+ * Switch to debhelper compat level 10.
+ * quassel-core postinst: chmod/chown only after creating the files/dirs.
+ * Remove transitional packages quassel-kde4 and quassel-client-kde4.
+
+ -- Felix Geyer <fgeyer@debian.org> Thu, 08 Feb 2018 18:31:06 +0100
+
+quassel (1:0.12.4-2) unstable; urgency=medium
+
+ * Fix FTBFS when building only architecture dependent packages.
+
+ -- Felix Geyer <fgeyer@debian.org> Tue, 26 Apr 2016 19:10:51 +0200
+
+quassel (1:0.12.4-1) unstable; urgency=medium
+
+ * New upstream release.
+ * quassel-core: Add libqt5sql5-psql to Suggests since PostgreSQL is supported
+ as an alternative backend. (Closes: #552374)
+ * Pass service name to dh_systemd_*. (Closes: #811149)
+ * Replace bundled inxi script with a symlink to the one provided by pkg:inxi.
+ (Closes: #814278)
+
+ -- Felix Geyer <fgeyer@debian.org> Tue, 26 Apr 2016 18:16:53 +0200
+
+quassel (1:0.12.3-1) unstable; urgency=medium
+
+ * New upstream release.
+ * Drop patches that have been applied upstream:
+ - 02_set-required-libs-and-flags.patch
+ - 04_fix_ftbfs_qt55.patch
+ - CVE-2015-8547.patch
+
+ -- Felix Geyer <fgeyer@debian.org> Thu, 11 Feb 2016 21:38:13 +0100
+
+quassel (1:0.12.2-3) unstable; urgency=high
+
+ * Fix CVE-2015-8547: op command denial of service issue (Closes: #807801)
+ - Add CVE-2015-8547.patch
+
+ -- Felix Geyer <fgeyer@debian.org> Mon, 14 Dec 2015 21:25:33 +0100
+
+quassel (1:0.12.2-2) unstable; urgency=medium
+
+ * Fix FTBFS with Qt 5.5. (Closes: #802868)
+ - Add 04_fix_ftbfs_qt55.patch
+
+ -- Felix Geyer <fgeyer@debian.org> Thu, 29 Oct 2015 17:05:50 +0100
+
+quassel (1:0.12.2-1) unstable; urgency=medium
+
+ [ Felix Geyer ]
+ * New upstream release. (Closes: #779726)
+ * Remove patches that have been applied upstream:
+ - CVE-2014-8483.patch
+ - CVE-2015-2778.patch
+ - CVE-2015-3427.patch
+ * Set maintainer to Debian KDE Extras Team.
+ * Add Vcs control fields pointing to the new git packaging repo.
+ (Closes: #732605)
+ * Drop explicit phonon depenencies, they are automatically added.
+ * Build quassel against Qt5 + KF5 libs instead of a Qt4 and a KDE4 variant.
+ (Closes: #784519)
+ - Remove quassel-data-kde4.
+ - Turn quassel-kde4 and quassel-client-kde4 into transitional packages.
+ * Enable parallel building.
+ * Pass --fail-missing to dh_install.
+ * Create the SSL certificate as user quasselcore to avoid a symlink race
+ condition. (Closes: #753737)
+ * Stop hardcoding the path to deluser / delgroup in postrm.
+ * Enable all hardening build flags.
+ * Build with -Wl,--as-needed.
+ * Fix detection of OpenSSL when building against Qt5.
+ - Add 02_set-required-libs-and-flags.patch from openSUSE.
+ * Work around missing icon theme fallback in KF5.
+ - Add 03_force_icon_theme.patch
+ - Add oxygen-icon-theme to quassel-data/Recommends.
+
+ [ Scott Kitterman ]
+ * Add systemd service file and associated changes for quasselcore.
+
+ -- Felix Geyer <fgeyer@debian.org> Thu, 10 Sep 2015 22:44:32 +0200
+
+quassel (1:0.10.0-2.4) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * Fix CVE-2015-3427: SQL injection vulnerability in PostgreSQL backend.
+ (Closes: #783926)
+ - Add debian/patches/CVE-2015-3427.patch, cherry-picked from upstream.
+ - The original issue was CVE-2013-4422 which had an incomplete fix.
+
+ -- Felix Geyer <fgeyer@debian.org> Tue, 05 May 2015 16:48:57 +0200
+
+quassel (1:0.10.0-2.3) unstable; urgency=high
+
+ * Non-maintainer upload with maintainer's permission.
+ * Improve the message-splitting algorithm for PRIVMSG and CTCP. Original
+ patch from Michael Marley, backported by Steinar H. Gunderson. Fixes
+ CVE-2015-2778 and CVE-2015-2779. (Closes: #781024)
+
+ -- Olly Betts <olly@survex.com> Wed, 01 Apr 2015 11:41:28 +1300
+
+quassel (1:0.10.0-2.2) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * Increment Debian revision and epoch to re-upload 0.10.0-2.1 to
+ unstable containing the fix for #766962 / CVE-2014-8483:
+ out-of-bounds read in ECB Blowfish decryption.
+
+ -- Salvatore Bonaccorso <carnil@debian.org> Sat, 08 Nov 2014 14:14:56 +0100
+
+quassel (0.10.0-2.1) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * Add CVE-2014-8483.patch patch.
+ CVE-2014-8483: out-of-bounds read in ECB Blowfish decryption.
+ (Closes: #766962)
+
+ -- Salvatore Bonaccorso <carnil@debian.org> Sun, 02 Nov 2014 19:10:58 +0100
+
+quassel (0.10.0-2) unstable; urgency=low
+
+ * Fixing security issue where quassel core certificate is
+ readable by all local users
+ - Change permissions of /var/lib/quassel/quasselCert.pem
+ - Add debian/NEWS to notify the admin to change the certificate
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Fri, 04 Jul 2014 17:15:10 +0200
+
+quassel (0.10.0-1) unstable; urgency=low
+
+ * New upstream release
+ * Debian policy to 3.9.5
+ * Don't create 1024 bit key (Closes: #732728)
+ * Start quaselcore after databases (Closes: #701943)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Fri, 09 May 2014 17:42:19 +0200
+
+quassel (0.9.2-1) unstable; urgency=low
+
+ * New upstream release
+ * Increase debhelper compat to 9 - supporting hardening now
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Tue, 26 Nov 2013 22:53:55 +0100
+
+quassel (0.9.1-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Tue, 05 Nov 2013 17:39:26 +0100
+
+quassel (0.8.0-1) unstable; urgency=low
+
+ * New upstream release
+ * Debian Policy to 3.9.3
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Wed, 25 Apr 2012 00:02:51 +0200
+
+quassel (0.7.3-2.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Fix "fails to upgrade from squeeze": test for existence of to-be-moved
+ file in quassel-core.preinst; and use -p for mkdir to avoid errors when
+ the directory exists, like after failed upgrades.
+ (Closes: #655844)
+
+ -- gregor herrmann <gregoa@debian.org> Tue, 10 Apr 2012 19:02:42 +0200
+
+quassel (0.7.3-2) unstable; urgency=medium
+
+ * Change Build-Depends of the package from libpng12-dev to libpng-dev.
+ (Closes: #662486)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Mon, 05 Mar 2012 09:27:50 +0100
+
+quassel (0.7.3-1) unstable; urgency=medium
+
+ * New upstream release
+ * Translation update
+ * Fixing security issue: ctcp DoS (Closes: #640960)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Fri, 09 Sep 2011 19:00:55 +0000
+
+quassel (0.7.2-2) unstable; urgency=low
+
+ * DATADIR set to new location /var/lib/ (Closes: #629507)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Tue, 07 Jun 2011 19:01:51 +0000
+
+quassel (0.7.2-1) unstable; urgency=low
+
+ * New upstream release (Closes: #629393)
+ * Clients no longer recommend quassel-core (Closes: #622904)
+ * Debian Policy to 3.9.2
+ * quassel-core.preinst added - taken from Ubuntu (Closes: #612042)
+ Thanks to Scott Kitterman <scott@kitterman.com>
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Mon, 06 Jun 2011 20:40:24 +0200
+
+quassel (0.7.1-4) unstable; urgency=low
+
+ * 0.7.1-3 lost the kfreebsd patch of 0.7.1-2
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 14 Apr 2011 20:08:27 +0200
+
+quassel (0.7.1-3) unstable; urgency=low
+
+ * Build-dependency qt4-dev-tools added (Closes: #613599)
+ * Build-dependency libqtwebkit-dev added (Closes: #622273)
+ * Build-dependency libdbusmenu-qt-dev added
+ * Build-dependency libindicate-qt-dev added
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Tue, 12 Apr 2011 22:40:46 +0200
+
+quassel (0.7.1-2) unstable; urgency=low
+
+ * Patch added to fix kfreebsd builds (Closes: #620542)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Mon, 11 Apr 2011 21:44:34 +0200
+
+quassel (0.7.1-1.1) unstable; urgency=low
+
+ * Non-maintainer upload with maintainer permission.
+ * Do not hardcode kdelibs5 and kdebase-runtime in quassel-client-kde4 and
+ quassel-kde4 Depends (Closes: #616026). kdelibs5 has been deprecated and
+ will be removed soon while kdebase-runtime is added via shlibs as needed.
+
+ -- Modestas Vainius <modax@debian.org> Wed, 30 Mar 2011 18:59:12 +0300
+
+quassel (0.7.1-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Tue, 21 Sep 2010 19:59:07 +0200
+
+quassel (0.7.0-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Sat, 18 Sep 2010 19:19:40 +0200
+
+quassel (0.6.1-2) unstable; urgency=low
+
+ * add dependency to gawk (closes: #592455)
+ * remove manageusers.py (closes: #590644)
+ * man pages updated (closes: #590643)
+ * dump Debian Policy to 3.9.1
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Sun, 15 Aug 2010 23:11:16 +0200
+
+quassel (0.6.1-1) unstable; urgency=low
+
+ * New upstream release
+ * Switch to dpkg-source 3.0 (quilt) format
+ * desktop notification have been reimplemented (closes: #562974)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Wed, 21 Apr 2010 20:11:17 +0200
+
+quassel (0.5.2-3) unstable; urgency=low
+
+ * missing name changes quassel-core - in init and default
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 18 Feb 2010 17:12:06 +0100
+
+quassel (0.5.2-2) unstable; urgency=low
+
+ * Re-include init script into (closes: #569942)
+ * Fixing lintian error init.d-script-missing-dependency-on-remote_fs
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 18 Feb 2010 17:11:18 +0100
+
+quassel (0.5.2-1) unstable; urgency=low
+
+ * New upstream release (closes: #556309)
+ * Fixing minor lintian warnings:
+ - copyright-with-old-dh-make-debian-copyright
+ - duplicate-long-description
+ - quilt-patch-missing-description
+ * package descriptions have been reviewed by debian-i10n-english
+ * fixing dependencies - thanks to puiparts:
+ - quassel-client: phonon
+ - quassel: phonon
+ - quassel-kde4: kdebase-runtime, kdelibs5
+ - quassel-client-kde4: kdebase-runtime, kdelibs5
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Mon, 01 Feb 2010 23:41:05 +0100
+
+quassel (0.5.1-3) unstable; urgency=low
+
+ * Conflict dependency added between quassel-data and quassel-data-
+ kde4(closes: #566097)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 21 Jan 2010 20:36:09 +0100
+
+quassel (0.5.1-2) unstable; urgency=low
+
+ * KDE4 support enabled (closes: #561795)
+ - package quassel-kde4 (monolithic client with KDE) has been added
+ - package quassel-client-kde4 (client with KDE) has been added
+ - package quassel-data-kde4 (data files) has been added
+
+ * switch from cdbs to debhelper - basic idea taken from the ubuntu package
+ thanks guys
+ * quilt is used as patch system now
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 11 Jan 2010 12:52:45 +0100
+
+quassel (0.5.1-1) unstable; urgency=low
+
+ * New upstream release
+ * dbus-x11 dependency moved to quasselclient & quassel (closes: #552061)
+ * remove deprecated usage of argument -datadir (closes: #552373)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Sun, 22 Nov 2009 23:44:04 +0100
+
+quassel (0.5.0-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 22 Oct 2009 22:19:05 +0200
+
+quassel (0.5.0~rc2-1) experimental; urgency=low
+
+ * New upstream release (rc2)
+ * Make puiparts happy (closes: #538182)
+ * manageusers.py added (closes: #549296)
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Mon, 05 Oct 2009 23:13:06 +0200
+
+quassel (0.4.2-1) unstable; urgency=low
+
+ * New upstream release
+ * watch file looks to the *.tar.bz2 directly
+ no longer scanning the html page
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Thu, 28 May 2009 21:42:24 +0200
+
+quassel (0.4.1-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Thomas Mueller <thomas.mueller@tmit.eu> Sun, 29 Mar 2009 12:51:42 +0200
+
+quassel (0.4.0-1) unstable; urgency=low
+
+ * New upstream release
+ * repackaging no longer necessary, because svgz of oxygen icons have been
+ added to the source tarball:
+ - debian/repack.sh removed
+ - debian/README.source removed
+ - debian/watch adjusted
+ - debian/rules: get-orig-source removed
+ * debian/copyright updated: license for oxygen icons added
+ * debian/quassel-core.logrotate added
+ * debian/patcher/01_default_network_channel.patch added
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Wed, 18 Feb 2009 22:14:23 +0100
+
+quassel (0.3.1+dfsg-3) unstable; urgency=low
+
+ * fixing bug on upgrade (closes: #513677)
+ * 'set -e' removed from ini script
+ * cleanup in quassel-core.postrm
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Wed, 11 Feb 2009 21:14:33 +0100
+
+quassel (0.3.1+dfsg-2) unstable; urgency=low
+
+ * init script added (closes: #513677)
+ * user and group for the daemon added (closes: #513677)
+ * ssl certificate has been added (closes: #511169)
+ All scripts are based on the ubuntu package
+ thanks to Harald Sitter <apachelogger@ubuntu.com>
+ * Version in manpages have been adjusted.
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Mon, 10 Feb 2009 23:13:25 +0100
+
+quassel (0.3.1+dfsg-1) unstable; urgency=low
+
+ * New upstream release
+ * upstream update to 0.3.0.3 (closes: #498283)
+ * upstream update to 0.3.0.1 (closes: #498283)
+ * watch file added - thx to Per Hausen
+ * Downgrade quasselclient's dependency on quasselcore (closes: #503126)
+ The packages quassel-client and quassel-core can be installed separately
+ now.
+ The package quassel is a dummy package, which installs client and core.
+ * Additional package for the monolithic client.
+ * Repackaging orig.tar.gz to remove the oxygen icons. They are no longer
+ needed because we go for the locally installed oxygen icons of the package
+ kde-icons-oxygen.
+ * License for oxygen removed, because it is no longer part of the package.
+ * debian/repack.sh added + bz2 handling
+ * debian/README.source
+ * debian/watch changed to handle repackaging
+ * debian/patches removed - no need to patch anything at the moment
+ * debian/control: dependeny libqt4-sql-sqlite added
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Tue, 08 Jan 2009 01:44:23 +0100
+
+quassel (0.2~rc1-1) unstable; urgency=low
+
+ * download link in copyright changed
+ * manpage warnings removed
+ * update to debian policy 3.8
+ * upstream update to 0.2.0-rc1
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Mon, 07 Jul 2008 20:56:53 +0100
+
+quassel (0.2~beta1-1) unstable; urgency=low
+
+ * svg files for oxygen icons added src/icons/oxygen/scalable
+ * upstream update to 0.2.0-beta1
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Mon, 02 Jun 2008 20:27:28 +0100
+
+quassel (0.2~alpha5-1) unstable; urgency=low
+
+ * svgz files for oxygen icons added src/icons/oxygen/scalable
+ * upstream update to 0.2.0-alpha5
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Mon, 21 Apr 2008 22:20:18 +0100
+
+quassel (0.2~alpha2-3) unstable; urgency=low
+
+ * debian/copyright updated: license for oxygen icons added
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Mon, 24 Mar 2008 20:01:18 +0100
+
+quassel (0.2~alpha2-2) unstable; urgency=low
+
+ * debian/copyright updated
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Wed, 12 Mar 2008 21:48:12 +0100
+
+quassel (0.2~alpha2-1) unstable; urgency=low
+
+ * Debianized
+
+ -- Thomas Mueller <thomas_mueller_ffb@online.de> Sun, 02 Mar 2008 11:40:43 +0100
+
+quassel (0.2~alpha2-0ubuntu1~hardy1~ppa1) hardy; urgency=low
+
+ * Hardy PPA Build
+
+ -- Harald Sitter <apachelogger@ubuntu.com> Sat, 01 Mar 2008 21:05:03 +0100
+
+quassel (0.2~alpha2-0ubuntu1) ibex; urgency=low
+
+ * Initial release (LP: #195861)
+
+ -- Harald Sitter <apachelogger@ubuntu.com> Sat, 23 Feb 2008 14:22:06 +0100
--- /dev/null
+Source: quassel
+Section: net
+Priority: optional
+Maintainer: Debian KDE Extras Team <pkg-kde-extras@lists.alioth.debian.org>
+Uploaders: Thomas Mueller <thomas.mueller@tmit.eu>,
+ Felix Geyer <fgeyer@debian.org>,
+ Scott Kitterman <scott@kitterman.com>
+Build-Depends: debhelper-compat (= 12),
+ dh-apparmor,
+ cmake,
+ libqca-qt5-2-dev,
+ zlib1g-dev,
+ qttools5-dev-tools,
+ qttools5-dev,
+ qtscript5-dev,
+ qtmultimedia5-dev,
+ libphonon4qt5-dev,
+ libphonon4qt5experimental-dev,
+ libdbusmenu-qt5-dev,
+ qtwebengine5-dev [amd64 arm64 armhf i386 mipsel],
+ libqt5webkit5-dev [armel hurd-i386 mips mips64el ppc64el s390x],
+ extra-cmake-modules,
+ libkf5textwidgets-dev,
+ libkf5coreaddons-dev,
+ libkf5xmlgui-dev,
+ libkf5notifications-dev,
+ libkf5notifyconfig-dev,
+ libkf5widgetsaddons-dev,
+ libssl-dev
+Homepage: https://www.quassel-irc.org/
+Standards-Version: 4.5.0
+Vcs-Git: https://salsa.debian.org/qt-kde-team/extras/quassel.git
+Vcs-Browser: https://salsa.debian.org/qt-kde-team/extras/quassel
+
+Package: quassel-core
+Architecture: any
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, libqt5sql5-sqlite, lsb-base (>= 3.2-14), openssl
+Recommends: ca-certificates
+Suggests: libqt5sql5-psql
+Description: distributed IRC client - core component
+ Quassel is a modern, cross-platform, distributed IRC client, meaning that
+ one or more clients can attach to and detach from the central core. It's
+ much like the popular combination of screen and a text-based IRC client
+ such as WeeChat or irssi, but graphical.
+ .
+ This package provides only the core component.
+
+Package: quassel-client
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, quassel-data (= ${source:Version}), default-dbus-session-bus | dbus-session-bus
+Breaks: quassel-client-kde4 (<< 0.12.2)
+Replaces: quassel-client-kde4 (<< 0.12.2)
+Description: distributed IRC client - client component
+ Quassel is a modern, cross-platform, distributed IRC client, meaning that
+ one or more clients can attach to and detach from the central core. It's
+ much like the popular combination of screen and a text-based IRC client
+ such as WeeChat or irssi, but graphical.
+ .
+ This package provides only the client component.
+
+Package: quassel
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libqt5sql5-sqlite, quassel-data (= ${source:Version}), default-dbus-session-bus | dbus-session-bus
+Recommends: ca-certificates
+Breaks: quassel-kde4 (<< 0.12.2)
+Replaces: quassel-kde4 (<< 0.12.2)
+Description: distributed IRC client - monolithic core+client
+ Quassel is a modern, cross-platform, distributed IRC client, meaning that
+ one or more clients can attach to and detach from the central core. It's
+ much like the popular combination of screen and a text-based IRC client
+ such as WeeChat or irssi, but graphical.
+ .
+ This package provides the monolithic client. It contains both core and
+ client and can be used like a traditional IRC client, without requiring an
+ external core.
+
+Package: quassel-data
+Architecture: all
+Depends: ${misc:Depends}
+Recommends: breeze-icon-theme | oxygen-icon-theme
+Suggests: inxi
+Conflicts: quassel-data-kde4
+Multi-Arch: foreign
+Description: distributed IRC client - shared data
+ Quassel is a modern, cross-platform, distributed IRC client, meaning that
+ one or more clients can attach to and detach from the central core. It's
+ much like the popular combination of screen and a text-based IRC client
+ such as WeeChat or irssi, but graphical.
+ .
+ This package provides files used by the Quassel client packages.
--- /dev/null
+This package was debianized by Harald Sitter <apachelogger@ubuntu.com> on
+Sat, 23 Feb 2008 14:22:06 +0100.
+
+The current Debian maintainer is Thomas Mueller <thomas.mueller@tmit.eu>
+
+It was downloaded from
+http://www.quassel-irc.org/downloads
+
+Upstream Author:
+
+ Manuel Nickschas <sput@quassel-irc.org>
+ Marcus Eggenberger <EgS@quassel-irc.org>
+ Alexander von Renteln <phon@quassel-irc.org>
+
+Files/*
+Copyright:
+
+ Copyright (C) 2005-2019 by the Quassel Project devel@quassel-irc.org
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) version 3.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Files src/qtui/snorenotificationbackend.*
+
+ Copyright (C) 2011-2019 by Hannah von Reth
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) version 3.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+On Debian systems, the complete text of the GNU General Public License
+can be found in `/usr/share/common-licenses/GPL-2' and
+`/usr/share/common-licenses/GPL-3'.
+
+The Debian packaging is © 2008, Harald Sitter <apachelogger@ubuntu.com> and
+is licensed under the GPL version 2, or (at your option)
+any later version, see `/usr/share/common-licenses/GPL-2'.
+
+
+For 3rdparty/sha512/*
+
+ Copyright (C) 2006-2014, ARM Limited, All Rights Reserved
+
+For data/scripts/mpris:
+ Copyright (C) 2009 by Sebastian Goth
+
+For the 3rdparty/icons/* components:
+
+For 3rdparty/icons/breeze*
+ Copyright (C) 2014 Uri Herrera <uri_herrera@nitrux.in> and others
+
+ You may copy it under the GNU Library General Public License
+ (with following clarification)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU Library General Public License
+can be found in `/usr/share/common-licenses/LGPL'.
+
+For 3rdparty/icons/oxygen/*
+
+The Oxygen Icon Theme
+ Copyright © 2007 David Vignoni <david@icon-king.com>
+ Copyright © 2007 Johann Ollivier Lapeyre <johann@oxygen-icons.org>
+ Copyright © 2007 Kenneth Wimer <kwwii@bootsplash.org>
+ Copyright © 2007 Nuno Fernades Pinheiro <nf.pinheiro@gmail.com>
+ Copyright © 2007 Riccardo Iaconelli <riccardo@oxygen-icons.org>
+ Copyright © 2007 David Miller <miller@oxygen-icons.org>
+
+ and others
+
+You may copy it under the Creative Common Attribution-ShareAlike 3.0
+license, as found here:
+
+ http://creativecommons.org/licenses/by-sa/3.0/
+
+or the GNU Library General Public License (with following clarification).
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
+
+Clarification:
+
+ The GNU Lesser General Public License or LGPL is written for
+ software libraries in the first place. We expressly want the LGPL to
+ be valid for this artwork library too.
+
+ KDE Oxygen theme icons is a special kind of software library, it is an
+ artwork library, it's elements can be used in a Graphical User Interface, or
+ GUI.
+
+ Source code, for this library means:
+ - where they exist, SVG;
+ - otherwise, if applicable, the multi-layered formats xcf or psd, or
+ otherwise png.
+
+ The LGPL in some sections obliges you to make the files carry
+ notices. With images this is in some cases impossible or hardly useful.
+
+ With this library a notice is placed at a prominent place in the directory
+ containing the elements. You may follow this practice.
+
+ The exception in section 6 of the GNU Lesser General Public License covers
+ the use of elements of this art library in a GUI.
+
+ kde-artists [at] kde.org
+
+
+Attribution-ShareAlike 3.0 Unported
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES.
+DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE
+COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS
+USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC
+LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE
+LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
+PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE
+TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE
+LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
+TERMS AND CONDITIONS.
+
+1. Definitions
+
+ 1. "Adaptation" means a work based upon the Work, or upon the Work and other
+pre-existing works, such as a translation, adaptation, derivative work, arrangement of
+music or other alterations of a literary or artistic work, or phonogram or performance and
+includes cinematographic adaptations or any other form in which the Work may be recast,
+transformed, or adapted including in any form recognizably derived from the original,
+except that a work that constitutes a Collection will not be considered an Adaptation for
+the purpose of this License. For the avoidance of doubt, where the Work is a musical work,
+performance or phonogram, the synchronization of the Work in timed-relation with a moving
+image ("synching") will be considered an Adaptation for the purpose of this License.
+ 2. "Collection" means a collection of literary or artistic works, such as encyclopedias
+and anthologies, or performances, phonograms or broadcasts, or other works or subject
+matter other than works listed in Section 1(f) below, which, by reason of the selection and
+arrangement of their contents, constitute intellectual creations, in which the Work is
+included in its entirety in unmodified form along with one or more other contributions,
+each constituting separate and independent works in themselves, which together are
+assembled into a collective whole. A work that constitutes a Collection will not be
+considered an Adaptation (as defined below) for the purposes of this License.
+ 3. "Creative Commons Compatible License" means a license that is listed at
+http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as
+being essentially equivalent to this License, including, at a minimum, because that
+license: (i) contains terms that have the same purpose, meaning and effect as the License
+Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of
+works made available under that license under this License or a Creative Commons
+jurisdiction license with the same License Elements as this License.
+ 4. "Distribute" means to make available to the public the original and copies of the
+Work or Adaptation, as appropriate, through sale or other transfer of ownership.
+ 5. "License Elements" means the following high-level license attributes as selected by
+Licensor and indicated in the title of this License: Attribution, ShareAlike.
+ 6. "Licensor" means the individual, individuals, entity or entities that offer(s) the
+Work under the terms of this License.
+ 7. "Original Author" means, in the case of a literary or artistic work, the individual,
+individuals, entity or entities who created the Work or if no individual or entity can be
+identified, the publisher; and in addition (i) in the case of a performance the actors,
+singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in,
+interpret or otherwise perform literary or artistic works or expressions of folklore; (ii)
+in the case of a phonogram the producer being the person or legal entity who first fixes
+the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the
+organization that transmits the broadcast.
+ 8. "Work" means the literary and/or artistic work offered under the terms of this
+License including without limitation any production in the literary, scientific and
+artistic domain, whatever may be the mode or form of its expression including digital form,
+such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the
+same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in
+dumb show; a musical composition with or without words; a cinematographic work to which are
+assimilated works expressed by a process analogous to cinematography; a work of drawing,
+painting, architecture, sculpture, engraving or lithography; a photographic work to which
+are assimilated works expressed by a process analogous to photography; a work of applied
+art; an illustration, map, plan, sketch or three-dimensional work relative to geography,
+topography, architecture or science; a performance; a broadcast; a phonogram; a compilation
+of data to the extent it is protected as a copyrightable work; or a work performed by a
+variety or circus performer to the extent it is not otherwise considered a literary or
+artistic work.
+ 9. "You" means an individual or entity exercising rights under this License who has not
+previously violated the terms of this License with respect to the Work, or who has received
+express permission from the Licensor to exercise rights under this License despite a
+previous violation.
+ 10. "Publicly Perform" means to perform public recitations of the Work and to communicate
+to the public those public recitations, by any means or process, including by wire or
+wireless means or public digital performances; to make available to the public Works in
+such a way that members of the public may access these Works from a place and at a place
+individually chosen by them; to perform the Work to the public by any means or process and
+the communication to the public of the performances of the Work, including by public
+digital performance; to broadcast and rebroadcast the Work by any means including signs,
+sounds or images.
+ 11. "Reproduce" means to make copies of the Work by any means including without
+limitation by sound or visual recordings and the right of fixation and reproducing
+fixations of the Work, including storage of a protected performance or phonogram in digital
+form or other electronic medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict
+any uses free from copyright or rights arising from limitations or exceptions that are
+provided for in connection with the copyright protection under copyright law or other
+applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby
+grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the
+applicable copyright) license to exercise the rights in the Work as stated below:
+
+ 1. to Reproduce the Work, to incorporate the Work into one or more Collections, and to
+Reproduce the Work as incorporated in the Collections;
+ 2. to create and Reproduce Adaptations provided that any such Adaptation, including any
+translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise
+identify that changes were made to the original Work. For example, a translation could be
+marked "The original work was translated from English to Spanish," or a modification could
+indicate "The original work has been modified.";
+ 3. to Distribute and Publicly Perform the Work including as incorporated in Collections;
+and,
+ 4. to Distribute and Publicly Perform Adaptations.
+ 5.
+
+ For the avoidance of doubt:
+ 1. Non-waivable Compulsory License Schemes. In those jurisdictions in which the
+right to collect royalties through any statutory or compulsory licensing scheme cannot be
+waived, the Licensor reserves the exclusive right to collect such royalties for any
+exercise by You of the rights granted under this License;
+ 2. Waivable Compulsory License Schemes. In those jurisdictions in which the right
+to collect royalties through any statutory or compulsory licensing scheme can be waived,
+the Licensor waives the exclusive right to collect such royalties for any exercise by You
+of the rights granted under this License; and,
+ 3. Voluntary License Schemes. The Licensor waives the right to collect royalties,
+whether individually or, in the event that the Licensor is a member of a collecting society
+that administers voluntary licensing schemes, via that society, from any exercise by You of
+the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now known or hereafter
+devised. The above rights include the right to make such modifications as are technically
+necessary to exercise the rights in other media and formats. Subject to Section 8(f), all
+rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and
+limited by the following restrictions:
+
+ 1. You may Distribute or Publicly Perform the Work only under the terms of this License.
+You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with
+every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any
+terms on the Work that restrict the terms of this License or the ability of the recipient
+of the Work to exercise the rights granted to that recipient under the terms of the
+License. You may not sublicense the Work. You must keep intact all notices that refer to
+this License and to the disclaimer of warranties with every copy of the Work You Distribute
+or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose
+any effective technological measures on the Work that restrict the ability of a recipient
+of the Work from You to exercise the rights granted to that recipient under the terms of
+the License. This Section 4(a) applies to the Work as incorporated in a Collection, but
+this does not require the Collection apart from the Work itself to be made subject to the
+terms of this License. If You create a Collection, upon notice from any Licensor You must,
+to the extent practicable, remove from the Collection any credit as required by Section
+4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to
+the extent practicable, remove from the Adaptation any credit as required by Section 4(c),
+as requested.
+ 2. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i)
+this License; (ii) a later version of this License with the same License Elements as this
+License; (iii) a Creative Commons jurisdiction license (either this or a later license
+version) that contains the same License Elements as this License (e.g.,
+Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license
+the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms
+of that license. If you license the Adaptation under the terms of any of the licenses
+mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms
+of the Applicable License generally and the following provisions: (I) You must include a
+copy of, or the URI for, the Applicable License with every copy of each Adaptation You
+Distribute or Publicly Perform; (II) You may not offer or impose any terms on the
+Adaptation that restrict the terms of the Applicable License or the ability of the
+recipient of the Adaptation to exercise the rights granted to that recipient under the
+terms of the Applicable License; (III) You must keep intact all notices that refer to the
+Applicable License and to the disclaimer of warranties with every copy of the Work as
+included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or
+Publicly Perform the Adaptation, You may not impose any effective technological measures on
+the Adaptation that restrict the ability of a recipient of the Adaptation from You to
+exercise the rights granted to that recipient under the terms of the Applicable License.
+This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does
+not require the Collection apart from the Adaptation itself to be made subject to the terms
+of the Applicable License.
+ 3. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections,
+You must, unless a request has been made pursuant to Section 4(a), keep intact all
+copyright notices for the Work and provide, reasonable to the medium or means You are
+utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied,
+and/or if the Original Author and/or Licensor designate another party or parties (e.g., a
+sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in
+Licensor's copyright notice, terms of service or by other reasonable means, the name of
+such party or parties; (ii) the title of the Work if supplied; (iii) to the extent
+reasonably practicable, the URI, if any, that Licensor specifies to be associated with the
+Work, unless such URI does not refer to the copyright notice or licensing information for
+the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit
+identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by
+Original Author," or "Screenplay based on original Work by Original Author"). The credit
+required by this Section 4(c) may be implemented in any reasonable manner; provided,
+however, that in the case of a Adaptation or Collection, at a minimum such credit will
+appear, if a credit for all contributing authors of the Adaptation or Collection appears,
+then as part of these credits and in a manner at least as prominent as the credits for the
+other contributing authors. For the avoidance of doubt, You may only use the credit
+required by this Section for the purpose of attribution in the manner set out above and, by
+exercising Your rights under this License, You may not implicitly or explicitly assert or
+imply any connection with, sponsorship or endorsement by the Original Author, Licensor
+and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the
+separate, express prior written permission of the Original Author, Licensor and/or
+Attribution Parties.
+ 4. Except as otherwise agreed in writing by the Licensor or as may be otherwise
+permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work
+either by itself or as part of any Adaptations or Collections, You must not distort,
+mutilate, modify or take other derogatory action in relation to the Work which would be
+prejudicial to the Original Author's honor or reputation. Licensor agrees that in those
+jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of
+this License (the right to make Adaptations) would be deemed to be a distortion,
+mutilation, modification or other derogatory action prejudicial to the Original Author's
+honor and reputation, the Licensor will waive or not assert, as appropriate, this Section,
+to the fullest extent permitted by the applicable national law, to enable You to reasonably
+exercise Your right under Section 3(b) of this License (right to make Adaptations) but not
+otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK
+AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS,
+IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
+DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
+EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT
+WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL,
+CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE
+WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ 1. This License and the rights granted hereunder will terminate automatically upon any
+breach by You of the terms of this License. Individuals or entities who have received
+Adaptations or Collections from You under this License, however, will not have their
+licenses terminated provided such individuals or entities remain in full compliance with
+those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ 2. Subject to the above terms and conditions, the license granted here is perpetual (for
+the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor
+reserves the right to release the Work under different license terms or to stop
+distributing the Work at any time; provided, however that any such election will not serve
+to withdraw this License (or any other license that has been, or is required to be, granted
+under the terms of this License), and this License will continue in full force and effect
+unless terminated as stated above.
+
+8. Miscellaneous
+
+ 1. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor
+offers to the recipient a license to the Work on the same terms and conditions as the
+license granted to You under this License.
+ 2. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the
+recipient a license to the original Work on the same terms and conditions as the license
+granted to You under this License.
+ 3. If any provision of this License is invalid or unenforceable under applicable law, it
+shall not affect the validity or enforceability of the remainder of the terms of this
+License, and without further action by the parties to this agreement, such provision shall
+be reformed to the minimum extent necessary to make such provision valid and enforceable.
+ 4. No term or provision of this License shall be deemed waived and no breach consented
+to unless such waiver or consent shall be in writing and signed by the party to be charged
+with such waiver or consent.
+ 5. This License constitutes the entire agreement between the parties with respect to the
+Work licensed here. There are no understandings, agreements or representations with respect
+to the Work not specified here. Licensor shall not be bound by any additional provisions
+that may appear in any communication from You. This License may not be modified without the
+mutual written agreement of the Licensor and You.
+ 6. The rights granted under, and the subject matter referenced, in this License were
+drafted utilizing the terminology of the Berne Convention for the Protection of Literary
+and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the
+WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the
+Universal Copyright Convention (as revised on July 24, 1971). These rights and subject
+matter take effect in the relevant jurisdiction in which the License terms are sought to be
+enforced according to the corresponding provisions of the implementation of those treaty
+provisions in the applicable national law. If the standard suite of rights granted under
+applicable copyright law includes additional rights not granted under this License, such
+additional rights are deemed to be included in the License; this License is not intended to
+restrict the license of any rights under applicable law.
+
+ Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty whatsoever in
+connection with the Work. Creative Commons will not be liable to You or any party on any
+legal theory for any damages whatsoever, including without limitation any general, special,
+incidental or consequential damages arising in connection to this license. Notwithstanding
+the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the
+Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the Work is licensed
+under the CCPL, Creative Commons does not authorize the use by either party of the
+trademark "Creative Commons" or any related trademark or logo of Creative Commons without
+the prior written consent of Creative Commons. Any permitted use will be in compliance with
+Creative Commons' then-current trademark usage guidelines, as may be published on its
+website or otherwise made available upon request from time to time. For the avoidance of
+doubt, this trademark restriction does not form part of the License.
+
+ Creative Commons may be contacted at http://creativecommons.org/.
+
+For files 3rdparty/miniz/*
+
+/*
+ This is free and unencumbered software released into the public domain.
+
+ Anyone is free to copy, modify, publish, use, compile, sell, or
+ distribute this software, either in source code form or as a compiled
+ binary, for any purpose, commercial or non-commercial, and by any
+ means.
+
+ In jurisdictions that recognize copyright laws, the author or authors
+ of this software dedicate any and all copyright interest in the
+ software to the public domain. We make this dedication for the benefit
+ of the public at large and to the detriment of our heirs and
+ successors. We intend this dedication to be an overt act of
+ relinquishment in perpetuity of all present and future rights to this
+ software under copyright law.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+ For more information, please refer to <http://unlicense.org/>
+*/
+
+
+For files cmake/*
+
+cmake/FindQCA2-QT5.cmake:
+cmake/FindQCA2.cmake:
+ Copyright (c) 2006, Michael Larouche, <michael.larouche@kdemail.net>
+
+cmake/FindPhonon.cmake:
+ Copyright (c) 2008, Matthias Kretz <kretz@kde.org>
+
+cmake/FindLibraryWithDebug.cmake:
+ Copyright (c) 2007, Christian Ehrlicher, <ch.ehrlicher@gmx.de>
+
+cmake/GetGitRevisionDescription.cmake:
+ Copyright Iowa State University 2009-2010.
+
+This is the standard license for CMake scripts. Please note that some
+of the CMake scripts we bundle come with their own license as indicated
+in the file, in which case that one applies.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+For cmake/GetGitRevisionDescription.cmake.in:
+ Copyright Iowa State University 2009-2010.
+
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+For data/stylesheets/LinuxDolt-bluestheme.qss:
+ Copyright (C) Drew Patridge 2009-2010 <slicersv@gmail.com>
+For data/stylesheets/jussi01-darktheme.qss:
+ Copyright (C) Jussi Schultink 2009
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General Public License
+can be found in `/usr/share/common-licenses/GPL-2'.
+
+For data/scripts/inxi:
+## infobash: Copyright (C) 2005-2007 Michiel de Boer aka locsmif
+## inxi: Copyright (C) 2008-2018 Harald Hope
+## Additional features (C) Scott Rogers - kde, cpu info
+## Further fixes (listed as known): Horst Tritremmel <hjt at sidux.com>
+## Steven Barrett (aka: damentz) - usb audio patch; swap percent used patch
+## Jarett.Stevens - dmidecode -M patch for older systems with the /sys
+##
+## License: GNU GPL v3 or greater
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 3 of the License.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General Public License
+can be found in `/usr/share/common-licenses/GPL-3'.
+
--- /dev/null
+.TH "QUASSEL" "1" "0.13.1" "Quassel IRC Team, Internet." ""
+.SH "NAME"
+quassel \(em a modern, cross-platform and distributed IRC client
+.SH "SYNPOSIS"
+\fBquassel\fR [\fIOPTION\fR]...
+.
+.SH "DESCRIPTION"
+.B Quassel IRC
+is a modern, cross-platform, distributed IRC client, meaning that one
+(or multiple) client(s) can attach to and detach from a central core -- much
+like the popular combination of screen and a text-based IRC client such as
+WeeChat, but graphical.
+.PP
+\fBquassel\fR provides a standalone IRC client experience, integrating the core
+and client into a single program. To connect to and manage a running
+\fBquasselcore\fR, use the \fBquasselclient\fR client program.
+.
+.SH "COMMON OPTIONS"
+.TP
+\fB\-c\fR, \fB\-\-configdir\fR=\fICONFIGDIR\fR
+Specify the directory holding the configuration files, the SQLite database with
+chat logs, and the SSL/TLS certificate.
+.TP
+\fB\-d\fR, \fB\-\-debug\fR
+Enable extra debugging output.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show help message.
+.TP
+\fB\-L\fR, \fB\-\-loglevel\fR=\fILOGLEVEL\fR
+Set the logging level to LOGLEVEL: Debug, Info, Warning, Error. Default is:
+Info
+.TP
+\fB\-l\fR, \fB\-\-logfile\fR=\fILOGFILE\fR
+Log to a file.
+.TP
+\fB\-\-syslog\fR
+Log to syslog.
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Display version information.
+.
+.SH "CLIENT OPTIONS"
+.TP
+\fB\-\-debugbufferswitches\fR
+Enables debugging for bufferswitches.
+.TP
+\fB\-\-debugmodel\fR
+Enables debugging for models.
+.TP
+\fB\-\-hidewindow\fR
+Start the client minimized to the system tray.
+.TP
+\fB\-\-icontheme\fR=\fITHEME\fR
+Override the system icon theme. 'breeze' is recommended. This may also be
+configured in the client settings.
+.TP
+\fB\-\-qss\fR=\fIQSS\fR
+Load a custom application stylesheet.
+.
+.SH "INTERNAL CORE OPTIONS"
+.B NOTE:
+These options should not need modified in most cases. Running a separate
+\fBquasselcore\fR is the recommended way to allow multiple clients to connect
+to a core.
+.
+.TP
+\fB\-\-add\-user\fR
+Starts an interactive session to add a new core user
+.TP
+\fB\-\-change\-userpass\fR=\fIUSERNAME\fR
+Starts an interactive session to change the password of the user identified by
+USERNAME.
+.TP
+\fB\-\-config\-from\-environment\fR
+Load configuration from environment variables, ignoring the configuration file.
+See the section on \fBENVIRONMENT VARIABLES\fR.
+.TP
+\fB\-\-debug-irc\fR
+Enable logging of all raw IRC messages to debug log, \fBincluding passwords!\fR
+In most cases you should also set \fB--loglevel Debug\fR.
+.TP
+\fB\-\-debug\-irc\-id\fR=\fIDATABASENETWORKID\fR
+Limit raw IRC logging to this network ID. Implies \fB\-\-debug-irc\fR.
+.TP
+\fB\-\-ident\-daemon\fR
+Enable internal ident daemon.
+.TP
+\fB\-\-ident\-listen\fR=\fIIDENTLISTEN\fR
+The address(es) quasselcore will listen on for ident requests. Same format as
+\fB\-\-listen\fR. Only meaningful with \fB\-\-ident\-daemon\fR. Default is:
+::1,127.0.0.1 (only localhost)
+.TP
+\fB\-\-ident\-port\fR=\fIIDENTPORT\fR
+The port the quasselcore will listen at for ident requests. Only meaningful
+with \fB\-\-ident\-daemon\fR. Default is: 10113
+.TP
+\fB\-\-listen\fR=\fILISTEN\fR
+The address(es) quasselcore will listen on when \fB\-\-port\fR is specified.
+Default is: ::,0.0.0.0 (all addresses)
+.TP
+\fB\-n\fR, \fB\-\-norestore\fR
+Don't restore last core's state, such as previously connected networks.
+.TP
+\fB\-\-oidentd\fR
+Enable oidentd integration. In most cases you should also enable
+\fB\-\-strict-ident\fR.
+.TP
+\fB\-\-oidentd\-conffile\fR=\fIOIDENTCONF\fR
+Set path to oidentd configuration file.
+.TP
+\fB\-p\fR, \fB\-\-port\fR=\fIPORT\fR
+The port the internal quasselcore will listen at. If not specified, the
+internal core will not accept connections from other clients.
+.TP
+\fB\-\-require\-ssl\fR
+Require SSL for remote (non-loopback) client connections.
+.TP
+\fB\-\-select\-authenticator\fR=\fIAUTHENTICATOR\fR
+Starts an interactive session to switch your current user authentication
+backend to the new one.
+.TP
+\fB\-\-select\-backend\fR=\fIBACKEND\fR
+Starts an interactive session to switch your current storage backend to the new
+one. Attempts a merge if the new backend is uninitialized and the old backend
+supports migration, otherwise prompts for new user credentials.
+.TP
+\fB\-\-ssl\-cert\fR=\fISSLCERTFILE\fR
+Specify the path to the SSL certificate. Reloaded when quasselcore is sent a
+SIGHUP. Default is: CONFIGDIR/quasselCert.pem
+.TP
+\fB\-\-ssl\-key\fR=\fISSLKEYFILE\fR
+Specify the path to the SSL key. Reloaded when quasselcore is sent a SIGHUP.
+Only needed if not combined with the SSL certificate.
+.TP
+\fB\-\-strict\-ident\fR
+Use users' quasselcore username as ident reply. Ignores each user's configured
+ident setting. Useful for multi-user quasselcores connecting to IRC networks
+that require a fixed identifier for each user.
+.
+.SH "ENVIRONMENT"
+When \fB\-\-config\-from\-environment\fR is specified, the quasselcore will use
+the following environment variables instead of the configuration file. This may
+be useful for container setups or automated deployment.
+.
+.TP
+\fBAUTH_AUTHENTICATOR\fR
+Specifies the selected user authentication backend. See
+\fB\-\-select\-authenticator\fR.
+.TP
+\fBAUTH_LDAP_BASE_DN\fR
+Specifies the LDAP authenticator base DN.
+.TP
+\fBAUTH_LDAP_BIND_DN\fR
+Specifies the LDAP authenticator bind DN.
+.TP
+\fBAUTH_LDAP_BIND_PASSWORD\fR
+Specifies the LDAP authenticator bind password.
+.TP
+\fBAUTH_LDAP_FILTER\fR
+Specifies the LDAP authenticator filter.
+.TP
+\fBAUTH_LDAP_HOSTNAME\fR
+Specifies the LDAP authenticator connection hostname.
+.TP
+\fBAUTH_LDAP_PORT\fR
+Specifies the LDAP authenticator connection port.
+.TP
+\fBAUTH_LDAP_UID_ATTRIBUTE\fR
+Specifies the LDAP authenticator UID attribute.
+.TP
+\fBDB_BACKEND\fR
+Specifies the selected database backend. See \fB\-\-select\-backend\fR.
+.TP
+\fBDB_PGSQL_DATABASE\fR
+Specifies the Postgres connection database name.
+.TP
+\fBDB_PGSQL_HOSTNAME\fR
+Specifies the Postgres connection hostname.
+.TP
+\fBDB_PGSQL_USERNAME\fR
+Specifies the Postgres connection username.
+.TP
+\fBDB_PGSQL_PASSWORD\fR
+Specifies the Postgres connection user password.
+.TP
+\fBDB_PGSQL_PORT\fR
+Specifies the Postgres connection port.
+.
+.SH FILES
+.
+.TP
+\fI$HOME/.config/quassel-irc.org\fR
+Configuration files, SQLite database with chat logs, and the SSL/TLS
+certificate. To override, see \fB\-\-configdir\fR.
+.
+.SH AUTHORS
+The full list of Quassel IRC authors and contributors may be seen in the
+client's About window.
+.PP
+This manual page was written by Thomas Mueller
+<thomas.mueller@tmit.eu> and updated by Shane Synan
+<digitalcircuit36939+deb@gmail.com>, for the Debian GNU/Linux
+system (but may be used by others). Permission is
+granted to copy, distribute and/or modify this document under
+the terms of the GNU General Public License
+version 2 or any later version published by the Free Software Foundation.
--- /dev/null
+.TH "QUASSELCLIENT" "1" "0.13.1" "Quassel IRC Team, Internet." ""
+.SH "NAME"
+quasselclient \(em GUI of the Quassel IRC client, client only
+.SH "SYNPOSIS"
+\fBquasselclient\fR [\fIOPTION\fR]...
+.
+.SH "DESCRIPTION"
+.B Quassel IRC
+is a modern, cross-platform, distributed IRC client, meaning that one
+(or multiple) client(s) can attach to and detach from a central core -- much
+like the popular combination of screen and a text-based IRC client such as
+WeeChat, but graphical.
+.PP
+\fBquasselclient\fR connects to and manages a running \fBquasselcore\fR and
+will not work on its own. For a standalone IRC client experience, use the
+\fBquassel\fR monolithic program.
+.
+.SH "OPTIONS"
+.TP
+\fB\-c\fR, \fB\-\-configdir\fR=\fICONFIGDIR\fR
+Specify the directory holding the client configuration.
+.TP
+\fB\-d\fR, \fB\-\-debug\fR
+Enable extra debugging output.
+.TP
+\fB\-\-debugbufferswitches\fR
+Enables debugging for bufferswitches.
+.TP
+\fB\-\-debugmodel\fR
+Enables debugging for models.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show help message.
+.TP
+\fB\-\-hidewindow\fR
+Start the client minimized to the system tray.
+.TP
+\fB\-\-icontheme\fR=\fITHEME\fR
+Override the system icon theme. 'breeze' is recommended. This may also be
+configured in the client settings.
+.TP
+\fB\-L\fR, \fB\-\-loglevel\fR=\fILOGLEVEL\fR
+Set the logging level to LOGLEVEL: Debug, Info, Warning, Error. Default is:
+Info
+.TP
+\fB\-l\fR, \fB\-\-logfile\fR=\fILOGFILE\fR
+Log to a file.
+.TP
+\fB\-\-qss\fR=\fIQSS\fR
+Load a custom application stylesheet.
+.TP
+\fB\-\-syslog\fR
+Log to syslog.
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Display version information.
+.
+.SH FILES
+.
+.TP
+\fI$HOME/.config/quassel-irc.org\fR
+Configuration files. To override, see \fB\-\-configdir\fR.
+.
+.B NOTE:
+Chat logs are maintained by the remote Quassel core and requested as needed.
+They are not saved locally.
+.
+.SH AUTHORS
+The full list of Quassel IRC authors and contributors may be seen in the
+client's About window.
+.PP
+This manual page was written by Thomas Mueller
+<thomas.mueller@tmit.eu> and updated by Shane Synan
+<digitalcircuit36939+deb@gmail.com>, for the Debian GNU/Linux
+system (but may be used by others). Permission is
+granted to copy, distribute and/or modify this document under
+the terms of the GNU General Public License
+version 2 or any later version published by the Free Software Foundation.
--- /dev/null
+.TH "QUASSELCORE" "1" "0.13.1" "Quassel IRC Team, Internet." ""
+.SH "NAME"
+quasselcore \(em the daemon process for the Quassel IRC client
+.SH "SYNPOSIS"
+\fBquasselcore\fR [\fIOPTION\fR]...
+.
+.SH "DESCRIPTION"
+.B Quassel IRC
+is a modern, cross-platform, distributed IRC client, meaning that one
+(or multiple) client(s) can attach to and detach from a central core -- much
+like the popular combination of screen and a text-based IRC client such as
+WeeChat, but graphical.
+.PP
+\fBquasselcore\fR provides the daemon which connects to IRC networks, allowing
+any number of Quassel clients to connect, including the official desktop
+client, the \fBquasselclient\fR program.
+.
+.SH "OPTIONS"
+.TP
+\fB\-\-add\-user\fR
+Starts an interactive session to add a new core user
+.TP
+\fB\-\-change\-userpass\fR=\fIUSERNAME\fR
+Starts an interactive session to change the password of the user identified by
+USERNAME.
+.TP
+\fB\-c\fR, \fB\-\-configdir\fR=\fICONFIGDIR\fR
+Specify the directory holding the configuration files, the SQLite database with
+chat logs (unless another database backend is selected), and the SSL/TLS
+certificate.
+.TP
+\fB\-\-config\-from\-environment\fR
+Load configuration from environment variables, ignoring the configuration file.
+See the section on \fBENVIRONMENT VARIABLES\fR.
+.TP
+\fB\-d\fR, \fB\-\-debug\fR
+Enable extra debugging output. Requires setting \fB\-\-loglevel=Debug\fR.
+.TP
+\fB\-\-debug-irc\fR
+Enable logging of all raw IRC messages to debug log, \fBincluding passwords!\fR
+In most cases you should also set \fB--loglevel Debug\fR.
+.TP
+\fB\-\-debug\-irc\-id\fR=\fIDATABASENETWORKID\fR
+Limit raw IRC logging to this network ID. Implies \fB\-\-debug-irc\fR.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show help message.
+.TP
+\fB\-\-ident\-daemon\fR
+Enable internal ident daemon.
+.TP
+\fB\-\-ident\-listen\fR=\fIIDENTLISTEN\fR
+The address(es) quasselcore will listen on for ident requests. Same format as
+\fB\-\-listen\fR. Only meaningful with \fB\-\-ident\-daemon\fR. Default is:
+::1,127.0.0.1 (only localhost)
+.TP
+\fB\-\-ident\-port\fR=\fIIDENTPORT\fR
+The port the quasselcore will listen at for ident requests. Only meaningful
+with \fB\-\-ident\-daemon\fR. Default is: 10113
+.TP
+\fB\-\-listen\fR=\fILISTEN\fR
+The address(es) quasselcore will listen on. Default is: ::,0.0.0.0 (all
+addresses)
+.TP
+\fB\-L\fR, \fB\-\-loglevel\fR=\fILOGLEVEL\fR
+Set the logging level to LOGLEVEL: Debug, Info, Warning, Error. Default is:
+Info
+.TP
+\fB\-l\fR, \fB\-\-logfile\fR=\fILOGFILE\fR
+Log to a file.
+.TP
+\fB\-n\fR, \fB\-\-norestore\fR
+Don't restore last core's state, such as previously connected networks.
+.TP
+\fB\-\-oidentd\fR
+Enable oidentd integration. In most cases you should also enable
+\fB\-\-strict-ident\fR.
+.TP
+\fB\-\-oidentd\-conffile\fR=\fIOIDENTCONF\fR
+Set path to oidentd configuration file.
+.TP
+\fB\-p\fR, \fB\-\-port\fR=\fIPORT\fR
+The port quasselcore will listen at. Default is: 4242
+.TP
+\fB\-\-require\-ssl\fR
+Require SSL for remote (non-loopback) client connections.
+.TP
+\fB\-\-select\-authenticator\fR=\fIAUTHENTICATOR\fR
+Starts an interactive session to switch your current user authentication
+backend to the new one.
+.TP
+\fB\-\-select\-backend\fR=\fIBACKEND\fR
+Starts an interactive session to switch your current storage backend to the new
+one. Attempts a merge if the new backend is uninitialized and the old backend
+supports migration, otherwise prompts for new user credentials.
+.TP
+\fB\-\-ssl\-cert\fR=\fISSLCERTFILE\fR
+Specify the path to the SSL certificate. Reloaded when quasselcore is sent a
+SIGHUP. Default is: CONFIGDIR/quasselCert.pem
+.TP
+\fB\-\-ssl\-key\fR=\fISSLKEYFILE\fR
+Specify the path to the SSL key. Reloaded when quasselcore is sent a SIGHUP.
+Only needed if not combined with the SSL certificate.
+.TP
+\fB\-\-strict\-ident\fR
+Use users' quasselcore username as ident reply. Ignores each user's configured
+ident setting. Useful for multi-user quasselcores connecting to IRC networks
+that require a fixed identifier for each user.
+.TP
+\fB\-\-syslog\fR
+Log to syslog.
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Display version information.
+.
+.SH "ENVIRONMENT"
+When \fB\-\-config\-from\-environment\fR is specified, the quasselcore will use
+the following environment variables instead of the configuration file. This may
+be useful for container setups or automated deployment.
+.
+.TP
+\fBAUTH_AUTHENTICATOR\fR
+Specifies the selected user authentication backend. See
+\fB\-\-select\-authenticator\fR.
+.TP
+\fBAUTH_LDAP_BASE_DN\fR
+Specifies the LDAP authenticator base DN.
+.TP
+\fBAUTH_LDAP_BIND_DN\fR
+Specifies the LDAP authenticator bind DN.
+.TP
+\fBAUTH_LDAP_BIND_PASSWORD\fR
+Specifies the LDAP authenticator bind password.
+.TP
+\fBAUTH_LDAP_FILTER\fR
+Specifies the LDAP authenticator filter.
+.TP
+\fBAUTH_LDAP_HOSTNAME\fR
+Specifies the LDAP authenticator connection hostname.
+.TP
+\fBAUTH_LDAP_PORT\fR
+Specifies the LDAP authenticator connection port.
+.TP
+\fBAUTH_LDAP_UID_ATTRIBUTE\fR
+Specifies the LDAP authenticator UID attribute.
+.TP
+\fBDB_BACKEND\fR
+Specifies the selected database backend. See \fB\-\-select\-backend\fR.
+.TP
+\fBDB_PGSQL_DATABASE\fR
+Specifies the Postgres connection database name.
+.TP
+\fBDB_PGSQL_HOSTNAME\fR
+Specifies the Postgres connection hostname.
+.TP
+\fBDB_PGSQL_USERNAME\fR
+Specifies the Postgres connection username.
+.TP
+\fBDB_PGSQL_PASSWORD\fR
+Specifies the Postgres connection user password.
+.TP
+\fBDB_PGSQL_PORT\fR
+Specifies the Postgres connection port.
+.
+.SH FILES
+.
+.TP
+\fI/var/lib/quassel\fR
+Configuration files, the SQLite database with chat logs (unless another
+database backend is selected), and the SSL/TLS certificate. To override, see
+\fB\-\-configdir\fR.
+.TP
+\fI/etc/default/quasselcore\fR
+Additional configuration parameters, including default port and logging level.
+.
+.SH "NOTES"
+In a typical installation, \fBquasselcore\fR runs as the \fIquasselcore\fR
+user, with configuration data stored in \fI/var/lib/quassel\fR. When manually
+running quasselcore, you should specify the proper user and \fB\-\-configdir\fR
+as follows.
+.PP
+.nf
+.RS 4
+$\ sudo\ \-\-user=quasselcore\ \\
+quasselcore\ \-\-configdir=/var/lib/quassel [\fIOPTIONS\fR]
+.RE
+.fi
+.
+.SH AUTHORS
+The full list of Quassel IRC authors and contributors may be seen in
+quasselclient's About window.
+.PP
+This manual page was written by Thomas Mueller
+<thomas.mueller@tmit.eu> and updated by Shane Synan
+<digitalcircuit36939+deb@gmail.com>, for the Debian GNU/Linux
+system (but may be used by others). Permission is
+granted to copy, distribute and/or modify this document under
+the terms of the GNU General Public License
+version 2 or any later version published by the Free Software Foundation.
--- /dev/null
+From: Debian KDE Extras Team <pkg-kde-extras@lists.alioth.debian.org>
+Date: Sun, 2 Dec 2018 15:29:07 -0500
+Subject: 01_default_network_channel
+
+---
+ data/networks.ini | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/data/networks.ini b/data/networks.ini
+index 5f8fa02..873ac4e 100644
+--- a/data/networks.ini
++++ b/data/networks.ini
+@@ -49,3 +49,11 @@ Servers=eu.undernet.org:6667,us.undernet.org:6667,elsene.be.eu.undernet.org:6667
+
+ [euIRCnet]
+ Servers=irc.euirc.net:+6697,irc.euirc.net:6665
++
++[DebianIRC]
++Default=Yes
++DefaultChannels=#debian
++Servers=irc.debian.org:+6697
++
++Default=Yes
++DefaultChannels=#debian
--- /dev/null
+Index: quassel/data/scripts/inxi
+===================================================================
+--- quassel.orig/data/scripts/inxi 2018-12-02 15:30:30.586561181 -0500
++++ quassel/data/scripts/inxi 2018-12-03 00:24:30.599106749 -0500
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/bin/perl
+ ## infobash: Copyright (C) 2005-2007 Michiel de Boer aka locsmif
+ ## inxi: Copyright (C) 2008-2018 Harald Hope
+ ## Additional features (C) Scott Rogers - kde, cpu info
+Index: quassel/data/scripts/mpris
+===================================================================
+--- quassel.orig/data/scripts/mpris 2018-12-02 15:26:46.362556679 -0500
++++ quassel/data/scripts/mpris 2018-12-03 00:24:18.139106499 -0500
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/bin/perl
+
+ ##########################################################################
+ # Copyright (C) 2009 by Sebastian Goth #
--- /dev/null
+From 579e559a6322209df7cd51c34801fecff5fe734b Mon Sep 17 00:00:00 2001
+From: Manuel Nickschas <sputnick@quassel-irc.org>
+Date: Tue, 7 Jan 2020 18:34:54 +0100
+Subject: [PATCH 1/6] common: Disable enum type stream operators for Qt >= 5.14
+Bug: https://bugs.quassel-irc.org/issues/1544
+Bug-Ubuntu: https://bugs.launchpad.net/quassel/+bug/1885436
+Origin: upstream, https://github.com/quassel/quassel/pull/518
+Origin: upstream, https://github.com/quassel/quassel/commit/579e559a6322209df7cd51c34801fecff5fe734b
+
+Starting from version 5.14, Qt provides stream operators for enum
+types, which collide with the ones we ship in types.h. Disable
+Quassel's stream operators when compiling against Qt 5.14 or later.
+
+Add a unit test that ensures that enum serialization honors the width
+of the underlying type.
+---
+ src/common/types.h | 2 +
+ tests/common/CMakeLists.txt | 2 +
+ tests/common/typestest.cpp | 79 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 83 insertions(+)
+ create mode 100644 tests/common/typestest.cpp
+
+--- a/src/common/types.h
++++ b/src/common/types.h
+@@ -140,6 +140,7 @@ Q_DECLARE_METATYPE(QHostAddress)
+ typedef QList<MsgId> MsgIdList;
+ typedef QList<BufferId> BufferIdList;
+
++#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
+ /**
+ * Catch-all stream serialization operator for enum types.
+ *
+@@ -169,6 +170,7 @@ QDataStream &operator>>(QDataStream &in,
+ value = static_cast<T>(v);
+ return in;
+ }
++#endif
+
+ // Exceptions
+
--- /dev/null
+From 41bf70c263ee0af80ad1850fabe77ffffee188f4 Mon Sep 17 00:00:00 2001
+From: Manuel Nickschas <sputnick@quassel-irc.org>
+Date: Tue, 7 Jan 2020 18:39:48 +0100
+Subject: [PATCH 2/6] common: Always let QVariant::fromValue() deduce the type
+Bug: https://bugs.quassel-irc.org/issues/1544
+Bug-Ubuntu: https://bugs.launchpad.net/quassel/+bug/1885436
+Origin: upstream, https://github.com/quassel/quassel/pull/518
+Origin: upstream, https://github.com/quassel/quassel/commit/41bf70c263ee0af80ad1850fabe77ffffee188f4
+
+In some places, we would explicitly give the type to
+QVariant::fromValue(), forgoing automatic type deduction. This is
+almost always redundant, and in the cases where it is not, the
+input type should be explicitly cast.
+
+Additionally, the implementation of QVariant::fromValue() subtly changed
+in Qt 5.14, leading to compile errors when giving a non-decayed type
+(as we did in SignalProxy::attachSignal()).
+---
+ src/client/coreaccountmodel.cpp | 2 +-
+ src/client/messagefilter.cpp | 2 +-
+ src/client/messagemodel.cpp | 10 +++++-----
+ src/client/networkmodel.cpp | 18 +++++++++---------
+ src/common/buffersyncer.cpp | 8 ++++----
+ src/common/network.cpp | 4 ++--
+ src/common/serializers/serializers.cpp | 2 +-
+ src/common/signalproxy.h | 2 +-
+ src/common/types.h | 10 +++++-----
+ src/common/util.h | 2 +-
+ src/core/core.cpp | 2 +-
+ src/qtui/chatitem.cpp | 2 +-
+ src/qtui/chatlinemodelitem.cpp | 16 ++++++++--------
+ src/qtui/chatviewsettings.cpp | 2 +-
+ src/qtui/mainwin.cpp | 2 +-
+ src/qtui/settingsdlg.cpp | 2 +-
+ .../settingspages/chatmonitorsettingspage.cpp | 2 +-
+ .../settingspages/networkssettingspage.cpp | 2 +-
+ src/qtui/settingspages/shortcutsmodel.cpp | 2 +-
+ src/uisupport/networkmodelcontroller.cpp | 2 +-
+ src/uisupport/toolbaractionprovider.cpp | 2 +-
+ 21 files changed, 48 insertions(+), 48 deletions(-)
+
+--- a/src/client/coreaccountmodel.cpp
++++ b/src/client/coreaccountmodel.cpp
+@@ -107,7 +107,7 @@ QVariant CoreAccountModel::data(const QM
+ case Qt::DisplayRole:
+ return acc.accountName();
+ case AccountIdRole:
+- return QVariant::fromValue<AccountId>(acc.accountId());
++ return QVariant::fromValue(acc.accountId());
+ case UuidRole:
+ return acc.uuid().toString();
+
+--- a/src/client/messagefilter.cpp
++++ b/src/client/messagefilter.cpp
+@@ -191,7 +191,7 @@ bool MessageFilter::filterAcceptsRow(int
+ if (!redirectedTo.isValid()) {
+ BufferId redirectedTo = Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>();
+ if (redirectedTo.isValid())
+- sourceModel()->setData(sourceIdx, QVariant::fromValue<BufferId>(redirectedTo), MessageModel::RedirectedToRole);
++ sourceModel()->setData(sourceIdx, QVariant::fromValue(redirectedTo), MessageModel::RedirectedToRole);
+ }
+
+ if (_validBuffers.contains(redirectedTo))
+--- a/src/client/messagemodel.cpp
++++ b/src/client/messagemodel.cpp
+@@ -448,11 +448,11 @@ QVariant MessageModelItem::data(int colu
+
+ switch (role) {
+ case MessageModel::MessageRole:
+- return QVariant::fromValue<Message>(message());
++ return QVariant::fromValue(message());
+ case MessageModel::MsgIdRole:
+- return QVariant::fromValue<MsgId>(msgId());
++ return QVariant::fromValue(msgId());
+ case MessageModel::BufferIdRole:
+- return QVariant::fromValue<BufferId>(bufferId());
++ return QVariant::fromValue(bufferId());
+ case MessageModel::TypeRole:
+ return msgType();
+ case MessageModel::FlagsRole:
+@@ -460,9 +460,9 @@ QVariant MessageModelItem::data(int colu
+ case MessageModel::TimestampRole:
+ return timestamp();
+ case MessageModel::RedirectedToRole:
+- return qVariantFromValue<BufferId>(_redirectedTo);
++ return QVariant::fromValue(_redirectedTo);
+ default:
+- return QVariant();
++ return {};
+ }
+ }
+
+--- a/src/client/networkmodel.cpp
++++ b/src/client/networkmodel.cpp
+@@ -72,7 +72,7 @@ QVariant NetworkItem::data(int column, i
+ else
+ return QVariant();
+ case NetworkModel::NetworkIdRole:
+- return qVariantFromValue(_networkId);
++ return QVariant::fromValue(_networkId);
+ case NetworkModel::ItemTypeRole:
+ return NetworkModel::NetworkItemType;
+ case NetworkModel::ItemActiveRole:
+@@ -406,11 +406,11 @@ QVariant BufferItem::data(int column, in
+ case NetworkModel::ItemTypeRole:
+ return NetworkModel::BufferItemType;
+ case NetworkModel::BufferIdRole:
+- return qVariantFromValue(bufferInfo().bufferId());
++ return QVariant::fromValue(bufferInfo().bufferId());
+ case NetworkModel::NetworkIdRole:
+- return qVariantFromValue(bufferInfo().networkId());
++ return QVariant::fromValue(bufferInfo().networkId());
+ case NetworkModel::BufferInfoRole:
+- return qVariantFromValue(bufferInfo());
++ return QVariant::fromValue(bufferInfo());
+ case NetworkModel::BufferTypeRole:
+ return int(bufferType());
+ case NetworkModel::ItemActiveRole:
+@@ -418,9 +418,9 @@ QVariant BufferItem::data(int column, in
+ case NetworkModel::BufferActivityRole:
+ return (int)activityLevel();
+ case NetworkModel::BufferFirstUnreadMsgIdRole:
+- return qVariantFromValue(firstUnreadMsgId());
++ return QVariant::fromValue(firstUnreadMsgId());
+ case NetworkModel::MarkerLineMsgIdRole:
+- return qVariantFromValue(markerLineMsgId());
++ return QVariant::fromValue(markerLineMsgId());
+ default:
+ return PropertyMapItem::data(column, role);
+ }
+@@ -523,7 +523,7 @@ QVariant QueryBufferItem::data(int colum
+ case Qt::EditRole:
+ return BufferItem::data(column, Qt::DisplayRole);
+ case NetworkModel::IrcUserRole:
+- return QVariant::fromValue<QObject *>(_ircUser);
++ return QVariant::fromValue(_ircUser);
+ case NetworkModel::UserAwayRole:
+ return (bool)_ircUser ? _ircUser->isAway() : false;
+ default:
+@@ -750,7 +750,7 @@ QVariant ChannelBufferItem::data(int col
+ {
+ switch (role) {
+ case NetworkModel::IrcChannelRole:
+- return QVariant::fromValue<QObject *>(_ircChannel);
++ return QVariant::fromValue(_ircChannel);
+ default:
+ return BufferItem::data(column, role);
+ }
+@@ -1147,7 +1147,7 @@ QVariant IrcUserItem::data(int column, i
+ case NetworkModel::IrcChannelRole:
+ return parent()->data(column, role);
+ case NetworkModel::IrcUserRole:
+- return QVariant::fromValue<QObject *>(_ircUser.data());
++ return QVariant::fromValue(_ircUser.data());
+ case NetworkModel::UserAwayRole:
+ return (bool)_ircUser ? _ircUser->isAway() : false;
+ default:
+--- a/src/common/buffersyncer.cpp
++++ b/src/common/buffersyncer.cpp
+@@ -90,8 +90,7 @@ QVariantList BufferSyncer::initLastSeenM
+ QVariantList list;
+ QHash<BufferId, MsgId>::const_iterator iter = _lastSeenMsg.constBegin();
+ while (iter != _lastSeenMsg.constEnd()) {
+- list << QVariant::fromValue<BufferId>(iter.key())
+- << QVariant::fromValue<MsgId>(iter.value());
++ list << QVariant::fromValue(iter.key()) << QVariant::fromValue(iter.value());
+ ++iter;
+ }
+ return list;
+@@ -113,8 +112,7 @@ QVariantList BufferSyncer::initMarkerLin
+ QVariantList list;
+ QHash<BufferId, MsgId>::const_iterator iter = _markerLines.constBegin();
+ while (iter != _markerLines.constEnd()) {
+- list << QVariant::fromValue<BufferId>(iter.key())
+- << QVariant::fromValue<MsgId>(iter.value());
++ list << QVariant::fromValue(iter.key()) << QVariant::fromValue(iter.value());
+ ++iter;
+ }
+ return list;
+@@ -136,8 +134,7 @@ QVariantList BufferSyncer::initActivitie
+ QVariantList list;
+ auto iter = _bufferActivities.constBegin();
+ while (iter != _bufferActivities.constEnd()) {
+- list << QVariant::fromValue<BufferId>(iter.key())
+- << QVariant::fromValue<int>((int) iter.value());
++ list << QVariant::fromValue(iter.key()) << QVariant::fromValue((int)iter.value());
+ ++iter;
+ }
+ return list;
+@@ -197,8 +194,7 @@ QVariantList BufferSyncer::initHighlight
+ QVariantList list;
+ auto iter = _highlightCounts.constBegin();
+ while (iter != _highlightCounts.constEnd()) {
+- list << QVariant::fromValue<BufferId>(iter.key())
+- << QVariant::fromValue<int>((int) iter.value());
++ list << QVariant::fromValue(iter.key()) << QVariant::fromValue((int)iter.value());
+ ++iter;
+ }
+ return list;
+--- a/src/common/network.cpp
++++ b/src/common/network.cpp
+@@ -1209,8 +1209,8 @@ QDataStream &operator<<(QDataStream &out
+ i["CodecForServer"] = info.codecForServer;
+ i["CodecForEncoding"] = info.codecForEncoding;
+ i["CodecForDecoding"] = info.codecForDecoding;
+- i["NetworkId"] = QVariant::fromValue<NetworkId>(info.networkId);
+- i["Identity"] = QVariant::fromValue<IdentityId>(info.identity);
++ i["NetworkId"] = QVariant::fromValue(info.networkId);
++ i["Identity"] = QVariant::fromValue(info.identity);
+ i["MessageRateBurstSize"] = info.messageRateBurstSize;
+ i["MessageRateDelay"] = info.messageRateDelay;
+ i["AutoReconnectInterval"] = info.autoReconnectInterval;
+--- a/src/common/serializers/serializers.cpp
++++ b/src/common/serializers/serializers.cpp
+@@ -29,7 +29,7 @@ bool toVariant(QDataStream& stream, Quas
+ if (!Serializers::deserialize(stream, features, content)) {
+ return false;
+ }
+- data = QVariant::fromValue<T>(content);
++ data = QVariant::fromValue(content);
+ return true;
+ }
+
+--- a/src/common/types.h
++++ b/src/common/types.h
+@@ -100,27 +100,27 @@ inline uint qHash(const SignedId64 &id)
+
+ struct UserId : public SignedId {
+ inline UserId(int _id = 0) : SignedId(_id) {}
+- //inline operator QVariant() const { return QVariant::fromValue<UserId>(*this); } // no automatic conversion!
++ //inline operator QVariant() const { return QVariant::fromValue(*this); } // no automatic conversion!
+ };
+
+ struct MsgId : public SignedId64 {
+ inline MsgId(qint64 _id = 0) : SignedId64(_id) {}
+- //inline operator QVariant() const { return QVariant::fromValue<MsgId>(*this); }
++ //inline operator QVariant() const { return QVariant::fromValue(*this); }
+ };
+
+ struct BufferId : public SignedId {
+ inline BufferId(int _id = 0) : SignedId(_id) {}
+- //inline operator QVariant() const { return QVariant::fromValue<BufferId>(*this); }
++ //inline operator QVariant() const { return QVariant::fromValue(*this); }
+ };
+
+ struct NetworkId : public SignedId {
+ inline NetworkId(int _id = 0) : SignedId(_id) {}
+- //inline operator QVariant() const { return QVariant::fromValue<NetworkId>(*this); }
++ //inline operator QVariant() const { return QVariant::fromValue(*this); }
+ };
+
+ struct IdentityId : public SignedId {
+ inline IdentityId(int _id = 0) : SignedId(_id) {}
+- //inline operator QVariant() const { return QVariant::fromValue<IdentityId>(*this); }
++ //inline operator QVariant() const { return QVariant::fromValue(*this); }
+ };
+
+ struct AccountId : public SignedId {
+--- a/src/common/util.h
++++ b/src/common/util.h
+@@ -53,7 +53,7 @@ QVariantList toVariantList(const QList<T
+ {
+ QVariantList variants;
+ for (int i = 0; i < list.count(); i++) {
+- variants << QVariant::fromValue<T>(list[i]);
++ variants << QVariant::fromValue(list[i]);
+ }
+ return variants;
+ }
+--- a/src/core/core.cpp
++++ b/src/core/core.cpp
+@@ -301,7 +301,7 @@ void Core::saveState()
+ if (_storage) {
+ QVariantList activeSessions;
+ for (auto &&user : instance()->_sessions.keys())
+- activeSessions << QVariant::fromValue<UserId>(user);
++ activeSessions << QVariant::fromValue(user);
+ _storage->setCoreState(activeSessions);
+ }
+ }
+--- a/src/qtui/chatitem.cpp
++++ b/src/qtui/chatitem.cpp
+@@ -871,7 +871,7 @@ void ContentsChatItem::addActionsToMenu(
+ case Clickable::Url:
+ privateData()->activeClickable = click;
+ menu->addAction(icon::get("edit-copy"), tr("Copy Link Address"),
+- &_actionProxy, SLOT(copyLinkToClipboard()))->setData(QVariant::fromValue<void *>(this));
++ &_actionProxy, SLOT(copyLinkToClipboard()))->setData(QVariant::fromValue(static_cast<void *>(this)));
+ break;
+ case Clickable::Channel:
+ {
+--- a/src/qtui/chatlinemodelitem.cpp
++++ b/src/qtui/chatlinemodelitem.cpp
+@@ -76,7 +76,7 @@ bool ChatLineModelItem::setData(int colu
+ QVariant ChatLineModelItem::data(int column, int role) const
+ {
+ if (role == ChatLineModel::MsgLabelRole)
+- return QVariant::fromValue<UiStyle::MessageLabel>(messageLabel());
++ return QVariant::fromValue(messageLabel());
+
+ QVariant variant;
+ MessageModel::ColumnType col = (MessageModel::ColumnType)column;
+@@ -111,7 +111,8 @@ QVariant ChatLineModelItem::timestampDat
+ case ChatLineModel::SelectedBackgroundRole:
+ return backgroundBrush(UiStyle::FormatType::Timestamp, true);
+ case ChatLineModel::FormatRole:
+- return QVariant::fromValue<UiStyle::FormatList>({std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Timestamp, {}, {}})});
++ return QVariant::fromValue(UiStyle::FormatList{
++ std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Timestamp, {}, {}})});
+ }
+ return QVariant();
+ }
+@@ -129,7 +130,8 @@ QVariant ChatLineModelItem::senderData(i
+ case ChatLineModel::SelectedBackgroundRole:
+ return backgroundBrush(UiStyle::FormatType::Sender, true);
+ case ChatLineModel::FormatRole:
+- return QVariant::fromValue<UiStyle::FormatList>({std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Sender, {}, {}})});
++ return QVariant::fromValue(UiStyle::FormatList{
++ std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Sender, {}, {}})});
+ }
+ return QVariant();
+ }
+@@ -146,11 +148,11 @@ QVariant ChatLineModelItem::contentsData
+ case ChatLineModel::SelectedBackgroundRole:
+ return backgroundBrush(UiStyle::FormatType::Contents, true);
+ case ChatLineModel::FormatRole:
+- return QVariant::fromValue<UiStyle::FormatList>(_styledMsg.contentsFormatList());
++ return QVariant::fromValue(_styledMsg.contentsFormatList());
+ case ChatLineModel::WrapListRole:
+ if (_wrapList.isEmpty())
+ computeWrapList();
+- return QVariant::fromValue<ChatLineModel::WrapList>(_wrapList);
++ return QVariant::fromValue(_wrapList);
+ }
+ return QVariant();
+ }
+@@ -174,7 +176,7 @@ QVariant ChatLineModelItem::backgroundBr
+ QTextCharFormat fmt = QtUi::style()->format({UiStyle::formatType(_styledMsg.type()) | subelement, {}, {}},
+ messageLabel() | (selected ? UiStyle::MessageLabel::Selected : UiStyle::MessageLabel::None));
+ if (fmt.hasProperty(QTextFormat::BackgroundBrush))
+- return QVariant::fromValue<QBrush>(fmt.background());
++ return QVariant::fromValue(fmt.background());
+ return QVariant();
+ }
+
+--- a/src/qtui/mainwin.cpp
++++ b/src/qtui/mainwin.cpp
+@@ -1774,7 +1774,7 @@ void MainWin::clientNetworkCreated(Netwo
+ const Network *net = Client::network(id);
+ QAction *act = new QAction(net->networkName(), this);
+ act->setObjectName(QString("NetworkAction-%1").arg(id.toInt()));
+- act->setData(QVariant::fromValue<NetworkId>(id));
++ act->setData(QVariant::fromValue(id));
+ connect(net, SIGNAL(updatedRemotely()), this, SLOT(clientNetworkUpdated()));
+ connect(act, SIGNAL(triggered()), this, SLOT(connectOrDisconnectFromNet()));
+
+--- a/src/qtui/settingsdlg.cpp
++++ b/src/qtui/settingsdlg.cpp
+@@ -95,7 +95,7 @@ void SettingsDlg::registerSettingsPage(S
+ else
+ item = new QTreeWidgetItem(cat, QStringList(sp->title()));
+
+- item->setData(0, SettingsPageRole, QVariant::fromValue<QObject *>(sp));
++ item->setData(0, SettingsPageRole, QVariant::fromValue(sp));
+ pageIsLoaded[sp] = false;
+ if (!ui.settingsTree->selectedItems().count())
+ ui.settingsTree->setCurrentItem(item);
+--- a/src/qtui/settingspages/chatmonitorsettingspage.cpp
++++ b/src/qtui/settingspages/chatmonitorsettingspage.cpp
+@@ -161,8 +161,8 @@ void ChatMonitorSettingsPage::save()
+
+ // save list of active buffers
+ QVariantList saveableBufferIdList;
+- foreach(BufferId id, _configActive->bufferList()) {
+- saveableBufferIdList << QVariant::fromValue<BufferId>(id);
++ foreach (BufferId id, _configActive->bufferList()) {
++ saveableBufferIdList << QVariant::fromValue(id);
+ }
+
+ chatViewSettings.setValue("Buffers", saveableBufferIdList);
+--- a/src/qtui/settingspages/networkssettingspage.cpp
++++ b/src/qtui/settingspages/networkssettingspage.cpp
+@@ -570,7 +570,7 @@ QListWidgetItem *NetworksSettingsPage::i
+ }
+ if (!item) item = new QListWidgetItem(disconnectedIcon, info.networkName, ui.networkList);
+ }
+- item->setData(Qt::UserRole, QVariant::fromValue<NetworkId>(info.networkId));
++ item->setData(Qt::UserRole, QVariant::fromValue(info.networkId));
+ setItemState(info.networkId, item);
+ widgetHasChanged();
+ return item;
+--- a/src/qtui/settingspages/shortcutsmodel.cpp
++++ b/src/qtui/settingspages/shortcutsmodel.cpp
+@@ -156,7 +156,7 @@ QVariant ShortcutsModel::data(const QMod
+ return QVariant();
+
+ case ActionRole:
+- return QVariant::fromValue<QObject *>(action);
++ return QVariant::fromValue(action);
+
+ case DefaultShortcutRole:
+ return action->shortcut(Action::DefaultShortcut);
+--- a/src/uisupport/networkmodelcontroller.cpp
++++ b/src/uisupport/networkmodelcontroller.cpp
+@@ -577,7 +577,7 @@ NetworkModelController::JoinDlg::JoinDlg
+ foreach(NetworkId id, Client::networkIds()) {
+ const Network *net = Client::network(id);
+ if (net->isConnected()) {
+- networks->addItem(net->networkName(), QVariant::fromValue<NetworkId>(id));
++ networks->addItem(net->networkName(), QVariant::fromValue(id));
+ }
+ }
+
+--- a/src/uisupport/toolbaractionprovider.cpp
++++ b/src/uisupport/toolbaractionprovider.cpp
+@@ -165,7 +165,7 @@ void ToolBarActionProvider::networkCreat
+ Action *act = new Action(net->networkName(), this);
+ _networkActions[id] = act;
+ act->setObjectName(QString("NetworkAction-%1").arg(id.toInt()));
+- act->setData(QVariant::fromValue<NetworkId>(id));
++ act->setData(QVariant::fromValue(id));
+ connect(net, SIGNAL(updatedRemotely()), SLOT(networkUpdated()));
+ connect(act, SIGNAL(triggered()), SLOT(connectOrDisconnectNet()));
+ networkUpdated(net);
--- /dev/null
+From 1f21c1f9613031ae263eeed0c4883bfcd5488343 Mon Sep 17 00:00:00 2001
+From: Manuel Nickschas <sputnick@quassel-irc.org>
+Date: Tue, 7 Jan 2020 19:25:38 +0100
+Subject: [PATCH 3/6] qa: Replace deprecated qVariantFromValue() by
+ QVariant::fromValue()
+Bug: https://bugs.quassel-irc.org/issues/1544
+Bug-Ubuntu: https://bugs.launchpad.net/quassel/+bug/1885436
+Origin: upstream, https://github.com/quassel/quassel/pull/518
+Origin: upstream, https://github.com/quassel/quassel/commit/1f21c1f9613031ae263eeed0c4883bfcd5488343
+
+Deprecated since Qt 5.14.
+---
+ src/client/clientsettings.cpp | 4 ++--
+ src/common/bufferviewconfig.cpp | 6 +++---
+ src/core/coreirclisthelper.cpp | 2 +-
+ src/core/coreusersettings.cpp | 2 +-
+ src/qtui/settingspages/bufferviewsettingspage.cpp | 6 +++---
+ 5 files changed, 10 insertions(+), 10 deletions(-)
+
+--- a/src/client/clientsettings.cpp
++++ b/src/client/clientsettings.cpp
+@@ -182,7 +182,7 @@ void CoreAccountSettings::setJumpKeyMap(
+ QVariantMap variants;
+ QHash<int, BufferId>::const_iterator mapIter = keyMap.constBegin();
+ while (mapIter != keyMap.constEnd()) {
+- variants[QString::number(mapIter.key())] = qVariantFromValue(mapIter.value());
++ variants[QString::number(mapIter.key())] = QVariant::fromValue(mapIter.value());
+ ++mapIter;
+ }
+ setAccountValue("JumpKeyMap", variants);
+@@ -205,8 +205,8 @@ QHash<int, BufferId> CoreAccountSettings
+ void CoreAccountSettings::setBufferViewOverlay(const QSet<int> &viewIds)
+ {
+ QVariantList variants;
+- foreach(int viewId, viewIds) {
+- variants << qVariantFromValue(viewId);
++ foreach (int viewId, viewIds) {
++ variants << QVariant::fromValue(viewId);
+ }
+ setAccountValue("BufferViewOverlay", variants);
+ }
+--- a/src/common/bufferviewconfig.cpp
++++ b/src/common/bufferviewconfig.cpp
+@@ -150,8 +150,8 @@ QVariantList BufferViewConfig::initBuffe
+ {
+ QVariantList buffers;
+
+- foreach(BufferId bufferId, _buffers) {
+- buffers << qVariantFromValue(bufferId);
++ foreach (BufferId bufferId, _buffers) {
++ buffers << QVariant::fromValue(bufferId);
+ }
+
+ return buffers;
+@@ -186,8 +186,8 @@ QVariantList BufferViewConfig::initRemov
+ {
+ QVariantList removedBuffers;
+
+- foreach(BufferId bufferId, _removedBuffers) {
+- removedBuffers << qVariantFromValue(bufferId);
++ foreach (BufferId bufferId, _removedBuffers) {
++ removedBuffers << QVariant::fromValue(bufferId);
+ }
+
+ return removedBuffers;
+@@ -208,8 +208,8 @@ QVariantList BufferViewConfig::initTempo
+ {
+ QVariantList temporarilyRemovedBuffers;
+
+- foreach(BufferId bufferId, _temporarilyRemovedBuffers) {
+- temporarilyRemovedBuffers << qVariantFromValue(bufferId);
++ foreach (BufferId bufferId, _temporarilyRemovedBuffers) {
++ temporarilyRemovedBuffers << QVariant::fromValue(bufferId);
+ }
+
+ return temporarilyRemovedBuffers;
+--- a/src/core/coreirclisthelper.cpp
++++ b/src/core/coreirclisthelper.cpp
+@@ -90,10 +90,8 @@ bool CoreIrcListHelper::endOfChannelList
+ QVariantList channelList;
+ foreach(ChannelDescription channel, _channelLists[netId]) {
+ QVariantList channelVariant;
+- channelVariant << channel.channelName
+- << channel.userCount
+- << channel.topic;
+- channelList << qVariantFromValue<QVariant>(channelVariant);
++ channelVariant << channel.channelName << channel.userCount << channel.topic;
++ channelList << QVariant::fromValue<QVariant>(channelVariant);
+ }
+ _finishedChannelLists[netId] = channelList;
+ _channelLists.remove(netId);
+--- a/src/core/coreusersettings.cpp
++++ b/src/core/coreusersettings.cpp
+@@ -47,7 +47,7 @@ QList<IdentityId> CoreUserSettings::iden
+
+ void CoreUserSettings::storeIdentity(const Identity &identity)
+ {
+- setLocalValue(QString("Identities/%1").arg(identity.id().toInt()), qVariantFromValue(identity));
++ setLocalValue(QString("Identities/%1").arg(identity.id().toInt()), QVariant::fromValue(identity));
+ }
+
+
+--- a/src/qtui/settingspages/bufferviewsettingspage.cpp
++++ b/src/qtui/settingspages/bufferviewsettingspage.cpp
+@@ -127,12 +127,12 @@ void BufferViewSettingsPage::load()
+ // load network selector
+ ui.networkSelector->clear();
+ ui.networkSelector->addItem(tr("All"));
+- ui.networkSelector->setItemData(0, qVariantFromValue<NetworkId>(NetworkId()));
+- const Network *net;
+- foreach(NetworkId netId, Client::networkIds()) {
++ ui.networkSelector->setItemData(0, QVariant::fromValue(NetworkId()));
++ const Network* net;
++ foreach (NetworkId netId, Client::networkIds()) {
+ net = Client::network(netId);
+ ui.networkSelector->addItem(net->networkName());
+- ui.networkSelector->setItemData(ui.networkSelector->count() - 1, qVariantFromValue<NetworkId>(net->networkId()));
++ ui.networkSelector->setItemData(ui.networkSelector->count() - 1, QVariant::fromValue(net->networkId()));
+ }
+ _ignoreWidgetChanges = false;
+
+@@ -207,7 +207,7 @@ void BufferViewSettingsPage::coreConnect
+ void BufferViewSettingsPage::addBufferView(BufferViewConfig *config)
+ {
+ QListWidgetItem *item = new QListWidgetItem(config->bufferViewName(), ui.bufferViewList);
+- item->setData(Qt::UserRole, qVariantFromValue<QObject *>(qobject_cast<QObject *>(config)));
++ item->setData(Qt::UserRole, QVariant::fromValue(qobject_cast<QObject*>(config)));
+ connect(config, SIGNAL(updatedRemotely()), this, SLOT(updateBufferView()));
+ connect(config, SIGNAL(destroyed()), this, SLOT(bufferViewDeleted()));
+ ui.deleteBufferView->setEnabled(ui.bufferViewList->count() > 1);
--- /dev/null
+From 52209badc8e769e50aa3019b63689dda0e79e9d0 Mon Sep 17 00:00:00 2001
+From: Manuel Nickschas <sputnick@quassel-irc.org>
+Date: Tue, 7 Jan 2020 20:31:31 +0100
+Subject: [PATCH 4/6] qa: Avoid deprecation warnings for QList/QSet conversions
+Bug: https://bugs.quassel-irc.org/issues/1544
+Bug-Ubuntu: https://bugs.launchpad.net/quassel/+bug/1885436
+Origin: upstream, https://github.com/quassel/quassel/pull/518
+Origin: upstream, https://github.com/quassel/quassel/commit/52209badc8e769e50aa3019b63689dda0e79e9d0
+
+Qt 5.14 deprecated the explicit functions for converting between
+QSet and QList, preferring instead the use of range-based ctors.
+Unfortunately, those ctors were only added in Qt 5.14, so we can't
+use them when compiling against older versions.
+
+Add a util function for QList->QSet to keep the version check in
+a single place. Replace the other direction by using QSet::values().
+In some cases, conversions could be avoided altogether, or an STL
+container be used easily, so do that.
+---
+ src/client/backlogrequester.cpp | 22 +++++++------------
+ src/client/backlogrequester.h | 15 +++++--------
+ src/client/bufferviewoverlay.cpp | 9 ++++----
+ src/client/clientbacklogmanager.cpp | 3 ++-
+ src/client/messagefilter.cpp | 5 +++--
+ src/common/ircuser.cpp | 2 +-
+ src/common/util.h | 11 ++++++++++
+ src/core/corebuffersyncer.cpp | 3 ++-
+ src/qtui/chatview.cpp | 3 ++-
+ src/qtui/chatviewsearchcontroller.cpp | 5 ++---
+ .../settingspages/chatmonitorsettingspage.cpp | 3 ++-
+ src/uisupport/bufferviewfilter.cpp | 3 ++-
+ 12 files changed, 46 insertions(+), 38 deletions(-)
+
+--- a/src/client/backlogrequester.cpp
++++ b/src/client/backlogrequester.cpp
+@@ -35,26 +35,18 @@ BacklogRequester::BacklogRequester(bool
+ Q_ASSERT(backlogManager);
+ }
+
+-
+-void BacklogRequester::setWaitingBuffers(const QSet<BufferId> &buffers)
+-{
+- _buffersWaiting = buffers;
+- _totalBuffers = _buffersWaiting.count();
+-}
+-
+-
+-void BacklogRequester::addWaitingBuffer(BufferId buffer)
++void BacklogRequester::setWaitingBuffers(const BufferIdList& buffers)
+ {
+- _buffersWaiting << buffer;
+- _totalBuffers++;
++ _buffersWaiting = {buffers.begin(), buffers.end()};
++ _totalBuffers = int(_buffersWaiting.size());
+ }
+
+
+ bool BacklogRequester::buffer(BufferId bufferId, const MessageList &messages)
+ {
+ _bufferedMessages << messages;
+- _buffersWaiting.remove(bufferId);
+- return !_buffersWaiting.isEmpty();
++ _buffersWaiting.erase(bufferId);
++ return !_buffersWaiting.empty();
+ }
+
+
+@@ -62,15 +54,14 @@ BufferIdList BacklogRequester::allBuffer
+ {
+ QSet<BufferId> bufferIds = Client::bufferViewOverlay()->bufferIds();
+ bufferIds += Client::bufferViewOverlay()->tempRemovedBufferIds();
+- return bufferIds.toList();
++ return bufferIds.values();
+ }
+
+
+ void BacklogRequester::flushBuffer()
+ {
+- if (!_buffersWaiting.isEmpty()) {
+- qWarning() << Q_FUNC_INFO << "was called before all backlog was received:"
+- << _buffersWaiting.count() << "buffers are waiting.";
++ if (!_buffersWaiting.empty()) {
++ qWarning() << Q_FUNC_INFO << "was called before all backlog was received:" << _buffersWaiting.size() << "buffers are waiting.";
+ }
+ _bufferedMessages.clear();
+ _totalBuffers = 0;
+--- a/src/client/backlogrequester.h
++++ b/src/client/backlogrequester.h
+@@ -18,8 +18,9 @@
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+-#ifndef BACKLOGREQUESTER_H
+-#define BACKLOGREQUESTER_H
++#pragma once
++
++#include <set>
+
+ #include <QList>
+
+@@ -47,7 +48,7 @@ public:
+ inline RequesterType type() { return _requesterType; }
+ inline const QList<Message> &bufferedMessages() { return _bufferedMessages; }
+
+- inline int buffersWaiting() const { return _buffersWaiting.count(); }
++ inline int buffersWaiting() const { return int(_buffersWaiting.size()); }
+ inline int totalBuffers() const { return _totalBuffers; }
+
+ bool buffer(BufferId bufferId, const MessageList &messages); //! returns false if it was the last missing backlogpart
+@@ -59,9 +60,7 @@ public:
+
+ protected:
+ BufferIdList allBufferIds() const;
+- inline void setWaitingBuffers(const QList<BufferId> &buffers) { setWaitingBuffers(buffers.toSet()); }
+- void setWaitingBuffers(const QSet<BufferId> &buffers);
+- void addWaitingBuffer(BufferId buffer);
++ void setWaitingBuffers(const BufferIdList& buffers);
+
+ ClientBacklogManager *backlogManager;
+
+@@ -70,7 +69,7 @@ private:
+ RequesterType _requesterType;
+ MessageList _bufferedMessages;
+ int _totalBuffers;
+- QSet<BufferId> _buffersWaiting;
++ std::set<BufferId> _buffersWaiting;
+ };
+
+
+@@ -117,6 +116,3 @@ private:
+ int _limit;
+ int _additional;
+ };
+-
+-
+-#endif //BACKLOGREQUESTER_H
+--- a/src/client/bufferviewoverlay.cpp
++++ b/src/client/bufferviewoverlay.cpp
+@@ -27,6 +27,7 @@
+ #include "clientbacklogmanager.h"
+ #include "clientbufferviewmanager.h"
+ #include "networkmodel.h"
++#include "util.h"
+
+ const int BufferViewOverlay::_updateEventId = QEvent::registerEventType();
+
+@@ -101,13 +102,13 @@ void BufferViewOverlay::addView(int view
+ if (Client::networkModel()->networkId(bufferId) == config->networkId())
+ buffers << bufferId;
+ }
+- foreach(BufferId bufferId, config->temporarilyRemovedBuffers().toList()) {
++ for (BufferId bufferId : config->temporarilyRemovedBuffers()) {
+ if (Client::networkModel()->networkId(bufferId) == config->networkId())
+ buffers << bufferId;
+ }
+ }
+ else {
+- buffers = BufferIdList::fromSet(config->bufferList().toSet() + config->temporarilyRemovedBuffers());
++ buffers = (toQSet(config->bufferList()) + config->temporarilyRemovedBuffers()).values();
+ }
+ Client::backlogManager()->checkForBacklog(buffers);
+ }
+@@ -224,12 +225,12 @@ void BufferViewOverlay::updateHelper()
+
+ // we have to apply several filters before we can add a buffer to a category (visible, removed, ...)
+ buffers += filterBuffersByConfig(config->bufferList(), config);
+- tempRemovedBuffers += filterBuffersByConfig(config->temporarilyRemovedBuffers().toList(), config);
++ tempRemovedBuffers += filterBuffersByConfig(config->temporarilyRemovedBuffers().values(), config);
+ removedBuffers += config->removedBuffers();
+ }
+
+ // prune the sets from overlap
+- QSet<BufferId> availableBuffers = Client::networkModel()->allBufferIds().toSet();
++ QSet<BufferId> availableBuffers = toQSet(Client::networkModel()->allBufferIds());
+
+ buffers.intersect(availableBuffers);
+
+--- a/src/client/clientbacklogmanager.cpp
++++ b/src/client/clientbacklogmanager.cpp
+@@ -24,6 +24,7 @@
+ #include "backlogsettings.h"
+ #include "backlogrequester.h"
+ #include "client.h"
++#include "util.h"
+
+ #include <ctime>
+
+@@ -119,8 +120,8 @@ void ClientBacklogManager::requestInitia
+ BufferIdList ClientBacklogManager::filterNewBufferIds(const BufferIdList &bufferIds)
+ {
+ BufferIdList newBuffers;
+- QSet<BufferId> availableBuffers = Client::networkModel()->allBufferIds().toSet();
+- foreach(BufferId bufferId, bufferIds) {
++ QSet<BufferId> availableBuffers = toQSet(Client::networkModel()->allBufferIds());
++ foreach (BufferId bufferId, bufferIds) {
+ if (_buffersRequested.contains(bufferId) || !availableBuffers.contains(bufferId))
+ continue;
+ newBuffers << bufferId;
+--- a/src/client/messagefilter.cpp
++++ b/src/client/messagefilter.cpp
+@@ -28,6 +28,7 @@
+ #include "messagemodel.h"
+ #include "networkmodel.h"
+ #include "clientignorelistmanager.h"
++#include "util.h"
+
+ MessageFilter::MessageFilter(QAbstractItemModel *source, QObject *parent)
+ : QSortFilterProxyModel(parent),
+@@ -40,7 +41,7 @@ MessageFilter::MessageFilter(QAbstractIt
+
+ MessageFilter::MessageFilter(MessageModel *source, const QList<BufferId> &buffers, QObject *parent)
+ : QSortFilterProxyModel(parent),
+- _validBuffers(buffers.toSet()),
++ _validBuffers(toQSet(buffers)),
+ _messageTypeFilter(0)
+ {
+ init();
+@@ -119,7 +120,7 @@ QString MessageFilter::idString() const
+ if (_validBuffers.isEmpty())
+ return "*";
+
+- QList<BufferId> bufferIds = _validBuffers.toList();
++ QList<BufferId> bufferIds = _validBuffers.values();
+ qSort(bufferIds);
+
+ QStringList bufferIdStrings;
+--- a/src/common/ircuser.cpp
++++ b/src/common/ircuser.cpp
+@@ -353,7 +353,7 @@ void IrcUser::partChannel(const QString
+
+ void IrcUser::quit()
+ {
+- QList<IrcChannel *> channels = _channels.toList();
++ QList<IrcChannel*> channels = _channels.values();
+ _channels.clear();
+ foreach(IrcChannel *channel, channels) {
+ disconnect(channel, 0, this, 0);
+--- a/src/common/util.h
++++ b/src/common/util.h
+@@ -21,6 +21,7 @@
+ #pragma once
+
+ #include <QList>
++#include <QSet>
+ #include <QString>
+ #include <QVariant>
+
+@@ -60,6 +61,16 @@ QVariantList toVariantList(const QList<T
+
+
+ template<typename T>
++QSet<T> toQSet(const QList<T>& list)
++{
++#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
++ return list.toSet();
++#else
++ return {list.begin(), list.end()};
++#endif
++}
++
++template<typename T>
+ QList<T> fromVariantList(const QVariantList &variants)
+ {
+ QList<T> list;
+--- a/src/core/corebuffersyncer.cpp
++++ b/src/core/corebuffersyncer.cpp
+@@ -24,6 +24,7 @@
+ #include "coresession.h"
+ #include "corenetwork.h"
+ #include "ircchannel.h"
++#include "util.h"
+
+ class PurgeEvent : public QEvent
+ {
+@@ -193,7 +194,7 @@ void CoreBufferSyncer::purgeBufferIds()
+ actualBuffers << bufferInfo.bufferId();
+ }
+
+- QSet<BufferId> storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet();
++ QSet<BufferId> storedIds = toQSet(lastSeenBufferIds()) + toQSet(markerLineBufferIds());
+ foreach(BufferId bufferId, storedIds) {
+ if (!actualBuffers.contains(bufferId)) {
+ BufferSyncer::removeBuffer(bufferId);
+--- a/src/qtui/chatview.cpp
++++ b/src/qtui/chatview.cpp
+@@ -31,6 +31,7 @@
+ #include "qtui.h"
+ #include "qtuistyle.h"
+ #include "clientignorelistmanager.h"
++#include "util.h"
+
+ #include "chatline.h"
+
+@@ -316,7 +317,7 @@ QSet<ChatLine *> ChatView::visibleChatLi
+
+ QList<ChatLine *> ChatView::visibleChatLinesSorted(Qt::ItemSelectionMode mode) const
+ {
+- QList<ChatLine *> result = visibleChatLines(mode).toList();
++ QList<ChatLine *> result = visibleChatLines(mode).values();
+ qSort(result.begin(), result.end(), chatLinePtrLessThan);
+ return result;
+ }
+--- a/src/qtui/chatviewsearchcontroller.cpp
++++ b/src/qtui/chatviewsearchcontroller.cpp
+@@ -128,7 +128,7 @@ void ChatViewSearchController::updateHig
+ if (line)
+ chatLines << line;
+ }
+- foreach(ChatLine *line, QList<ChatLine *>(chatLines.toList())) {
++ foreach (ChatLine* line, chatLines) {
+ updateHighlights(line);
+ }
+ }
+@@ -314,8 +314,7 @@ void ChatViewSearchController::repositio
+ if (line)
+ chatLines << line;
+ }
+- QList<ChatLine *> chatLineList(chatLines.toList());
+- foreach(ChatLine *line, chatLineList) {
++ foreach (ChatLine* line, chatLines) {
+ repositionHighlights(line);
+ }
+ }
+--- a/src/qtui/settingspages/chatmonitorsettingspage.cpp
++++ b/src/qtui/settingspages/chatmonitorsettingspage.cpp
+@@ -28,6 +28,7 @@
+ #include "bufferview.h"
+ #include "bufferviewfilter.h"
+ #include "chatviewsettings.h"
++#include "util.h"
+
+ #include <QVariant>
+
+@@ -196,7 +197,7 @@ bool ChatMonitorSettingsPage::testHasCha
+ if (_configActive->bufferList().count() != settings["Buffers"].toList().count())
+ return true;
+
+- QSet<BufferId> uiBufs = _configActive->bufferList().toSet();
++ QSet<BufferId> uiBufs = toQSet(_configActive->bufferList());
+ QSet<BufferId> settingsBufs;
+ foreach(QVariant v, settings["Buffers"].toList())
+ settingsBufs << v.value<BufferId>();
+--- a/src/uisupport/bufferviewfilter.cpp
++++ b/src/uisupport/bufferviewfilter.cpp
+@@ -32,6 +32,7 @@
+ #include "graphicalui.h"
+ #include "networkmodel.h"
+ #include "uistyle.h"
++#include "util.h"
+
+
+ /*****************************************
+@@ -159,7 +160,7 @@ void BufferViewFilter::enableEditMode(bo
+ return;
+
+ if (enable == false) {
+- addBuffers(QList<BufferId>::fromSet(_toAdd));
++ addBuffers(_toAdd.values());
+ QSet<BufferId>::const_iterator iter;
+ for (iter = _toTempRemove.constBegin(); iter != _toTempRemove.constEnd(); ++iter) {
+ if (config()->temporarilyRemovedBuffers().contains(*iter))
--- /dev/null
+From 56491f1d5772764aa82a5bda85c83ab336af4346 Mon Sep 17 00:00:00 2001
+From: Manuel Nickschas <sputnick@quassel-irc.org>
+Date: Tue, 7 Jan 2020 20:39:38 +0100
+Subject: [PATCH 5/6] qa: Replace deprecated QString::sprintf() by
+ QString::asprintf()
+Bug: https://bugs.quassel-irc.org/issues/1544
+Bug-Ubuntu: https://bugs.launchpad.net/quassel/+bug/1885436
+Origin: upstream, https://github.com/quassel/quassel/pull/518
+Origin: upstream, https://github.com/quassel/quassel/commit/56491f1d5772764aa82a5bda85c83ab336af4346
+
+---
+ src/uisupport/actioncollection.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/uisupport/actioncollection.cpp
++++ b/src/uisupport/actioncollection.cpp
+@@ -93,7 +93,7 @@ QAction *ActionCollection::addAction(con
+ else
+ action->setObjectName(indexName);
+ if (indexName.isEmpty())
+- indexName = indexName.sprintf("unnamed-%p", (void *)action);
++ indexName = indexName.asprintf("unnamed-%p", (void*)action);
+
+ // do we already have this action?
+ if (_actionByName.value(indexName, 0) == action)
--- /dev/null
+01_default_network_channel.patch
+02_script_interpreter_path.patch
+qt514/0001-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch
+qt514/0002-common-Always-let-QVariant-fromValue-deduce-the-type.patch
+qt514/0003-qa-Replace-deprecated-qVariantFromValue-by-QVariant-.patch
+qt514/0004-qa-Avoid-deprecation-warnings-for-QList-QSet-convers.patch
+qt514/0005-qa-Replace-deprecated-QString-sprintf-by-QString-asp.patch
--- /dev/null
+usr/bin/quasselclient
+usr/share/applications/quasselclient.desktop
--- /dev/null
+debian/manpages/quasselclient.1
--- /dev/null
+usr/bin/quasselcore
+debian/usr.bin.quasselcore /etc/apparmor.d
+debian/quassel-core.ufw.profile /etc/ufw/applications.d
--- /dev/null
+/var/log/quassel/core.log {
+ rotate 4
+ weekly
+ compress
+ delaycompress
+ copytruncate
+ missingok
+ notifempty
+}
+
--- /dev/null
+debian/manpages/quasselcore.1
+
--- /dev/null
+#!/bin/sh -e
+# postinst script for quassel-core
+
+set -e
+
+# some variables
+QUASSEL_GROUP=quassel
+QUASSEL_USER=quasselcore
+QUASSEL_HOME=/var/lib/quassel
+QUASSEL_LOG=/var/log/quassel
+QUASSEL_CERT=$QUASSEL_HOME/quasselCert.pem
+
+# create group
+echo "Creating $QUASSEL_GROUP group ..."
+addgroup --quiet --system $QUASSEL_GROUP
+
+# create user
+echo "Creating $QUASSEL_USER user ..."
+adduser --quiet --system --ingroup $QUASSEL_GROUP \
+--home $QUASSEL_HOME --no-create-home $QUASSEL_USER
+
+if [ ! -d $QUASSEL_HOME ] ; then
+ # create $HOME
+ echo "Creating $QUASSEL_HOME directory ..."
+ mkdir -p $QUASSEL_HOME
+ chown $QUASSEL_USER:$QUASSEL_GROUP $QUASSEL_HOME
+fi
+
+if [ ! -d $QUASSEL_LOG ] ; then
+ echo "Creating $QUASSEL_LOG directory ..."
+ mkdir -p $QUASSEL_LOG
+ chown $QUASSEL_USER:$QUASSEL_GROUP $QUASSEL_LOG
+fi
+
+# generate a SSL certificate for 18 months (support time) + 6 months (development time)
+# this covers the worst case scenario of earliest possible install + no whatsoever
+# updates while support time frame. otherwise the key will be regenerated
+# FIXME: Not over-writing existing certs, but need to (someday) replace old certs
+if [ ! -e $QUASSEL_CERT ] ; then
+ echo "Generating SSL certificate as $QUASSEL_CERT ..."
+ ( umask 0027 && runuser -u $QUASSEL_USER -- openssl req -x509 -nodes -batch -days 680 -newkey rsa \
+ -keyout $QUASSEL_CERT -out $QUASSEL_CERT )
+fi
+
+#DEBHELPER#
--- /dev/null
+#!/bin/sh
+# postrm script for quassel-core
+
+set -e
+
+# configure some variables
+QUASSEL_GROUP=quassel
+QUASSEL_USER=quasselcore
+
+case "$1" in
+ purge)
+ echo "Deleting $QUASSEL_USER user ..."
+ if which deluser > /dev/null; then
+ deluser --quiet --system $QUASSEL_USER
+ fi
+
+ echo "Deleting $QUASSEL_GROUP group ..."
+ if which delgroup > /dev/null; then
+ delgroup --quiet --system $QUASSEL_GROUP
+ fi
+
+ echo "Deleting /var/cache/quassel ..."
+ rm -rf /var/lib/quassel
+ echo "Deleting /var/log/quassel ..."
+ rm -rf /var/log/quassel
+ ;;
+ remove)
+ ;;
+ upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
--- /dev/null
+# Defaults for quasselcore initscript
+# sourced by /etc/init.d/quasselcore
+
+# Loglevel Debug|Info|Warning|Error. Default is: Info
+LOGLEVEL="Info"
+
+# The port quasselcore will listen at. Default is: 4242
+PORT="4242"
+
+# Network address to listen on
+LISTEN="::,0.0.0.0"
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2008 Harald Sitter <apachelogger@ubuntu.com>
+# Copyright (C) 2009 Thomas Mueller <thomas_mueller_ffb@online.de>
+# Copyright (C) 2014 Thomas Mueller <thomas_mueller@tmit.eu>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 51 Franklin Street,
+# Fifth Floor, Boston, MA 02110-1301, USA
+
+### BEGIN INIT INFO
+# Provides: quasselcore
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Should-Start: postgresql
+# Should-Stop: postgresql
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: distributed IRC client using a central core component
+# Description: This is the core component of Quassel. A modern,
+# cross-platform, distributed IRC client, meaning that one
+# (or multiple) client(s) can attach to and detach from this
+# central core. It's much like the popular combination
+# of screen and a text-based IRC client such as WeeChat.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/bin/quasselcore
+NAME=quasselcore
+DESC="distributed IRC core"
+LOGDIR=/var/log/quassel
+
+PIDFILE=/var/run/quasselcore.pid
+
+# Test if binary exisits
+test -x $DAEMON || exit 0
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+DAEMON_OPTS=""
+LOGFILE=$LOGDIR/core.log
+DATADIR=/var/lib/quassel
+DAEMONUSER=quasselcore
+
+# defaulting LOGLEVEL and PORT, just in case /etc/default/$name gets deleted
+LOGLEVEL="Info"
+PORT="4242"
+LISTEN="::,0.0.0.0"
+
+# source default
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# test daemon user
+if [ -n "$DAEMONUSER" ] ; then
+ getent passwd | grep -q "^$DAEMONUSER:"
+ if [ $? -ne 0 ]; then
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+start_server() {
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \
+ --background --chuid $DAEMONUSER --exec $DAEMON \
+ -- --logfile=$LOGFILE --loglevel=$LOGLEVEL --configdir=$DATADIR \
+ --port=$PORT --listen=$LISTEN \
+ $DAEMON_OPTS
+}
+
+stop_server() {
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --user $DAEMONUSER \
+ --exec $DAEMON
+}
+
+reload_server() {
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --user $DAEMONUSER \
+ --exec $DAEMON
+}
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC" "$NAME"
+ start_server
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_progress_msg "already started"
+ log_end_msg 0 ;;
+ *) log_end_msg $? ;;
+ esac
+
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ stop_server
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_progress_msg "already stopped"
+ log_end_msg 0 ;;
+ *) log_end_msg $? ;;
+ esac
+
+ ;;
+ reload)
+ log_daemon_msg "Reloading $DESC" "$NAME"
+ reload_server
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_progress_msg "not running"
+ log_end_msg 0 ;;
+ *) log_end_msg $? ;;
+ esac
+
+ ;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+ status)
+ status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload|status}" >&2
+ exit 3
+ ;;
+esac
+
+exit 0
--- /dev/null
+[Unit]
+Description=distributed IRC client using a central core component
+Documentation=man:quasselcore(1)
+Wants=network-online.target postgresql.service
+After=network-online.target postgresql.service
+
+[Service]
+User=quasselcore
+Group=quassel
+WorkingDirectory=/var/lib/quassel
+Environment="DATADIR=/var/lib/quassel" "LOGFILE=/var/log/quassel/core.log" "LOGLEVEL=Info" "PORT=4242" "LISTEN=::,0.0.0.0"
+EnvironmentFile=-/etc/default/quasselcore
+ExecStart=/usr/bin/quasselcore --configdir=${DATADIR} --logfile=${LOGFILE} --loglevel=${LOGLEVEL} --port=${PORT} --listen=${LISTEN} --require-ssl
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
--- /dev/null
+[Quassel]
+title=Quassel Core
+description=Quassel IRC core/server component
+ports=4242/tcp
--- /dev/null
+usr/share/icons/hicolor/
+usr/share/pixmaps/
+usr/share/quassel/icons/breeze*/apps/32/
+usr/share/quassel/icons/breeze*/apps/64/
+usr/share/quassel/icons/breeze*/apps/48/
+usr/share/quassel/icons/breeze*/scalable/apps/
+usr/share/quassel/icons/breeze*/scalable/status/
+usr/share/quassel/icons/breeze*/scalable/actions/
+usr/share/quassel/icons/breeze*/status/24/
+usr/share/quassel/icons/breeze*/status/64/
+usr/share/quassel/icons/breeze*/actions/32/
+usr/share/quassel/icons/breeze*/actions/24/
+usr/share/quassel/icons/oxygen/22x22/apps/
+usr/share/quassel/icons/oxygen/22x22/status/
+usr/share/quassel/icons/oxygen/22x22/actions/
+usr/share/quassel/icons/oxygen/scalable/action/
+usr/share/quassel/icons/oxygen/48x48/apps/
+usr/share/quassel/icons/oxygen/48x48/status/
+usr/share/quassel/icons/oxygen/48x48/actions/
+usr/share/quassel/icons/oxygen/128x128/apps/
+usr/share/quassel/icons/oxygen/128x128/status/
+usr/share/quassel/icons/oxygen/128x128/actions/
+usr/share/quassel/icons/oxygen/64x64/apps/
+usr/share/quassel/icons/oxygen/64x64/status/
+usr/share/quassel/icons/oxygen/64x64/actions/
+usr/share/quassel/icons/oxygen/16x16/apps/
+usr/share/quassel/icons/oxygen/16x16/status/
+usr/share/quassel/icons/oxygen/16x16/actions/
+usr/share/quassel/icons/oxygen/32x32/apps/
+usr/share/quassel/icons/oxygen/32x32/status/
+usr/share/quassel/icons/oxygen/32x32/actions/
+usr/share/quassel/translations/*.qm
+usr/share/quassel/networks.ini
+usr/share/quassel/scripts/
+usr/share/quassel/stylesheets/*.qss
+usr/share/knotifications5/quassel.notifyrc
--- /dev/null
+/usr/bin/inxi /usr/share/quassel/scripts/inxi
+/usr/bin/mpris-quassel /usr/share/quassel/scripts/mpris
--- /dev/null
+quassel (1:0.13.0-1) experimental; urgency=medium
+
+ Upstream recommends making a backup of your quassel database before
+ proceeding with the upgrade to 0.13.0:
+
+ "Before you upgrade, please be aware that both the database schema and the
+ config file formats have been updated since 0.12. Quassel will
+ automatically upgrade both once the new version is started for the first
+ time, however no rollback is possible, so do make a backup before starting
+ the new version! The upgrade may take a long time (up to several hours) if
+ your database is (un)reasonably large, during which the core or mono client
+ cannot be used. The upgrade may also temporarily require up to double the
+ disk space. Do not interrupt the upgrade process, otherwise your database
+ may become corrupted!"
+
+ The package does not restart on upgrade. The database upgrade will be done
+ after system reboot or manual restart.
+
+ Please make a backup or decide to live dangerously before proceeding.
+
+ -- Scott Kitterman <scott@kitterman.com> Sun, 02 Dec 2018 17:21:06 -0500
+
--- /dev/null
+usr/bin/quassel
+usr/share/applications/quassel.desktop
--- /dev/null
+debian/manpages/quassel.1
--- /dev/null
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+export DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed
+
+WEBENGINE_INSTALL_STATUS := $(shell dpkg-query -W --showformat='$${Status}\n' qtwebengine5-dev|grep "install ok installed")
+ifeq (install ok installed,$(WEBENGINE_INSTALL_STATUS))
+ WEB_BACKEND = -DWITH_WEBKIT=OFF -DWITH_WEBENGINE=ON
+else
+ WEB_BACKEND = -DWITH_WEBKIT=ON -DWITH_WEBENGINE=OFF
+endif
+
+%:
+ dh $@
+
+override_dh_auto_configure:
+ dh_auto_configure -- -DWITH_OXYGEN_ICONS=ON -DWITH_BUNDLED_ICONS=OFF -DUSE_QT5=ON -DWITH_KDE=ON $(WEB_BACKEND)
+
+override_dh_install:
+ dh_install
+ # replace inxi with a symlink
+ifneq (,$(filter quassel-data, $(shell dh_listpackages)))
+ rm debian/quassel-data/usr/share/quassel/scripts/inxi
+endif
+
+ dh_apparmor -pquassel-core --profile-name=usr.bin.quasselcore
+
+override_dh_missing:
+ dh_missing --fail-missing
+
+override_dh_installinit:
+ dh_installinit --no-stop-on-upgrade --no-restart-after-upgrade --error-handler=exit --name=quasselcore
+
+override_dh_installsystemd:
+ dh_installsystemd --no-stop-on-upgrade --no-restart-after-upgrade --name=quasselcore
--- /dev/null
+---
+include:
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+
+variables:
+ SALSA_CI_LINTIAN_FAIL_WARNING: 1
+ SALSA_CI_DISABLE_BLHC: 1
--- /dev/null
+3.0 (quilt)
--- /dev/null
+# Author: Felix Geyer <debfx@ubuntu.com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of version 2 of the GNU General Public
+# License published by the Free Software Foundation.
+
+#include <tunables/global>
+
+/usr/bin/quasselcore {
+ #include <abstractions/base>
+ #include <abstractions/nameservice>
+ #include <abstractions/user-tmp>
+ #include <abstractions/ssl_certs>
+
+ /var/lib/quassel/ rw,
+ /var/lib/quassel/** rwkl,
+
+ /var/log/quassel/* rw,
+
+ /etc/xdg/Trolltech.conf r,
+ deny /etc/xdg/Trolltech.conf k,
+ /etc/ssl/openssl.cnf r,
+ /usr/lib/ssl/openssl.cnf r,
+
+ # QSysInfo::machineUniqueId()
+ /var/lib/dbus/machine-id r,
+ /etc/machine-id r,
+
+ # QSysInfo::bootUniqueId()
+ @{PROC}/sys/kernel/random/boot_id r,
+
+ # Site-specific additions and overrides. See local/README for details.
+ #include <local/usr.bin.quasselcore>
+}
--- /dev/null
+version=3
+
+https://quassel-irc.org/downloads \
+ /pub/quassel-(.*)\.tar\.bz2