Skip to content

Commit b7851db

Browse files
committed
13.00: ava
1 parent b7022e3 commit b7851db

File tree

9 files changed

+72
-70
lines changed

9 files changed

+72
-70
lines changed

INDEV

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4028,3 +4028,7 @@ CHANGES:
40284028
fix bug that allowed zero for joins per second in join throttle.
40294029
misc. cleanup channel.pm.
40304030
misc. cleanup server.pm.
4031+
channel->id now returns the irc_lc()'d channel name.
4032+
fix bug in channel->send_all().
4033+
4034+
13. ava.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
12.92
1+
13.00

doc/history.md

Lines changed: 53 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ any event that occurs within juno. vulpia completed the relocation of JELP
129129
[an optional module](https://github.com/cooper/juno/tree/master/modules/JELP),
130130
opening the doors for additional linking protocols
131131
in the future. Additionally, it established
132-
[fantasy command](https://github.com/cooper/juno/blob/master/modules/Channel/Fantasy.module/Fantasy.pm)
132+
[fantasy command](doc/modules.md#channelfantasy)
133133
support; the
134134
[Reload](https://github.com/cooper/juno/tree/master/modules/Reload.module)
135135
module, which makes it possible to upgrade the IRCd to the latest version
@@ -141,10 +141,10 @@ module, helping users to better manage nicknames and channels.
141141
Named after the adored [Kyle](http://mac-mini.org), kylie introduced
142142
several previously-missing core components including
143143
[ident](http://en.wikipedia.org/wiki/Ident_protocol) support and channel modes:
144-
[limit](https://github.com/cooper/juno/blob/master/modules/Channel/Limit.module/Limit.pm),
145-
[secret](https://github.com/cooper/juno/blob/master/modules/Channel/Secret.module/Secret.pm),
144+
[limit](doc/modules.md#channellimit),
145+
[secret](doc/modules.md#channelsecret),
146146
and
147-
[key](https://github.com/cooper/juno/blob/master/modules/Channel/Key.module/Key.pm).
147+
[key](doc/modules.md#channelkey).
148148
APIs for [IRCv3](http://ircv3.org) extensions were added, leading to
149149
[SASL](http://ircv3.org/extensions/sasl-3.1),
150150
[multi-prefix](http://ircv3.org/extensions/multi-prefix-3.1), and
@@ -162,54 +162,34 @@ of the IRCd.
162162
* [__agnie__](https://github.com/cooper/juno/tree/juno9-agnie) (juno9):
163163
Named after the beautiful and talented [Agnes](http://agnes.mac-mini.org), agnie
164164
introduced lots of new functionality: the ability to
165-
[manage oper flags](https://github.com/cooper/juno/blob/master/modules/Grant.module/Grant.pm)
166-
from IRC, much-improved
165+
[manage oper flags](doc/modules.md#grant) from IRC, much-improved
167166
[account management](https://github.com/cooper/juno/tree/juno9-agnie/modules/Account.module),
168-
and
169-
[command aliases](https://github.com/cooper/juno/blob/master/modules/Alias.module/Alias.pm)
167+
and [command aliases](doc/modules.md#alias)
170168
to name a few. It opened a new door of possibility by adding partial
171-
[TS6 protocol](https://github.com/charybdis-ircd/charybdis/blob/master/doc/technical/ts6-protocol.txt)
172-
support, and
173-
it even supports [Atheme](http://atheme.net) now to some extent. New
174-
channel modes include
175-
[invite exception](https://github.com/cooper/juno/blob/master/modules/Channel/Invite.module/Invite.pm)
176-
(+I),
177-
[free invite](https://github.com/cooper/juno/blob/master/modules/Channel/Invite.module/Invite.pm)
178-
(+g),
179-
[channel forward](https://github.com/cooper/juno/blob/master/modules/Channel/Forward.module/Forward.pm)
180-
(+F),
181-
[oper only channel](https://github.com/cooper/juno/tree/master/modules/Channel/OperOnly.module)
182-
(+O),
183-
and
184-
[mute ban](https://github.com/cooper/juno/blob/master/modules/Channel/Mute.module/Mute.pm)
185-
(+Z, missing since juno2); also, the
186-
[TopicAdditions](https://github.com/cooper/juno/blob/master/modules/Channel/TopicAdditions.module/TopicAdditions.pm)
169+
[TS6 protocol](doc/ts6.md) support, and it even supports
170+
[Atheme](http://atheme.net) now to some extent. New channel modes include
171+
[invite exception](doc/modules.md#channelinvite) (+I),
172+
[free invite](doc/modules.md#channelinvite) (+g),
173+
[channel forward](doc/modules.md#channelforward) (+F),
174+
[oper only channel](doc/modules.md#channeloperonly) (+O), and
175+
[mute ban](doc/modules.md#channelmute) (+Z, missing since juno2); also, the
176+
[TopicAdditions](doc/modules.md#channeltopicadditions)
187177
module added convenient commands to prepend or append the topic. Some missing
188-
commands were added:
189-
[ADMIN](https://github.com/cooper/juno/blob/juno9-agnie/modules/Core/UserCommands.module/UserCommands.pm#L1272),
190-
[TIME](https://github.com/cooper/juno/blob/juno9-agnie/modules/Core/UserCommands.module/UserCommands.pm#L1296),
191-
and
192-
[USERHOST](https://github.com/cooper/juno/blob/juno9-agnie/modules/Core/UserCommands.module/UserCommands.pm#L1311);
193-
and several commands that previously did not work remotely now do. agnie
194-
introduced a
195-
[new mechanism](https://github.com/cooper/juno/tree/master/modules/Ban/Ban.module/Ban.pm)
178+
commands were added: ADMIN, TIME, USERHOST; and several commands that previously
179+
did not work remotely now do. agnie introduced a
180+
[new mechanism](doc/modules.md#ban)
196181
for storing and enforcing bans (functionality missing since juno2), followed by
197-
[K-Line](https://github.com/cooper/juno/blob/master/modules/Ban/Kline.module/Kline.pm)
198-
and
199-
[D-Line](https://github.com/cooper/juno/blob/master/modules/Ban/Dline.module/Dline.pm)
182+
[K-Line](doc/modules.md#bankline) and [D-Line](doc/modules.md#bandline)
200183
support in the form of independent modules. In addition to the existing
201-
[RELOAD](https://github.com/cooper/juno/blob/master/modules/Reload.module/Reload.pm)
202-
command, agnie
184+
[RELOAD](doc/modules.md#Reload) command, agnie
203185
includes new ways to manage servers remotely, including
204-
[repository](https://github.com/cooper/juno/blob/master/modules/Git.module/Git.pm)
205-
and
206-
[configuration](https://github.com/cooper/juno/blob/master/modules/Configuration/Set.module/Set.pm)
207-
management directly from IRC.
186+
[repository](doc/modules.md#git) and
187+
[configuration](doc/modules.md#configurationset) management directly from IRC.
208188

209189
* [__yiria__](https://github.com/cooper/juno/tree/juno10-yiria) (juno10):
210190
An acronym for our slogan (Yes. It really is an IRC daemon.), yiria's primary
211191
goal was to complete the implementation of the
212-
[TS6 protocol](https://github.com/charybdis-ircd/charybdis/blob/master/doc/technical/ts6-protocol.txt).
192+
[TS6 protocol](doc/ts6.md).
213193
Doing so while retaining support for the Juno Extensible Linking
214194
Protocol (JELP) involved efficient TS6<->JELP command conversion and vigorous
215195
[mode translation](https://github.com/cooper/juno/blob/eab5acca7645f3d460ba0fb84de9e58c6e39e3d5/modules/ircd.module/server.module/server.pm#L185),
@@ -222,10 +202,8 @@ many pseudoserver packages like
222202
Adding TS6 resulted in a positive side effect: several improvements within JELP
223203
in order to stay competitive with the newly-supported protocol. Aside from
224204
server-to-server improvements, new noteworthy features in yiria include built-in
225-
[DNSBL](https://github.com/cooper/juno/blob/master/modules/DNSBL.module/DNSBL.pm)
226-
checking,
227-
[private channels](https://github.com/cooper/juno/blob/master/modules/Channel/Secret.module/Secret.pm),
228-
and IRCv3
205+
[DNSBL](doc/modules.md#dnsbl) checking,
206+
[private channels](doc/modules.md#channelsecret), and IRCv3
229207
[away-notify](http://ircv3.net/specs/extensions/away-notify-3.1.html) support.
230208
As always, there were lots of bug fixes and efficiency improvements too.
231209

@@ -240,31 +218,47 @@ makes it easier to release patches.
240218
A lot was accomplished during the short-lived development of mihret.
241219
Several new channel features were introduced, including
242220
IRCv3 [extended-join](http://ircv3.net/specs/extensions/extended-join-3.1.html),
243-
[permanent channels](modules/Channel/Permanent.module/Permanent.pm) (+P),
244-
[op moderation](modules/Channel/OpModerate.module/OpModerate.pm) (+z),
245-
[color stripping](modules/Channel/NoColor.module/NoColor.pm) (+c),
246-
[registered only](modules/Channel/RegisteredOnly.module/RegisteredOnly.pm) (+r),
247-
and [SSL only](modules/Channel/SSLOnly.module/SSLOnly.pm) (+S),
248-
all implemented as modules.
221+
[permanent channels](doc/modules.md#channelpermanent) (+P),
222+
[op moderation](doc/modules.md#channelopmoderate) (+z),
223+
[color stripping](doc/modules.md#channelnocolor) (+c),
224+
[registered only](doc/modules.md#channelregisteredonly) (+r),
225+
and [SSL only](doc/modules.md#channelsslonly) (+S), all implemented as modules.
249226
Internal support for new user modes, deafness (+D) and bot status (+B), was also
250227
added. mihret furthered the support of external IRC services packages by
251-
reworking the [SASL](modules/SASL/SASL.module)
228+
reworking the [SASL](https://github.com/cooper/juno/blob/master/modules/SASL/SASL.module)
252229
module to support relaying authentication over both
253230
server protocols. Nickname enforcement, nickname reservations, and
254231
channel reservations are now supported as well. For the first time in its
255-
history, juno now has a decent [hostname cloaking](modules/Cloak.module/Cloak.pm)
232+
history, juno now has a decent [hostname cloaking](doc/modules.md#cloak)
256233
interface with a
257-
[charybdis-compatible](modules/Cloak.module/Charybdis.module/Charybdis.pm)
258-
implementation. The [netban](modules/Ban) module was
234+
[charybdis-compatible](https://github.com/cooper/juno/blob/master/modules/Cloak.module/Charybdis.module/Charybdis.pm)
235+
implementation. The [netban](https://github.com/cooper/juno/blob/master/modules/Ban) module was
259236
rewritten from the ground up in an objective fashion. New APIs make it very easy
260237
to extend netban functionality from additional modules. The
261-
[TS6 netban](modules/Ban/Ban.module/TS6.module/TS6.pm) implementation was mostly
238+
[TS6 netban](https://github.com/cooper/juno/blob/master/modules/Ban/Ban.module/TS6.module/TS6.pm) implementation was mostly
262239
completed too. A new IRCd support
263240
interface makes it easy to add special rules for certain IRC software and also
264241
features inheritance of properties for derivative software.
265242
As usual, there were astounding improvements to [TS6](doc/ts6.md)
266243
and even some enhancements to JELP.
267244

268-
* [__dev__](https://github.com/cooper/juno) (juno13): Yet to be named, the next
269-
release will be based on the current git, a continuation of mihret under active
245+
* [ava](https://github.com/cooper/juno/tree/juno13-ava) (juno13):
246+
Several new IRCv3 features were added, particularly the improved IRCv3.2
247+
[capability negotiation](http://ircv3.net/specs/core/capability-negotiation-3.2.html),
248+
[cap-notify](http://ircv3.net/specs/extensions/cap-notify-3.2.html),
249+
[userhost-in-names](http://ircv3.net/specs/extensions/userhost-in-names-3.2.html),
250+
[SASL reauthentication](http://ircv3.net/specs/extensions/sasl-3.2.html),
251+
and the [MONITOR](http://ircv3.net/specs/core/monitor-3.2.html)
252+
client notification system. Additional new channel features include
253+
[WHOX](http://faerion.sourceforge.net/doc/irc/whox.var) support,
254+
KNOCKing, join throttle mode (+j), no forward-mode (+Q), and the long-planned
255+
[MODESYNC](https://github.com/cooper/juno/issues/63)
256+
mechanism, which helps maintain network-wide channel mode synchrony even when
257+
some modes are not enabled on all servers. The built-in DNS blacklist checker
258+
now supports IPv6 blacklists and has improved caching helping to decrease the
259+
effects of malicious attacks. Further work on TS6 and JELP includes improved ban
260+
propagation and more S2S security measures.
261+
262+
* [__dev__](https://github.com/cooper/juno) (juno14): Yet to be named, the next
263+
release will be based on the current git, a continuation of ava under active
270264
development.

modules/ircd.module/channel.module/channel.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
"no_bless" : 1,
99
"package" : "channel",
1010
"preserve_sym" : 1,
11-
"version" : "12.91"
11+
"version" : "12.92"
1212
}

modules/ircd.module/channel.module/channel.pm

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,9 @@ sub handle_modes {
330330
#
331331
$param = $mode->{param};
332332
next MODE if !defined $param && $takes;
333+
334+
# the mode name may have been changed by the handler
335+
$name = $mode->{name};
333336

334337
# SAFE POINT:
335338
# from here we can assume that the mode will be set or unset.
@@ -587,9 +590,9 @@ sub real_local_users {
587590
return $channel->users_satisfying(sub { shift->is_local && !$_->{fake} });
588591
}
589592

590-
sub id { shift->{name} } # channel name
591-
sub name { shift->{name} } # channel name
592-
sub users { @{ shift->{users} } } # list of users
593+
sub id { irc_lc(shift->{name}) } # channel ID, which is lc'd name
594+
sub name { shift->{name} } # channel name
595+
sub users { @{ shift->{users} } } # list of users
593596

594597
# send NAMES.
595598
sub send_names {
@@ -663,7 +666,7 @@ sub send_all {
663666

664667
# $ignore can be either a user object or a codref
665668
# which returns true when the user should be ignored
666-
if ($ignore && !ref $ignore) {
669+
if ($ignore && ref $ignore ne 'CODE') {
667670
my $ignore_user = $ignore;
668671
$ignore = sub { shift() == $ignore_user };
669672
}
@@ -772,7 +775,7 @@ sub user_has_invite {
772775
sub user_clear_invite {
773776
my ($channel, $user) = @_;
774777
delete $channel->{invite_pending}{ $user->id };
775-
delete $user->{invite_pending}{ irc_lc($channel->name) };
778+
delete $user->{invite_pending}{ $channel->id };
776779
}
777780

778781
# clear all channel invites.

modules/ircd.module/ircd.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ sub set_variables {
172172

173173
# defaults; replace current values.
174174
my %v_replace = (
175-
NAME => 'mihret', # major version name
175+
NAME => 'ava', # major version name
176176
SNAME => 'juno', # short ircd name
177177
LNAME => 'juno-ircd', # long ircd name
178178
VERSION => $VERSION, # combination of these 3 in VERSION command

modules/ircd.module/pool.module/pool.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ sub delete_channel {
440440

441441
# forget it.
442442
delete $channel->{pool};
443-
delete $pool->{channels}{ irc_lc($channel->name) };
443+
delete $pool->{channels}{ $channel->id };
444444

445445
L("deleted channel $$channel{name}");
446446
return 1;

modules/ircd.module/server.module/server.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
"no_bless" : 1,
99
"package" : "server",
1010
"preserve_sym" : 1,
11-
"version" : "12.85"
11+
"version" : "12.92"
1212
}

modules/ircd.module/server.module/server.pm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ sub umode_letter {
121121
# convert umodes
122122
sub convert_umode_string {
123123
my ($server1, $server2, $mode_str) = @_;
124-
124+
return '+' if !length $mode_str;
125+
125126
my $string = '+'; # new (+/-)modes
126127
my $modes = (split /\s+/, $mode_str, 2)[0]; # old (+/-)modes
127128
my $state = 1; # current state

0 commit comments

Comments
 (0)