1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
#
# Fantasy settings:
#
#<fantasy prefix="!" allowbots="no">
#
# prefix:
# Set the prefix for in-channel aliases (fantasy commands) to the
# specified character. If not set, the default is "!".
# allowbots:
# If this is set to no, +B clients will not be able to use fantasy
# commands. If not set, the default is no.
#
#-#-#-#-#-#-#-#-#-#-#- ALIAS DEFINITIONS -#-#-#-#-#-#-#-#-#-#-#-#-#-#
# #
# If you have the m_alias.so module loaded, you may also define #
# aliases as shown below. They are commonly used to provide shortcut #
# commands to services, however they are not limited to just this use.#
# An alias tag requires the following values to be defined in it: #
# #
# text - The text to detect as the actual command line, #
# Cant contain spaces, but case insensitive. #
# You may have multiple aliases with the same #
# command name (text="" value), however the first #
# found will be executed if its format value is #
# matched, or it has no format value. Aliases are #
# read from the top of the file to the bottom. #
# #
# usercommand - If this is true, the alias can be run simply as #
# /aliasname. Defaults to true. #
# #
# channelcommand - If this is true, the alias can be used as an #
# in-channel alias or 'fantasy command', prefixed #
# by the fantasy prefix character, !aliasname by #
# default. Defaults to false. #
# #
# format - If this is defined, the parameters of the alias #
# must match this glob pattern. For example if you #
# want the first parameter to start with a # for #
# the alias to be executed, set format="#*" in the #
# alias definition. Note that the :'s which are #
# part of IRC formatted lines will be preserved #
# for matching of this text. This value is #
# optional. #
# #
# replace - The text to replace 'text' with. Usually this #
# will be "PRIVMSG ServiceName :$2-" or similar. #
# You may use the variables $1, $2, ... in the #
# replace string, which refer to the words in the #
# the original string typed by the user. You can #
# also use $1- to refer to the first word onward. #
# For example, "foo bar baz qux quz" will cause #
# $3- to hold "baz qux quz" and $2 to hold "bar". #
# You may also use any special variables defined #
# for users ($nick, $host, $ip, $gecos, $ident, #
# $server, $uuid), and $chan if a channel command. #
# Separate multiple commands with a newline (which #
# can be written in the file literally, or encoded #
# as &nl; or \n depending on the config format). #
# #
# requires - If you provide a value for 'requires' this means #
# the given nickname MUST be online for the alias #
# to successfully trigger. If they are not, then #
# the user receives a 'no such nick' 401 numeric. #
# #
# uline - Defining this value with 'yes', 'true' or '1' #
# will ensure that the user given in 'requires' #
# must also be on a u-lined server, as well as #
# actually being on the network. If the user is #
# online, but not on a u-lined server, then an #
# oper-alert is sent out as this is possibly signs #
# of a user trying to impersonate a service. #
# #
# operonly - Defining this value, with a value of 'yes', '1' #
# or true will make the alias oper only. If a non- #
# oper attempts to use the alias, it will appear #
# to not exist. #
# #
#<alias text="NICKSERV" replace="PRIVMSG NickServ :$2-" requires="NickServ" uline="yes">
#<alias text="CHANSERV" replace="PRIVMSG ChanServ :$2-" requires="ChanServ" uline="yes">
#<alias text="OPERSERV" replace="PRIVMSG OperServ :$2-" requires="OperServ" uline="yes" operonly="yes">
#<alias text="BOTSERV" replace="PRIVMSG BotServ :$2-" requires="BotServ" uline="yes">
#<alias text="HOSTSERV" replace="PRIVMSG HostServ :$2-" requires="HostServ" uline="yes">
#<alias text="MEMOSERV" replace="PRIVMSG MemoServ :$2-" requires="MemoServ" uline="yes">
#<alias text="NS" replace="PRIVMSG NickServ :$2-" requires="NickServ" uline="yes">
#<alias text="CS" replace="PRIVMSG ChanServ :$2-" requires="ChanServ" uline="yes">
#<alias text="OS" replace="PRIVMSG OperServ :$2-" requires="OperServ" uline="yes" operonly="yes">
#<alias text="BS" replace="PRIVMSG BotServ :$2-" requires="BotServ" uline="yes">
#<alias text="HS" replace="PRIVMSG HostServ :$2-" requires="HostServ" uline="yes">
#<alias text="MS" replace="PRIVMSG MemoServ :$2-" requires="MemoServ" uline="yes">
#
# An example of using the format value to create an alias with two
# different behaviours depending on the format of the parameters.
#
#<alias text="ID" format="#*" replace="PRIVMSG ChanServ :IDENTIFY $2 $3"
# requires="ChanServ" uline="yes">
#
#<alias text="ID" replace="PRIVMSG NickServ :IDENTIFY $2"
# requires="NickServ" uline="yes">
#
# This alias fixes a glitch in xchat 2.6.x and above and the way it
# assumes IDENTIFY must be prefixed by a colon (:) character. It should
# be placed ABOVE the default NICKSERV alias (the first example) listed
# above.
#
#<alias text="NICKSERV" format=":IDENTIFY *" replace="PRIVMSG NickServ :IDENTIFY $3-"
# requires="NickServ" uline="yes">
#
# You may also add aliases to trigger based on something said in a
# channel, aka 'fantasy' commands, configured in the same manner as any
# other alias, with usercommand="no" and channelcommand="yes" The
# command must be preceded by the fantasy prefix when used.
#
#<alias text="CS" usercommand="no" channelcommand="yes"
# replace="PRIVMSG ChanServ :$1 $chan $2-" requires="ChanServ" uline="yes">
#
# This would be used as "!cs <command> <options>", with the channel
# being automatically inserted after the command in the message to
# ChanServ, assuming the fantasy prefix is "!".
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Services support module: Adds account tracking support.
#
# This module implements the 'identified' state via account names (AC)
# and is similar in operation to the way asuka and ircu handle services.
#
# Prior to 2.1, the functionality of m_account_flags and m_account_modes
# was included in this module; you probably want to load those too.
#<module name="m_services_account.so">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Legacy registration flags module
# This offers +r for users and channels to mark them as identified
# seperately from the idea of a master account, which can be useful for
# services which are heavily nick-as-account centric.
#
# If your services package does not use +r, this module is not required.
#<module name="m_account_flags.so">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# User and channel modes related to accounts.
#
# User mode +R unidentified users cannot message
# Channel mode +R unidentified users cannot join
# Channel mode +M unidentified users cannot message
# Extban R: match users based on account name
#
# Note that the extban "M:" from 1.2 can be implemented using muteban
# and extban R like "+b m:R:name"
#
# If you use accounts, you will likely find this module useful.
#<module name="m_account_modes.so">
|