@@ -0,0 +1,1150 @@
+from txircd.modbase import Module%0A%0Aclass UserhostInNames(Module):%0A%09def namesListEntry(self, user, channel, listingUser, representation):%0A%09%09return %22%7B%7D!%7B%7D@%7B%7D%22.format(representation, listingUser.username, listingUser.hostname)%0A%09%0A%09def capRequest(self, user, capability):%0A%09%09return True%0A%09%0A%09def capAcknowledge(self, user, capability):%0A%09%09return False%0A%09%0A%09def capRequestRemove(self, user, capability):%0A%09%09return True%0A%09%0A%09def capAcknowledgeRemove(self, user, capability):%0A%09%09return False%0A%09%0A%09def capClear(self, user, capability):%0A%09%09return True%0A%0Aclass Spawner(object):%0A%09def __init__(self, ircd):%0A%09%09self.ircd = ircd%0A%09%09self.userhost_in_names = None%0A%09%0A%09def spawn(self):%0A%09%09self.userhost_in_names = UserhostInNames().hook(self.ircd)%0A%09%09if %22cap%22 not in self.ircd.module_data_cache:%0A%09%09%09self.ircd.module_data_cache%5B%22cap%22%5D = %7B%7D%0A%09%09self.ircd.module_data_cache%5B%22cap%22%5D%5B%22userhost-in-names%22%5D = self.userhost_in_names%0A%09%09return %7B%0A%09%09%09%22actions%22: %7B%0A%09%09%09%09%22nameslistentry%22: %5Bself.userhost_in_names.namesListEntry%5D%0A%09%09%09%7D%0A%09%09%7D%0A%09%0A%09def cleanup(self):%0A%09%09self.ircd.actions%5B%22nameslistentry%22%5D.remove(self.userhost_in_names.namesListEntry)%0A%09%09del self.ircd.module_data_cache%5B%22cap%22%5D%5B%22userhost-in-names%22%5D

Implement the somehow not-yet-standardized userhost-in-names capability