Matt Schatz [Mon, 16 Apr 2018 09:02:49 +0000 (03:02 -0600)]
Improve some documentation (#1483).
* Improve exemptchanops in inspircd.conf.example (<options>)
and modules.conf.example; along with both helpop examples.
* Add "the" to all "requires X module" in both helpop examples.
* Refer to customprefix instead of chanprotect and halfop.
* Add SNOMASK 'r' and 'R' (OPERLOG) to both helpop examples.
* Clean up unnecessarily split SNOMASK lines in both helpop examples.
* Move chmode 'g' to be in alphabetical order in both helpops examples.
* Specify the needed mask formats for TLINE in helpop-full example.
* Remove extra '\' in RLINE mask format in helpop-full example.
Force xml format in helpop-full
* Generalize "color codes" to "formatting codes"
* Fix file name in include for example helpop-full
genius3000 [Mon, 26 Mar 2018 11:57:22 +0000 (05:57 -0600)]
Fix ELine::Matches returning false on existing match
When checking for an E-Line match, we want to actually check for a
current match even if we previously matched and are set exempt.
This fixes situations where you have an E-Lined CGI:IRC address,
a G-Lined IP range for some area/host/etc and a smaller E-Lined
IP range for known good clients. Currently when CGI:IRC changes
the IP, E-Lines are rechecked but because the user is already exempt
(from the CGI:IRC E-Line), they are set no longer exempt and match
a G-Line, when they should match an E-Line.
This exact change has been done before in commit 'c8b344e' and shortly
reverted in 'c490a90' to fix issue #989 (CGI:IRC users remaining exempt
when the CGI:IRC address is E-Lined but they are not).
The actual cause to this issue was likely that the user's hostname was
not changed from the CGI:IRC hostname/IP prior to rechecking E-Lines.
This is being fixed in a separate commit.
Peter Powell [Mon, 26 Mar 2018 11:52:35 +0000 (05:52 -0600)]
Set User::host before calling ChangeIP()
ChangeIP() calls SetClientIP() which revalidates whether the user
matches an ELine. However, because the hostname has not changed yet
the user may incorrectly be marked as non-exempt.
genius3000 [Fri, 30 Mar 2018 16:08:22 +0000 (10:08 -0600)]
Update the GeoIP ExtItem when CGI:IRC sets the real IP (#1471)
Since CGI:IRC calls it's 'ChangeIP()' either from 'OnCheckReady()'
or 'OnUserRegister()', both of which are called after the user has
sent NICK/USER, we can safely skip re-setting the ExtItem prior to
this point.
This skips the first 'OnSetUserIP()' from 'User::AddUser()' as
the 'OnSetConnectClass()' catch handles the initial setting.
Michael Hazell [Fri, 29 Dec 2017 23:16:39 +0000 (18:16 -0500)]
m_chanhistory: optionally exempt bots from receiving history.
Sending history to some bots can cause problems as without the
IRCv3 chathistory batch they have no way of knowing what messages
are history and what they should respond to.
Peter Powell [Sun, 12 Nov 2017 11:58:49 +0000 (11:58 +0000)]
Various minor documentation fixes.
- Remind admins that not setting a DIE/RESTART password does not
disable use of those commands.
- Remove references to 1.2 and modules being able to create custom
logging methods. This was never implemented in the 2.0 branch.
- Remove references to an SASL improvement that was reverted.
- Update various InspIRCd website links to use HTTPS over HTTP.
- Update a link to the IRCv3 website to point to the new website.
Inform the client when a SASL message cannot be sent
When SASL is properly configured with a 'target' server, we are able
to inform the client when the message fails to send.
Currently if a target is configured and it is offline, no response is
sent. This can cause some clients to time out while waiting for a response.
If a target isn't configured, behaviour will not change with this commit.
The default of '*' will still send to all servers.
Updated example config with 'target' variable.
Peter Powell [Sat, 26 Aug 2017 16:25:20 +0000 (17:25 +0100)]
Use DLLManager::RetrieveLastError() on all platforms.
This prevents a bug where we send malformed messages to the client
when dlerror() returns an error message containing more than one
line. This has been observed on macOS but probably will happen on
other UNIX systems too.
This also fixes a potential problem where dlerror() returns NULL
and converting it to std::string causes a crash. I can't see any
way that this might happen but it is better to be safe than sorry.
Peter Powell [Fri, 25 Aug 2017 12:12:44 +0000 (13:12 +0100)]
Fix mistakenly hardcoding the halfop prefix char in timedbans.
This will almost always be % but if the server admin is using the
customprefix module and remaps it to something else messages will
not be sent out correctly.
Adam [Mon, 20 Mar 2017 13:35:13 +0000 (09:35 -0400)]
m_ldapauth: fix providing username in PASS
This has never worked because it never prepended attribute= to the
search string. It also would prefer matching nick/ident over the user
string provided which is inconsistent, since your ability to
authenticate using PASS would depend on a ldap entry not existing with
your current nick/ident.
Instead, use username provided in PASS and then fallback to nick/ident.