mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	Enable WHOIS to display information about IRC Services
This patch introduces the new numeric 310(RPL_WHOISSERVICE) and enables WHOIS to display information about IRC services. This numeric is used for this purpose by InspIRCd, for example -- but as usual, other numerics are in use, too, like 613 in UltimateIRCd ... Please note that neither the Operator (+o) not the "bot status" (+B) of an IRC service id displayed in the output. Change suggested by Federico G. Schwindt <fgsch@lodoss.net>, Thanks.
This commit is contained in:
		| @@ -1133,14 +1133,20 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c) | |||||||
| 			return DISCONNECTED; | 			return DISCONNECTED; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/* Service? */ | ||||||
|  | 	if (Client_Type(c) == CLIENT_SERVICE && | ||||||
|  | 	    !IRC_WriteStrClient(from, RPL_WHOISSERVICE_MSG, | ||||||
|  | 				Client_ID(from), Client_ID(c))) | ||||||
|  | 		return DISCONNECTED; | ||||||
|  |  | ||||||
| 	/* IRC-Operator? */ | 	/* IRC-Operator? */ | ||||||
| 	if (Client_HasMode(c, 'o') && | 	if (Client_HasMode(c, 'o') && Client_Type(c) != CLIENT_SERVICE && | ||||||
| 	    !IRC_WriteStrClient(from, RPL_WHOISOPERATOR_MSG, | 	    !IRC_WriteStrClient(from, RPL_WHOISOPERATOR_MSG, | ||||||
| 				Client_ID(from), Client_ID(c))) | 				Client_ID(from), Client_ID(c))) | ||||||
| 		return DISCONNECTED; | 		return DISCONNECTED; | ||||||
|  |  | ||||||
| 	/* IRC-Bot? */ | 	/* IRC-Bot? */ | ||||||
| 	if (Client_HasMode(c, 'B') && | 	if (Client_HasMode(c, 'B') && Client_Type(c) != CLIENT_SERVICE && | ||||||
| 	    !IRC_WriteStrClient(from, RPL_WHOISBOT_MSG, | 	    !IRC_WriteStrClient(from, RPL_WHOISBOT_MSG, | ||||||
| 				Client_ID(from), Client_ID(c))) | 				Client_ID(from), Client_ID(c))) | ||||||
| 		return DISCONNECTED; | 		return DISCONNECTED; | ||||||
| @@ -1262,7 +1268,8 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req ) | |||||||
| 		 */ | 		 */ | ||||||
| 		if (!has_wildcards || is_remote) { | 		if (!has_wildcards || is_remote) { | ||||||
| 			c = Client_Search(query); | 			c = Client_Search(query); | ||||||
| 			if (c && Client_Type(c) == CLIENT_USER) { | 			if (c && (Client_Type(c) == CLIENT_USER | ||||||
|  | 				  || Client_Type(c) == CLIENT_SERVICE)) { | ||||||
| 				if (!IRC_WHOIS_SendReply(Client, from, c)) | 				if (!IRC_WHOIS_SendReply(Client, from, c)) | ||||||
| 					return DISCONNECTED; | 					return DISCONNECTED; | ||||||
| 			} else { | 			} else { | ||||||
|   | |||||||
| @@ -56,6 +56,7 @@ | |||||||
| #define RPL_UNAWAY_MSG			"305 %s :You are no longer marked as being away" | #define RPL_UNAWAY_MSG			"305 %s :You are no longer marked as being away" | ||||||
| #define RPL_NOWAWAY_MSG			"306 %s :You have been marked as being away" | #define RPL_NOWAWAY_MSG			"306 %s :You have been marked as being away" | ||||||
| #define RPL_WHOISREGNICK_MSG		"307 %s %s :is a registered nick" | #define RPL_WHOISREGNICK_MSG		"307 %s %s :is a registered nick" | ||||||
|  | #define RPL_WHOISSERVICE_MSG		"310 %s %s :is an IRC service" | ||||||
| #define RPL_WHOISUSER_MSG		"311 %s %s %s %s * :%s" | #define RPL_WHOISUSER_MSG		"311 %s %s %s %s * :%s" | ||||||
| #define RPL_WHOISSERVER_MSG		"312 %s %s %s :%s" | #define RPL_WHOISSERVER_MSG		"312 %s %s %s :%s" | ||||||
| #define RPL_WHOISOPERATOR_MSG		"313 %s %s :is an IRC operator" | #define RPL_WHOISOPERATOR_MSG		"313 %s %s :is an IRC operator" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Alexander Barton
					Alexander Barton