gist/irc/atheme/cstemplate.bash

85 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# This script generates commands which can be copy-pasted to Atheme's
# ChanServ to set templates which can later be set with flags.
# With these templates, bots and ops are opped and (trusted) users are
# voiced. I am not fully sure where I took the word "users", but it's good
# enough.
## ChanServ settings
# Allows everyone to see ACL changes.
echo "/cs set $1 VERBOSE ON"
# Tell ChanServ to be on channel. Not needed for larger channels
echo "/cs set $1 GUARD ON"
# Adjusts ChanServ MLOCK
# This list should work with Charybdis and mostly with InspIRCd, g has
# different meaning there and won't be set.
# * n — no external messages, you must be on the channel to message it.
# * t — you must be hop or higher to change topic
# !* g — anyone can /invite
# * InspIRCd: +g blocks messages matching the given glob mask - if
# empty not set, I think
# * C — block CTCPs to channel
# !* A — InspIRCd: anyone can /invite
# * Charybdis: Admin-only, but this MLOCK does nothing to me, so I am
# * ignoring it.
# * T — InspIRCd: blocks notices from users who aren't at least HOP
#
# * i — invite-only
# * l — limit maximum number of people on the channel
# * k — key/password for joining the channel
# Other nice modes (not set by this script): Charybdis +rS / InspIRCd: +Rz
# (only identified, SSL users can join)
# InspIRCd: +M blocks messages from unidentified users.
# To remove MLOCK "/cs set #channel MLOCK"
# THIS DOES NOT SET MODES MARKED WITH ! AS THAT CAN BE DANGEROUS DEPENDING
# ON NETWORK! mlock +A on Charybdis with specific module prevents you from
# joining the channel
echo "/cs set $1 MLOCK +ntCT-ilk"
# Hide channel information from people who don't have +A
echo "/cs set $1 PRIVATE ON"
# Sync flags when they are changed
echo "/cs set $1 NOSYNC OFF"
# Allow only identified users to be opped
echo "/cs set $1 SECURE ON"
# Allow only users with +t flag to change topic
echo "/cs set $1 TOPICLOCK ON"
## ChanServ templates
# Channel founder who can do anything they want.
echo "/cs template $1 founder !+*F"
# Successor will get all flags in the end and if they cannot be trusted
# with them now, they really shouldn't be successor.
echo "/cs template $1 successor !+*S"
# Super op, be able to do everything with services
echo "/cs template $1 sop !+vVhHoOasirRftAe"
# Normal op, be able to invite, invite, kick, kickban, unban, change topic
echo "/cs template $1 op !+vVhHoOirtAe"
# Half op, be able to do everything else than kick other halfops & higher
echo "/cs template $1 hop !+vVhHirtAe"
# Network operator whom we want to have a little access so they can help
# with channel issues in case our own ops are away.
# Usually given to $OPER or staffer hostmask.
echo "/cs template $1 oper !+vhoirtAe"
# User who is just allowed to voice themselves and get into the channel
# unless they are banned.
echo "/cs template $1 user !+ViA"
# Permanent ban. Removes all flags and sets autokick.
echo "/cs template $1 ban !-*+b"
# Access, can only get in to (RESTRICTED) channel
echo "/cs template $1 access !-*+i"