<?xml version="1.0" encoding="utf-8"?>
<!--RSS generated by Flaimo.com RSS Builder [2026-06-15 14:46:43]-->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"><channel><docs>https://bugs.unrealircd.org/</docs><link>https://bugs.unrealircd.org/</link><description><![CDATA[UnrealIRCd Bug Tracker - Issues (all-but-resolved)]]></description><title>UnrealIRCd Bug Tracker - Issues (all-but-resolved)</title><image><title>UnrealIRCd Bug Tracker - Issues (all-but-resolved)</title><url>https://bugs.unrealircd.org/</url><link>https://bugs.unrealircd.org/</link><description><![CDATA[UnrealIRCd Bug Tracker - Issues (all-but-resolved)]]></description></image><language>en</language><category>All Projects</category><ttl>10</ttl><dc:language>en</dc:language><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><item><title>0006579: usermodes/privdeaf</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6579</link><description><![CDATA[It seems logical that usermodes/privdeaf should ignore TAGMSG otherwise users receive the &quot;User does not accept private messages&quot; notice multiple times before they've even sent the message that should trigger it.]]></description><category></category><pubDate>Fri, 05 Jun 2026 18:14:40 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6579</guid><comments>https://bugs.unrealircd.org/view.php?id=6579#bugnotes</comments></item><item><title>0006612: Implement extbans support in the SILENCE list</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6612</link><description><![CDATA[The feature request is to extend the SILENCE list to supporting extbans as well, in the same fashion as the channel b/E/I lists. Currently the SILENCE list only supports the format &lt;a href=&quot;mailto:nick!user@host&quot;&gt;nick!user@host&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It could be convenient for the user to be able to use extbans in the SILENCE list also, such as: ~account, ~asn, ~country, ~realname, ~security-group, ~certfp and ~text. Maybe ~time also in case it is possible to manage temporary items in the SILENCE list.&lt;br /&gt;
The other extbans might not be relevant for the SILENCE list.&lt;br /&gt;
&lt;br /&gt;
This would also opens the possibility of remotely managing the SILENCE list through the services and the use of SVSSILENCE.&lt;br /&gt;
&lt;br /&gt;
Once implemented the usage could be similar (and a bit different due to the SILENCE syntax) to the channels: SILENCE +~realname:qwerty, SILENCE -~account:some-account&lt;br /&gt;
&lt;br /&gt;
SILENCE list could look like:&lt;br /&gt;
-&gt; server. SILENCE&lt;br /&gt;
&lt;- :server. 271 Nick &lt;a href=&quot;mailto:*!user4@host4&quot;&gt;*!user4@host4&lt;/a&gt;&lt;br /&gt;
&lt;- :server. 271 Nick nick3!*@*&lt;br /&gt;
&lt;- :server. 271 Nick &lt;a href=&quot;mailto:nick2!user2@host2&quot;&gt;nick2!user2@host2&lt;/a&gt;&lt;br /&gt;
&lt;- :server. 271 Nick ~asn:65536&lt;br /&gt;
&lt;- :server. 271 Nick ~security-group:some-insecure-group&lt;br /&gt;
&lt;- :server. 271 Nick ~text:a_spammy_spam&lt;br /&gt;
&lt;- :server. 272 Nick :End of Silence List]]></description><category>ircd</category><pubDate>Sat, 14 Feb 2026 20:05:16 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6612</guid><comments>https://bugs.unrealircd.org/view.php?id=6612#bugnotes</comments></item><item><title>0006604: ~msgbypass:censor does not work on ~text:censor bans</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6604</link><description><![CDATA[A ~msgbypass:censor exemption does not work on ~text:censor bans, as it may be expected.]]></description><category>ircd</category><pubDate>Thu, 15 Jan 2026 08:21:43 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6604</guid><comments>https://bugs.unrealircd.org/view.php?id=6604#bugnotes</comments></item><item><title>0006603: Granular command control for SHUN (Stealth/Shadow-Shun support)</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6603</link><description><![CDATA[Hi,&lt;br /&gt;
&lt;br /&gt;
I’m reaching out to request an enhancement to the current SHUN implementation. After some discussion in #unreal-support and comparing notes with other IRCds, it seems that UnrealIRCd is currently missing a critical tactical feature for modern network moderation: Shadow &quot;Shunning&quot;.&lt;br /&gt;
The Problem: &quot;The Ban-Evader Feedback Loop&quot; - Currently, an UnrealIRCd shun is very &quot;loud.&quot; If a shunned user tries to JOIN a channel, the command is blocked.&lt;br /&gt;
&lt;br /&gt;
For persistent ban-jumpers and trolls, this is an immediate signal that their current identity (IP/Fingerprint) is burned. Their reaction is predictable:&lt;br /&gt;
&lt;br /&gt;
- They notice they can't join.&lt;br /&gt;
- They immediately disconnect.&lt;br /&gt;
- They change their IP (VPN/Proxy/Tor) and return within seconds.&lt;br /&gt;
- The current system essentially &quot;trains&quot; the abuser to rotate their IP faster.&lt;br /&gt;
&lt;br /&gt;
The most effective way to handle these users is to let them think their connection is working, while silently neutralizing their impact. We want them to JOIN channels successfully (so they stay on their current IP) and PART/QUIT normally and type messages that are silently dropped (the &quot;void&quot;).&lt;br /&gt;
&lt;br /&gt;
As long as the user believes they are still &quot;in,&quot; they won't switch their IP. This keeps them contained and makes the moderator's life much easier.&lt;br /&gt;
This isn't a new concept; InspIRCd has had this solved for years via their shun module configuration. They use an enabledcommands directive:&lt;br /&gt;
&lt;br /&gt;
enabledcommands=&quot;ADMIN OPER PING PONG QUIT JOIN PART&quot;&lt;br /&gt;
notifyuser=&quot;no&quot;&lt;br /&gt;
&lt;br /&gt;
This allows admins to decide exactly how &quot;invisible&quot; the shun should be.&lt;br /&gt;
&lt;br /&gt;
It would be ideal to have a similar granular control in the set block or a specific shun block:&lt;br /&gt;
&lt;br /&gt;
set {&lt;br /&gt;
    options {&lt;br /&gt;
        shun-allowed-commands { &quot;JOIN&quot;; &quot;PART&quot;; &quot;QUIT&quot;; &quot;PING&quot;; &quot;PONG&quot;; };&lt;br /&gt;
        shun-notify-user no;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Addressing Concerns (because it was mentioned on #unreal): During the discussion, it was mentioned that allowing JOIN could lead to join-flooding. However, UnrealIRCd already has excellent anti-flood and rate-limiting modules. Join-flooding should be (and already is) handled by those layers, rather than being a hardcoded side-effect of a shun. And, of course, backward Compatibility: The default could remain as it is now, so no existing setups break.&lt;br /&gt;
&lt;br /&gt;
By making shuns configurable, we gain a powerful psychological tool against trolls. Instead of a &quot;Hard Wall&quot; that triggers an IP-switch, we get a &quot;Silent Void&quot; that keeps the abuser busy and localized.]]></description><category>ircd</category><pubDate>Sun, 11 Jan 2026 18:34:42 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6603</guid><comments>https://bugs.unrealircd.org/view.php?id=6603#bugnotes</comments></item><item><title>0006511: accidental permanent gline even though default-bantime is 7d</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6511</link><description><![CDATA[I noticed that a colleague from IRCop sometimes bans users with the following command:&lt;br /&gt;
/gline &lt;a href=&quot;mailto:*@2a02&quot;&gt;*@2a02&lt;/a&gt;:1808:* Dehors !&lt;br /&gt;
but forgets to add the &quot;:&quot; before the reason. As a result, the ban duration is set to 'permanent.' He doesn’t correct it. Is there a way to block this, prevent the permanent bans, or make the permanent ban expire after 7 days? Or perhaps in UnrealIRCd, is there a place where I can change the default '0' or 'permanent' to something like '7d' ?]]></description><category>ircd</category><pubDate>Wed, 17 Dec 2025 17:30:56 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6511</guid><comments>https://bugs.unrealircd.org/view.php?id=6511#bugnotes</comments></item><item><title>0006592: IRCD warning about the wrong TLS cert expiring, despite what is configured in use</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6592</link><description><![CDATA[Since upgrading my servers to 6.2.1, they have been warning at startup and on occasion that the configured cert has expired years ago, when it has not.&lt;br /&gt;
&lt;br /&gt;
The occasional warning, from my weechat server buffer:&lt;br /&gt;
&lt;br /&gt;
11:48:17 -- [hostname]: tls.TLS_CERT_EXPIRING [warn] Warning: TLS certificate '/etc/unrealircd/fullchain.pem': certificate expired 492d2h54m19s ago&lt;br /&gt;
&lt;br /&gt;
Ditto if I unrealircdctl rehash:&lt;br /&gt;
&lt;br /&gt;
[warn] Warning: TLS certificate '/etc/unrealircd/fullchain.pem': certificate expired 492d3h9m19s ago&lt;br /&gt;
&lt;br /&gt;
When I connect to said server, the client connection is fine:&lt;br /&gt;
&lt;br /&gt;
14:56:19 -- gnutls: receiving 2 certificates&lt;br /&gt;
14:56:19 --  - certificate[1] info:&lt;br /&gt;
14:56:19 --    - subject `CN=*.[domainname]', blah blah blah, activated `2025-11-11 18:10:19 UTC', expires `2026-02-09 18:10:18 UTC'&lt;br /&gt;
14:56:19 --  - certificate[2] info:&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
And if I check the cert directly:&lt;br /&gt;
&lt;br /&gt;
bss@[hostname] ~ % sudo openssl x509 -enddate -noout -in /etc/unrealircd/fullchain.pem&lt;br /&gt;
notAfter=Feb  9 18:10:18 2026 GMT&lt;br /&gt;
&lt;br /&gt;
But while checking, I realized I had the default certs as cruft in my config directory, and what do you know:&lt;br /&gt;
&lt;br /&gt;
bss@[hostname] ~ % sudo openssl x509 -enddate -noout -in /etc/unrealircd/tls/server.cert.pem&lt;br /&gt;
notAfter=Jul 10 14:53:58 2024 GMT&lt;br /&gt;
&lt;br /&gt;
bss@[hostname] ~ % python&lt;br /&gt;
Python 3.13.5 (main, Sep 21 2025, 23:32:29) [GCC 14.3.1 20250801] on linux&lt;br /&gt;
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.&lt;br /&gt;
&gt;&gt;&gt; import datetime&lt;br /&gt;
&gt;&gt;&gt; datetime.datetime.now() - datetime.timedelta(days=492)&lt;br /&gt;
datetime.datetime(2024, 7, 10, 12, 15, 59, 263964)&lt;br /&gt;
&gt;&gt;&gt;&lt;br /&gt;
&lt;br /&gt;
bss@[hostname] ~ % sudo grep server.cert.pem /etc/unrealircd/unrealircd.conf&lt;br /&gt;
bss@[hostname] ~ % &lt;br /&gt;
&lt;br /&gt;
Replacing server.cert.{pem,key} with symlinks to the files in /etc/unrealircd/ removed the error. It seems as if the expiry checker was picking up the &quot;default&quot; files somehow, which leads me to my next question --- at first I just nuked the server.cert.{pem,key} files in the directory, but then rehash complained that the default certificate was missing. Did I miss a step somewhere, or is there no way to point the config away from those files?]]></description><category>ircd</category><pubDate>Sat, 15 Nov 2025 17:43:24 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6592</guid><comments>https://bugs.unrealircd.org/view.php?id=6592#bugnotes</comments></item><item><title>0006422: query security-groups</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6422</link><description><![CDATA[I would like to be able to query&lt;br /&gt;
* which security-groups there are&lt;br /&gt;
* members of a given security-group.&lt;br /&gt;
&lt;br /&gt;
The former could possibly best be done with /STATS?&lt;br /&gt;
The latter would possibly best be done with a /WHO flag?]]></description><category>ircd</category><pubDate>Fri, 31 Oct 2025 13:35:51 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6422</guid><comments>https://bugs.unrealircd.org/view.php?id=6422#bugnotes</comments></item><item><title>0006431: Underscore and match_simple()</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6431</link><description><![CDATA[As mentioned in &lt;a href=&quot;https://forums.unrealircd.org/viewtopic.php?t=9370&quot; rel=&quot;noopener&quot;&gt;https://forums.unrealircd.org/viewtopic.php?t=9370&lt;/a&gt; the match_simple() function (and thus in spamfilter type simple too) seems to treat underscore as meaning: underscore or space.&lt;br /&gt;
&lt;br /&gt;
It was intentional for things like +b ~realname:*some_bad_person* where it would match &quot;Some bad person&quot; and I think it was only meant to be like that in match_esc() but I'm not entirely sure. This was done 15+ years ago and the behavior has been like that since then.&lt;br /&gt;
&lt;br /&gt;
match_simple() is called from 110+ places (and even more indirect), so.. needs some careful consideration if we want to change that back to _ meaning really _.&lt;br /&gt;
&lt;br /&gt;
I don't want to do this post-rc1 of 6.1.7 and.. yeah.. to be honest not sure if i will change this in 6.1.8 either either, but it is good to have this issue filed to look at it some day.]]></description><category>ircd</category><pubDate>Sun, 14 Sep 2025 18:52:56 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6431</guid><comments>https://bugs.unrealircd.org/view.php?id=6431#bugnotes</comments></item><item><title>0005304: Allow different options/features for different IP addresses or ports of the same ircd</title><author></author><link>https://bugs.unrealircd.org/view.php?id=5304</link><description><![CDATA[Currently we have to run multiple instances of the ircd to achieve that.&lt;br /&gt;
One possible solution would be to allow &quot;set&quot; options in &quot;class&quot; blocks, and allow selecting ports in &quot;allow&quot; blocks.&lt;br /&gt;
Example (i have added &quot;no&quot; prefix to disable the following option in case it's enabled in the global set block):&lt;br /&gt;
&lt;br /&gt;
class normal {&lt;br /&gt;
 pingfreq 100;&lt;br /&gt;
 maxclients 1000;&lt;br /&gt;
 sendq 100k;&lt;br /&gt;
 recvq 4000;&lt;br /&gt;
 set {&lt;br /&gt;
  prefix-quit &quot;Quit&quot;;&lt;br /&gt;
  options {&lt;br /&gt;
   no websocket;&lt;br /&gt;
   identd-check;&lt;br /&gt;
   show-connect-info;&lt;br /&gt;
  };  &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class websocket {&lt;br /&gt;
 pingfreq 100;&lt;br /&gt;
 maxclients 1000;&lt;br /&gt;
 sendq 100k;&lt;br /&gt;
 recvq 4000;&lt;br /&gt;
 set {&lt;br /&gt;
  prefix-quit &quot;Web client exited&quot;;&lt;br /&gt;
  options {&lt;br /&gt;
   websocket;&lt;br /&gt;
   no identd-check;&lt;br /&gt;
   no show-connect-info;&lt;br /&gt;
  };  &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
allow {&lt;br /&gt;
 ip *@*;&lt;br /&gt;
 // all ports except those &quot;caught&quot; by allow blocks below&lt;br /&gt;
 class normal;&lt;br /&gt;
 maxperip 10;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
allow {&lt;br /&gt;
 ip *@*;&lt;br /&gt;
 port 8080;&lt;br /&gt;
 class websocket;&lt;br /&gt;
 maxperip 2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
listen {&lt;br /&gt;
 ip *;&lt;br /&gt;
 port 6667-6669;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
listen {&lt;br /&gt;
 ip *;&lt;br /&gt;
 port 8080;&lt;br /&gt;
 options { ssl; };&lt;br /&gt;
};]]></description><category>ircd</category><pubDate>Sun, 14 Sep 2025 18:03:27 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=5304</guid><comments>https://bugs.unrealircd.org/view.php?id=5304#bugnotes</comments></item><item><title>0006567: server_ban_exception.get return strange response!</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6567</link><description><![CDATA[Hi,&lt;br /&gt;
Case 1:&lt;br /&gt;
When trying getting this server_ban_exception (*@::1) i have this error.&lt;br /&gt;
Error: For technical reasons you cannot start the host with a ':', sorry&lt;br /&gt;
&lt;br /&gt;
Case 2:&lt;br /&gt;
There is also something strange. When i try to get information about the name  (*) i have also this error&lt;br /&gt;
&quot;Error: Nickname not found&quot;&lt;br /&gt;
&lt;br /&gt;
Thanks.]]></description><category>json-rpc</category><pubDate>Mon, 25 Aug 2025 15:57:37 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6567</guid><comments>https://bugs.unrealircd.org/view.php?id=6567#bugnotes</comments></item><item><title>0006512: CHATHISTORY TARGETS has incorrect selection semantics</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6512</link><description><![CDATA[`CHATHISTORY TARGETS timestamp=A timestamp=B 100` has the following intended semantics: it should return targets whose *latest* message is between those two timestamps. This allows the timestamps to be used for pagination of the response.&lt;br /&gt;
&lt;br /&gt;
Unreal's implementation instead returns targets that have *any* message between those two timestamps. This impedes use of the timestamps to page backwards in time.&lt;br /&gt;
&lt;br /&gt;
Thanks for your work on Unreal!]]></description><category>ircd</category><pubDate>Wed, 11 Jun 2025 07:52:25 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6512</guid><comments>https://bugs.unrealircd.org/view.php?id=6512#bugnotes</comments></item><item><title>0006501: CHATHISTORY BETWEEN treats both directions the same way</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6501</link><description><![CDATA[I have been working on an implementation of a client requesting CHATHISTORY and the use case I'm focused on is getting slices via CHATHISTORY BETWEEN. Testing on my network has led me to the conclusion that CHATHISTORY BETWEEN behavior does not match the spec, and I believe I understand the reason why in the code.&lt;br /&gt;
&lt;br /&gt;
Take for instance this situation: assume the history is 100 messages long, msgids 1 (oldest) through 100 (newest). If I request BETWEEN msgid=1 msgid=100 5 (never mind for the moment how I know 100 is the newest, in practice I use a timestamp). I should get 2,3,4,5,6 as I started at the first message selector and went forward in time.  If I request BETWEEN msgid=100 msgid=1 5, I should get 99,98,97,96,95 (from first selector but backwards in time).&lt;br /&gt;
&lt;br /&gt;
(I asked in #ircv3 and this was agreed to be the intended behavior --- &quot;With respect to the limit, the returned messages MUST be counted _starting from and excluding the first message selector_, while finishing on and excluding the second. This may be forwards or backwards in time.&quot;, emphasis mine.)&lt;br /&gt;
&lt;br /&gt;
However, on my ircd (6.1.9), in my testing I get the same set, 2,3,4,5,6, in either request.&lt;br /&gt;
&lt;br /&gt;
Digging into the code I think I understand why. hbm_return_between_figure_out_direction is a bit hard to understand, but assuming it works correctly, the implementation of hbm_return_between is incorrect for the backwards case. How the code seems to work:&lt;br /&gt;
&lt;br /&gt;
* BETWEEN msgid=1 msgid=100&lt;br /&gt;
    * direction == forwards&lt;br /&gt;
        * return hbm_return_after() w/ timestamp_a null, timestamp_b null, msgid_a = 1, msgid_b = 100, limit = 5&lt;br /&gt;
* BETWEEN msgid=100 msgid=1&lt;br /&gt;
    * direction == backwards&lt;br /&gt;
        * create new filter&lt;br /&gt;
            * swap timestamp_a and timestamp_b (null and null, no effect)&lt;br /&gt;
            * swap msgid_a and msgid_b (parameter msgid=1 becomes msgid_a, parameter msgid=100 becomes msgid_b)&lt;br /&gt;
            * return hbm_return_after() w/ timestamp_a null, timestamp_b null, msgid_a = 1, msgid_b = 100, limit = 5&lt;br /&gt;
&lt;br /&gt;
Hence the identical results for both.&lt;br /&gt;
&lt;br /&gt;
I may still dig deeper to understand if there's a quick fix in how the library methods work, but I believe my reading of the defect is correct at least.]]></description><category>ircd</category><pubDate>Wed, 09 Apr 2025 14:22:45 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6501</guid><comments>https://bugs.unrealircd.org/view.php?id=6501#bugnotes</comments></item><item><title>0006499: Some spamfilter options are currently config-file-only and not in SPAMFILTER command</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6499</link><description><![CDATA[The following spamfilter features are currently only available in the spamfilter { } block but not in the SPAMFILTER command:&lt;br /&gt;
* spamfilter::rule (on its own or as a filter)&lt;br /&gt;
* spamfilter::input-conversion&lt;br /&gt;
* combining multiple spamfilter::action's&lt;br /&gt;
* spamfilter::action: set, report, stop. With the first two also having the thing that they accept parameters (mandatory for set, optional for report)&lt;br /&gt;
&lt;br /&gt;
Obviously some day we would want this to be available in the SPAMFILTER command as well. And in RPC.]]></description><category>ircd</category><pubDate>Tue, 18 Feb 2025 19:03:34 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6499</guid><comments>https://bugs.unrealircd.org/view.php?id=6499#bugnotes</comments></item><item><title>0006496: Mask item and destination</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6496</link><description><![CDATA[Earlier we had the request for set::restrict-commands on channel-message to exempt a target channel. So mask item / security group item &quot;destination&quot; was added in commit e03a5dfd5ffe47fe186165b8b94c7cbc935a10bb (shipped in UnrealIRCd 6.1.7).&lt;br /&gt;
&lt;br /&gt;
Recently Valware suggested allowing something similar: set::restrict-commands private-message but with an exemption to sending to ircops. Of course, you could add something like destination-ircop or something but I think we first need to take a step back and consider if we need something bigger here.&lt;br /&gt;
&lt;br /&gt;
Like, maybe we want all the security group checks be able to run on the destination user? Like destination ip/mask/identified/certfp/asn... ? Is that useful or is that overkill?&lt;br /&gt;
So...&lt;br /&gt;
destination-ip 1.2.3.4;&lt;br /&gt;
destination-tls yes;&lt;br /&gt;
etc... I dunno.&lt;br /&gt;
&lt;br /&gt;
We could also do some extra nesting, like:&lt;br /&gt;
destination { ip 1.2.3.4; }&lt;br /&gt;
destination { rule &quot;has_user_mode('o')&quot;; }&lt;br /&gt;
destination {&lt;br /&gt;
    ip 1.2.3.4;&lt;br /&gt;
    tls yes;&lt;br /&gt;
}&lt;br /&gt;
etc..&lt;br /&gt;
&lt;br /&gt;
I think I like the extra nesting better and it makes it more clear if you have multiple rules there that it works with the regular ANY (OR) criteria.&lt;br /&gt;
&lt;br /&gt;
For crules another idea is to clone all functions and prefix the function with &quot;destination_&quot;, so you have like destination_has_user_mode('o'). I think that would make sense because the alternative would be to force the admin (if they would like to select on both source and destination properties) to have like two crules, one in ::rule and the other in ::destination::rule which seems weird and not so flexible.&lt;br /&gt;
&lt;br /&gt;
We could also start with the more simple part, the nested destination thingy, first, and then later do the improved crule stuff.]]></description><category>ircd</category><pubDate>Wed, 12 Feb 2025 15:53:35 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6496</guid><comments>https://bugs.unrealircd.org/view.php?id=6496#bugnotes</comments></item><item><title>0005306: Support PROXY protocol used by TCP load balancers</title><author></author><link>https://bugs.unrealircd.org/view.php?id=5306</link><description><![CDATA[Many TCP load balancers support the PROXY protocol to pass along client IP information at the start of a connection.&lt;br /&gt;
UnrealIRCD should support for trusting the PROXY data and using the provided client IP for connection throttling and ident.&lt;br /&gt;
&lt;br /&gt;
Docs can be found here: &lt;a href=&quot;https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/&quot; rel=&quot;noopener,nofollow&quot;&gt;https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/&lt;/a&gt;]]></description><category>ircd</category><pubDate>Tue, 21 Jan 2025 11:28:05 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=5306</guid><comments>https://bugs.unrealircd.org/view.php?id=5306#bugnotes</comments></item><item><title>0006493: Allow message tag to access target information (eg channel)</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6493</link><description><![CDATA[This because some message tags may or should behave differently depending the channel.&lt;br /&gt;
&lt;br /&gt;
For example, a message tag to edit the message (and yes, i hate those, but this aside). Without knowing the channel it cannot know if +S/+c/+G are in effect and thus if some filtering would be needed.&lt;br /&gt;
&lt;br /&gt;
Regarding the current API limitations:&lt;br /&gt;
* The mtag-&gt;is_ok() happens too soon, before running the command, and a PRIVMSG or NOTICE can be directed to multiple targets anyway (with or without filtering)&lt;br /&gt;
* In HOOKTYPE_NEW_MESSAGE we don't pass any information about the target (eg channel) either&lt;br /&gt;
&lt;br /&gt;
I think, if anything, we could add some HOOKTYPE_NEW_MESSAGE_EX or something with the target or... some other hook.&lt;br /&gt;
&lt;br /&gt;
This popped up with the irccloud-tags module but was encountered before by Valware with draft/reply and... i think a third person too... just never made it to bugs.unrealircd.org (unless I am blind)]]></description><category>ircd</category><pubDate>Fri, 03 Jan 2025 16:32:49 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6493</guid><comments>https://bugs.unrealircd.org/view.php?id=6493#bugnotes</comments></item><item><title>0006491: channel privmsg / notice with prefix not sending correctly</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6491</link><description><![CDATA[when sending a channel notice, any prefix gives to +hoaq including voice]]></description><category>ircd</category><pubDate>Tue, 24 Dec 2024 22:15:53 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6491</guid><comments>https://bugs.unrealircd.org/view.php?id=6491#bugnotes</comments></item><item><title>0006486: UnrealIRCd Windows binaries have incorrect PE header when built from source</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6486</link><description><![CDATA[this only affects builds from source.&lt;br /&gt;
i am using a extension for the version tab but basically details tab also shows there's a issue as well.&lt;br /&gt;
CompanyName is none for some reason as well.&lt;br /&gt;
regression]]></description><category>ircd</category><pubDate>Fri, 06 Dec 2024 08:37:54 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6486</guid><comments>https://bugs.unrealircd.org/view.php?id=6486#bugnotes</comments></item><item><title>0006479: Extban to handle Anope's account ID</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6479</link><description><![CDATA[Recently, Anope added account identifiers on the 2.1 branch with the commit &lt;a href=&quot;https://github.com/anope/anope/commit/378ae21ac7e26b551cf79368264a93450370abca&quot; rel=&quot;noopener,nofollow&quot;&gt;https://github.com/anope/anope/commit/378ae21ac7e26b551cf79368264a93450370abca&lt;/a&gt; which is something very useful.&lt;br /&gt;
&lt;br /&gt;
Currently, if we use the extban ~account, it can be easily bypassed by doing `/ns set display &lt;other grouped nick&gt;`, which changes the account main nickname. On the other hand, account identifiers are kept the same, which means that a user needs to drop their nickname and register it again in order to change it.&lt;br /&gt;
&lt;br /&gt;
I suggest that we add the ~account-id (this is just a name suggestion) extban to be used with Anope's account identifiers.]]></description><category>ircd</category><pubDate>Tue, 29 Oct 2024 20:55:48 +0100</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6479</guid><comments>https://bugs.unrealircd.org/view.php?id=6479#bugnotes</comments></item><item><title>0005938: Some "About" buttons returning blank text box named "UnrealIRCd License".</title><author></author><link>https://bugs.unrealircd.org/view.php?id=5938</link><description><![CDATA[Using  version 5.2.0.2, downloaded from site.&lt;br /&gt;
&lt;br /&gt;
About -&gt; UnrealIRCd Team&lt;br /&gt;
About -&gt; Additional Credits&lt;br /&gt;
About-&gt; License&lt;br /&gt;
&lt;br /&gt;
All show a blank box called &quot;UnrealIRCd License&quot;]]></description><category>ircd</category><pubDate>Tue, 22 Oct 2024 18:29:24 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=5938</guid><comments>https://bugs.unrealircd.org/view.php?id=5938#bugnotes</comments></item><item><title>0006475: Information that would be useful in the Event TKL_ADD JSON</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6475</link><description><![CDATA[Hi&lt;br /&gt;
I’m showing a JSON log of this TKL_ADD to better explain&lt;br /&gt;
&lt;br /&gt;
Object&lt;br /&gt;
timestamp:&quot;2024-10-12T01:22:01.639Z&quot;&lt;br /&gt;
level:&quot;info&quot;&lt;br /&gt;
subsystem:&quot;tkl&quot;&lt;br /&gt;
event_id:&quot;TKL_ADD&quot;&lt;br /&gt;
log_source:&quot;irc.d.com&quot;&lt;br /&gt;
msg:&quot;Soft G-Line added: &lt;a href=&quot;mailto:'%*@92.xx&quot;&gt;'%*@92.xx&lt;/a&gt;' [reason: xxxx] [by: &lt;a href=&quot;mailto:Sysop!SysOp@admin.d.com&quot;&gt;Sysop!SysOp@admin.d.com&lt;/a&gt;] [duration: 1d]&quot;&lt;br /&gt;
tkl:Object&lt;br /&gt;
type:&quot;gline&quot;&lt;br /&gt;
type_string:&quot;Soft G-Line&quot;&lt;br /&gt;
set_by:&quot;&lt;a href=&quot;mailto:Sysop!SysOp@admin.d.com&quot;&gt;Sysop!SysOp@admin.d.com&lt;/a&gt;&quot;&lt;br /&gt;
set_at:&quot;2024-10-12T01:22:01.000Z&quot;&lt;br /&gt;
expire_at:&quot;2024-10-13T01:22:01.000Z&quot;&lt;br /&gt;
set_at_string:&quot;Sat Oct 12 01:22:01 2024 GMT&quot;&lt;br /&gt;
expire_at_string:&quot;Sun Oct 13 01:22:01 2024 GMT&quot;&lt;br /&gt;
duration_string:&quot;1d&quot;&lt;br /&gt;
set_at_delta:0&lt;br /&gt;
name:&quot;&lt;a href=&quot;mailto:%*@92.xxx&quot;&gt;%*@92.xxx&lt;/a&gt;&quot;&lt;br /&gt;
reason:&quot;xxx&quot;&lt;br /&gt;
&lt;br /&gt;
Would it be possible to create a new key that would add the list of nicknames of the users affected by a tkl  ?]]></description><category>json-rpc</category><pubDate>Sat, 12 Oct 2024 03:43:32 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6475</guid><comments>https://bugs.unrealircd.org/view.php?id=6475#bugnotes</comments></item><item><title>0006474: Support for "is_shunned()" in crules</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6474</link><description><![CDATA[It's not the first time I see someone asking for actions related to when a user is shunned.&lt;br /&gt;
&lt;br /&gt;
Recently the user Shems wanted to prevent users that are shunned from being affected by the TLD block.&lt;br /&gt;
&lt;br /&gt;
If we had something like &quot;is_shunned()&quot;, we could probably use something like:&lt;br /&gt;
&lt;pre&gt;
tld {
    mask {
        country CH;
        exclude-rule &quot;is_shunned()&quot;;
    }
    motd &quot;ircd.motd&quot;;
    rules &quot;ircd.rules&quot;;
    channel &quot;#Suis&quot;;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
This could be useful for other things, but this is one example]]></description><category>ircd</category><pubDate>Thu, 10 Oct 2024 09:35:12 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6474</guid><comments>https://bugs.unrealircd.org/view.php?id=6474#bugnotes</comments></item><item><title>0005290: U5: extban to prevent channel history</title><author></author><link>https://bugs.unrealircd.org/view.php?id=5290</link><description><![CDATA['i' suggested an extban to ban people from seeing channel history.&lt;br /&gt;
Similarly, if combined with +e, you could create a whitelist for channel history.&lt;br /&gt;
In all cases, +H will need to be set.]]></description><category>ircd</category><pubDate>Sun, 15 Sep 2024 19:10:57 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=5290</guid><comments>https://bugs.unrealircd.org/view.php?id=5290#bugnotes</comments></item><item><title>0006466: server.rehash over HTTP POST succeeds but gives empty response</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6466</link><description><![CDATA[Someone on IRCd mentioned that the server.rehash JSON-RPC API call over HTTPS POST closes the connection without a response. The same API call works well over UNIX sockets (tested) and to my knowledge also over Websockets (untested, so I may be wrong there).&lt;br /&gt;
&lt;br /&gt;
Rehashing is a complex task and the webserver module gets unloaded and loaded again, maybe something goes wrong there. I had to do various things to make this API call work in the first place.&lt;br /&gt;
&lt;br /&gt;
Must confess this has low priority for me and.. I think the closing without a response only happens for the successful case&quot; and not when &quot;rehash failed&quot;, so that way you can differentiate... but of course this bug should not be there... it should work regardless of the transport type.]]></description><category>json-rpc</category><pubDate>Sat, 07 Sep 2024 09:08:14 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6466</guid><comments>https://bugs.unrealircd.org/view.php?id=6466#bugnotes</comments></item><item><title>0006465: Extban ~partmsg doesn't filter quit messages, only part ones</title><author></author><link>https://bugs.unrealircd.org/view.php?id=6465</link><description><![CDATA[I've used extban `~partmsg` on a relayed/bridged channel to hide part/quit reasons to cut some info on the quit messages.&lt;br /&gt;
&lt;br /&gt;
While part reasons are correctly hidden/filtered, quit messages aren't]]></description><category>ircd</category><pubDate>Sat, 31 Aug 2024 16:31:10 +0200</pubDate><guid>https://bugs.unrealircd.org/view.php?id=6465</guid><comments>https://bugs.unrealircd.org/view.php?id=6465#bugnotes</comments></item></channel></rss>
