@@ -232,8 +232,6 @@ HANDLER (channel_ban)
232
232
pass_message_args (con , tag , ":%s %s %s%s%s%s" , sender , chan -> name ,
233
233
b -> target , ac > 2 ? " \"" : "" , ac > 2 ? av [2 ] : "" ,
234
234
ac > 2 ? "\"" : "" );
235
- notify_mods (BANLOG_MODE , "%s banned %s from %s: %s" , sender , b -> target ,
236
- chan -> name , NONULL (b -> reason ));
237
235
notify_ops (chan , "%s banned %s from %s: %s" , sender , b -> target ,
238
236
chan -> name , NONULL (b -> reason ));
239
237
}
@@ -299,9 +297,6 @@ HANDLER (channel_unban)
299
297
sender , chan -> name , b -> target ,
300
298
ac > 2 ? " \"" : "" ,
301
299
ac > 2 ? av [2 ] : "" , ac > 2 ? "\"" : "" );
302
- notify_mods (BANLOG_MODE , "%s unbanned %s from %s: %s" ,
303
- sender , b -> target , chan -> name ,
304
- (ac > 2 ) ? av [2 ] : "" );
305
300
notify_ops (chan , "%s unbanned %s from %s: %s" ,
306
301
sender , b -> target , chan -> name , (ac > 2 ) ? av [2 ] : "" );
307
302
free_ban (b );
@@ -387,8 +382,6 @@ HANDLER (channel_clear_bans)
387
382
}
388
383
list_free (chan -> bans , (list_destroy_t ) free_ban );
389
384
chan -> bans = 0 ;
390
- notify_mods (BANLOG_MODE , "%s cleared the ban list on %s" , sender -> nick ,
391
- chan -> name );
392
385
notify_ops (chan , "%s cleared the ban list on %s" , sender -> nick ,
393
386
chan -> name );
394
387
}
@@ -494,9 +487,6 @@ HANDLER (channel_op)
494
487
send_cmd (user -> con , MSG_SERVER_NOSUCH ,
495
488
"%s removed you as operator on channel %s" ,
496
489
sender , chan -> name );
497
- notify_mods (CHANGELOG_MODE ,
498
- "%s removed %s as operator on channel %s" ,
499
- sender , user -> nick , chan -> name );
500
490
notify_ops (chan ,
501
491
"%s removed %s as operator on channel %s" ,
502
492
sender , user -> nick , chan -> name );
@@ -517,9 +507,6 @@ HANDLER (channel_op)
517
507
send_cmd (user -> con , MSG_SERVER_NOSUCH ,
518
508
"%s set you as operator on channel %s" ,
519
509
sender , chan -> name );
520
- notify_mods (CHANGELOG_MODE ,
521
- "%s set %s as operator on channel %s" ,
522
- sender , user -> nick , chan -> name );
523
510
notify_ops (chan , "%s set %s as operator on channel %s" ,
524
511
sender , user -> nick , chan -> name );
525
512
/* only do the following if the user is in the channel */
@@ -553,7 +540,9 @@ notify_ops (CHANNEL * chan, const char *fmt, ...)
553
540
{
554
541
chanUser = list -> data ;
555
542
ASSERT (chanUser -> magic == MAGIC_CHANUSER );
556
- if (ISUSER (chanUser -> user -> con ) && (chanUser -> flags & ON_OPERATOR ))
543
+ if (ISUSER (chanUser -> user -> con ) &&
544
+ ((chanUser -> flags & ON_OPERATOR ) ||
545
+ chanUser -> user -> level > LEVEL_USER ))
557
546
queue_data (chanUser -> user -> con , buf , 4 + len );
558
547
}
559
548
}
@@ -628,8 +617,6 @@ HANDLER (channel_drop)
628
617
}
629
618
pass_message_args (con , tag , ":%s %s \"%s\"" , sender -> nick , chan -> name ,
630
619
(ac > 1 ) ? av [1 ] : "" );
631
- notify_mods (CHANGELOG_MODE , "%s dropped channel %s: %s" ,
632
- sender -> nick , chan -> name , (ac > 1 ) ? av [1 ] : "" );
633
620
notify_ops (chan , "%s dropped channel %s: %s" ,
634
621
sender -> nick , chan -> name , (ac > 1 ) ? av [1 ] : "" );
635
622
@@ -650,8 +637,6 @@ HANDLER (channel_wallop)
650
637
USER * sender ;
651
638
CHANNEL * chan ;
652
639
char * chanName ;
653
- LIST * list ;
654
- CHANUSER * chanUser ;
655
640
656
641
ASSERT (validate_connection (con ));
657
642
if (pop_user (con , & pkt , & sender ))
@@ -679,28 +664,18 @@ HANDLER (channel_wallop)
679
664
status otherwise, and is_chanop() will fail). mods+ are assumed to
680
665
be trusted enough that the check for membership is not required. */
681
666
pass_message_args (con , tag , ":%s %s %s" , sender -> nick , chan -> name , pkt );
682
- len = form_message (Buf , sizeof (Buf ), MSG_SERVER_NOSUCH ,
683
- "%s [ops/%s]: %s" , sender -> nick , chan -> name , pkt );
684
- for (list = chan -> users ; list ; list = list -> next )
685
- {
686
- chanUser = list -> data ;
687
- ASSERT (chanUser -> magic == MAGIC_CHANUSER );
688
- if (ISUSER (chanUser -> user -> con ) &&
689
- /* send to mods+ and ops */
690
- (chanUser -> user -> level > LEVEL_USER ||
691
- (chanUser -> flags & ON_OPERATOR )))
692
- queue_data (chanUser -> user -> con , Buf , len );
693
- }
667
+ notify_ops (chan , "%s [ops/%s]: %s" , sender -> nick , chan -> name , pkt );
694
668
}
695
669
696
670
static void
697
- add_flag (char * d , int dsize , char * flag , int bit , int onmask , int offmask )
671
+ add_flag (char * d , int dsize , char * flag , int bit , int onmask , int offmask )
698
672
{
699
- if ((onmask & bit )|| (offmask & bit ))
673
+ if ((onmask & bit ) || (offmask & bit ))
700
674
{
701
- int len = strlen (d );
702
- snprintf (d + len ,dsize - len ,"%s%c%s" , dsize > 0 ?" " :"" ,
703
- (onmask & bit )?'+' :'-' , flag );
675
+ int len = strlen (d );
676
+
677
+ snprintf (d + len , dsize - len , "%s%c%s" , dsize > 0 ? " " : "" ,
678
+ (onmask & bit ) ? '+' : '-' , flag );
704
679
}
705
680
}
706
681
@@ -764,11 +739,13 @@ HANDLER (channel_mode)
764
739
{
765
740
if (ISUSER (con ))
766
741
send_cmd_pre (con , tag , "mode for channel " , "%s%s%s%s" ,
767
- chan -> name ,
768
- (chan -> flags & ON_CHANNEL_PRIVATE ) ? " +PRIVATE" : "" ,
769
- (chan -> flags & ON_CHANNEL_MODERATED ) ? " +MODERATED" : "" ,
770
- (chan -> flags & ON_CHANNEL_INVITE ) ? " +INVITE" : "" ,
771
- (chan -> flags & ON_CHANNEL_TOPIC ) ? " +TOPIC" : "" );
742
+ chan -> name ,
743
+ (chan ->
744
+ flags & ON_CHANNEL_PRIVATE ) ? " +PRIVATE" : "" ,
745
+ (chan ->
746
+ flags & ON_CHANNEL_MODERATED ) ? " +MODERATED" : "" ,
747
+ (chan -> flags & ON_CHANNEL_INVITE ) ? " +INVITE" : "" ,
748
+ (chan -> flags & ON_CHANNEL_TOPIC ) ? " +TOPIC" : "" );
772
749
return ;
773
750
}
774
751
while (pkt )
@@ -826,30 +803,32 @@ HANDLER (channel_mode)
826
803
827
804
chan -> timestamp = Current_Time ;
828
805
msg [0 ] = 0 ;
829
- add_flag (msg ,sizeof (msg ),"PRIVATE" ,ON_CHANNEL_PRIVATE ,onmask ,offmask );
830
- add_flag (msg ,sizeof (msg ),"MODERATED" ,ON_CHANNEL_MODERATED ,onmask ,offmask );
831
- add_flag (msg ,sizeof (msg ),"INVITE" ,ON_CHANNEL_INVITE ,onmask ,offmask );
832
- add_flag (msg ,sizeof (msg ),"TOPIC" ,ON_CHANNEL_TOPIC ,onmask ,offmask );
806
+ add_flag (msg , sizeof (msg ), "PRIVATE" , ON_CHANNEL_PRIVATE , onmask ,
807
+ offmask );
808
+ add_flag (msg , sizeof (msg ), "MODERATED" , ON_CHANNEL_MODERATED ,
809
+ onmask , offmask );
810
+ add_flag (msg , sizeof (msg ), "INVITE" , ON_CHANNEL_INVITE , onmask ,
811
+ offmask );
812
+ add_flag (msg , sizeof (msg ), "TOPIC" , ON_CHANNEL_TOPIC , onmask ,
813
+ offmask );
833
814
834
815
notify_ops (chan , "%s changed mode on channel %s:%s" ,
835
816
senderName , chan -> name , msg );
836
- notify_mods (CHANGELOG_MODE ,
837
- "%s changed mode on channel %s:%s" , senderName ,
838
- chan -> name , msg );
839
817
pass_message_args (con , tag , ":%s %s %s" , senderName ,
840
818
chan -> name , msg );
841
819
}
842
820
}
843
821
844
822
static int
845
- is_member (CHANNEL * chan , USER * user )
823
+ is_member (CHANNEL * chan , USER * user )
846
824
{
847
825
LIST * list ;
848
826
CHANUSER * chanUser ;
849
- for (list = chan -> users ;list ;list = list -> next )
827
+
828
+ for (list = chan -> users ; list ; list = list -> next )
850
829
{
851
- chanUser = list -> data ;
852
- if (chanUser -> user == user )
830
+ chanUser = list -> data ;
831
+ if (chanUser -> user == user )
853
832
return 1 ;
854
833
}
855
834
return 0 ;
@@ -860,83 +839,84 @@ is_member(CHANNEL *chan, USER *user)
860
839
HANDLER (channel_invite )
861
840
{
862
841
USER * sender , * user ;
863
- int ac = -1 ;
842
+ int ac = -1 ;
864
843
char * av [2 ];
865
844
LIST * list ;
866
845
CHANNEL * chan ;
867
846
868
- ASSERT (validate_connection (con ));
869
- if (pop_user (con ,& pkt ,& sender ))
847
+ ASSERT (validate_connection (con ));
848
+ if (pop_user (con , & pkt , & sender ))
870
849
return ;
871
- if (pkt )
872
- ac = split_line (av ,FIELDS (av ),pkt );
873
- if (ac < 2 )
850
+ if (pkt )
851
+ ac = split_line (av , FIELDS (av ), pkt );
852
+ if (ac < 2 )
874
853
{
875
- unparsable (con );
854
+ unparsable (con );
876
855
return ;
877
856
}
878
- chan = hash_lookup (Channels ,av [0 ]);
879
- if (!chan )
857
+ chan = hash_lookup (Channels , av [0 ]);
858
+ if (!chan )
880
859
{
881
- nosuchchannel (con );
860
+ nosuchchannel (con );
882
861
return ;
883
862
}
884
- if (!(chan -> flags & ON_CHANNEL_INVITE ))
863
+ if (!(chan -> flags & ON_CHANNEL_INVITE ))
885
864
{
886
- if (ISUSER (con ))
887
- send_cmd (con ,MSG_SERVER_NOSUCH ,"channel is not invite only" );
865
+ if (ISUSER (con ))
866
+ send_cmd (con , MSG_SERVER_NOSUCH , "channel is not invite only" );
888
867
return ;
889
868
}
890
869
/* ensure this user meets the minimum level requirements */
891
- if (sender -> level < chan -> level )
870
+ if (sender -> level < chan -> level )
892
871
{
893
- permission_denied (con );
872
+ permission_denied (con );
894
873
return ;
895
874
}
896
875
/*ensure the user is on this channel */
897
- if (!is_member (chan ,sender ))
876
+ if (!is_member (chan , sender ))
898
877
{
899
- permission_denied (con );
900
- return ;
901
- }
902
- user = hash_lookup (Users ,av [1 ]);
903
- if (!user )
904
- {
905
- nosuchuser (con );
878
+ permission_denied (con );
906
879
return ;
907
880
}
908
- if (is_member (chan ,user ))
881
+ user = hash_lookup (Users , av [1 ]);
882
+ if (!user )
909
883
{
910
- if (ISUSER (con ))
911
- send_cmd (con ,MSG_SERVER_NOSUCH ,"user is already in channel" );
884
+ nosuchuser (con );
912
885
return ;
913
886
}
914
- /*ensure the user is not already invited*/
915
- if (list_find (user -> invited ,chan ))
887
+ if (is_member (chan , user ))
916
888
{
917
- if (ISUSER (con ))
918
- send_cmd (con ,MSG_SERVER_NOSUCH ,"user is already invited " );
889
+ if (ISUSER (con ))
890
+ send_cmd (con , MSG_SERVER_NOSUCH , "user is already in channel " );
919
891
return ;
920
892
}
893
+ /*ensure the user is not already invited */
894
+ if (list_find (user -> invited , chan ))
895
+ return ; /* already invited */
921
896
922
- list = CALLOC (1 ,sizeof (LIST ));
923
- list -> data = chan ;
924
- list -> next = user -> invited ;
925
- user -> invited = list ;
897
+ list = CALLOC (1 , sizeof (LIST ));
898
+ list -> data = chan ;
899
+ list -> next = user -> invited ;
900
+ user -> invited = list ;
926
901
927
- list = CALLOC (1 ,sizeof (LIST ));
928
- list -> data = user ;
929
- list -> next = chan -> invited ;
930
- chan -> invited = list ;
902
+ list = CALLOC (1 , sizeof (LIST ));
903
+ list -> data = user ;
904
+ list -> next = chan -> invited ;
905
+ chan -> invited = list ;
931
906
932
- pass_message_args (con ,tag ,":%s %s %s" ,sender -> nick ,chan -> name ,user -> nick );
907
+ pass_message_args (con , tag , ":%s %s %s" , sender -> nick , chan -> name ,
908
+ user -> nick );
933
909
934
- if (ISUSER (user -> con ))
910
+ if (ISUSER (user -> con ))
935
911
{
936
- if (user -> con -> numerics )
937
- send_cmd (user -> con ,tag ,"%s %s" ,chan -> name ,sender -> nick );
912
+ if (user -> con -> numerics )
913
+ send_cmd (user -> con , tag , "%s %s" , chan -> name , sender -> nick );
938
914
else
939
- send_cmd (user -> con ,MSG_SERVER_NOSUCH ,"%s invited you to channel %s" ,
940
- sender -> nick , chan -> name );
915
+ send_cmd (user -> con , MSG_SERVER_NOSUCH ,
916
+ "%s invited you to channel %s" , sender -> nick ,
917
+ chan -> name );
941
918
}
919
+
920
+ notify_ops (chan ,"%s invited %s to channel %s" ,sender -> nick ,user -> nick ,
921
+ chan -> name );
942
922
}
0 commit comments