-
Notifications
You must be signed in to change notification settings - Fork 4
/
INDEV
4160 lines (2703 loc) · 198 KB
/
INDEV
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Development log
---------------
CHANGES:
(-1). Late 1990s - June 5, 2002 - pIRCd, the perl IRCd daemon by Jay Koninek
01/04/00 - The world didn't end. How disappointing. pircd has now been moved to SourceForge. Check out all the neat things you can do over in the side bar.
01/21/00 - Aww yeah. Alpha Thirteen is out. Check out the change log to see what is new. Or just download it.
01/24/00 - I know you're reading this web page. Go take the survey!
08/18/00 - Hmm. Sort of dead, eh? Work has been continuing, albeit slowly. Hopefully it will culminate in a new release soon, with more features and increased stability. Until then, though, lots of people keep wanting to know how to set the oper password. This small Perl program can be used to generated encrypted passwords.
10/13/00 - There is some munchkin out there who keeps submitting pircd to IRC related web pages' link lists. This I don't mind. But they're using MY email address, increasing the amount of spam that I am going to get. This is lame in the extreme. Stop it. Now.
12/14/00 - pircd Beta Zero is out! It now has SSL support, a feature present in few other IRC servers!
06/05/02 - pircd Beta One is out! Not quite as exciting as Beta Zero, but if it were, then it would be called Gamma Zero, instead of Beta One. This release fixes some rather annoying bugs regarding channel keys and channel limits. If you make significant use of channel keys, UPDATE!
0. pIRCd2, first fork pIRCd.
pIRCd2 was not versioned.
It added a few features, the most famous being the allowance of the dollar sign ($) in nicknames.
pIRCd2 eventually evolved to be become the first version juno-ircd.
1. May 29, 2010 - July 5, 2010 (first commit) - version 1 of juno-ircd is based on pIRCd, the perl IRCd daemon.
Although juno version 1 was not versioned, this lists some of the main features added.
Reverse DNS is checked for resolving back to the connection IP, unlike in pIRCd.
Prefixes ~, &, and % were added, making juno a 5-prefix server with owner, administrator, operator, halfop, and voice.
NAMES outputs multiple prefixes, allowing clients to keep track of multiple status modes set on users.
The server now responds to CAP messages.
Added channel link (+L) mode. If the population limit (set by +l) is reached, users are forwarded to the linked channel.
Automatic modes are set when channels are created.
Added internal logging channel where the IRCd sends messages to an operator-only channel.
Added network administrator lines (NA).
Added operator override mode (+O) to prevent accidental abuse of override capabilities, which is unset after 2 minutes of inactivity.
In viewing of ban and mute lists, juno now keeps track of the users or servers who set the modes.
Masks are now checked to be valid when setting modes such as ban and mute.
Added mute/quiet channel mode (+Z), similar to +q of charybdis.
Users who are banned from channels but are in them can no longer speak.
Fixed K:Line, adding the ability for operators to add K:Lines through the use of an IRCd command.
Rewrote the linking protocol, properly sending bursts, modes, topics, joins, and more.
Fixed an issue where XChat users report enormous amounts of lag on their lag indicators.
Added a network name configuration option (NETWORK in RPL_ISUPPORT.)
Fixed many, many other bugs of pIRCd, making it almost usable.
2. February 18, 2011 - version two of juno-ircd is a complete rewrite.
0. February 18, 2011
5. February 18, 2011
0. February 18, 2011
* Adds LIST command.
* Changes filehandle to while (my $line = <$MOTD>) in user::handle_motd.
1. February 19, 2011
* Adds channel mode z - ops may view what a user is saying if he or she is incapable of PRIVMSGing or NOTICEing the channel.
* Fixes a bug with sprintf in user::sendserv in WHO and NAMES where the % prefix caused issues.
2. February 19, 2011
* Rehash notice is sent before actually rehashing.
* Added ISON command.
* Redid cloaking - you don't even want to know the issue before. (Now requires Digest::SHA (core))
3. February 19, 2011
* Supposedly fixes bug in perl module loader with an import. (this was a fatal bug.)
4. February 19, 2011
* Actually fixes bug in perl module loader with an import. (this was a fatal bug.)
* Adds --version to juno.pl
5. February 19, 2011
* Does cloaking by each piece of the host rather than the entire entire host hashed.
* Adds checking for both actual host and visible host with bans.
* After forgetting, add z to CHANMODES.
* Display time properly in 003 numeric.
6. February 22, 2011
* Fixes bug in NICK command that does not allow you to change your nick from say Someone to SomeOne.
* Fixes bug in NICK command where the nick change is not relayed to the user who sent it if they are in no channels.
* Fixes "Odd number of elements in hash assignment at user.pm line 344." in user::handle_nick.
7. February 22, 2011
* Major cleanups in user.pm (in almost every handler).
* Replaces user::sendnum with user::numeric and the %user::numerics hash. (this has existed, but is just now being cleaned up.)
Note: sendnum is still a valid function; it is used in the numerics displayed upon connecting in VERSION.
8. February 22, 2011
* Replaces a few various variables with %main::GV.
This hash is used to store information more easily with less of a mess.
* The MOTD is now stored in %main::GV rather than opening and reading the file with every /MOTD.
* Cleaned up user::new by removing all of the now broken host resolving stuff.
* Fixed channel.pm to where nonops can see the ban and mute lists but still not entirely fixed because I and e should be op-only.
9. February 22, 2011
* Cleaned up numerics in channel.pm where it matters, but didn't clean up the stuff that will be eventually redone.
* Also cleaned up channel::allsend with sprintf.
* Other various cleanup in channel.pm.
* Fixed numeric 432 => 433 in handle.pm (Nick is already in use).
- I forgot a bracket and pushed, but then I fixed it immediately after.
* After committing a fail, I fixed channel::allsend. Syntax is now channel->allsend(string, user to be ignored or 0, sprintf values).
6. February 24, 2011
0. February 24, 2011
* Cleaned up channel.pm by completely rewriting the messy handlestatus and sendmasklist subs.
* Also cleaned up the channel mode handler a bit.
This should fix the bug with viewing bans, exceptions, invite exceptions, and mutes.
Because the majority of channel.pm has been rewritten and lightly tested, it is likely that bugs will be discovered from here on.
1. February 25, 2011
* S is now for away in WHO query. (how that happened, the world may never know.)
* Added user::acceptcheck. This checks if the server is accepting new connections. (defined by limit:clients)
* Added user::ip_accept. This prevents a user from connecting if their per-ip limit is reached. (defined by limit:perip)
This will also be used when Z-Line is added, forcing the user to disconnect before they finish the connection process.
These fixes should fix the crash that occurs when the server accepts more connections than it can handle.
* Changed ping:msg to use sprintf for the number of seconds.
* Changed SIGINT handler to quit each user properly before killing the IRCd.
* Moved juno.pl to juno, making it executable and updating documentation and ./juno --help.
2. February 25, 2011
* Misc. cleanup.
* Cleaned up WHOIS numerics.
* Fixed bug in part - forgot a parameter for sprintf.
* Fixed 324 numeric (forgot +).
* Fixed "You're not a channel" in channel status setting.
* Fixed bug where anyone can set modes e, b, Z, and I.
3. February 26, 2011
* Adds Z-Line.
This adds the zline block to the configuration.
* Fixes rehash to clear all configuration options (excluding listen) before resetting them.
4. February 26, 2011
* Fixed bug where attempting to set qaohv without parameters replies with a "You're not a channel operator" numeric.
* Added channel mode l (channel user limit).
* Fixed misc. bugs in channel mode handler.
* Prepared mode handler for future modes.
5. February 28, 2011
* A user may not change his nick if he is banned or muted in a channel.
Why was such a small change an increase in version..?
6. February 28, 2011
* Discovered bug and fixed the entire channel::dojoin subroutine.
* This bug caused various issues upon joining, such as replying with "you are banned" even if you aren't, allowing you in a +i channel without an invite, etc.
* After forgetting, add i to CHANMODES.
7. March 1, 2011
* Fixed bug in channel.pm where topic changes are sent improperly.
* Fixed a similar bug in viewing topics (too many sprintf parameters).
* Fixed bug where MOTD is not reset and is instead appended upon rehash.
8. March 1, 2011
* Prepared for displayed host changing by redoing the way cloaking sets cloaks.
9. March 1, 2011
* Added auto-access mode A. This gives accesss to a user that matches the mask provided. (see README.)
7. March 1, 2011
0. March 1, 2011
* Channel mode A now checks both displayed and actual hosts (formerly only displayed).
* Fixed bug in part - user::fullcloak != user::nick.
1. March 1, 2011
* Fixed bug where everyone gets every status in auto-access. (wow, fail)
* Added vhost to oper block - set virtual host upon opering.
* Fixed bug in auto-access so that you only receive each mode that applies to you once.
* Made host matching insensitive to case for bans, mutes, etc.
2. March 3, 2011
* Masks in channel modes are now fully insensitive.
* Setting mode -b SOMEONE!*@* before would not remove a ban on someone!*@*, but now it will.
* Did a bit of cleanup in channel.pm.
3. March 4, 2011
* Put package above use in all packages.
* Began the base of the module API.
* Added Hello World module as an example module.
* Automatically loaded modules are separated by commas in main:modules.
* If no modules are to be loaded, set as 0 to disable.
* Because the module API requires Class::Unload, added a configuration option to enable or disable the API completely.
4. March 5, 2011
* Added API::alias_register: this is used to add serverside aliases to juno more easily.
Unfortunately, there are not yet variables for arguments sent, but this is planned.
See hello world module for an example.
* All API functions must now return true value in order to be successful - see helloworld module.
* Added MODLOAD command and modload oper flag.
- "Prepend" should have been "append" in the commit, but "prepend" each module with .pm (this failed)
5. March 5, 2011
* Fixed syntax error with .pm in API.
* Forgot to do the same in MODLOAD; fixed.
* Fixed main file to where API is not required (defined by enabled:API).
* Added API timers and a timertest module for an example.
6. March 6, 2011
* A LOT of misc. cleanup, perhaps the largest cleanup in juno's history. (this is bound to result in future bugs.)
* Added --stop argument and --restart argument.
* Added TERM signal handler.
7. March 6, 2011
* Fixed a major bug where the outbuffer does not clear properly.
* Fixed bug in numeric where the user object was being sent in numerics. (Fail)
* Added a sleep to --restart argument to ensure that the process was killed before attempting to listen.
8. March 7, 2011
* API modules must be named API::module::mode_name_here as of now.
Formerly, API::module_name_here was acceptable, but due to future API extensions this is no longer valid.
* Fixed bug in user::ison that pretty much broke the entire channel system.
* Fixed bug in NAMES and WHO commands with sprintf - no longer prefixes nick twice with % if the user is halfopped.
9. March 13, 2011
* Created a bash script to handle stop, start, rehash, etc.
This script allows juno to be run from any directory - juno was also edited to work properly with this script.
Juno may no longer be run without the use of this script unless all proper parameters are given.
* Now deleted PID file when exiting.
8. March 13, 2011
0. March 13, 2011
* All API plans have been canceled.
* Moved version stuff to etc/version.
* Added restart option to ./juno.
1. March 19, 2011
* Changed all spacing from two to four spaces because it looks nicer.
* Removed a few more remains of the module API.
* Removed indev from the git ignore file.
2. March 20, 2011
* Moved miscellaneous functions to utils package rather than main.
* Discovered bug: nick changes are sent twice if to the user changing his nick if he is in a channel with himself. (or at least I think that's the problem.)
* "Read error" -> "Connection closed"
3. March 20, 2011
* Misc. Cleanup, mostly in the invite handler. Also changed split()s.
* Majorly cleaned up bin/juno - just a cleanliness check.
* Channel mode z no longer allows users to override channel mode n; users must be in the channel to be affected by this mode.
* Added SACONNECT command like that in InspIRCd.
* Removed a few more things about the former module API from docs.
4. March 24, 2011
* Made indev prettier.
* Rewrote start/stop/rehash script.
It now has help and version actions.
Attempting to run it without arguments prints the usage help.
5. March 24, 2011
* Fail, $D should be $DIR in bin/juno... who knows how that happened? Fixed.
* Version script failed, but I fixed it.
* Added LOCOPS command.
It's exactly the same as GLOBOPS since we currently only support one server.
This adds the locops oper flag.
* Fixed the "No text to send" bug.
Blank messages are no longer accepted.
* Fixed the bug where nick changes are sometimes sent twice.
6. March 24, 2011
* Fixed bug where user mode x can be set/unset even if cloaking is not enabled.
* bin/juno now fatal()s if an attempt to listen using SSL is made and SSL is disabled in the configuration.
* Start/stop/rehash/etc script now has a forcestart option which starts juno whether or not a PID file exists.
7. March 25, 2011
* Beginning redesigned module API.
* Added API::Module package (currently nonfunctional).
By the way, the API is excluded from versioning and changelog until it is functional.
* Added HelloWorld module.
8. March 26, 2011
* Fixed a fatal bug in REHASH command.
* Fixed cloaking (I think)... I guess it's been like this for a long time and I just noticed.
* Fixed bug in start/stop script that preventing juno from starting without the force option.
* Fixed bug where all users were shown as using SSL in WHOIS command.
9. March 27, 2011
* Misc. cleanup.
* Added CHGHOST command.
This adds the chghost oper flag.
* Fixed a fatal bug that occured when the outgoing buffer is not empty and a user quits.
* Updated 004 numeric.
9. March 27, 2011
0. March 27, 2011
* Completely rewrote handle.pm due to bugs and other issues.
1. March 28, 2011
* Cleaned up user.pm A LOT.
(Expect new bugs.)
* Moved user numerics to utils.
* Moved user handlers to a new package called userhandlers.
* Did some other cleanup in bin/juno and utils.pm.
2. March 29, 2011
* Replaced splits by / / in the user handler to split by whitespace.
This fixes several bugs that allowed an incorrect number of parameters in command handlers, causing all kinds of messups.
* Replaced some undefined functions from the transition from user.pm to userhandlers.pm...
This fixes several fatal bugs, but don't be surprised to find more.
* Added channel::prefix to fetch a user prefix.
NAMES command now uses this function.
* WHOIS queries now display the channels that a user is in.
* Fixed bug in user mode handler where modes i and x were thought to be nonexistent.
3. March 30, 2011
* Did some cleanup in bin/juno.
* Fixed bug where include didn't work in the configuration at all because confparse() unsets options before parsing a file.
4. March 30, 2011
* Cleaned up channel.pm A LOT.
* Fixed several bugs... maybe they'd be listed here if Filezilla didn't cause me to lose my unsaved data.
* Fatal bug fix: sha1 != sha256 in loading of the cloaking module.
* Fixed bug in user::quit, caused by user.pm cleanup in 0.9.1 that didn't relay quits correctly at all.
* user::numeric uses int now.
* Fixed bug where it's possible to a kick user when they are not in the channel.
5. April 2, 2011
* Finished API::Module.
This adds enabled:api to enable the module API.
It also adds main:modules to load modules on startup.
* Finished API::Command.
* Fixed bug where QUIT is not sent to a user when he is /kill'd.
* Finished HelloWorld module.
* Cleaned up configuration parser.
6. April 2, 2011
* Added mode limit to new channel mode handler as defined by limit:chanmodes.
* Added updown module.
* Fixed several bugs in channel mode handler.
* API register_command now requires a command description parameter.
* Added COMMANDS command to list commands.
7. April 6, 2011
* Fixed bug in handle.pm where USER didn't give a numeric if the username was invalid.
* Cleanup: user.pm handle.pm.
* The largest cleanup of 0.9 begins here (userhandlers.pm.)
Expect new bugs to come about.
I'm completely ignoring the versioning system for a while so that new bugs from here on can be marked as "caused by userhandlers cleanup."
8. April 6, 2011
* Bug fix: no such nick/channel in MODE when setting or viewing a channel mode.
* Bug fix: parameter messups in OPER command.
* up module's UP command no longer sets modes that are already set.
* Added sync module.
* Cleanup.
* Added API::Core: registers core API commands MODLOAD and MODUNLOAD.
In order to be considered a "successful" unload, modules must return a true value in their void subroutine.
This adds the modload and modunload oper flags.
* Notices from API::Module and API::Command are now snotice()d as well as say()d.
9. April 7, 2011
* Bug fix: TOPIC was blank if less than the character limit.
* Auto-status mode A now supports multiple statuses in a single mode.
For example, mode +A qao:*!*@* grants modes q, a, and o to all users.
* Added Denny's API::Loop. This registers a code block to be executed each time juno runs through the main loop.
* Added example::loop module.
* Cleanup.
* Fix bug in WHOIS where it said "no such server" when doing WHOIS <nick> <nick>.
* New wiki: https://github.com/cooper879/juno/wiki
* Modes in 004 are accurate now I think.
* Fixed bug in ping timeout.
1. April 10, 2011
0. April 10, 2011
0. April 10, 2011
* Added grant module.
This adds the grant and deoper oper flags.
1. April 10, 2011
* Fixed fatal bug where ./juno rehash crashes server. :(
* Fixed bug in channel mode handler where l could not be unset and other stuff failed.
* Added rules module by ebest97.
The directory to the rules file is set by rules:file configuration option.
* Added admin module by ebest97.
The lines are defined by admin:line1, admin:line2, and admin:line3.
* Redid oper privs system to be based on individual flags, not oper accounts.
$user->{oper} no longer exists; use $user->ismode('o').
* Added grant module.
It requires 1.0.1 and above.
2. April 12, 2011
* Added an easy way to setup "oper classes" (sorta.) See the example configuration.
* Fix bug: set o if granted flags when o is not set.
3. April 16, 2011
* Fixed a bug in del_privs that caused an endless loop. :(
* Added UNGRANT command to grant module.
* Fixed several bugs in new oper system, one of which was fatal.
* Fixed bug in topic char limit.
* Added message char limit (PRIVMSG and NOTICE), defined by limit:msg.
* Added PRIVS command to grant module.
4. April 18, 2011
* What's an operatgror? o_O
* Channel automodes now support parameters. (you'll probably laugh at how I made that possible.)
Also, nonexistent modes will be ignored.
* Added genssl and mkpasswd options to ./juno script.
* Added currently nonfunctional module manager.
* Added ./juno mod to enter the module manager.
* Moved API modules to juno-mods repository.
* Two modules can no longer have the same name.
* Added API::Event.
5. April 22, 2011
* The module manager isn't quite finished but is now officially supported in dev-1.0.5.
* Added ./juno debug to start in NOFORK mode.
* Fixed fatal bug in API events.
* Strip whitespace from the end of a snotice().
* API::Core's MODUNLOAD command now requires the modload flag rather than modunload.
* API::Core's MODLOAD and MODUNLOAD commands now accept the 'modules' oper flag.
* Since just about every command has a parameter check, juno's command handler now has built-in parameter check.
API::Command now has an optional parameter for extended options. This will be used for future options as well.
The params option sets the required number of parameters for the command to be successful.
If the Required parameters are not met, a numerical "not enough parameters" error will be displayed.
Example: register_command('hello', 'Hello World!', \&handle_hello, { params => 2 }); # says that two parameters are required.
/HELLO Hello (incorrect) /HELLO Hello World! (correct)
6. April 23, 2011
* Changed all of the handlers in userhandlers.pm to use the new parameter option.
I wouldn't be all that surprised if this caused a few bugs here and there.
* Fixed bug where the module API was loading modules relative to the location where you started juno rather than juno's installation directory.
* Made /COMMANDS prettier.
* Added 'flag' option to register_command.
If the user does not have the specified flag, a "permission denied" numeric error will be displayed.
* Fixed a bug in the new params option where the command counted as a parameter.
* Z-Lines are now D-Lines as to follow STATS numerics in rfc2812. The configuration now accepts either zline or dline.
* Added time2seconds() and add_commas() utils.
* Edited userhandlers.pm to use the new 'flag' extended option.
7. April 24, 2011
* Made the README prettier.
* Added a valid_ipv4() util and a disgusting valid_ipv6() one too.
* Fixed bug: sometimes MODE takes only one parameter.
8. April 25, 2011
* The module manager now uses both its version and juno's version to validate compatibility.
In order to use our module server, you must upgrade juno.
* The module manager no longer allows non-compatible modules to be installed.
* K-Line check shouldn't check nick!ident@host. I fail.
* Fixed the API::Core "no such file or directory" error every time.
* checkkline() was using nick instead of user. I fail.
* Fixed checkkline() so now it doesn't send a quit server notice if a k-lined user attempts to connect.
* checkkline() is no longer case-sensitive.
9. April 26, 2011
* utils.pm cleanup.
* Added numerics 252, 254, and 255 to LUSERS.
* Finished channel mode k and fixed join to work properly with it.
JOIN channel,channel key,key
1. April 28, 2011
0. April 28, 2011
* Now supports commands in the form of ':source command' (you'd think this would have been done a long time ago.)
* Fixed bug in API::Command where an incorrect parameter in register_command could potentially cause a crash.
* Fixed bug where you can't return from being away.
3. April 30, 2011
0. April 30, 2011
0. April 30, 2011
0. Added directory finder.
1. Finished configuration parser and fetcher functions.
2. Fixed configuration parser.
3. Added load_requirements() and fatal() util.
user.pm is now solely for users; connection.pm will handle connections.
4. Whoops, forgot to put fatal() in @EXPORT_OK.
fatal() logs the method that called it now.
Added create_sockets() to create listening sockets and fatal() if not listening.
Added main loop stuff.
Added handler to connection.pm (kinda.)
Added send functions.
May 1, 2011
5. Added basic pre-registration commands and temporary incoming data handler (without any form of flood protection.)
6. Set connection->{ready} when NICK and USER have both been verified.
Made the configuration parser ignore blank lines.
Finished outgoing buffer.
7. Added user::new() and some more user.pm stuff.
8. Added connection::lookup() to a find a connection by its user or server object.
Finished connection.pm's data forwarding to user.pm or server.pm.
9. Finished SERVER and PASS.
1. May 1, 2011
0. Fixed realname bug.
Change configuration setup.
1. Fixed crash if disconnect before register.
Allow any drop-in replacement for IO::Socket::INET such as IO::Socket::IP or IO::Socket::INET6.
Finished flood protection and incoming buffer.
2. Added md5 support.
Changed configuration some more.
Added autoconnect and stuff.
3. Added more linking stuff.
May 2, 2011
4. If the credentials have been sent, don't send them again.
5. Created server::linkage for local protocol functions.
2. June 12, 2011
0. Add trim() util.
Keep track of server descriptions in server.pm.
Configuration parser now takes literal values and has improved syntax.
user::mine module is for handling of local user data.
1. Finished ping system!
Failure to respond to the first PING now leads to a registration timeout on unregistered connections.
Added lconf() util for fetching name configuration values.
2. Only send PING if there isn't a pending ping.
3. Constants on and off define true and false values in the configuration.
4. server::mine contains the linking protocol handler.
June 13, 2011
5. a few fixes.
6. user::numeric contains numerics.
Keep track of the server users are connecting from.
7. added more functions to server::mine include send() to send data to a connected server.
added user::handlers and server::handlers for local handlers.
keep track of servers' parents.
other fixes.
3. June 13, 2011
0. Fixed bug where IRCd exits when attempting to write on a closed connection.
1. $user->mine->method() and $server->mine->method() now calls methods in user::mine and server::mine from a user or server object.
2. Reverted the stupid ->mine stuff.
Added several shortcuts to *::mine package functions.
- you can, of course, call them on an object such as $server->server::mine::send()
Added register_handler() to server::mine - registers a CODE reference to a command handler.
Server now handles and sends the UID command.
Added server::lookup_by_id() to find a server by its SID.
June 14, 2011
3. Store server parents by object, not SID.
Added user::is_local() for determining if the user is on this server.
server::outgoing contains outgoing commands.
Added quit() and uid() to server::outgoing.
Delete all users from a server when that server splits.
Connects, quits, and bursts should be completely accurate now - the servers should always be synced with users.
Properly remove child servers, their children, their children's children, and so on when a server splits.
4. Fixed a bug that sometimes leads to a crash where the local server's parent was unknown (itself).
5. Fixed several bugs in UID.
Added SID to share servers from server-to-server.
BURST no longer sends information on users and servers that the target server is already familiar with.
June 15, 2011
6. UID handler now determines who wins a nick collision battle.
7. Added nick check to registration.
Fixed a bug that occurred when an unregistered connection disconnected.
8. Added loop functions to extend the main loop.
4. June 13, 2011 <- obviously time is going backwards (June 15, 2011)
0. Added hostname resolving! (don't expect it to be perfect [yet])
June 16, 2011
1. Fixed a small bug in the hostname resolver.
Added "forward" option to server handlers.
When enabled, this server forwards the line to the child servers.
Fixed a crash bug on nick collision.
2. Fixed more bugs in the resolver.
3. Hopefully these fixes will prevent thousands of nick collisions.
4. Just kidding; this should fix it.
5. nope, maybe this will.
6. I almost promise that it works now.
Fixed a small bug in quit().
7. Fixed some bugs. Hopefully it actually does work now.
8. Never mind, this will fix it.
5. June 16, 2011
0. Rewrote the hostname resolving. I think it might actually work now. (but don't believe me; I've already thought that the last 10 commits)
1. I REALLY think it will work now.
June 17, 2011
2. Cleaned up a bit.
Added hostname notices.
Added user handler and a few other things to user::mine.
Fixed a bug where PINGing was done more often than it should be.
3. Finished user numeric stuff.
Added fake USER command.
June 20, 2011
4. Added some numerics to user connect.
Added LUSERS command.
Added MOTD command.
June 22, 2011
5. Added more numerics.
6. Added NICK user command.
Relay nick changes to child servers.
Handle NICK command from servers.
Added fake PING command.
7. Added INFO command.
Added support for SHA224 and SHA384.
July 7, 2011
8. Fixed a few small bugs.
Added the ability to fork and become a daemon.
Added NOFORK option.
July 8, 2011
9. Fixed broken NOFORK option.
Added RPL_ISUPPORT, but much of it is unfinished since channels don't exist yet.
6. July 8, 2011
0. beginning to work on channel.pm.
1. Added channel join method that keeps the channel time accurate.
2. Added lookup_by_name() channel function.
Added some other channely stuff.
3. RPL_LUSERCHANNELS should only be sent if non-zero.
4. Made some changes to the user mode system.
Do not change nicks if the nick is taken.
5. I probably fell asleep while writing the mode validator thingy, but now it is fixed.
6. Added is_mode() and unset_modes() user functions.
Fixed a bug that causes crash on user connect because you can't push to a nonexistence array reference.
7. July 17, 2011
0. Moved resolve stuff to separate "res" module.
1. split RPL_ISUPPORT into several lines when necessary.
2. random cleanup of outgoing.pm
3. added some stuff to make sure we only sent BURST once.
4. changed a few more things in burst.
5. added user mode module.
from here on, modes will be named rather than lettered.
fixed a small warning in RPL_ISUPPORT.
July 18, 2011
6. added outgoing ADDUMODE command.
7. send ADDUMODES in burst.
8. send my ADDUMODES also.
register internal modes to the local server.
9. handle ADDUMODEs.
8. July 18, 2011
0. handle UMODE server command.
added user::handle_mode_string() which translates a string of mode letters to their mode names and sets or unsets them.
1. added user->mode_string() to create mode strings to the user's local server.
actually send modes in UID command now.
2. handle mode strings in UID and apply the modes.
3. made it possible to add multiple user handlers of the same command (which will be useful later in the module API.)
4. did the same for server handlers.
5. added default mode settings.
6. added MODE user command.
handle_mode_string() now returns the final mode string, which will be used later.
7. cleaned up some stuff.
July 19, 2011
8. send MODE string back to a user when he sets user modes.
fixed time bug in resolving.
9. July 19, 2011
0. Fixed a small bug in the user mode handler.
1. added user mode tests. if any of the tests fail, the mode will not be accepted.
2. send UMODE to other servers.
3. added PRIVMSG handler! :D
local user-to-user PRIVMSGs should work now.
4. added PRIVMSG server handler.
global user-to-user PRIVMSGs should work now.
5. added a really fail MAP that will be made prettier later.
6. fixed a few things and added more numerics to LUSERS.
7. fixed something in LUSERS.
added nickname in use numeric.
8. fixed another LUSERS bug.
9. added NOTICE command.
send NOTICE from server to server.
fix a couple small things.
1. July 20, 2011