** DarkFire IRCd ** Beginning in df-1.3.5, there are now two types of I:line configurations. At the top of this document, the "new" operation is described and is enabled per default. However, you may revert to the old operation if you wish. In both new and old configurations, if the ipmask/hostname contains a '@', the ident will be compared. Otherwise, if just an ipmask or hostmask is specified, the ident will not be factored into the comparison. New I:line Operation (RECOMMENDED) ---------------------------------- I:ipmask:[password]:hostmask:[port]:class In order to find a match, ircd loops through ALL of the I:lines to find the must suitable one for the user (the match with the highest class). In order to find a match, the ircd does the following: - Compare the port (if applicable) of the I:line to the port the client is using (Skip I:line if not ok) - Check the class of the I:line * If a match has already been found with a higher class, skip this - Validate the I:line * If the ipmask contains the word "host" or is *@*, match the user's hostname to the hostmask + If no hostname, there is no match * Match the ipmask against the user's IP + If the hostmask contains the word "ip" or is *@*, match confirmed + If the is no hostname for the user (and hostmask is not "ip" or empty, no match) + If the hostmask matches the hostname, match confirmed * If a match is confirmed, store the I:line as the temporary match - Check all other I:lines to see if there is a better match (class) - Return the I:line of best fit Note: If a match is made based on IP, a hostname exists, and the hostmask is set to "ip" (thus only base on IP), the sockhost will now reflect the client's resolved hostname. Old I:line Operation -------------------- This will only be used if OLD_ILINES is enabled. I:ipmask:[password]:hostmask:[port]:class When a client connects, the I:lines are read "from the bottom up", this the one that is lowest in your ircd.conf is compared first. In order to find a match, ircd does the following: - Compare the port (if applicable) of the I:line to the port the client is conneted on (Skip if not ok) - Compare the resolved hostname to the hostmask in the I:line. (Attach if ok) This will cause the client's sockhost to reflect its dns - Compare the IP address to the ipmask in the I:line. (Attach if ok) This will cause the client's sockhost to reflect its IP address - Compare next I:line (if not attached) ...