Development/Roadmap/2.0

From the makers of InspIRCd.
Jump to: navigation, search

See Roadmap for features planned or implemented in later versions.

Finished in 2.0

  • New modules
    • m_autoop - basic channel access control via the +w listmode (+w o:R:Brain will op anyone with the account "Brain" on join)
    • m_chanhistory - replay last N lines of messages on join
    • m_channames - Bug.png Bug #883: Module to disable certain characters in channel names, can be annoying due to colourcodes etc.
    • m_customprefix - Allows the creation of custom channel prefixes such as +V. Can replace m_halfop and m_chanprotect.
    • m_delaymsg - prevent messaging immediately on join
    • m_exemptchanops - Channel mode +X, per-channel list of modes that do not enforce their limits on channel ops
    • m_halfop - halfop is now a module; core no longer references halfop on error messages if not loaded.
    • m_namedmodes - display of long-form names for all currently set modes, and allow set/unset via these long names (part of future planned optional letters for some modes)
    • m_ojoin - OJOIN "network buisness" join alternative to operoverride
    • m_passforward - Forward server password to nickserv on connect
  • Removed modules
    • m_antibear, m_antibottler, m_invisible - moved to third-party
    • m_operinvex - merged with m_opermodes
    • m_rpc_json and m_rpctest - removed (did not provide any user-visible services)
    • m_safelist - not needed with the new flexible sendQ
    • m_spy - not needed with permissions introduced in 1.2
    • m_sqlutils - not needed with SQLv3 (did not provide any user-visible services)
    • m_sqllog - removed; hard-coded logging interface which should be in third-party, and was not converted to SQLv3
    • m_ziplink - removed; not needed as SSL links provide compression and encryption
  • Extended ban improvements
    • Stacking of "action" and "match" types - this allows "+b m:r:*bot*" to mute all users with "bot" in gecos
    • Bug.png Bug #752: Allow all matching extbans to be used in invex
    • Add channel status to channelban, so that +e j:@#foo can exempt ops in #foo only
  • <autoconnect> block: simplify chained failovers, and prevent some possible incorrect hub creation -- related to Bug.png Bug #689: Looping failovers can cause bad issues
  • SendQ/RecvQ improvements
    • Allow command flood parameters to be set (<connect commandrate="2000" threshold="10" fakelag="yes"> allows 2 commands per second, with a burst of up to 10 before fakelag is applied)
    • split sendq limit into soft/hard limits, where the user is prevented from issuing commands if they are over the soft limit
    • Eliminates the need for SAFELIST by allowing much higher hard limit without allowing users to abuse the server by flooding themselves.
    • Faster internal management of queues (fewer copies, edge-triggered epoll)
  • motd, rules, and other files can be pulled from executable output with <execfiles> - Bug.png Bug #539
  • Connect block improvements
    • Bug.png Bug #795: <connect:modes> doesn't check all connect tag attributes
    • Bug.png Bug #768: Way to specify requireident/requiressl for <connect> blocks (and requireaccount for SASL)
    • Allow <connect> blocks with duplicate masks (just differing ports or other criteria) and with no mask (for use in <oper class="">/<type class="">)
    • Allow DNSBL and GEOIP to do matching to connect blocks
    • Allow motd/rules files to be specified in connect block
  • New cloaking modes that give shorter hex strings with more granularity (especially with IPv6)
  • Bug.png Bug #683: option to zline on rline match
  • Remove SID from /map for non-opers.
  • Bug.png Bug #675: seperate spy channels in whois
  • Optional variable substitution of XML entities (&foo;) in configuration using <define name="foo" value="bar">
  • Be able to override opertype fields for individual opers using <oper vhost="" class="" ...>
  • Improve directory structure on installation
    • Support system-wide installation as root
    • All paths are relative to the running directory, not config or bin
    • Object file location can be specified for read-only source tree or in-place compile/install
  • Bug.png Bug #676: send module load/unload notifications to other servers
  • Proper dependency checking in the build system; remove ./configure -modupdate
  • Correct mode merging on netburst
  • New SQL API that allows multiple SQL modules to be loaded
    • Allow m_sqloper to specify a query string to determine oper host/type from username/password/userinfo
  • Fully IPv4/IPv6-independent code
    • <bind address="*"> will bind to both IPv4 and IPv6, if your OS supports it. Use <bind address="::"> and <bind address="0.0.0.0"> to bind to wildcard addresses on IPv6 and IPv4 alone.
  • Protocol enhancements
    • Negotiated backwards compatibility for linking to 1.2 servers/services
    • Allow modules to specify how their commands should be routed
    • Use ENCAP for most module commands so we have fewer forced capabilities
      • Modules using only ENCAP and METADATA can mark themselves VF_OPTCOMMON so that it is possible to load them on only part of the network
    • SAVE for nick collisions (fix complex handling of SVSNICK)
    • AWAY time notification: :AAAAAAAA AWAY 123456789 :away message here
  • Unify cmd_*.so and m_*.so interfaces so that we don't need two codepaths for that. Eliminates /RELOAD, use /RELOADMODULE cmd_nick.so
  • Channel::GetStatus() includes all prefixes, so you can notice ~#chan, and +q implies +a implies +o
  • Internal changes
    • Clarify module hook return values by changing from -1/0/1 to ModResult
    • Development/ChannelMembership Channel membership object
    • Development/ExtensionItem Registration and automatic cleanup of Extensible extensions
    • Configuration tags and other common objects are reference counted
    • User class is split between local/remote
    • Replace the ubiquitous ServerInstance pointers with references to the Module creating an object
    • Automatic cleanup of module-added services - must use init() to register.