summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2021-12-24 15:14:56 +0100
committerSébastien Helleu <flashcode@flashtux.org>2021-12-24 16:45:57 +0100
commit498194f6fc39ce96f17f5002aab7b0aa0a5e6f67 (patch)
tree80b2d9c1ec6b43fe86aacdf8e0e93c07232966a0
parentd5c391b1ee57730ed6f94c3d7ee5661ceaff35f5 (diff)
downloadweechat-498194f6fc39ce96f17f5002aab7b0aa0a5e6f67.zip
relay: add zstd compression in weechat protocol
Option relay.network.compression_level is renamed to relay.network.compression and is now a percentage between 0 (no compression) to 100 (best compression, slowest). Compression is now disabled by default in weechat protocol and must be enabled via the `handshake` command (option `compression` has been removed from `init` command).
-rw-r--r--.github/workflows/ci.yml2
-rw-r--r--CMakeLists.txt5
-rw-r--r--ChangeLog.adoc4
-rw-r--r--ReleaseNotes.adoc25
-rw-r--r--configure.ac21
-rw-r--r--debian-devel/control1
-rw-r--r--debian-stable/control1
-rw-r--r--doc/de/weechat_user.de.adoc5
-rw-r--r--doc/en/weechat_relay_protocol.en.adoc45
-rw-r--r--doc/en/weechat_user.en.adoc3
-rw-r--r--doc/fr/weechat_relay_protocol.fr.adoc67
-rw-r--r--doc/fr/weechat_user.fr.adoc3
-rw-r--r--doc/it/weechat_user.it.adoc6
-rw-r--r--doc/ja/weechat_relay_protocol.ja.adoc48
-rw-r--r--doc/ja/weechat_user.ja.adoc5
-rw-r--r--doc/pl/weechat_user.pl.adoc5
-rw-r--r--doc/sr/weechat_relay_protocol.sr.adoc44
-rw-r--r--doc/sr/weechat_user.sr.adoc5
-rw-r--r--src/core/wee-debug.c7
-rw-r--r--src/plugins/relay/CMakeLists.txt7
-rw-r--r--src/plugins/relay/Makefile.am4
-rw-r--r--src/plugins/relay/relay-config.c17
-rw-r--r--src/plugins/relay/relay-config.h2
-rw-r--r--src/plugins/relay/weechat/relay-weechat-msg.c196
-rw-r--r--src/plugins/relay/weechat/relay-weechat-protocol.c38
-rw-r--r--src/plugins/relay/weechat/relay-weechat.c4
-rw-r--r--src/plugins/relay/weechat/relay-weechat.h1
-rw-r--r--tools/debian/patches/README11
-rw-r--r--tools/debian/patches/weechat_debian_jessie.patch217
-rw-r--r--tools/debian/patches/weechat_debian_wheezy.patch227
l---------tools/debian/patches/weechat_ubuntu_artful.patch1
-rw-r--r--[l---------]tools/debian/patches/weechat_ubuntu_bionic.patch41
l---------tools/debian/patches/weechat_ubuntu_cosmic.patch1
-rw-r--r--tools/debian/patches/weechat_ubuntu_disco.patch40
-rw-r--r--tools/debian/patches/weechat_ubuntu_trusty.patch199
-rw-r--r--weechat.cygport.in3
36 files changed, 441 insertions, 870 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a608e855a..dd80f6246 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -35,7 +35,7 @@ jobs:
sudo apt-add-repository --yes ppa:ondrej/php
sudo apt-get update -qq
sudo apt-get --yes purge php8.1-dev
- sudo apt-get --yes --no-install-recommends install devscripts equivs python3-pip libenchant-dev autopoint cmake ninja-build lcov pkg-config libncursesw5-dev gem2deb libperl-dev python2-dev python3-dev libaspell-dev liblua5.3-dev tcl8.6-dev guile-2.0-dev libv8-dev libcurl4-gnutls-dev libgcrypt20-dev libgnutls28-dev zlib1g-dev curl libcpputest-dev php8.0-dev libphp8.0-embed libargon2-0-dev libsodium-dev pylint python3-bandit asciidoctor
+ sudo apt-get --yes --no-install-recommends install devscripts equivs python3-pip libenchant-dev autopoint cmake ninja-build lcov pkg-config libncursesw5-dev gem2deb libperl-dev python2-dev python3-dev libaspell-dev liblua5.3-dev tcl8.6-dev guile-2.0-dev libv8-dev libcurl4-gnutls-dev libgcrypt20-dev libgnutls28-dev libzstd-dev zlib1g-dev curl libcpputest-dev php8.0-dev libphp8.0-embed libargon2-0-dev libsodium-dev pylint python3-bandit asciidoctor
sudo -H pip3 install --ignore-installed msgcheck
- name: Test patches
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e7a361d7c..0d1ba5aac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -196,7 +196,10 @@ list(APPEND EXTRA_LIBS gnutls)
# Check for zlib
find_package(ZLIB REQUIRED)
-add_definitions(-DHAVE_ZLIB)
+
+# Check for zstd
+include(FindPkgConfig)
+pkg_check_modules(LIBZSTD REQUIRED libzstd)
# Check for iconv
find_package(Iconv)
diff --git a/ChangeLog.adoc b/ChangeLog.adoc
index fb4b547e9..25e68d79d 100644
--- a/ChangeLog.adoc
+++ b/ChangeLog.adoc
@@ -18,6 +18,10 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
[[v3.5]]
== Version 3.5 (under dev)
+New features::
+
+ * relay: add `zstd` (https://facebook.github.io/zstd/[Zstandard]) compression in weechat protocol, remove option `compression` from `init` command, rename option relay.network.compression_level to relay.network.compression
+
Bug fixes::
* irc: fix display of IRC numeric messages with no parameters
diff --git a/ReleaseNotes.adoc b/ReleaseNotes.adoc
index 2cf8ee423..a731ceefb 100644
--- a/ReleaseNotes.adoc
+++ b/ReleaseNotes.adoc
@@ -17,6 +17,31 @@ https://weechat.org/files/changelog/ChangeLog-devel.html[ChangeLog]
(file _ChangeLog.adoc_ in sources).
+[[v3.5]]
+== Version 3.5 (under dev)
+
+[[v3.5_relay_weechat_compression_zstd]]
+=== Compression "zstandard" in relay
+
+Relay of type "weechat" now offers a compression with https://facebook.github.io/zstd/[Zstandard],
+which allows better compression and is much faster than zlib for both compression and decompression.
+
+The new compression type is `zstd`, and the default compression is now `off`
+instead of `zlib`: the compression must now be explicitly given in the
+link:https://weechat.org/doc/relay#command_handshake[handshake] command.
+
+The option `compression` in link:https://weechat.org/doc/relay#command_handshake[init]
+command has been removed, it is now ignored and must be given in the
+link:https://weechat.org/doc/relay#command_handshake[handshake] command
+(it was deprecated since WeeChat 2.9).
+
+The option relay.network.compression_level has been renamed to relay.network.compression
+and is now a percentage between `0` and `100`:
+
+* `0`: disable compression
+* `1`: low compression (fast)
+* `100`: best compression (slow)
+
[[v3.4]]
== Version 3.4 (2021-12-18)
diff --git a/configure.ac b/configure.ac
index 75fa0b47f..bfb6d7234 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1176,6 +1176,27 @@ else
fi
# ------------------------------------------------------------------------------
+# zstd
+# ------------------------------------------------------------------------------
+
+AC_CHECK_HEADER(zstd.h,ac_found_zstd_header="yes",ac_found_zstd_header="no")
+AC_CHECK_LIB(zstd,ZSTD_compress,ac_found_zstd_lib="yes",ac_found_zstd_lib="no")
+
+AC_MSG_CHECKING(for zstd headers and libraries)
+if test "x$ac_found_zstd_header" = "xno" -o "x$ac_found_zstd_lib" = "xno" ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+*** zstd was not found. You may want to get it from https://github.com/facebook/zstd
+*** or try to install it with your software package manager.])
+else
+ AC_MSG_RESULT(yes)
+ ZSTD_CFLAGS=`pkg-config libzstd --cflags`
+ ZSTD_LFLAGS=`pkg-config libzstd --libs`
+ AC_SUBST(ZSTD_CFLAGS)
+ AC_SUBST(ZSTD_LFLAGS)
+fi
+
+# ------------------------------------------------------------------------------
# curl
# ------------------------------------------------------------------------------
diff --git a/debian-devel/control b/debian-devel/control
index 31e09cccd..6cc1b8c92 100644
--- a/debian-devel/control
+++ b/debian-devel/control
@@ -19,6 +19,7 @@ Build-Depends:
libcurl4-gnutls-dev,
libgcrypt20-dev,
libgnutls28-dev,
+ libzstd-dev,
zlib1g-dev
Standards-Version: 4.6.0.1
Homepage: https://weechat.org/
diff --git a/debian-stable/control b/debian-stable/control
index a4a515ac4..77c78e4ad 100644
--- a/debian-stable/control
+++ b/debian-stable/control
@@ -19,6 +19,7 @@ Build-Depends:
libcurl4-gnutls-dev,
libgcrypt20-dev,
libgnutls28-dev,
+ libzstd-dev,
zlib1g-dev
Standards-Version: 4.6.0.1
Homepage: https://weechat.org/
diff --git a/doc/de/weechat_user.de.adoc b/doc/de/weechat_user.de.adoc
index 0747034af..27d92319c 100644
--- a/doc/de/weechat_user.de.adoc
+++ b/doc/de/weechat_user.de.adoc
@@ -107,9 +107,12 @@ WeeChat *erforderlich* sind:
| pkg-config | | entdeckt installierte Bibliotheken.
| libncursesw5-dev ^(2)^ | | Ncurses Oberfläche.
| libcurl4-gnutls-dev | | URL Transfer.
-| zlib1g-dev | | Kompression für Pakete, die mittels Relay- (WeeChat Protokoll), Script-Erweiterung übertragen werden.
| libgcrypt20-dev | | Geschützte Daten, IRC SASL Authentifikation.
| libgnutls28-dev | ≥ 2.2.0 ^(3)^ | SSL Verbindung zu einem IRC Server, Unterstützung von SSL in der Relay-Erweiterung, IRC SASL Authentifikation (ECDSA-NIST256P-CHALLENGE).
+// TRANSLATION MISSING
+| zlib1g-dev | | Compression of messages (WeeChat -> client) with https://zlib.net/[zlib] in relay plugin (weechat protocol), Script-Erweiterung übertragen werden.
+// TRANSLATION MISSING
+| libzstd-dev | | Compression of messages (WeeChat -> client) with https://facebook.github.io/zstd/[Zstandard] in relay plugin (weechat protocol).
|===
[NOTE]
diff --git a/doc/en/weechat_relay_protocol.en.adoc b/doc/en/weechat_relay_protocol.en.adoc
index 33ac9f14c..683a72c39 100644
--- a/doc/en/weechat_relay_protocol.en.adoc
+++ b/doc/en/weechat_relay_protocol.en.adoc
@@ -103,7 +103,7 @@ List of available commands (detail in next chapters):
[[command_handshake]]
=== handshake
-_WeeChat ≥ 2.9._
+_WeeChat ≥ 2.9, updated in version 3.5._
Perform an handshake between the client and WeeChat: this is required in most
cases to know the session settings and prepare the authentication with the
@@ -127,10 +127,15 @@ Arguments:
*** _sha512_: password salted and hashed with SHA512 algorithm
*** _pbkdf2+sha256_: password salted and hashed with PBKDF2 algorithm (using SHA256 hash)
*** _pbkdf2+sha512_: password salted and hashed with PBKDF2 algorithm (using SHA512 hash)
-** _compression_: compression type:
-*** _zlib_: enable _zlib_ compression for messages sent by _relay_
- (enabled by default if _relay_ supports _zlib_ compression)
-*** _off_: disable compression
+** _compression_: list of supported compression types supported by the client
+ (separated by colons and sorted from most important to the fallback value);
+ if compression is enabled, messages from _relay_ to client are compressed
+ to save bandwidth; allowed values are:
+*** _off_: no compression (default if option is not given)
+*** _zlib_: compress with https://zlib.net/[zlib] _(WeeChat ≥ 0.3.7)_
+*** _zstd_: compress with https://facebook.github.io/zstd/[Zstandard]: better
+ compression and much faster than _zlib_ for both compression and decompression
+ _(WeeChat ≥ 3.5)_
Notes about option _password_hash_algo_:
@@ -169,8 +174,9 @@ WeeChat replies with a hashtable containing the following keys and values:
and the user password (the _relay_ nonce + the client nonce is the salt used
in the password hash algorithm)
* _compression_: compression type:
-** _zlib_: messages are compressed with _zlib_
** _off_: messages are not compressed
+** _zlib_: messages are compressed with https://zlib.net/[zlib]
+** _zstd_: messages are compressed with https://facebook.github.io/zstd/[Zstandard]
[TIP]
With WeeChat ≤ 2.8, the command _handshake_ is not implemented, WeeChat silently
@@ -196,7 +202,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -216,7 +222,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -236,7 +242,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -248,10 +254,11 @@ the password is "test" in this example:
init password_hash=pbkdf2+sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:100000:ba7facc3edb89cd06ae810e29ced85980ff36de2bb596fcf513aaab626876440
----
-* Only "sha256" and "sha512" are supported by the client, disable compression:
+* Only "sha256" and "sha512" are supported by the client, enable zstd (preferred)
+or zlib compression:
----
-(handshake) handshake password_hash_algo=sha256:sha512,compression=off
+(handshake) handshake password_hash_algo=sha256:sha512,compression=zstd:zlib
----
Response:
@@ -264,7 +271,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'off',
+ 'compression': 'zstd',
}
----
@@ -298,12 +305,6 @@ Arguments:
factor, in addition to the password
(option _relay.network.totp_secret_ in WeeChat)
_(WeeChat ≥ 2.4)_
-** _compression_: compression type (*deprecated* since version 2.9, it is kept
- for compatibility reasons but should be sent in the
- <<command_handshake,handshake command>>):
-*** _zlib_: enable _zlib_ compression for messages sent by _relay_
- (enabled by default if _relay_ supports _zlib_ compression)
-*** _off_: disable compression
[NOTE]
With WeeChat ≥ 1.6, commas can be escaped in the value, for example
@@ -1379,7 +1380,8 @@ Messages are sent as binary data, using following format (with size in bytes):
(including this field)
* _compression_ (byte): flag:
** _0x00_: following data is not compressed
-** _0x01_: following data is compressed with _zlib_
+** _0x01_: following data is compressed with https://zlib.net/[zlib]
+** _0x02_: following data is compressed with https://facebook.github.io/zstd/[Zstandard]
* _id_ (string, 4 bytes + content): identifier sent by client (before command name); it can be
empty (string with zero length and no content) if no identifier was given in
command
@@ -1389,8 +1391,9 @@ Messages are sent as binary data, using following format (with size in bytes):
[[message_compression]]
=== Compression
-If flag _compression_ is equal to 0x01, then *all* data after is compressed
-with _zlib_, and therefore must be uncompressed before being processed.
+If flag _compression_ is equal to 0x01 or 0x02, then *all* data after is compressed
+with https://zlib.net/[zlib] or https://facebook.github.io/zstd/[Zstandard],
+and therefore must be uncompressed before being processed.
[[message_identifier]]
=== Identifier
diff --git a/doc/en/weechat_user.en.adoc b/doc/en/weechat_user.en.adoc
index d7d3b6fbf..98bb045d1 100644
--- a/doc/en/weechat_user.en.adoc
+++ b/doc/en/weechat_user.en.adoc
@@ -101,9 +101,10 @@ WeeChat:
| pkg-config | | Detect installed libraries.
| libncursesw5-dev ^(2)^ | | Ncurses interface.
| libcurl4-gnutls-dev | | URL transfer.
-| zlib1g-dev | | Compression of packets in relay plugin (weechat protocol), script plugin.
| libgcrypt20-dev | | Secured data, IRC SASL authentication.
| libgnutls28-dev | ≥ 2.2.0 ^(3)^ | SSL connection to IRC server, support of SSL in relay plugin, IRC SASL authentication (ECDSA-NIST256P-CHALLENGE).
+| zlib1g-dev | | Compression of messages (WeeChat -> client) with https://zlib.net/[zlib] in relay plugin (weechat protocol), script plugin.
+| libzstd-dev | | Compression of messages (WeeChat -> client) with https://facebook.github.io/zstd/[Zstandard] in relay plugin (weechat protocol).
|===
[NOTE]
diff --git a/doc/fr/weechat_relay_protocol.fr.adoc b/doc/fr/weechat_relay_protocol.fr.adoc
index bcca20f81..51a5b7e13 100644
--- a/doc/fr/weechat_relay_protocol.fr.adoc
+++ b/doc/fr/weechat_relay_protocol.fr.adoc
@@ -24,7 +24,7 @@ Les termes suivants sont utilisés dans ce document :
* _relay_ : il s'agit de l'extension "relay" de WeeChat, qui agit comme un
"serveur" et autorise les _clients_ à se connecter
* _client_ : il s'agit d'un autre logiciel, connecté au _relay_ via une
- connexion réseau; dans la plupart des cas, ce _client_ est une interface
+ connexion réseau ; dans la plupart des cas, ce _client_ est une interface
distante.
[[network_diagram]]
@@ -79,7 +79,7 @@ Les commandes ont le format :
Les champs sont :
* _id_ : identifiant du message (facultatif) qui sera envoyée dans la réponse de
- _relay_; elle doit être entre parenthèses, et ne doit pas commencer par un
+ _relay_ ; elle doit être entre parenthèses, et ne doit pas commencer par un
underscore (les identifiants commençant par un underscore sont réservés
pour les messages _évènements_ de WeeChat)
* _commande_ : une commande (voir le tableau ci-dessous)
@@ -107,7 +107,7 @@ Liste des commandes disponibles (détail dans les chapitres suivants) :
[[command_handshake]]
=== handshake
-_WeeChat ≥ 2.9._
+_WeeChat ≥ 2.9, mis à jour dans la version 3.5._
Effectuer une poignée de main entre le client et WeeChat : cela est obligatoire
dans la plupart des cas pour connaître les paramètres de la session et préparer
@@ -133,10 +133,16 @@ Paramètres :
(avec un hachage SHA256)
*** _pbkdf2+sha512_ : mot de passe salé et haché avec l'algorithme PBKDF2
(avec un hachage SHA512)
-** _compression_ : type de compression :
-*** _zlib_ : activer la compression _zlib_ pour les messages envoyés par _relay_
- (activée par défaut si _relay_ supporte la compression _zlib_)
-*** _off_ : désactiver la compression
+** _compression_ : liste des types de compression supportées par le client
+ (séparées par des deux-points et triées de la plus importante à la valeur
+ par défaut) ; si la compression est activée, les messages de _relay_ vers
+ le client sont compressés pour économiser de la bande passante ;
+ les valeurs autorisées sont :
+*** _off_ : pas de compression (par défaut si l'option n'est pas donnée)
+*** _zlib_ : compresser avec https://zlib.net/[zlib] _(WeeChat ≥ 0.3.7)_
+*** _zstd_ : compresser avec https://facebook.github.io/zstd/[Zstandard] :
+ meilleure compression et bien plus rapide que _zlib_ pour la compression et
+ la décompression _(WeeChat ≥ 3.5)_
Notes à propos de l'option _password_hash_algo_ :
@@ -178,8 +184,9 @@ suivantes :
_relay_ + le nonce client constituent le sel utilisé dans l'algorithme de
hachage du mot de passe)
* _compression_ : type de compression :
-** _zlib_ : les messages sont compressés avec _zlib_
** _off_ : les messages ne sont pas compressés
+** _zlib_ : les messages sont compressés avec https://zlib.net/[zlib]
+** _zstd_ : les messages sont compressés avec https://facebook.github.io/zstd/[Zstandard]
[TIP]
Avec WeeChat ≤ 2.8, la commande _handshake_ n'est pas implémentée, WeeChat ignore
@@ -204,7 +211,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -224,7 +231,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -244,7 +251,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -256,10 +263,11 @@ le mot de passe est "test" dans cet exemple :
init password_hash=pbkdf2+sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:100000:ba7facc3edb89cd06ae810e29ced85980ff36de2bb596fcf513aaab626876440
----
-* Seulement "sha256" et "sha512" sont supportés par le client, désactiver la compression :
+* Seulement "sha256" et "sha512" sont supportés par le client, activer la
+compression zstd (préférée) ou zlib :
----
-(handshake) handshake password_hash_algo=sha256:sha512,compression=off
+(handshake) handshake password_hash_algo=sha256:sha512,compression=zstd:zlib
----
Réponse :
@@ -272,7 +280,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'off',
+ 'compression': 'zstd',
}
----
@@ -306,12 +314,6 @@ Paramètres :
One-Time Password) utilisé comme second facteur d'authentification, en plus
du mot de passe (option _relay.network.totp_secret_ dans WeeChat)
_(WeeChat ≥ 2.4)_
-** _compression_ : type de compression (*obsolète* depuis la version 2.9, gardé
- pour des raisons de compatibilité mais devrait être envoyé dans la
- <<command_handshake,commande handshake>>) :
-*** _zlib_ : activer la compression _zlib_ pour les messages envoyés par _relay_
- (activée par défaut si _relay_ supporte la compression _zlib_)
-*** _off_ : désactiver la compression
[NOTE]
Avec WeeChat ≥ 1.6, les virgules peuvent être échappées dans la valeur,
@@ -1157,16 +1159,16 @@ Syntaxe :
Paramètres :
* _tampon_ : pointeur (par exemple : "0x1234abcd") ou nom complet du tampon (par exemple :
- _core.weechat_ ou _irc.libera.#weechat_); le nom "*" peut être utilisé pour
+ _core.weechat_ ou _irc.libera.#weechat_) ; le nom "*" peut être utilisé pour
spécifier tous les tampons
* _options_ : un ou plusieurs mots-clés, séparés par des virgules (par défaut
_buffers,upgrade,buffer,nicklist_ pour "*" et _buffer,nicklist_ pour un
tampon) :
** _buffers_ : recevoir les signaux à propos des tampons (ouverts/fermés,
- déplacés, renommés, mélangés, masqués/démasqués); peut être utilisé seulement
+ déplacés, renommés, mélangés, masqués/démasqués) ; peut être utilisé seulement
avec "*" _(WeeChat ≥ 0.4.1)_
** _upgrade_ : recevoir les signaux à propos de la mise à jour de WeeChat
- (mise à jour, fin de mise à jour); peut être utilisé seulement avec "*"
+ (mise à jour, fin de mise à jour) ; peut être utilisé seulement avec "*"
_(WeeChat ≥ 0.4.1)_
** _buffer_ : recevoir les signaux à propos du tampon (nouvelles lignes, type
changé, titre changé, variable locale ajoutée/supprimée, et les même signaux
@@ -1225,11 +1227,11 @@ Syntaxe :
Paramètres :
* _tampon_ : pointeur (par exemple : "0x1234abcd") ou nom complet du tampon (par exemple :
- _core.weechat_ ou _irc.libera.#weechat_); le nom "*" peut être utilisé pour
+ _core.weechat_ ou _irc.libera.#weechat_) ; le nom "*" peut être utilisé pour
spécifier tous les tampons
* _options_ : un ou plusieurs mots-clés, séparés par des virgules (le défaut est
_buffers,upgrade,buffer,nicklist_ pour "*" et _buffer,nicklist_ pour un
- tampon); voir <<command_sync,la commande sync>> pour les valeurs
+ tampon) ; voir <<command_sync,la commande sync>> pour les valeurs
[NOTE]
En utilisant le tampon "*", les autres tampons synchronisés (en utilisant un
@@ -1399,9 +1401,10 @@ suivant (avec la taille en octets) :
(en incluant ce champ)
* _compression_ (octet) : drapeau :
** _0x00_ : les données qui suivent ne sont pas compressées
-** _0x01_ : les données qui suivent sont compressées avec _zlib_
+** _0x01_ : les données qui suivent sont compressées avec https://zlib.net/[zlib]
+** _0x02_ : les données qui suivent sont compressées avec https://facebook.github.io/zstd/[Zstandard]
* _id_ (chaîne, 4 octets + contenu) : l'identifiant envoyé par le client
- (avant le nom de la commande); il peut être vide (chaîne avec une longueur
+ (avant le nom de la commande) ; il peut être vide (chaîne avec une longueur
de zéro sans contenu) si l'identifiant n'était pas donné dans la commande
* _type_ (3 caractères) : un type : 3 lettres (voir le tableau ci-dessous)
* _objet_ : un objet (voir tableau ci-dessous)
@@ -1409,9 +1412,9 @@ suivant (avec la taille en octets) :
[[message_compression]]
=== Compression
-Si le drapeau de _compression_ est égal à 0x01, alors *toutes* les données après
-sont compressées avec _zlib_, et par conséquent doivent être décompressées avant
-d'être utilisées.
+Si le drapeau de _compression_ est égal à 0x01 ou 0x02, alors *toutes* les données
+après sont compressées avec https://zlib.net/[zlib] ou https://facebook.github.io/zstd/[Zstandard],
+et par conséquent doivent être décompressées avant d'être utilisées.
[[message_identifier]]
=== Identifiant
@@ -2473,7 +2476,7 @@ Une chaîne _NULL_ (pointeur NULL en C) a une longueur de -1 :
[[object_buffer]]
==== Tampon de données
-Même format que l'objet <<object_string,chaîne>>; le contenu est simplement un
+Même format que l'objet <<object_string,chaîne>> ; le contenu est simplement un
tableau d'octets.
[[object_pointer]]
@@ -2556,7 +2559,7 @@ objets).
....
* _h-path_ (chaîne) : chemin utilise pour atteindre le hdata (exemple :
- _buffer/lines/line/line_data_); le dernier élément du chemin est le hdata
+ _buffer/lines/line/line_data_) ; le dernier élément du chemin est le hdata
retourné
* _keys_ (chaînes) : chaîne avec une liste de _clé:type_ (séparés par des
virgules), exemple : _number:int,name:str_
diff --git a/doc/fr/weechat_user.fr.adoc b/doc/fr/weechat_user.fr.adoc
index 48949e51f..dfcbfe7cb 100644
--- a/doc/fr/weechat_user.fr.adoc
+++ b/doc/fr/weechat_user.fr.adoc
@@ -104,9 +104,10 @@ Le tableau suivant liste les paquets *requis* pour compiler WeeChat :
| pkg-config | | Détection des bibliothèques installées.
| libncursesw5-dev ^(2)^ | | Interface ncurses.
| libcurl4-gnutls-dev | | Transfert d'URL.
-| zlib1g-dev | | Compression des paquets dans l'extension relay (protocole weechat), extension script.
| libgcrypt20-dev | | Données sécurisées, authentification IRC SASL.
| libgnutls28-dev | ≥ 2.2.0 ^(3)^ | Connexion SSL au serveur IRC, support SSL dans l'extension relay, authentification IRC SASL (ECDSA-NIST256P-CHALLENGE).
+| zlib1g-dev | | Compression des messages (WeeChat -> client) avec https://zlib.net/[zlib] dans l'extension relay (protocole weechat), extension script.
+| libzstd-dev | | Compression des messages (WeeChat -> client) avec https://facebook.github.io/zstd/[Zstandard] dans l'extension relay (protocole weechat).
|===
[NOTE]
diff --git a/doc/it/weechat_user.it.adoc b/doc/it/weechat_user.it.adoc
index c3e1602dc..6c5406d08 100644
--- a/doc/it/weechat_user.it.adoc
+++ b/doc/it/weechat_user.it.adoc
@@ -122,11 +122,13 @@ WeeChat:
| libncursesw5-dev ^(2)^ | | Interfaccia ncurses.
| libcurl4-gnutls-dev | | Trasferimento URL.
// TRANSLATION MISSING
-| zlib1g-dev | | Compression of packets in relay plugin (weechat protocol), script plugin.
-// TRANSLATION MISSING
| libgcrypt20-dev | | Secured data, IRC SASL authentication.
// TRANSLATION MISSING
| libgnutls28-dev | ≥ 2.2.0 ^(3)^ | Connessione SSL al server IRC, support of SSL in relay plugin, IRC SASL authentication (ECDSA-NIST256P-CHALLENGE).
+// TRANSLATION MISSING
+| zlib1g-dev | | Compression of messages (WeeChat -> client) with https://zlib.net/[zlib] in relay plugin (weechat protocol), script plugin.
+// TRANSLATION MISSING
+| libzstd-dev | | Compression of messages (WeeChat -> client) with https://facebook.github.io/zstd/[Zstandard] in relay plugin (weechat protocol).
|===
[NOTE]
diff --git a/doc/ja/weechat_relay_protocol.ja.adoc b/doc/ja/weechat_relay_protocol.ja.adoc
index e004d5221..ab4833517 100644
--- a/doc/ja/weechat_relay_protocol.ja.adoc
+++ b/doc/ja/weechat_relay_protocol.ja.adoc
@@ -112,7 +112,7 @@ _リレー_ プラグインは _IRC プロキシ_ のように振舞います (
[[command_handshake]]
=== handshake
-_WeeChat ≥ 2.9._
+_WeeChat ≥ 2.9, updated in version 3.5._
Perform an handshake between the client and WeeChat: this is required in most
cases to know the session settings and prepare the authentication with the
@@ -136,10 +136,16 @@ Arguments:
*** _sha512_: password salted and hashed with SHA512 algorithm
*** _pbkdf2+sha256_: password salted and hashed with PBKDF2 algorithm (using SHA256 hash)
*** _pbkdf2+sha512_: password salted and hashed with PBKDF2 algorithm (using SHA512 hash)
-** _compression_: compression type:
-*** _zlib_: enable _zlib_ compression for messages sent by _relay_
- (enabled by default if _relay_ supports _zlib_ compression)
-*** _off_: disable compression
+// TRANSLATION MISSING
+** _compression_: list of supported compression types supported by the client
+ (separated by colons and sorted from most important to the fallback value);
+ if compression is enabled, messages from _relay_ to client are compressed
+ to save bandwidth; allowed values are:
+*** _off_: no compression (default if option is not given)
+*** _zlib_: compress with https://zlib.net/[zlib] _(WeeChat ≥ 0.3.7)_
+*** _zstd_: compress with https://facebook.github.io/zstd/[Zstandard]: better
+ compression and much faster than _zlib_ for both compression and decompression
+ _(WeeChat ≥ 3.5)_
Notes about option _password_hash_algo_:
@@ -178,8 +184,9 @@ WeeChat replies with a hashtable containing the following keys and values:
and the user password (the _relay_ nonce + the client nonce is the salt used
in the password hash algorithm)
* _compression_: compression type:
-** _zlib_: messages are compressed with _zlib_
** _off_: messages are not compressed
+** _zlib_: messages are compressed with https://zlib.net/[zlib]
+** _zstd_: messages are compressed with https://facebook.github.io/zstd/[Zstandard]
[TIP]
With WeeChat ≤ 2.8, the command _handshake_ is not implemented, WeeChat silently
@@ -205,7 +212,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -225,7 +232,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -245,7 +252,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -257,10 +264,11 @@ the password is "test" in this example:
init password_hash=pbkdf2+sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:100000:ba7facc3edb89cd06ae810e29ced85980ff36de2bb596fcf513aaab626876440
----
-* Only "sha256" and "sha512" are supported by the client, disable compression:
+* Only "sha256" and "sha512" are supported by the client, enable zstd (preferred)
+or zlib compression:
----
-(handshake) handshake password_hash_algo=sha256:sha512,compression=off
+(handshake) handshake password_hash_algo=sha256:sha512,compression=zstd:zlib
----
Response:
@@ -273,7 +281,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'off',
+ 'compression': 'zstd',
}
----
@@ -310,13 +318,6 @@ _handshake_), without warning.
** _totp_: パスワードに加えた二要素認証で利用する時間ベースのワンタイムパスワード (TOTP)
(WeeChat の _relay.network.totp_secret_ オプション)
_(WeeChat バージョン 2.4 で利用可能)_
-// TRANSLATION MISSING
-** _compression_: 圧縮タイプ (*deprecated* since version 2.9, it is kept
- for compatibility reasons but should be sent in the
- <<command_handshake,handshake command>>):
-*** _zlib_: _リレー_ から受信するメッセージに対して _zlib_ 圧縮を使う
- (_リレー_ が _zlib_ 圧縮をサポートしている場合、デフォルトで有効化されます)
-*** _off_: 圧縮を使わない
[NOTE]
WeeChat バージョン 1.6 以上の場合、コンマをエスケープすることで value にコンマを設定可能です。例えば
@@ -1409,7 +1410,8 @@ quit
(このフィールドを含む)
* _compression_ (バイト型): フラグ:
** _0x00_: これ以降のデータは圧縮されていません
-** _0x01_: これ以降のデータは _zlib_ で圧縮されています
+** _0x01_: これ以降のデータは https://zlib.net/[zlib] で圧縮されています
+** _0x02_: これ以降のデータは https://facebook.github.io/zstd/[Zstandard] で圧縮されています
* _id_ (文字列型、4 バイト + 内容): クライアントが送信した識別子 (コマンド名の前につけられる);
コマンドに識別子が含まれない場合は空文字列でも可
(内容を含まない長さゼロの文字列)
@@ -1419,8 +1421,10 @@ quit
[[message_compression]]
=== 圧縮
-_compression_ フラグが 0x01 の場合、これ以降の *全ての* データは _zlib_
-で圧縮されているため、処理前に必ず展開してください。
+// TRANSLATION MISSING
+If flag _compression_ is equal to 0x01 or 0x02, then *all* data after is compressed
+with https://zlib.net/[zlib] or https://facebook.github.io/zstd/[Zstandard],
+and therefore must be uncompressed before being processed.
[[message_identifier]]
=== 識別子
diff --git a/doc/ja/weechat_user.ja.adoc b/doc/ja/weechat_user.ja.adoc
index 61be32a7d..7b33ff049 100644
--- a/doc/ja/weechat_user.ja.adoc
+++ b/doc/ja/weechat_user.ja.adoc
@@ -108,9 +108,12 @@ WeeChat:
| pkg-config | | インストール済みライブラリを検出
| libncursesw5-dev ^(2)^ | | ncurses インターフェース
| libcurl4-gnutls-dev | | URL 転送
-| zlib1g-dev | | relay プラグインでパケットを圧縮 (weechat プロトコル)、スクリプトプラグイン
| libgcrypt20-dev | | 保護データ、IRC SASL 認証
| libgnutls28-dev | 2.2.0 以上 ^(3)^ | IRC サーバへの SSL 接続、IRC SASL 認証 (ECDSA-NIST256P-CHALLENGE)
+// TRANSLATION MISSING
+| zlib1g-dev | | Compression of messages (WeeChat -> client) with https://zlib.net/[zlib] in relay plugin (weechat protocol), script plugin.
+// TRANSLATION MISSING
+| libzstd-dev | | Compression of messages (WeeChat -> client) with https://facebook.github.io/zstd/[Zstandard] in relay plugin (weechat protocol).
|===
[NOTE]
diff --git a/doc/pl/weechat_user.pl.adoc b/doc/pl/weechat_user.pl.adoc
index 4fc43dc08..61ed32766 100644
--- a/doc/pl/weechat_user.pl.adoc
+++ b/doc/pl/weechat_user.pl.adoc
@@ -107,9 +107,12 @@ WeeChat:
| pkg-config | | Wykrywa zainstalowane biblioteki.
| libncursesw5-dev ^(2)^ | | Interfejs ncurses.
| libcurl4-gnutls-dev | | Transfer URL.
-| zlib1g-dev | | Kompresja pakietów we wtyczce relay (protokół weechat), wtyczka script.
| libgcrypt20-dev | | Zabezpieczone dane, uwierzytelnianie IRC SASL.
| libgnutls28-dev | ≥ 2.2.0 ^(3)^ | Połączenia SSL z serwerami IRC, wsparcie dla SSL we wtyczce relay, uwierzytelnianie IRC SASL (ECDSA-NIST256P-CHALLENGE).
+// TRANSLATION MISSING
+| zlib1g-dev | | Compression of messages (WeeChat -> client) with https://zlib.net/[zlib] in relay plugin (weechat protocol), script plugin.
+// TRANSLATION MISSING
+| libzstd-dev | | Compression of messages (WeeChat -> client) with https://facebook.github.io/zstd/[Zstandard] in relay plugin (weechat protocol).
|===
[NOTE]
diff --git a/doc/sr/weechat_relay_protocol.sr.adoc b/doc/sr/weechat_relay_protocol.sr.adoc
index 3f9856460..fbf67e515 100644
--- a/doc/sr/weechat_relay_protocol.sr.adoc
+++ b/doc/sr/weechat_relay_protocol.sr.adoc
@@ -97,7 +97,8 @@ _клијенти_ су повезани са _релејем_ као што ј
[[command_handshake]]
=== handshake
-_WeeChat ≥ 2.9._
+// TRANSLATION MISSING
+_WeeChat ≥ 2.9, updated in version 3.5._
Извршава руковање између клијента и програма WeeChat: ово је у већини случајева неопходно како би се сазнале поставке сесије и припремила аутентификација командом _init_.
@@ -118,9 +119,16 @@ _WeeChat ≥ 2.9._
*** _sha512_: лозинка засољена и хеширана SHA512 алгоритмом
*** _pbkdf2+sha256_: лозинка засољена и хеширана PBKDF2 алгоритмом (користећи SHA256 хеш)
*** _pbkdf2+sha512_: лозинка засољена и хеширана PBKDF2 алгоритмом (користећи SHA512 хеш)
-** _compression_: тип компресије:
-*** _zlib_: укључује _zlib_ компресију порука које шаље _релеј_ (подразумевано је укључено ако _релеј_ подржава _zlib_ компресију)
-*** _off_: искључује компресију
+// TRANSLATION MISSING
+** _compression_: list of supported compression types supported by the client
+ (separated by colons and sorted from most important to the fallback value);
+ if compression is enabled, messages from _relay_ to client are compressed
+ to save bandwidth; allowed values are:
+*** _off_: no compression (default if option is not given)
+*** _zlib_: compress with https://zlib.net/[zlib] _(WeeChat ≥ 0.3.7)_
+*** _zstd_: compress with https://facebook.github.io/zstd/[Zstandard]: better
+ compression and much faster than _zlib_ for both compression and decompression
+ _(WeeChat ≥ 3.5)_
Напомене у вези опције _password_hash_algo_:
@@ -147,8 +155,9 @@ _WeeChat ≥ 2.9._
** _off_: Time-based One-Time Password (TOTP) је искључена и није потребна у _init_ команди
* _nonce_: бафер бајтова који не могу да се предвиде, послат као хексадецимална вредност, којом се спречавају replay напади; ако је _password_hash_algo_ хеш алгоритам, клијент мора да израчуна хеш лозинке над овим нонсом, спојено са клијентовим нонсом и корисничком лозинком (_релеј_ нонс + _клијент_ нонс је со која се користи у алгоритму хеширања лозинке)
* _compression_: тип компресије:
-** _zlib_: поруке су компресоване са _zlib_
** _off_: поруке се не компресују
+** _zlib_: поруке су компресоване са https://zlib.net/[zlib]
+** _zstd_: поруке су компресоване са https://facebook.github.io/zstd/[Zstandard]
[TIP]
У програму WeeChat верзије ≤ 2.8, команда _handshake_ није имплементирана, програм WeeChat једноставно игнорише ову команду, чак и ако се пошаље пре _init_ команде. +
@@ -172,7 +181,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -192,7 +201,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -212,7 +221,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'zlib',
+ 'compression': 'off',
}
----
@@ -222,10 +231,12 @@ htb: {
init password_hash=pbkdf2+sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:100000:ba7facc3edb89cd06ae810e29ced85980ff36de2bb596fcf513aaab626876440
----
-* Клијент подржава само „sha256” и „sha512”, компресије се искључује:
+// TRANSLATION MISSING
+* Клијент подржава само „sha256” и „sha512”, компресије се искључује,
+enable zstd (preferred) or zlib compression:
----
-(handshake) handshake password_hash_algo=sha256:sha512,compression=off
+(handshake) handshake password_hash_algo=sha256:sha512,compression=zstd:zlib
----
Одговор:
@@ -238,7 +249,7 @@ htb: {
'password_hash_iterations': '100000',
'totp': 'on',
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
- 'compression': 'off',
+ 'compression': 'zstd',
}
----
@@ -264,9 +275,6 @@ _Ажурирано у верзијама 2.4, 2.8, 2.9._
** _password_: лозинка која се користи за аутентификацију са _релејем_ (опција _relay.network.password_ у програму WeeChat)
** _password_hash_: хеш лозинке која се користи за аутентификацију са _релејем_ (опција _relay.network.password_ у програму WeeChat), погледајте испод за формат _(WeeChat ≥ 2.8)_
** _totp_: Time-based One-Time Password (TOTP) која се користи као секундарни фактор аутентификације, уз лозинку (опција _relay.network.totp_secret_ у програму WeeChat) _(WeeChat ≥ 2.4)_
-** _compression_: тип компресије (*превазиђено* почевши од верзије 2.9, остало је из разлога компатибилности, али ви требало да се пошаље у <<command_handshake,handshake команди>>):
-*** _zlib_: укључује _zlib_ компресију порука које шаље _релеј_ (подразумевано је укључено ако _релеј_ подржава _zlib_ компресију)
-*** _off_: искључује компресију
[NOTE]
У програму WeeChat верзије ≥ 1.6, у вредности могу да се означе запете, на пример `+init password=foo\,bar+` када желите да пошаљете лозинку „foo,bar”.
@@ -1292,7 +1300,8 @@ quit
* _дужина_ (неозначени цео број, 4 бајта): број бајтова у целој поруци (заједно са овим пољем)
* _компресија_ (бајт): заставица:
** _0x00_: подаци који следе нису компресовани
-** _0x01_: подаци који следе су компресовани са _zlib_
+** _0x01_: подаци који следе су компресовани са https://zlib.net/[zlib]
+** _0x02_: подаци који следе су компресовани са https://facebook.github.io/zstd/[Zstandard]
* _id_ (стринг, 4 бајта + садржај): идентификатор који послао клијент (пре имена команде); може бити и празан (стринг дужине нула и без садржаја) ако у команди није био наведен идентификатор
* _тип_ (3 карактера): тип: 3 слова (погледајте табелу испод)
* _објект_: објекат (погледајте табелу испод)
@@ -1300,7 +1309,10 @@ quit
[[message_compression]]
=== Компресија
-Ако је вредност заставице _компресија_ 0x01, онда су *сви* подаци компресовани _zlib_ алгоритмом, тако да пре обраде морају да се декомпресују.
+// TRANSLATION MISSING
+If flag _compression_ is equal to 0x01 or 0x02, then *all* data after is compressed
+with https://zlib.net/[zlib] or https://facebook.github.io/zstd/[Zstandard],
+and therefore must be uncompressed before being processed.
[[message_identifier]]
=== Идентификатор
diff --git a/doc/sr/weechat_user.sr.adoc b/doc/sr/weechat_user.sr.adoc
index 22587e0e6..6b25b5fb5 100644
--- a/doc/sr/weechat_user.sr.adoc
+++ b/doc/sr/weechat_user.sr.adoc
@@ -93,9 +93,12 @@ WeeChat почетна страница се налази на адреси: htt
| pkg-config | | Детекција инсталираних библиотека.
| libncursesw5-dev ^(2)^ | | Ncurses интерфејс.
| libcurl4-gnutls-dev | | URL пренос.
-| zlib1g-dev | | Компресија пакета у релеј додатку (weechat протокол), скрипт додатку.
| libgcrypt20-dev | | Обезбеђени подаци, IRC SASL аутентификација.
| libgnutls28-dev | ≥ 2.2.0 ^(3)^ | SSL веза са IRC сервером, подршка за SSL у релеј додатку, IRC SASL аутентификација (ECDSA-NIST256P-CHALLENGE).
+// TRANSLATION MISSING
+| zlib1g-dev | | Compression of messages (WeeChat -> client) with https://zlib.net/[zlib] in relay plugin (weechat protocol), script plugin.
+// TRANSLATION MISSING
+| libzstd-dev | | Compression of messages (WeeChat -> client) with https://facebook.github.io/zstd/[Zstandard] in relay plugin (weechat protocol).
|===
[NOTE]
diff --git a/src/core/wee-debug.c b/src/core/wee-debug.c
index 3315348ab..425451c36 100644
--- a/src/core/wee-debug.c
+++ b/src/core/wee-debug.c
@@ -33,6 +33,7 @@
#include <gcrypt.h>
#include <curl/curl.h>
#include <zlib.h>
+#include <zstd.h>
#include <gnutls/gnutls.h>
@@ -580,6 +581,12 @@ debug_libs_cb (const void *pointer, void *data,
gui_chat_printf (NULL, " zlib: (?)");
#endif /* ZLIB_VERSION */
+ /* display zstd version */
+ gui_chat_printf (NULL, " zstd: %d.%d.%d",
+ ZSTD_VERSION_MAJOR,
+ ZSTD_VERSION_MINOR,
+ ZSTD_VERSION_RELEASE);
+
return WEECHAT_RC_OK;
}
diff --git a/src/plugins/relay/CMakeLists.txt b/src/plugins/relay/CMakeLists.txt
index 451a54030..57e123074 100644
--- a/src/plugins/relay/CMakeLists.txt
+++ b/src/plugins/relay/CMakeLists.txt
@@ -43,13 +43,16 @@ set_target_properties(relay PROPERTIES PREFIX "")
set(LINK_LIBS)
-list(APPEND LINK_LIBS ${ZLIB_LIBRARY})
-
include_directories(${GNUTLS_INCLUDE_PATH})
list(APPEND LINK_LIBS ${GNUTLS_LIBRARY})
list(APPEND LINK_LIBS ${GCRYPT_LDFLAGS})
+list(APPEND LINK_LIBS ${ZLIB_LIBRARY})
+
+include_directories(${ZSTD_INCLUDE_DIRS})
+list(APPEND LINK_LIBS ${LIBZSTD_LDFLAGS})
+
target_link_libraries(relay ${LINK_LIBS} coverage_config)
install(TARGETS relay LIBRARY DESTINATION ${WEECHAT_LIBDIR}/plugins)
diff --git a/src/plugins/relay/Makefile.am b/src/plugins/relay/Makefile.am
index 1fcee124f..c84d09569 100644
--- a/src/plugins/relay/Makefile.am
+++ b/src/plugins/relay/Makefile.am
@@ -17,7 +17,7 @@
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
#
-AM_CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" $(ZLIB_CFLAGS) $(GCRYPT_CFLAGS) $(GNUTLS_CFLAGS)
+AM_CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" $(GCRYPT_CFLAGS) $(GNUTLS_CFLAGS) $(ZLIB_CFLAGS) $(ZSTD_CFLAGS)
libdir = ${weechat_libdir}/plugins
@@ -61,6 +61,6 @@ relay_la_SOURCES = relay.c \
weechat/relay-weechat-protocol.h
relay_la_LDFLAGS = -module -no-undefined
-relay_la_LIBADD = $(RELAY_LFLAGS) $(ZLIB_LFLAGS) $(GCRYPT_LFLAGS) $(GNUTLS_LFLAGS)
+relay_la_LIBADD = $(RELAY_LFLAGS) $(GCRYPT_LFLAGS) $(GNUTLS_LFLAGS) $(ZLIB_LFLAGS) $(ZSTD_LFLAGS)
EXTRA_DIST = CMakeLists.txt
diff --git a/src/plugins/relay/relay-config.c b/src/plugins/relay/relay-config.c
index 790a38a53..3e85e182e 100644
--- a/src/plugins/relay/relay-config.c
+++ b/src/plugins/relay/relay-config.c
@@ -63,7 +63,7 @@ struct t_config_option *relay_config_network_allowed_ips;
struct t_config_option *relay_config_network_auth_timeout;
struct t_config_option *relay_config_network_bind_address;
struct t_config_option *relay_config_network_clients_purge_delay;
-struct t_config_option *relay_config_network_compression_level;
+struct t_config_option *relay_config_network_compression;
struct t_config_option *relay_config_network_ipv6;
struct t_config_option *relay_config_network_max_clients;
struct t_config_option *relay_config_network_nonce_size;
@@ -1070,13 +1070,16 @@ relay_config_init ()
"clients immediately, -1 = never purge)"),
NULL, -1, 60 * 24 * 30, "0", NULL, 0,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- relay_config_network_compression_level = weechat_config_new_option (
+ relay_config_network_compression = weechat_config_new_option (
relay_config_file, ptr_section,
- "compression_level", "integer",
- N_("compression level for packets sent to client with WeeChat protocol "
- "(0 = disable compression, 1 = low compression ... 9 = best "
- "compression)"),
- NULL, 0, 9, "6", NULL, 0,
+ "compression", "integer",
+ N_("compression for packets sent to client with WeeChat "
+ "protocol: 0 = disable compression, 1 = low compression, fast "
+ "... 100 = best compression, slow; the value is a percentage "
+ "converted to 1-9 for zlib and 1-19 for zstd; "
+ "default value is 20 which is a sane default and offers good "
+ "compression and speed"),
+ NULL, 0, 100, "20", NULL, 0,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
relay_config_network_ipv6 = weechat_config_new_option (
relay_config_file, ptr_section,
diff --git a/src/plugins/relay/relay-config.h b/src/plugins/relay/relay-config.h
index d5b9c9372..41d970bf3 100644
--- a/src/plugins/relay/relay-config.h
+++ b/src/plugins/relay/relay-config.h
@@ -42,7 +42,7 @@ extern struct t_config_option *relay_config_network_allowed_ips;
extern struct t_config_option *relay_config_network_auth_timeout;
extern struct t_config_option *relay_config_network_bind_address;
extern struct t_config_option *relay_config_network_clients_purge_delay;
-extern struct t_config_option *relay_config_network_compression_level;
+extern struct t_config_option *relay_config_network_compression;
extern struct t_config_option *relay_config_network_ipv6;
extern struct t_config_option *relay_config_network_max_clients;
extern struct t_config_option *relay_config_network_nonce_size;
diff --git a/src/plugins/relay/weechat/relay-weechat-msg.c b/src/plugins/relay/weechat/relay-weechat-msg.c
index 7703604d1..b11c68b88 100644
--- a/src/plugins/relay/weechat/relay-weechat-msg.c
+++ b/src/plugins/relay/weechat/relay-weechat-msg.c
@@ -29,6 +29,7 @@
#include <errno.h>
#include <arpa/inet.h>
#include <zlib.h>
+#include <zstd.h>
#include "../../weechat-plugin.h"
#include "../relay.h"
@@ -1027,62 +1028,171 @@ relay_weechat_msg_add_nicklist (struct t_relay_weechat_msg *msg,
}
/*
- * Sends a message.
+ * Compresses the message with zlib.
+ *
+ * Returns:
+ * 1: OK, message compressed and sent
+ * 0: error, no message sent
*/
-void
-relay_weechat_msg_send (struct t_relay_client *client,
- struct t_relay_weechat_msg *msg)
+int
+relay_weechat_msg_compress_zlib (struct t_relay_client *client,
+ struct t_relay_weechat_msg *msg)
{
+ char raw_message[1024];
uint32_t size32;
- char compression, raw_message[1024];
- int rc;
Bytef *dest;
uLongf dest_size;
struct timeval tv1, tv2;
long long time_diff;
+ int rc, rc_compress, compression, compression_level;
+
+ rc = 0;
+ dest = NULL;
+
+ dest_size = compressBound (msg->data_size - 5);
+ dest = malloc (dest_size + 5);
+ if (!dest)
+ goto error;
+
+ /* convert % to zlib compression level (1-9) */
+ compression = weechat_config_integer (relay_config_network_compression);
+ compression_level = (((compression - 1) * 9) / 100) + 1;
+
+ gettimeofday (&tv1, NULL);
+ rc_compress = compress2 (
+ dest + 5,
+ &dest_size,
+ (Bytef *)(msg->data + 5),
+ msg->data_size - 5,
+ compression_level);
+ gettimeofday (&tv2, NULL);
+ time_diff = weechat_util_timeval_diff (&tv1, &tv2);
+ if ((rc_compress != Z_OK) || ((int)dest_size + 5 >= msg->data_size))
+ goto error;
+
+ /* set size and compression flag */
+ size32 = htonl ((uint32_t)(dest_size + 5));
+ memcpy (dest, &size32, 4);
+ dest[4] = RELAY_WEECHAT_COMPRESSION_ZLIB;
+
+ /* display message in raw buffer */
+ snprintf (raw_message, sizeof (raw_message),
+ "obj: %d/%d bytes (zlib: %d%%, %.2fms), id: %s",
+ (int)dest_size + 5,
+ msg->data_size,
+ 100 - ((((int)dest_size + 5) * 100) / msg->data_size),
+ ((float)time_diff) / 1000,
+ msg->id);
+
+ /* send compressed data */
+ relay_client_send (client, RELAY_CLIENT_MSG_STANDARD,
+ (const char *)dest, dest_size + 5,
+ raw_message);
+
+ rc = 1;
+
+error:
+ if (dest)
+ free (dest);
+
+ return rc;
+}
+
+/*
+ * Compresses the message with zstd.
+ *
+ * Returns:
+ * 1: OK, message compressed and sent
+ * 0: error, no message sent
+ */
+
+int
+relay_weechat_msg_compress_zstd (struct t_relay_client *client,
+ struct t_relay_weechat_msg *msg)
+{
+ char raw_message[1024];
+ uint32_t size32;
+ Bytef *dest;
+ size_t dest_size, comp_size;
+ struct timeval tv1, tv2;
+ long long time_diff;
+ int rc, compression, compression_level;
+
+ rc = 0;
+ dest = NULL;
+
+ dest_size = ZSTD_compressBound (msg->data_size - 5);
+ dest = malloc (dest_size + 5);
+ if (!dest)
+ goto error;
+
+ /* convert % to zstd compression level (1-19) */
+ compression = weechat_config_integer (relay_config_network_compression);
+ compression_level = (((compression - 1) * 19) / 100) + 1;
+
+ gettimeofday (&tv1, NULL);
+ comp_size = ZSTD_compress(
+ dest + 5,
+ dest_size,
+ (void *)(msg->data + 5),
+ msg->data_size - 5,
+ compression_level);
+ gettimeofday (&tv2, NULL);
+ time_diff = weechat_util_timeval_diff (&tv1, &tv2);
+ if ((comp_size == 0) || ((int)comp_size + 5 >= msg->data_size))
+ goto error;
+
+ /* set size and compression flag */
+ size32 = htonl ((uint32_t)(comp_size + 5));
+ memcpy (dest, &size32, 4);
+ dest[4] = RELAY_WEECHAT_COMPRESSION_ZSTD;
+
+ /* display message in raw buffer */
+ snprintf (raw_message, sizeof (raw_message),
+ "obj: %d/%d bytes (zstd: %d%%, %.2fms), id: %s",
+ (int)comp_size + 5,
+ msg->data_size,
+ 100 - ((((int)comp_size + 5) * 100) / msg->data_size),
+ ((float)time_diff) / 1000,
+ msg->id);
+
+ /* send compressed data */
+ relay_client_send (client, RELAY_CLIENT_MSG_STANDARD,
+ (const char *)dest, comp_size + 5,
+ raw_message);
+
+ rc = 1;
+
+error:
+ if (dest)
+ free (dest);
- if (weechat_config_integer (relay_config_network_compression_level) > 0)
+ return rc;
+}
+
+/*
+ * Sends a message.
+ */
+
+void
+relay_weechat_msg_send (struct t_relay_client *client,
+ struct t_relay_weechat_msg *msg)
+{
+ char compression, raw_message[1024];
+ uint32_t size32;
+
+ if (weechat_config_integer (relay_config_network_compression) > 0)
{
switch (RELAY_WEECHAT_DATA(client, compression))
{
case RELAY_WEECHAT_COMPRESSION_ZLIB:
- dest_size = compressBound (msg->data_size - 5);
- dest = malloc (dest_size + 5);
- if (dest)
- {
- gettimeofday (&tv1, NULL);
- rc = compress2 (dest + 5, &dest_size,
- (Bytef *)(msg->data + 5), msg->data_size - 5,
- weechat_config_integer (relay_config_network_compression_level));
- gettimeofday (&tv2, NULL);
- time_diff = weechat_util_timeval_diff (&tv1, &tv2);
- if ((rc == Z_OK) && ((int)dest_size + 5 < msg->data_size))
- {
- /* set size and compression flag */
- size32 = htonl ((uint32_t)(dest_size + 5));
- memcpy (dest, &size32, 4);
- dest[4] = RELAY_WEECHAT_COMPRESSION_ZLIB;
-
- /* display message in raw buffer */
- snprintf (raw_message, sizeof (raw_message),
- "obj: %d/%d bytes (%d%%, %.2fms), id: %s",
- (int)dest_size + 5,
- msg->data_size,
- 100 - ((((int)dest_size + 5) * 100) / msg->data_size),
- ((float)time_diff) / 1000,
- msg->id);
-
- /* send compressed data */
- relay_client_send (client, RELAY_CLIENT_MSG_STANDARD,
- (const char *)dest, dest_size + 5,
- raw_message);
-
- free (dest);
- return;
- }
- free (dest);
- }
+ if (relay_weechat_msg_compress_zlib (client, msg))
+ return;
+ break;
+ case RELAY_WEECHAT_COMPRESSION_ZSTD:
+ if (relay_weechat_msg_compress_zstd (client, msg))
+ return;
break;
default:
break;
diff --git a/src/plugins/relay/weechat/relay-weechat-protocol.c b/src/plugins/relay/weechat/relay-weechat-protocol.c
index d8f1bf212..49188decb 100644
--- a/src/plugins/relay/weechat/relay-weechat-protocol.c
+++ b/src/plugins/relay/weechat/relay-weechat-protocol.c
@@ -229,7 +229,7 @@ relay_weechat_protocol_handshake_reply (struct t_relay_client *client,
RELAY_WEECHAT_PROTOCOL_CALLBACK(handshake)
{
- char **options, **auths, *pos;
+ char **options, **auths, **compressions, *pos;
int i, j, index_hash_algo, hash_algo_found, auth_allowed, compression;
int password_received, plain_text_password;
@@ -292,9 +292,28 @@ RELAY_WEECHAT_PROTOCOL_CALLBACK(handshake)
}
else if (strcmp (options[i], "compression") == 0)
{
- compression = relay_weechat_compression_search (pos);
- if (compression >= 0)
- RELAY_WEECHAT_DATA(client, compression) = compression;
+ compressions = weechat_string_split (
+ pos,
+ ":",
+ NULL,
+ WEECHAT_STRING_SPLIT_STRIP_LEFT
+ | WEECHAT_STRING_SPLIT_STRIP_RIGHT
+ | WEECHAT_STRING_SPLIT_COLLAPSE_SEPS,
+ 0,
+ NULL);
+ if (compressions)
+ {
+ for (j = 0; compressions[j]; j++)
+ {
+ compression = relay_weechat_compression_search (compressions[j]);
+ if (compression >= 0)
+ {
+ RELAY_WEECHAT_DATA(client, compression) = compression;
+ break;
+ }
+ }
+ weechat_string_free_split (compressions);
+ }
}
}
}
@@ -337,12 +356,9 @@ RELAY_WEECHAT_PROTOCOL_CALLBACK(handshake)
* hash is given in hexadecimal
* totp time-based one time password used as secondary
* authentication factor
- * compression zlib (default) or off
*
* Message looks like:
* init password=mypass
- * init password=mypass,compression=zlib
- * init password=mypass,compression=off
* init password_hash=sha256:71c480df93d6ae2f1efad1447c66c9…,totp=123456
* init password_hash=pbkdf2:sha256:414232…:100000:01757d53157c…,totp=123456
*/
@@ -350,7 +366,7 @@ RELAY_WEECHAT_PROTOCOL_CALLBACK(handshake)
RELAY_WEECHAT_PROTOCOL_CALLBACK(init)
{
char **options, *pos, *relay_password, *totp_secret, *info_totp_args, *info_totp;
- int i, compression, length, password_received, totp_received;
+ int i, length, password_received, totp_received;
RELAY_WEECHAT_PROTOCOL_MIN_ARGS(0);
@@ -411,12 +427,6 @@ RELAY_WEECHAT_PROTOCOL_CALLBACK(init)
}
}
}
- else if (strcmp (options[i], "compression") == 0)
- {
- compression = relay_weechat_compression_search (pos);
- if (compression >= 0)
- RELAY_WEECHAT_DATA(client, compression) = compression;
- }
}
}
weechat_string_free_split_command (options);
diff --git a/src/plugins/relay/weechat/relay-weechat.c b/src/plugins/relay/weechat/relay-weechat.c
index c12bf1cf2..8bdbb28ed 100644
--- a/src/plugins/relay/weechat/relay-weechat.c
+++ b/src/plugins/relay/weechat/relay-weechat.c
@@ -41,7 +41,7 @@
char *relay_weechat_compression_string[] = /* strings for compression */
-{ "off", "zlib" };
+{ "off", "zlib", "zstd" };
/*
@@ -173,7 +173,7 @@ relay_weechat_alloc (struct t_relay_client *client)
RELAY_WEECHAT_DATA(client, handshake_done) = 0;
RELAY_WEECHAT_DATA(client, password_ok) = 0;
RELAY_WEECHAT_DATA(client, totp_ok) = 0;
- RELAY_WEECHAT_DATA(client, compression) = RELAY_WEECHAT_COMPRESSION_ZLIB;
+ RELAY_WEECHAT_DATA(client, compression) = RELAY_WEECHAT_COMPRESSION_OFF;
RELAY_WEECHAT_DATA(client, buffers_sync) =
weechat_hashtable_new (32,
WEECHAT_HASHTABLE_STRING,
diff --git a/src/plugins/relay/weechat/relay-weechat.h b/src/plugins/relay/weechat/relay-weechat.h
index c8339398b..1229ce8da 100644
--- a/src/plugins/relay/weechat/relay-weechat.h
+++ b/src/plugins/relay/weechat/relay-weechat.h
@@ -34,6 +34,7 @@ enum t_relay_weechat_compression
{
RELAY_WEECHAT_COMPRESSION_OFF = 0, /* no compression of binary objects */
RELAY_WEECHAT_COMPRESSION_ZLIB, /* zlib compression */
+ RELAY_WEECHAT_COMPRESSION_ZSTD, /* Zstandard compression */
/* number of compressions */
RELAY_WEECHAT_NUM_COMPRESSIONS,
};
diff --git a/tools/debian/patches/README b/tools/debian/patches/README
index a251bab14..3a2699a55 100644
--- a/tools/debian/patches/README
+++ b/tools/debian/patches/README
@@ -2,14 +2,3 @@ This directory contains patches that must be applied for some old Debian/Ubuntu
versions, in order to build Debian packages.
They are automatically applied by the script "tools/build-debian.sh".
-
-Notes for some versions of distributions:
-
-* asciidoctor:
-
- On these distributions, asciidoctor must be installed manually with the command
- "gem install asciidoctor" (as root):
-
- - Debian jessie (8.0)
- - Debian wheezy (7.0)
- - Ubuntu trusty (14.04)
diff --git a/tools/debian/patches/weechat_debian_jessie.patch b/tools/debian/patches/weechat_debian_jessie.patch
deleted file mode 100644
index 4f695f2f6..000000000
--- a/tools/debian/patches/weechat_debian_jessie.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff --git a/debian-devel/compat b/debian-devel/compat
-index 48082f72f..ec635144f 100644
---- a/debian-devel/compat
-+++ b/debian-devel/compat
-@@ -1 +1 @@
--12
-+9
-diff --git a/debian-devel/control b/debian-devel/control
-index bf94a36f1..7e7c82a21 100644
---- a/debian-devel/control
-+++ b/debian-devel/control
-@@ -3,19 +3,16 @@ Section: net
- Priority: optional
- Maintainer: Sébastien Helleu <flashcode@flashtux.org>
- Build-Depends:
-- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 9),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
- libperl-dev,
- python3-dev,
- libaspell-dev,
-- liblua5.3-dev,
-+ liblua5.1-0-dev,
- tcl8.6-dev,
-- guile-2.2-dev,
-- php-dev, libphp-embed, libargon2-0-dev, libsodium-dev,
-- libxml2-dev,
-+ guile-2.0-dev,
- libcurl4-gnutls-dev,
- libgcrypt20-dev,
- libgnutls28-dev,
-@@ -46,7 +43,7 @@ Description: Fast, light and extensible chat client (metapackage)
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -76,7 +73,7 @@ Description: Fast, light and extensible chat client - console client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -107,7 +104,7 @@ Description: Fast, light and extensible chat client - headless client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -232,20 +229,6 @@ Description: Fast, light and extensible chat client - Guile plugin
- .
- This package provides the Guile scripting API plugin.
-
--Package: weechat-devel-php
--Architecture: any
--Depends:
-- ${misc:Depends},
-- ${shlibs:Depends},
-- weechat-devel-curses (= ${binary:Version}) | weechat-devel-headless (= ${binary:Version}),
-- libphp-embed
--Conflicts: weechat-php
--Description: Fast, light and extensible chat client - PHP plugin
-- WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
-- for many operating systems. Everything can be done with a keyboard.
-- .
-- This package provides the PHP scripting API plugin.
--
- Package: weechat-devel-doc
- Section: doc
- Architecture: all
-diff --git a/debian-devel/rules b/debian-devel/rules
-index 16a5f9516..e42c2a6b2 100755
---- a/debian-devel/rules
-+++ b/debian-devel/rules
-@@ -12,6 +12,7 @@ $(BUILDDIR)/Makefile:
- -DLIBDIR=/usr/lib/${DEB_HOST_MULTIARCH} \
- -DENABLE_DOC:BOOL=ON \
- -DENABLE_MAN:BOOL=ON \
-+ -DENABLE_PHP:BOOL=OFF \
- -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
- -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="$(CFLAGS) -D_FORTIFY_SOURCE=2" \
- -DCMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING="$(LDFLAGS)" \
-diff --git a/debian-devel/weechat-devel-php.dirs b/debian-devel/weechat-devel-php.dirs
-deleted file mode 120000
-index e4853a588..000000000
---- a/debian-devel/weechat-devel-php.dirs
-+++ /dev/null
-@@ -1 +0,0 @@
--../debian-stable/weechat-php.dirs
-\ No newline at end of file
-diff --git a/debian-devel/weechat-devel-php.install b/debian-devel/weechat-devel-php.install
-deleted file mode 120000
-index e358b515a..000000000
---- a/debian-devel/weechat-devel-php.install
-+++ /dev/null
-@@ -1 +0,0 @@
--../debian-stable/weechat-php.install
-\ No newline at end of file
-diff --git a/debian-stable/compat b/debian-stable/compat
-index 48082f72f..ec635144f 100644
---- a/debian-stable/compat
-+++ b/debian-stable/compat
-@@ -1 +1 @@
--12
-+9
-diff --git a/debian-stable/control b/debian-stable/control
-index ccf81cac8..d753f6856 100644
---- a/debian-stable/control
-+++ b/debian-stable/control
-@@ -3,19 +3,16 @@ Section: net
- Priority: optional
- Maintainer: Emmanuel Bouthenot <kolter@debian.org>
- Build-Depends:
-- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 9),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
- libperl-dev,
- python3-dev,
- libaspell-dev,
-- liblua5.3-dev,
-+ liblua5.1-0-dev,
- tcl8.6-dev,
-- guile-2.2-dev,
-- php-dev, libphp-embed, libargon2-0-dev, libsodium-dev,
-- libxml2-dev,
-+ guile-2.0-dev,
- libcurl4-gnutls-dev,
- libgcrypt20-dev,
- libgnutls28-dev,
-@@ -45,7 +42,7 @@ Description: Fast, light and extensible chat client (metapackage)
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -74,7 +71,7 @@ Description: Fast, light and extensible chat client - console client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -104,7 +101,7 @@ Description: Fast, light and extensible chat client - headless client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -221,19 +218,6 @@ Description: Fast, light and extensible chat client - Guile plugin
- .
- This package provides the Guile scripting API plugin.
-
--Package: weechat-php
--Architecture: any
--Depends:
-- ${misc:Depends},
-- ${shlibs:Depends},
-- weechat-curses (= ${binary:Version}) | weechat-headless (= ${binary:Version}),
-- libphp-embed
--Description: Fast, light and extensible chat client - PHP plugin
-- WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
-- for many operating systems. Everything can be done with a keyboard.
-- .
-- This package provides the PHP scripting API plugin.
--
- Package: weechat-doc
- Section: doc
- Architecture: all
-diff --git a/debian-stable/rules b/debian-stable/rules
-index 16a5f9516..e42c2a6b2 100755
---- a/debian-stable/rules
-+++ b/debian-stable/rules
-@@ -12,6 +12,7 @@ $(BUILDDIR)/Makefile:
- -DLIBDIR=/usr/lib/${DEB_HOST_MULTIARCH} \
- -DENABLE_DOC:BOOL=ON \
- -DENABLE_MAN:BOOL=ON \
-+ -DENABLE_PHP:BOOL=OFF \
- -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
- -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="$(CFLAGS) -D_FORTIFY_SOURCE=2" \
- -DCMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING="$(LDFLAGS)" \
-diff --git a/debian-stable/weechat-php.dirs b/debian-stable/weechat-php.dirs
-deleted file mode 100644
-index 68457717b..000000000
---- a/debian-stable/weechat-php.dirs
-+++ /dev/null
-@@ -1 +0,0 @@
--usr/lib
-diff --git a/debian-stable/weechat-php.install b/debian-stable/weechat-php.install
-deleted file mode 100644
-index 0a1b73563..000000000
---- a/debian-stable/weechat-php.install
-+++ /dev/null
-@@ -1 +0,0 @@
--usr/lib/*/weechat/plugins/php.so
diff --git a/tools/debian/patches/weechat_debian_wheezy.patch b/tools/debian/patches/weechat_debian_wheezy.patch
deleted file mode 100644
index 3ada32109..000000000
--- a/tools/debian/patches/weechat_debian_wheezy.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-diff --git a/debian-devel/compat b/debian-devel/compat
-index 48082f72f..ec635144f 100644
---- a/debian-devel/compat
-+++ b/debian-devel/compat
-@@ -1 +1 @@
--12
-+9
-diff --git a/debian-devel/control b/debian-devel/control
-index bf94a36f1..8d4d60e9f 100644
---- a/debian-devel/control
-+++ b/debian-devel/control
-@@ -3,8 +3,7 @@ Section: net
- Priority: optional
- Maintainer: Sébastien Helleu <flashcode@flashtux.org>
- Build-Depends:
-- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 9),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
-@@ -12,13 +11,11 @@ Build-Depends:
- python3-dev,
- libaspell-dev,
- liblua5.3-dev,
-- tcl8.6-dev,
-- guile-2.2-dev,
-- php-dev, libphp-embed, libargon2-0-dev, libsodium-dev,
-- libxml2-dev,
-+ tcl8.5-dev,
-+ guile-2.0-dev,
- libcurl4-gnutls-dev,
-- libgcrypt20-dev,
-- libgnutls28-dev,
-+ libgcrypt11-dev,
-+ libgnutls-dev,
- zlib1g-dev
- Standards-Version: 4.6.0.1
- Homepage: https://weechat.org/
-@@ -46,7 +43,7 @@ Description: Fast, light and extensible chat client (metapackage)
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -76,7 +73,7 @@ Description: Fast, light and extensible chat client - console client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -107,7 +104,7 @@ Description: Fast, light and extensible chat client - headless client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -232,20 +229,6 @@ Description: Fast, light and extensible chat client - Guile plugin
- .
- This package provides the Guile scripting API plugin.
-
--Package: weechat-devel-php
--Architecture: any
--Depends:
-- ${misc:Depends},
-- ${shlibs:Depends},
-- weechat-devel-curses (= ${binary:Version}) | weechat-devel-headless (= ${binary:Version}),
-- libphp-embed
--Conflicts: weechat-php
--Description: Fast, light and extensible chat client - PHP plugin
-- WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
-- for many operating systems. Everything can be done with a keyboard.
-- .
-- This package provides the PHP scripting API plugin.
--
- Package: weechat-devel-doc
- Section: doc
- Architecture: all
-diff --git a/debian-devel/rules b/debian-devel/rules
-index 16a5f9516..3edb65fa5 100755
---- a/debian-devel/rules
-+++ b/debian-devel/rules
-@@ -1,7 +1,5 @@
- #!/usr/bin/make -f
-
--export DEB_BUILD_MAINT_OPTIONS=hardening=+all
--
- BUILDDIR = builddir
-
- $(BUILDDIR)/Makefile:
-diff --git a/debian-devel/weechat-devel-php.dirs b/debian-devel/weechat-devel-php.dirs
-deleted file mode 120000
-index e4853a588..000000000
---- a/debian-devel/weechat-devel-php.dirs
-+++ /dev/null
-@@ -1 +0,0 @@
--../debian-stable/weechat-php.dirs
-\ No newline at end of file
-diff --git a/debian-devel/weechat-devel-php.install b/debian-devel/weechat-devel-php.install
-deleted file mode 120000
-index e358b515a..000000000
---- a/debian-devel/weechat-devel-php.install
-+++ /dev/null
-@@ -1 +0,0 @@
--../debian-stable/weechat-php.install
-\ No newline at end of file
-diff --git a/debian-stable/compat b/debian-stable/compat
-index 48082f72f..ec635144f 100644
---- a/debian-stable/compat
-+++ b/debian-stable/compat
-@@ -1 +1 @@
--12
-+9
-diff --git a/debian-stable/control b/debian-stable/control
-index ccf81cac8..ee2e092eb 100644
---- a/debian-stable/control
-+++ b/debian-stable/control
-@@ -3,8 +3,7 @@ Section: net
- Priority: optional
- Maintainer: Emmanuel Bouthenot <kolter@debian.org>
- Build-Depends:
-- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 9),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
-@@ -12,13 +11,11 @@ Build-Depends:
- python3-dev,
- libaspell-dev,
- liblua5.3-dev,
-- tcl8.6-dev,
-- guile-2.2-dev,
-- php-dev, libphp-embed, libargon2-0-dev, libsodium-dev,
-- libxml2-dev,
-+ tcl8.5-dev,
-+ guile-2.0-dev,
- libcurl4-gnutls-dev,
-- libgcrypt20-dev,
-- libgnutls28-dev,
-+ libgcrypt11-dev,
-+ libgnutls-dev,
- zlib1g-dev
- Standards-Version: 4.6.0.1
- Homepage: https://weechat.org/
-@@ -45,7 +42,7 @@ Description: Fast, light and extensible chat client (metapackage)
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -74,7 +71,7 @@ Description: Fast, light and extensible chat client - console client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -104,7 +101,7 @@ Description: Fast, light and extensible chat client - headless client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -221,19 +218,6 @@ Description: Fast, light and extensible chat client - Guile plugin
- .
- This package provides the Guile scripting API plugin.
-
--Package: weechat-php
--Architecture: any
--Depends:
-- ${misc:Depends},
-- ${shlibs:Depends},
-- weechat-curses (= ${binary:Version}) | weechat-headless (= ${binary:Version}),
-- libphp-embed
--Description: Fast, light and extensible chat client - PHP plugin
-- WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
-- for many operating systems. Everything can be done with a keyboard.
-- .
-- This package provides the PHP scripting API plugin.
--
- Package: weechat-doc
- Section: doc
- Architecture: all
-diff --git a/debian-stable/rules b/debian-stable/rules
-index 16a5f9516..3edb65fa5 100755
---- a/debian-stable/rules
-+++ b/debian-stable/rules
-@@ -1,7 +1,5 @@
- #!/usr/bin/make -f
-
--export DEB_BUILD_MAINT_OPTIONS=hardening=+all
--
- BUILDDIR = builddir
-
- $(BUILDDIR)/Makefile:
-diff --git a/debian-stable/weechat-php.dirs b/debian-stable/weechat-php.dirs
-deleted file mode 100644
-index 68457717b..000000000
---- a/debian-stable/weechat-php.dirs
-+++ /dev/null
-@@ -1 +0,0 @@
--usr/lib
-diff --git a/debian-stable/weechat-php.install b/debian-stable/weechat-php.install
-deleted file mode 100644
-index 0a1b73563..000000000
---- a/debian-stable/weechat-php.install
-+++ /dev/null
-@@ -1 +0,0 @@
--usr/lib/*/weechat/plugins/php.so
diff --git a/tools/debian/patches/weechat_ubuntu_artful.patch b/tools/debian/patches/weechat_ubuntu_artful.patch
deleted file mode 120000
index ab23b0230..000000000
--- a/tools/debian/patches/weechat_ubuntu_artful.patch
+++ /dev/null
@@ -1 +0,0 @@
-weechat_debian_stretch.patch \ No newline at end of file
diff --git a/tools/debian/patches/weechat_ubuntu_bionic.patch b/tools/debian/patches/weechat_ubuntu_bionic.patch
index 6e83bab00..c1a9f6d57 120000..100644
--- a/tools/debian/patches/weechat_ubuntu_bionic.patch
+++ b/tools/debian/patches/weechat_ubuntu_bionic.patch
@@ -1 +1,40 @@
-weechat_ubuntu_disco.patch \ No newline at end of file
+diff --git a/debian-devel/compat b/debian-devel/compat
+index 48082f72f..b4de39476 100644
+--- a/debian-devel/compat
++++ b/debian-devel/compat
+@@ -1 +1 @@
+-12
++11
+diff --git a/debian-devel/control b/debian-devel/control
+index a6cc3c91c..d078d35b7 100644
+--- a/debian-devel/control
++++ b/debian-devel/control
+@@ -4,7 +4,7 @@ Priority: optional
+ Maintainer: Sébastien Helleu <flashcode@flashtux.org>
+ Build-Depends:
+ asciidoctor (>= 1.5.4),
+- debhelper (>= 12),
++ debhelper (>= 11),
+ cmake, pkg-config,
+ libncursesw5-dev,
+ gem2deb,
+diff --git a/debian-stable/compat b/debian-stable/compat
+index 48082f72f..b4de39476 100644
+--- a/debian-stable/compat
++++ b/debian-stable/compat
+@@ -1 +1 @@
+-12
++11
+diff --git a/debian-stable/control b/debian-stable/control
+index 1b0a27009..7880ce7bd 100644
+--- a/debian-stable/control
++++ b/debian-stable/control
+@@ -4,7 +4,7 @@ Priority: optional
+ Maintainer: Emmanuel Bouthenot <kolter@debian.org>
+ Build-Depends:
+ asciidoctor (>= 1.5.4),
+- debhelper (>= 12),
++ debhelper (>= 11),
+ cmake, pkg-config,
+ libncursesw5-dev,
+ gem2deb,
diff --git a/tools/debian/patches/weechat_ubuntu_cosmic.patch b/tools/debian/patches/weechat_ubuntu_cosmic.patch
deleted file mode 120000
index 6e83bab00..000000000
--- a/tools/debian/patches/weechat_ubuntu_cosmic.patch
+++ /dev/null
@@ -1 +0,0 @@
-weechat_ubuntu_disco.patch \ No newline at end of file
diff --git a/tools/debian/patches/weechat_ubuntu_disco.patch b/tools/debian/patches/weechat_ubuntu_disco.patch
deleted file mode 100644
index c1a9f6d57..000000000
--- a/tools/debian/patches/weechat_ubuntu_disco.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff --git a/debian-devel/compat b/debian-devel/compat
-index 48082f72f..b4de39476 100644
---- a/debian-devel/compat
-+++ b/debian-devel/compat
-@@ -1 +1 @@
--12
-+11
-diff --git a/debian-devel/control b/debian-devel/control
-index a6cc3c91c..d078d35b7 100644
---- a/debian-devel/control
-+++ b/debian-devel/control
-@@ -4,7 +4,7 @@ Priority: optional
- Maintainer: Sébastien Helleu <flashcode@flashtux.org>
- Build-Depends:
- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 11),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
-diff --git a/debian-stable/compat b/debian-stable/compat
-index 48082f72f..b4de39476 100644
---- a/debian-stable/compat
-+++ b/debian-stable/compat
-@@ -1 +1 @@
--12
-+11
-diff --git a/debian-stable/control b/debian-stable/control
-index 1b0a27009..7880ce7bd 100644
---- a/debian-stable/control
-+++ b/debian-stable/control
-@@ -4,7 +4,7 @@ Priority: optional
- Maintainer: Emmanuel Bouthenot <kolter@debian.org>
- Build-Depends:
- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 11),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
diff --git a/tools/debian/patches/weechat_ubuntu_trusty.patch b/tools/debian/patches/weechat_ubuntu_trusty.patch
deleted file mode 100644
index 505146a9d..000000000
--- a/tools/debian/patches/weechat_ubuntu_trusty.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-diff --git a/debian-devel/compat b/debian-devel/compat
-index 48082f72f..ec635144f 100644
---- a/debian-devel/compat
-+++ b/debian-devel/compat
-@@ -1 +1 @@
--12
-+9
-diff --git a/debian-devel/control b/debian-devel/control
-index bf94a36f1..566d71f09 100644
---- a/debian-devel/control
-+++ b/debian-devel/control
-@@ -3,8 +3,7 @@ Section: net
- Priority: optional
- Maintainer: Sébastien Helleu <flashcode@flashtux.org>
- Build-Depends:
-- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 9),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
-@@ -13,12 +12,10 @@ Build-Depends:
- libaspell-dev,
- liblua5.3-dev,
- tcl8.6-dev,
-- guile-2.2-dev,
-- php-dev, libphp-embed, libargon2-0-dev, libsodium-dev,
-- libxml2-dev,
-+ guile-2.0-dev,
- libcurl4-gnutls-dev,
-- libgcrypt20-dev,
-- libgnutls28-dev,
-+ libgcrypt11-dev,
-+ libgnutls-dev,
- zlib1g-dev
- Standards-Version: 4.6.0.1
- Homepage: https://weechat.org/
-@@ -46,7 +43,7 @@ Description: Fast, light and extensible chat client (metapackage)
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -76,7 +73,7 @@ Description: Fast, light and extensible chat client - console client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -107,7 +104,7 @@ Description: Fast, light and extensible chat client - headless client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -232,20 +229,6 @@ Description: Fast, light and extensible chat client - Guile plugin
- .
- This package provides the Guile scripting API plugin.
-
--Package: weechat-devel-php
--Architecture: any
--Depends:
-- ${misc:Depends},
-- ${shlibs:Depends},
-- weechat-devel-curses (= ${binary:Version}) | weechat-devel-headless (= ${binary:Version}),
-- libphp-embed
--Conflicts: weechat-php
--Description: Fast, light and extensible chat client - PHP plugin
-- WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
-- for many operating systems. Everything can be done with a keyboard.
-- .
-- This package provides the PHP scripting API plugin.
--
- Package: weechat-devel-doc
- Section: doc
- Architecture: all
-diff --git a/debian-devel/weechat-devel-php.dirs b/debian-devel/weechat-devel-php.dirs
-deleted file mode 120000
-index e4853a588..000000000
---- a/debian-devel/weechat-devel-php.dirs
-+++ /dev/null
-@@ -1 +0,0 @@
--../debian-stable/weechat-php.dirs
-\ No newline at end of file
-diff --git a/debian-devel/weechat-devel-php.install b/debian-devel/weechat-devel-php.install
-deleted file mode 120000
-index e358b515a..000000000
---- a/debian-devel/weechat-devel-php.install
-+++ /dev/null
-@@ -1 +0,0 @@
--../debian-stable/weechat-php.install
-\ No newline at end of file
-diff --git a/debian-stable/compat b/debian-stable/compat
-index 48082f72f..ec635144f 100644
---- a/debian-stable/compat
-+++ b/debian-stable/compat
-@@ -1 +1 @@
--12
-+9
-diff --git a/debian-stable/control b/debian-stable/control
-index ccf81cac8..b11b9b64e 100644
---- a/debian-stable/control
-+++ b/debian-stable/control
-@@ -3,8 +3,7 @@ Section: net
- Priority: optional
- Maintainer: Emmanuel Bouthenot <kolter@debian.org>
- Build-Depends:
-- asciidoctor (>= 1.5.4),
-- debhelper (>= 12),
-+ debhelper (>= 9),
- cmake, pkg-config,
- libncursesw5-dev,
- gem2deb,
-@@ -13,12 +12,10 @@ Build-Depends:
- libaspell-dev,
- liblua5.3-dev,
- tcl8.6-dev,
-- guile-2.2-dev,
-- php-dev, libphp-embed, libargon2-0-dev, libsodium-dev,
-- libxml2-dev,
-+ guile-2.0-dev,
- libcurl4-gnutls-dev,
-- libgcrypt20-dev,
-- libgnutls28-dev,
-+ libgcrypt11-dev,
-+ libgnutls-dev,
- zlib1g-dev
- Standards-Version: 4.6.0.1
- Homepage: https://weechat.org/
-@@ -45,7 +42,7 @@ Description: Fast, light and extensible chat client (metapackage)
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -74,7 +71,7 @@ Description: Fast, light and extensible chat client - console client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -104,7 +101,7 @@ Description: Fast, light and extensible chat client - headless client
- - 256 colors support
- - incremental text search
- - dynamic filtering of buffer content
-- - Perl, Python, Ruby, Lua, Tcl, Scheme and PHP scripting
-+ - Perl, Python, Ruby, Lua, Tcl and Scheme scripting
- - script manager
- - spell checking
- - highly customizable and extensible
-@@ -221,19 +218,6 @@ Description: Fast, light and extensible chat client - Guile plugin
- .
- This package provides the Guile scripting API plugin.
-
--Package: weechat-php
--Architecture: any
--Depends:
-- ${misc:Depends},
-- ${shlibs:Depends},
-- weechat-curses (= ${binary:Version}) | weechat-headless (= ${binary:Version}),
-- libphp-embed
--Description: Fast, light and extensible chat client - PHP plugin
-- WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
-- for many operating systems. Everything can be done with a keyboard.
-- .
-- This package provides the PHP scripting API plugin.
--
- Package: weechat-doc
- Section: doc
- Architecture: all
-diff --git a/debian-stable/weechat-php.dirs b/debian-stable/weechat-php.dirs
-deleted file mode 100644
-index 68457717b..000000000
---- a/debian-stable/weechat-php.dirs
-+++ /dev/null
-@@ -1 +0,0 @@
--usr/lib
-diff --git a/debian-stable/weechat-php.install b/debian-stable/weechat-php.install
-deleted file mode 100644
-index 0a1b73563..000000000
---- a/debian-stable/weechat-php.install
-+++ /dev/null
-@@ -1 +0,0 @@
--usr/lib/*/weechat/plugins/php.so
diff --git a/weechat.cygport.in b/weechat.cygport.in
index 27f5457b2..b39674321 100644
--- a/weechat.cygport.in
+++ b/weechat.cygport.in
@@ -53,7 +53,8 @@ SRC_URI="https://weechat.org/files/src/weechat-${VERSION}.tar.bz2"
# Build dependencies only
DEPEND="cmake gettext gettext-devel libgnutls-devel libaspell-devel \
libcurl-devel libgcrypt-devel libncurses-devel lua perl pkg-config \
-python3-devel ruby tcl-devel libguile2.2-devel php-devel zlib-devel"
+python3-devel ruby tcl-devel libguile2.2-devel php-devel libzstd-devel \
+zlib-devel"
#
# CMake compilation of WeeChat: