Wazakindjes c308abf4b4 m_listrestrict/topicgreeting: Unreal 4.2.1 changes handling of max topic length, so added compatibility =] 5 months ago
..
README.md 2890d8a417 [NOAVY] Readme grammar lol 7 months ago
m_block_nosslident.c ed387f53bf For all modules: added a license/credits thingy at ze top and cleaned up unused variables xd 11 months ago
m_mafiareturns.c 7f56bf20ce For a load of modules: free struct members in MOD_UNLOAD as well for good measure, also changed some error strings to be consistent with all the rest 8 months ago
m_nicksuffix.c ed387f53bf For all modules: added a license/credits thingy at ze top and cleaned up unused variables xd 11 months ago
m_nopmchannel.c fa6863fbe7 spec/m_nopmchannel.c: Prevents users sharing a channel from privately messaging each other 7 months ago
m_signore.c ed387f53bf For all modules: added a license/credits thingy at ze top and cleaned up unused variables xd 11 months ago
m_topicgreeting.c c308abf4b4 m_listrestrict/topicgreeting: Unreal 4.2.1 changes handling of max topic length, so added compatibility =] 5 months ago

README.md

As you're probably already aware, the folder's name spec means special request. ;] These modules pretty much cater to edge cases, so they're likely not very useful to you. Feel free to czech 'em out of course. =]

The same important notes from the main README (at the top) also apply here

Index lol

Module Description
m_nopmchannel Prevents users sharing a channel from privately messaging each other
m_topicgreeting Greet users who join a channel by changing the topic (channel mode +g)
m_mafiareturns Improves MafiaReturns chat functionality
m_signore Implements an I:Line for adding server-side ignores
m_block_nosslident Restrict certain idents to SSL connections only
m_nicksuffix Restrict /nick usage to suffixing your base nick

m_nopmchannel

A request by westor, this module is p much the opposite of my m_message_commonchans in that it prevents users from privately messaging each other if they share a specific channel. There are a few exceptions (as usual ;]):

  • People with any of the +hoaq access modes, as well as U:Lined users (e.g. BotServ bots), can send and receive normally to/from all channel members
  • IRC opers can always send to other members but not receive, unless they have one of above-mentioned access modes

Config block:

nopmchannel {
    name "#somechannel";
    name "#another";
    // More go here
};

I went with a config block instead of a channel mode because the module imposes restrictions on user-to-user communications, which is more of a network thing instead of channel-level. ;]

m_topicgreeting

X-Seti asked for a module that changes a channel's topic to greet someone who just joined. This module implements channel mode +g so you can set that shit on a per-channel basis. =]

U:Lines such as NickServ or ButtServ channel bots won't trigger this of course. ;]

m_mafiareturns

Requested by IzzyCreamcheese, this module improves upon his website's chat functionality.

Config block:

mafiareturns {
    channels "#chan1, #chan2";
    tag "[MR]";
    position back;
};

The position can be either back or front, the meaning of which should be pretty clear. =] If a user's nick matches the tag at position, the module will prevent them from changing their nick or parting any of the channels listed in channels and notices them about it (shit like /part #somechan,#chan1 will be rewritten to /part #somechan too). Servers, U:Lines and opers etc are exempt for obvious raisins. ;]

The directives channels and tag are required, position will fall back to back if it's omitted or contains an invalid value.

m_signore

Requested by Jellis and Stanley. This module allows privileged opers to set a server-side ignore of sorts, making 2 users' messages invisible to each other (in private only tho, just muteban them if they shitpost in-channel or something). Servers, U:Lines and opers are exempt for obvious raisins.

Expiring these so-called I:Lines is done with an EVENT thingy in Unreal, which is set to run every 10 seconds. This means if you set an ignore for 5 seconds (why would you anyways?) it may not expire after eggzacktly 5 seconds. ;] When no expiration is specified the value in set::default-bantime is used. Every server checks the expirations themselves. =] Also, they store it in a ModData struct so it persists through a rehash without the need for a .db fiel. ;] Furthermore, they sync their known I:Lines upon server linkage. =]] Other lines such as G:Lines, Z:Lines are also stored in memory and get resynced during a link so these are pretty similar aye.

Config block:

operclass netadmin-signore {
    parent netadmin;
    privileges {
        signore;
    };
};

Syntax:
SIGNORE [-]<ident@host> <ident2@host2> [expire] <reason>

Also supports the alias ILINE. The first 2 arguments may also be online nicknames, they will be resolved to their respective full mask. =] Wildcards * and ? are also supp0rted. Masks cannot overlap each other (e.g. som*@* and s*@*).

m_block_nosslident

Another request by Celine. =] Blocks certain idents from connecting if they're using a plain port (so without SSL/TLS lol). As it supports wildcards too, it doesn't take into account the maximum ident length (USERLEN, which is 10 by default). ;]

Config block:

block_nosslident {
    ident "*ayy*";
    ident "someident";
    // More go here
};

m_nicksuffix

Requested by Celine, this module prevents people from doing /nick <anything here>. Rather, it suffixes the "original" nick (the one on connect) with what the user specifies. There's also a special "nick" to revert back to the original one. ;] The module also comes with a new config block, which is required.

Updated shit:

  • Now also disallows new users connecting with the separator somewhere in their nick =]

Config block:

nicksuffix {
    separator "|";
    restore "me";
};

The separator can be one of the following characters: -_[]{}\|
The other directive is so when people do /nick me they'll revert back to what they had on connect. It can be anything you want, as long as Unreal sees it as a valid nick.