mirror of
https://github.com/osmarks/ngircd.git
synced 2025-11-13 20:17:10 +00:00
New configuration option "OperChanPAutoOp"
If disabled, IRC operators don't become channel operators in persistent channels when joining. Enabled by default, which has been the behavior of ngIRCd up to this patch. Closes bug #135. (Cosmetic fixes by Alex.)
This commit is contained in:
@@ -372,6 +372,7 @@ Conf_Test( void )
|
||||
printf(" MorePrivacy = %s\n", yesno_to_str(Conf_MorePrivacy));
|
||||
printf(" NoticeAuth = %s\n", yesno_to_str(Conf_NoticeAuth));
|
||||
printf(" OperCanUseMode = %s\n", yesno_to_str(Conf_OperCanMode));
|
||||
printf(" OperChanPAutoOp = %s\n", yesno_to_str(Conf_OperChanPAutoOp));
|
||||
printf(" OperServerMode = %s\n", yesno_to_str(Conf_OperServerMode));
|
||||
#ifdef PAM
|
||||
printf(" PAM = %s\n", yesno_to_str(Conf_PAM));
|
||||
@@ -733,6 +734,7 @@ Set_Defaults(bool InitServers)
|
||||
Conf_MorePrivacy = false;
|
||||
Conf_NoticeAuth = false;
|
||||
Conf_OperCanMode = false;
|
||||
Conf_OperChanPAutoOp = true;
|
||||
Conf_OperServerMode = false;
|
||||
#ifdef PAM
|
||||
Conf_PAM = true;
|
||||
@@ -1181,6 +1183,7 @@ CheckLegacyGlobalOption(int Line, char *Var, char *Arg)
|
||||
|| strcasecmp(Var, "ConnectIPv4") == 0
|
||||
|| strcasecmp(Var, "ConnectIPv6") == 0
|
||||
|| strcasecmp(Var, "OperCanUseMode") == 0
|
||||
|| strcasecmp(Var, "OperChanPAutoOp") == 0
|
||||
|| strcasecmp(Var, "OperServerMode") == 0
|
||||
|| strcasecmp(Var, "PredefChannelsOnly") == 0
|
||||
|| strcasecmp(Var, "SyslogFacility") == 0
|
||||
@@ -1556,6 +1559,10 @@ Handle_OPTIONS(int Line, char *Var, char *Arg)
|
||||
Conf_OperCanMode = Check_ArgIsTrue(Arg);
|
||||
return;
|
||||
}
|
||||
if (strcasecmp(Var, "OperChanPAutoOp") == 0) {
|
||||
Conf_OperChanPAutoOp = Check_ArgIsTrue(Arg);
|
||||
return;
|
||||
}
|
||||
if (strcasecmp(Var, "OperServerMode") == 0) {
|
||||
Conf_OperServerMode = Check_ArgIsTrue(Arg);
|
||||
return;
|
||||
|
||||
@@ -151,6 +151,9 @@ GLOBAL bool Conf_PredefChannelsOnly;
|
||||
/** Flag indicating if IRC operators are allowed to always use MODE (true) */
|
||||
GLOBAL bool Conf_OperCanMode;
|
||||
|
||||
/** Flag indicating if IRC operators get AutoOp in persistent (+P) channels */
|
||||
GLOBAL bool Conf_OperChanPAutoOp;
|
||||
|
||||
/**
|
||||
* If true, mask channel MODE commands of IRC operators to the server.
|
||||
* Background: ircd2 will ignore channel MODE commands if an IRC operator
|
||||
|
||||
@@ -167,8 +167,10 @@ join_set_channelmodes(CHANNEL *chan, CLIENT *target, const char *flags)
|
||||
}
|
||||
}
|
||||
|
||||
/* If channel persistent and client is ircop: make client chanop */
|
||||
if (strchr(Channel_Modes(chan), 'P') && strchr(Client_Modes(target), 'o'))
|
||||
/* If the channel is persistent (+P) and client is an IRC op:
|
||||
* make client chanop, if not disabled in configuration. */
|
||||
if (strchr(Channel_Modes(chan), 'P') && Conf_OperChanPAutoOp
|
||||
&& strchr(Client_Modes(target), 'o'))
|
||||
Channel_UserModeAdd(chan, target, 'o');
|
||||
} /* join_set_channelmodes */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user