* https://codeberg.org/poezio/biboumi: (65 commits)
build: fix wrong constextpr preventing some compilers from building biboumi
database: various optimizations for SQLite and PostgreSQL
doc(admin): format verify_certificate documentation into a list
Fix RPM builds on Fedora Linux
Systemd service dir is /usr/lib/systemd/system
cmake: Explicitly search for Catch2 version 3
add CAP LS 302 support and max-lines support for draft/multiline messages
install files using GNUInstallDirs
change to direct /doc/
Fix link to documentation
fix multiline private messages
add archive_expires_after option
Fix documentation warnings
fix fedora package
add ctest support and remove absolute path from etc directory
Rename Ports to Unencrypted ports
build docker image from local files, not git clone
update some version strings
add default_persistence_allowed
add persist_user_denylist and persist_user_allowlist
...
RFC 2812 specifies in §1.3 that “Channels names are strings (beginning
with a '&', '#', '+' or '!' character) of length up to fifty (50)
characters.”
We previously only allowed the first two prefix characters, or any other
one if the server overrides the list with ISUPPORT.
This reverts commit 248e25c22f.
In preparation for the botan 3 update `IrcClient` must be made into a
`shared_ptr`, which will then allow us to pass a `shared_ptr` of
callbacks to `Botan::TLS::Client`
This has the following advantages:
- Works while all resources are offline (persistent channels)
- Helps with combating duplicate messages when sent to different
resources, resources going offline, carbon-copying etc. etc.
As a side effect, this also makes the MUC PMs not be MUC PMs and
always be emitted from the server-wide JID of the sending user.
Fixes#3313.
If the user sends a directed presence to an unjoined MUC without a <x/>
element, send a presence error back instead of attempting to join it
again, as this is almost never what the user wants.
Fixes#3415.
fix#3382
It still needs to be fixed properly by cleaning the way we send the messages
in all direction etc. And this is ugly because, with just one message, we do
a conversion in one direction, and then re-convert in the other
direction. But at least it works and users will be happy, even if I’m not
entirely satisfied with the code.
XEP-0410 demands that. This changes the error condition for all
pings to the room, even those which aren’t self-pings, if the
sender is not joined.
The conditions of XEP-0410 were based on observing existing
implementations.
This prevents the ping from round-tripping through IRC and
possibly a random other client of the user. Please see XEP-0410
for the rationale.
Fixes#3385.
Also simplify how we did the whole “limit + 1”
And fix one bad interpretation of the XEP for the case where the query has
no after or before restriction.
fix#3349
PLEASE backup your database before testing this commit, and report any
migration issue.
In postgresql, we use timestamp with timezone.
In sqlite3 we use REAL (the date is expressed as julianday)
This requires a migration of the muclogline_ table:
In postgresql it’s pretty simple, we convert all the integer into timestamps
With sqlite3, we actually rename the table, create the new one with the
correct type, then copy everything to the new table, with a conversion
function for the Date_ column, and then we delete the old table.
fix#3343