diff --git a/README.md b/README.md index 31cbb20..c85fa62 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,8 @@ Support for these IRCds exist, but are not tested as frequently and thoroughly. * [ircd-ratbox](http://www.ratbox.org/) (3.x) - module `ratbox` - Host changing is not supported on ircd-ratbox. - On ircd-ratbox, all known IPs of users will be shown in `/whois`, even if the client is a cloaked relay client: if you're paranoid about this, turn off Relay IP forwarding by setting the `relay_no_ips` option in the ratbox network's `server:` block. +* [IRCu](http://coder-com.undernet.org/) (u2.10.12.16+) - module `p10` + - Host changing is not supported. * [juno-ircd](https://github.com/cooper/yiria) (11.x / janet) - module `ts6` (see [configuration example](https://github.com/cooper/juno/blob/master/doc/ts6.md#pylink)) * [snircd](https://development.quakenet.org/) (1.3.x+) - module `p10` - Outbound host changing (i.e. for the `changehost` plugin) is not supported on P10 variants other than Nefarious. diff --git a/example-conf.yml b/example-conf.yml index 0c71a83..11a213f 100644 --- a/example-conf.yml +++ b/example-conf.yml @@ -280,7 +280,7 @@ servers: # For other P10 IRCds, this should be set to FALSE. use_extended_accounts: true - # Sets the IRCd type. The following options are supported here: 'nefarious', 'snircd', and + # Sets the IRCd type. The following options are supported here: 'nefarious', 'snircd', 'ircu', and # 'generic'. This defaults to 'nefarious'. # With this key set to 'nefarious', FAKE (external vHost changing) and SETHOST (host changing # for PyLink / relay clients) are enabled, along with a set of modes tailored to Nefarious. @@ -288,8 +288,11 @@ servers: # With this key set to 'snircd', SETHOST and a set of modes tailored to snircd are enabled. # vHost changing of other users (e.g. via the changehost plugin) is not supported. + # With this key set to 'ircu', a set of modes tailored to IRCu is enabled. + # vHost changing is not supported. + # With this key set to 'generic', neither of these host changing features are enabled - # and a baseline RFC1459 mode set is used. + # and a baseline RFC1459 mode set is used. This configuration is not officially supported. #p10_ircd: nefarious # Determines whether account-based cloaks should be used (someone.users.yournet.org diff --git a/protocols/p10.py b/protocols/p10.py index 40c7229..f4b79e2 100644 --- a/protocols/p10.py +++ b/protocols/p10.py @@ -799,14 +799,21 @@ class P10Protocol(IRCS2SProtocol): cmodes = {'oplevel_apass': 'A', 'oplevel_upass': 'U', 'delayjoin': 'D', 'regonly': 'r', 'had_delayjoin': 'd', 'hidequits': 'u', 'regmoderated': 'M', 'blockcolor': 'c', 'noctcp': 'C', 'nonotice': 'N', 'noamsg': 'T', - '*A': 'b', '*B': 'AUk', '*C': 'l', '*D': 'imnpstrDrducCMNT'} + '*A': 'b', '*B': 'AUk', '*C': 'l', '*D': 'imnpstrDducCMNT'} # From https://www.quakenet.org/help/general/what-user-modes-are-available-on-quakenet # plus my own testing. self.irc.umodes.update({'servprotect': 'k', 'sno_debug': 'g', 'cloak': 'x', 'hidechans': 'n', 'deaf': 'd', 'hideidle': 'I', 'regdeaf': 'R', 'override': 'X', 'registered': 'r', 'cloak_sethost': 'h', 'locop': 'O', - '*A': '', '*B': '', '*C': 'h', '*D': 'imnpstrkgxndIRXrO'}) - + '*A': '', '*B': '', '*C': 'h', '*D': 'imnpstrkgxndIRXO'}) + elif p10_ircd == 'ircu': + # ircu proper has even fewer modes. + cmodes = {'oplevel_apass': 'A', 'oplevel_upass': 'U', 'delayjoin': 'D', 'regonly': 'r', + 'had_delayjoin': 'd', 'blockcolor': 'c', 'noctcp': 'C', + '*A': 'b', '*B': 'AUk', '*C': 'l', '*D': 'imnpstrDdRcC'} + self.irc.umodes.update({'servprotect': 'k', 'sno_debug': 'g', 'cloak': 'x', + 'deaf': 'd', 'registered': 'r', 'locop': 'O', + '*A': '', '*B': '', '*C': '', '*D': 'imnpstrkgxdrO'}) if self.irc.serverdata.get('use_halfop'): cmodes['halfop'] = 'h'