--- /dev/null
--- /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
--- /dev/null
++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
--- /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 (= 10),
++ debhelper (>= 10.3~),
++ 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
++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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /dev/null
++usr/bin/quasselclient
++usr/share/applications/quasselclient.desktop
--- /dev/null
--- /dev/null
++debian/manpages/quasselclient.1
--- /dev/null
--- /dev/null
++usr/bin/quasselcore
++debian/usr.bin.quasselcore /etc/apparmor.d
++debian/quassel-core.ufw.profile /etc/ufw/applications.d
--- /dev/null
--- /dev/null
++/var/log/quassel/core.log {
++ rotate 4
++ weekly
++ compress
++ delaycompress
++ copytruncate
++ missingok
++ notifempty
++}
++
--- /dev/null
--- /dev/null
++debian/manpages/quasselcore.1
++
--- /dev/null
--- /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
--- /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
--- /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
--- /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
--- /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}
++ExecReload=/bin/kill -HUP $MAINPID
++Restart=on-failure
++
++[Install]
++WantedBy=multi-user.target
--- /dev/null
--- /dev/null
++[Quassel]
++title=Quassel Core
++description=Quassel IRC core/server component
++ports=4242/tcp
--- /dev/null
--- /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
--- /dev/null
++/usr/bin/inxi /usr/share/quassel/scripts/inxi
++/usr/bin/mpris-quassel /usr/share/quassel/scripts/mpris
--- /dev/null
--- /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
--- /dev/null
++usr/bin/quassel
++usr/share/applications/quassel.desktop
--- /dev/null
--- /dev/null
++debian/manpages/quassel.1
--- /dev/null
--- /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_missing --fail-missing
++
++override_dh_installinit:
++ dh_apparmor -pquassel-core --profile-name=usr.bin.quasselcore
++ dh_installinit --no-stop-on-upgrade --no-restart-after-upgrade --error-handler=exit --name=quasselcore
++
++override_dh_systemd_enable:
++ dh_systemd_enable --name=quasselcore
++
++override_dh_systemd_start:
++ dh_systemd_start --name=quasselcore
--- /dev/null
--- /dev/null
++3.0 (quilt)
--- /dev/null
--- /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
--- /dev/null
++version=3
++
++https://quassel-irc.org/downloads \
++ /pub/quassel-(.*)\.tar\.bz2