anope-ng/anope.conf

1535 lines
44 KiB
Plaintext
Raw Normal View History

2024-11-02 04:43:28 +00:00
include
{
type = "file"
name = "/etc/anope/include.conf"
}
module { name = "inspircd" }
options
{
user = "anope"
group = "anope"
casemap = "ascii"
badpasslimit = 5
badpasstimeout = 1m
updatetimeout = 2m
expiretimeout = 30m
readtimeout = 5s
timeoutcheck = 3s
servicealias = yes
hidestatso = no
retrywait = 60s
hideprivilegedcommands = yes
hideregisteredcommands = yes
didyoumeandifference = 4
regexengine = "regex/stdlib"
languages = "de_DE.UTF-8 el_GR.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 nl_NL.UTF-8 pl_PL.UTF-8 pt_PT.UTF-8 tr_TR.UTF-8"
defaultlanguage = "en_US.UTF-8"
}
log
{
target = "/var/log/anope/services.log #services"
bot = "GLOBAL"
logage = 7
admin = "*"
override = "chanserv/* nickserv/* memoserv/set ~botserv/set botserv/*"
commands = "~operserv/* *"
servers = "*"
channels = "~mode *"
users = "connect disconnect nick"
other = "*"
rawio = no
debug = no
}
log
{
bot = "GLOBAL"
target = "globops"
admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
servers = "squit"
users = "oper"
other = "expire/* bados akill/*"
}
opertype
{
name = "Helper"
commands = "hostserv/*"
}
opertype
{
name = "Services Operator"
inherits = "Helper, Another Helper"
commands = "chanserv/list chanserv/suspend chanserv/topic memoserv/staff nickserv/list nickserv/suspend operserv/mode operserv/chankill operserv/akill operserv/session operserv/modinfo operserv/sqline operserv/oper operserv/kick operserv/ignore operserv/snline"
privs = "chanserv/auspex chanserv/no-register-limit memoserv/* nickserv/auspex nickserv/confirm"
}
opertype
{
name = "Services Administrator"
inherits = "Services Operator"
commands = "botserv/* chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/noop operserv/forbid global/*"
privs = "*"
}
opertype
{
name = "Services Root"
commands = "*"
privs = "*"
}
module
{
name = "enc_sha2"
}
module
{
name = "enc_argon2"
}
module
{
name = "enc_bcrypt"
}
module { name = "enc_posix" }
module { name = "help" }
module
{
ip = 127.53.127.53
port = 53
name = "dns"
nameserver = "/etc/resolv.conf"
timeout = 2
}
module
{
name = "dnsbl"
check_on_connect = yes
check_on_netburst = yes
add_to_akill = yes
blacklist
{
name = "rbl.efnetrbl.org"
time = 4h
reason = "You are listed in the EFnet RBL, visit https://rbl.efnetrbl.org/?i=%i for info"
reply
{
code = 1
reason = "Open Proxy"
}
reply
{
code = 2
reason = "spamtrap666"
}
reply
{
code = 3
reason = "spamtrap50"
}
reply
{
code = 4
reason = "TOR"
allow_account = yes
}
reply
{
code = 5
reason = "Drones / Flooding"
}
}
blacklist
{
name = "dnsbl.dronebl.org"
time = 4h
reason = "You have a host listed in the DroneBL. For more information, visit https://dronebl.org/lookup_branded?ip=%i&network=%N"
}
exempt { ip = "127.0.0.0/8" }
}
module
{
name = "helpchan"
helpchannel = "#help"
}
module { name = "regex_posix" }
module
{
name = "regex_stdlib"
syntax = "ecmascript"
}
module { name = "regex_tre" }
module { name = "rewrite" }
command
{
service = "CHANSERV";
name = "CLEAR";
command = "rewrite"
rewrite = true
rewrite_source = "CLEAR $ USERS"
rewrite_target = "KICK $1 *"
rewrite_description = "Clears all users from a channel"
}
module { name = "sasl" }
module
{
name = "ssl_gnutls"
cert = "/etc/ssl/anope/server.crt"
key = "/etc/ssl/anope/server.key"
}
service
{
nick = "BOTSERV"
user = "_"
host = "services/_"
gecos = "Bot Service"
channels = "@#services"
alias = "BS"
}
module
{
name = "botserv"
client = "BOTSERV"
defaults = "greet fantasy"
minusers = 0
smartjoin = yes
botmodes = "ao"
}
command { service = "BOTSERV"; name = "HELP"; command = "generic/help"; }
module { name = "bs_assign" }
command { service = "BOTSERV"; name = "ASSIGN"; command = "botserv/assign"; }
command { service = "BOTSERV"; name = "UNASSIGN"; command = "botserv/unassign"; }
command { service = "BOTSERV"; name = "SET NOBOT"; command = "botserv/set/nobot"; permission = "botserv/set/nobot"; }
module
{
name = "bs_autoassign"
bot = "CHANSERV"
}
module
{
name = "bs_badwords"
badwordsmax = 1024
casesensitive = yes
}
command { service = "BOTSERV"; name = "BADWORDS"; command = "botserv/badwords"; }
module { name = "bs_bot" }
command { service = "BOTSERV"; name = "BOT"; command = "botserv/bot"; permission = "botserv/bot"; }
module { name = "bs_botlist" }
command { service = "BOTSERV"; name = "BOTLIST"; command = "botserv/botlist"; }
module { name = "bs_control" }
command { service = "BOTSERV"; name = "ACT"; command = "botserv/act"; }
command { service = "BOTSERV"; name = "SAY"; command = "botserv/say"; }
module { name = "bs_info" }
command { service = "BOTSERV"; name = "INFO"; command = "botserv/info"; }
module
{
name = "bs_kick"
keepdata = 10m
gentlebadwordreason = yes
}
command { service = "BOTSERV"; name = "KICK"; command = "botserv/kick"; }
command { service = "BOTSERV"; name = "KICK AMSG"; command = "botserv/kick/amsg"; }
command { service = "BOTSERV"; name = "KICK BADWORDS"; command = "botserv/kick/badwords"; }
command { service = "BOTSERV"; name = "KICK BOLDS"; command = "botserv/kick/bolds"; }
command { service = "BOTSERV"; name = "KICK CAPS"; command = "botserv/kick/caps"; }
command { service = "BOTSERV"; name = "KICK COLORS"; command = "botserv/kick/colors"; }
command { service = "BOTSERV"; name = "KICK FLOOD"; command = "botserv/kick/flood"; }
command { service = "BOTSERV"; name = "KICK ITALICS"; command = "botserv/kick/italics"; }
command { service = "BOTSERV"; name = "KICK REPEAT"; command = "botserv/kick/repeat"; }
command { service = "BOTSERV"; name = "KICK REVERSES"; command = "botserv/kick/reverses"; }
command { service = "BOTSERV"; name = "KICK UNDERLINES"; command = "botserv/kick/underlines"; }
command { service = "BOTSERV"; name = "SET DONTKICKOPS"; command = "botserv/set/dontkickops"; }
command { service = "BOTSERV"; name = "SET DONTKICKVOICES"; command = "botserv/set/dontkickvoices"; }
module { name = "bs_set" }
command { service = "BOTSERV"; name = "SET"; command = "botserv/set"; }
command { service = "BOTSERV"; name = "SET BANEXPIRE"; command = "botserv/set/banexpire"; }
command { service = "BOTSERV"; name = "SET PRIVATE"; command = "botserv/set/private"; permission = "botserv/set/private"; }
module { name = "greet" }
command { service = "BOTSERV"; name = "SET GREET"; command = "botserv/set/greet"; }
command { service = "NICKSERV"; name = "SET GREET"; command = "nickserv/set/greet"; }
command { service = "NICKSERV"; name = "SASET GREET"; command = "nickserv/saset/greet"; permission = "nickserv/saset/greet"; }
privilege
{
name = "GREET"
desc = _("Greet message displayed on join")
rank = 40
level = 5
flag = "g"
xop = "AOP"
}
module
{
name = "fantasy"
fantasycharacter = "?"
}
command { service = "BOTSERV"; name = "SET FANTASY"; command = "botserv/set/fantasy"; }
fantasy { name = "ACCESS"; command = "chanserv/access"; }
fantasy { name = "AKICK"; command = "chanserv/akick"; }
fantasy { name = "AOP"; command = "chanserv/xop"; }
fantasy { name = "BAN"; command = "chanserv/ban"; }
fantasy { name = "CLONE"; command = "chanserv/clone"; }
fantasy { name = "DEHALFOP"; command = "chanserv/modes"; }
fantasy { name = "DEOP"; command = "chanserv/modes"; }
fantasy { name = "DEOWNER"; command = "chanserv/modes"; }
fantasy { name = "DEPROTECT"; command = "chanserv/modes"; }
fantasy { name = "DEVOICE"; command = "chanserv/modes"; }
fantasy { name = "DOWN"; command = "chanserv/down"; }
fantasy { name = "ENFORCE"; command = "chanserv/enforce"; }
fantasy { name = "ENTRYMSG"; command = "chanserv/entrymsg"; }
fantasy { name = "FLAGS"; command = "chanserv/flags"; }
fantasy { name = "HALFOP"; command = "chanserv/modes"; }
fantasy { name = "HELP"; command = "generic/help"; prepend_channel = false; }
fantasy { name = "HOP"; command = "chanserv/xop"; }
fantasy { name = "INFO"; command = "chanserv/info"; prepend_channel = false; }
fantasy { name = "INVITE"; command = "chanserv/invite"; }
fantasy { name = "K"; command = "chanserv/kick"; }
fantasy { name = "KB"; command = "chanserv/ban"; }
fantasy { name = "KICK"; command = "chanserv/kick"; }
fantasy { name = "LEVELS"; command = "chanserv/levels"; }
fantasy { name = "LIST"; command = "chanserv/list"; prepend_channel = false; }
fantasy { name = "LOG"; command = "chanserv/log"; }
fantasy { name = "MODE"; command = "chanserv/mode"; }
fantasy { name = "MUTE"; command = "chanserv/ban"; kick = no; mode = "QUIET"; }
fantasy { name = "OP"; command = "chanserv/modes"; }
fantasy { name = "OWNER"; command = "chanserv/modes"; }
fantasy { name = "PROTECT"; command = "chanserv/modes"; }
fantasy { name = "QOP"; command = "chanserv/xop"; }
fantasy { name = "SEEN"; command = "chanserv/seen"; prepend_channel = false; }
fantasy { name = "SOP"; command = "chanserv/xop"; }
fantasy { name = "STATUS"; command = "chanserv/status"; }
fantasy { name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; }
fantasy { name = "SYNC"; command = "chanserv/sync"; }
fantasy { name = "TOPIC"; command = "chanserv/topic"; }
fantasy { name = "UNBAN"; command = "chanserv/unban"; }
fantasy { name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; }
fantasy { name = "UP"; command = "chanserv/up"; }
fantasy { name = "VOICE"; command = "chanserv/modes"; }
fantasy { name = "VOP"; command = "chanserv/xop"; }
service
{
nick = "CHANSERV"
user = "_"
host = "services/_"
gecos = "Channel Registration Service"
channels = "@#services"
}
module
{
name = "chanserv"
client = "CHANSERV"
defaults = "keeptopic peace securefounder signkick"
maxregistered = 20
expire = 32y
accessmax = 1000
inhabit = 1m
opersonly = no
nomlock = "P"
require = "r"
reasonmax = 200
signkickformat = "%m (%n)"
disallow_hostmask_access = false
disallow_channel_access = false
always_lower_ts = false
}
privilege
{
name = "ACCESS_CHANGE"
desc = _("Allowed to modify the access list")
rank = 0
level = 10
flag = "f"
xop = "SOP"
}
privilege
{
name = "ACCESS_LIST"
desc = _("Allowed to view the access list")
rank = 10
level = 3
flag = "f"
xop = "VOP"
}
privilege
{
name = "AKICK"
desc = _("Allowed to use the AKICK command")
rank = 250
level = 10
flag = "K"
xop = "SOP"
}
privilege
{
name = "ASSIGN"
desc = _("Allowed to assign/unassign a bot")
rank = 270
level = "founder"
flag = "s"
xop = "QOP"
}
privilege
{
name = "AUTOHALFOP"
desc = _("Automatic halfop upon join")
rank = 100
level = 4
flag = "H"
xop = "HOP"
}
privilege
{
name = "AUTOOP"
desc = _("Automatic channel operator status upon join")
rank = 210
level = 5
flag = "O"
xop = "AOP"
}
privilege
{
name = "AUTOOWNER"
desc = _("Automatic owner upon join")
rank = 330
level = 9999
flag = "Q"
xop = "QOP"
}
privilege
{
name = "AUTOPROTECT"
desc = _("Automatic protect upon join")
rank = 240
level = 10
flag = "A"
xop = "SOP"
}
privilege
{
name = "AUTOVOICE"
desc = _("Automatic voice on join")
rank = 50
level = 3
flag = "V"
xop = "VOP"
}
privilege
{
name = "BADWORDS"
desc = _("Allowed to modify channel badwords list")
rank = 260
level = 10
flag = "K"
xop = "SOP"
}
privilege
{
name = "BAN"
desc = _("Allowed to ban users")
rank = 150
level = 4
flag = "b"
xop = "HOP"
}
privilege
{
name = "FANTASY"
desc = _("Allowed to use fantasy commands")
rank = 30
level = 3
flag = "c"
xop = "VOP"
}
privilege
{
name = "FOUNDER"
desc = _("Allowed to issue commands restricted to channel founders")
rank = 360
level = 10000
flag = "F"
xop = "QOP"
}
privilege
{
name = "GETKEY"
desc = _("Allowed to use GETKEY command")
rank = 180
level = 5
flag = "G"
xop = "AOP"
}
privilege
{
name = "HALFOP"
desc = _("Allowed to (de)halfop users")
rank = 120
level = 5
flag = "h"
xop = "AOP"
}
privilege
{
name = "HALFOPME"
desc = _("Allowed to (de)halfop themself")
rank = 110
level = 4
flag = "h"
xop = "HOP"
}
privilege
{
name = "INFO"
desc = _("Allowed to get full INFO output")
rank = 80
level = 9999
flag = "I"
xop = "QOP"
}
privilege
{
name = "INVITE"
desc = _("Allowed to use the INVITE command")
rank = 190
level = 5
flag = "i"
xop = "AOP"
}
privilege
{
name = "KICK"
desc = _("Allowed to use the KICK command")
rank = 130
level = 4
flag = "k"
xop = "HOP"
}
privilege
{
name = "MEMO"
desc = _("Allowed to read channel memos")
rank = 280
level = 10
flag = "m"
xop = "SOP"
}
privilege
{
name = "MODE"
desc = _("Allowed to use the MODE command")
rank = 170
level = 9999
flag = "s"
xop = "QOP"
}
privilege
{
name = "NOKICK"
desc = _("Prevents users being kicked by services")
rank = 20
level = 1
flag = "N"
xop = "VOP"
}
privilege
{
name = "OP"
desc = _("Allowed to (de)op users")
rank = 230
level = 5
flag = "o"
xop = "SOP"
}
privilege
{
name = "OPME"
desc = _("Allowed to (de)op themself")
rank = 220
level = 5
flag = "o"
xop = "AOP"
}
privilege
{
name = "OWNER"
desc = _("Allowed to (de)owner users")
rank = 350
level = "founder"
flag = "q"
xop = "QOP"
}
privilege
{
name = "OWNERME"
desc = _("Allowed to (de)owner themself")
rank = 340
level = 9999
flag = "q"
xop = "QOP"
}
privilege
{
name = "PROTECT"
desc = _("Allowed to (de)protect users")
rank = 310
level = 9999
flag = "a"
xop = "QOP"
}
privilege
{
name = "PROTECTME"
desc = _("Allowed to (de)protect themself")
rank = 300
level = 10
flag = "a"
xop = "SOP"
}
privilege
{
name = "SAY"
desc = _("Allowed to use SAY and ACT commands")
rank = 90
level = 5
flag = "B"
xop = "AOP"
}
privilege
{
name = "SET"
desc = _("Allowed to set channel settings")
rank = 320
level = 9999
flag = "s"
xop = "QOP"
}
privilege
{
name = "SIGNKICK"
desc = _("No signed kick when SIGNKICK LEVEL is used")
rank = 140
level = 9999
flag = "K"
xop = "QOP"
}
privilege
{
name = "TOPIC"
desc = _("Allowed to change channel topics")
rank = 160
level = 5
flag = "t"
xop = "AOP"
}
privilege
{
name = "UNBAN"
desc = _("Allowed to unban users")
rank = 200
level = 4
flag = "u"
xop = "HOP"
}
privilege
{
name = "UNBANME"
desc = _("Allowed to unban themself")
rank = 200
level = 4
flag = "U"
xop = "HOP"
}
privilege
{
name = "VOICE"
desc = _("Allowed to (de)voice users")
rank = 70
level = 4
flag = "v"
xop = "HOP"
}
privilege
{
name = "VOICEME"
desc = _("Allowed to (de)voice themself")
rank = 60
level = 3
flag = "v"
xop = "VOP"
}
command_group
{
name = "chanserv/access"
description = _("Used to manage the list of privileged users")
}
command_group
{
name = "chanserv/status"
description = _("Used to modify the channel status of you or other users")
}
command_group
{
name = "chanserv/management"
description = _("Used to manage channels")
}
command_group
{
name = "chanserv/admin"
description = _("Services Operator commands")
}
command { service = "CHANSERV"; name = "HELP"; command = "generic/help"; }
module { name = "cs_access" }
command { service = "CHANSERV"; name = "ACCESS"; command = "chanserv/access"; group = "chanserv/access"; }
command { service = "CHANSERV"; name = "LEVELS"; command = "chanserv/levels"; group = "chanserv/access"; }
module
{
name = "cs_akick"
autokickmax = 50
autokickreason = "User has been banned from the channel"
}
command { service = "CHANSERV"; name = "AKICK"; command = "chanserv/akick"; group = "chanserv/management"; }
module { name = "cs_ban" }
command { service = "CHANSERV"; name = "BAN"; command = "chanserv/ban"; }
module { name = "cs_clone" }
command { service = "CHANSERV"; name = "CLONE"; command = "chanserv/clone"; group = "chanserv/management"; }
module { name = "cs_drop" }
command { service = "CHANSERV"; name = "DROP"; command = "chanserv/drop"; }
module { name = "cs_enforce" }
command { service = "CHANSERV"; name = "ENFORCE"; command = "chanserv/enforce"; group = "chanserv/management"; }
module
{
name = "cs_entrymsg"
maxentries = 32
}
command { service = "CHANSERV"; name = "ENTRYMSG"; command = "chanserv/entrymsg"; group = "chanserv/management"; }
module { name = "cs_flags" }
command { service = "CHANSERV"; name = "FLAGS"; command = "chanserv/flags"; group = "chanserv/access"; }
module { name = "cs_getkey" }
command { service = "CHANSERV"; name = "GETKEY"; command = "chanserv/getkey"; }
module { name = "cs_info" }
command { service = "CHANSERV"; name = "INFO"; command = "chanserv/info"; }
module { name = "cs_invite" }
command { service = "CHANSERV"; name = "INVITE"; command = "chanserv/invite"; }
module { name = "cs_kick" }
command { service = "CHANSERV"; name = "KICK"; command = "chanserv/kick"; }
module
{
name = "cs_list"
listmax = 50
}
command { service = "CHANSERV"; name = "LIST"; command = "chanserv/list"; }
command { service = "CHANSERV"; name = "SET PRIVATE"; command = "chanserv/set/private"; }
module
{
name = "cs_log"
default
{
command = "chanserv/modes"
method = "MESSAGE @"
}
default
{
service = "CHANSERV"
command = "ACCESS"
method = "MESSAGE @"
}
default
{
command = "chanserv/xop"
method = "MESSAGE @"
}
default
{
service = "CHANSERV"
command = "FLAGS"
method = "MESSAGE @"
}
}
command { service = "CHANSERV"; name = "LOG"; command = "chanserv/log"; group = "chanserv/management"; }
module
{
name = "cs_mode"
mlock = "+nt"
max = 50
}
command { service = "CHANSERV"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
command { service = "CHANSERV"; name = "OWNER"; command = "chanserv/modes"; group = "chanserv/status"; set = "OWNER" }
command { service = "CHANSERV"; name = "DEOWNER"; command = "chanserv/modes"; group = "chanserv/status"; unset = "OWNER" }
command { service = "CHANSERV"; name = "PROTECT"; command = "chanserv/modes"; group = "chanserv/status"; set = "PROTECT" }
command { service = "CHANSERV"; name = "DEPROTECT"; command = "chanserv/modes"; group = "chanserv/status"; unset = "PROTECT" }
command { service = "CHANSERV"; name = "OP"; command = "chanserv/modes"; group = "chanserv/status"; set = "OP" }
command { service = "CHANSERV"; name = "DEOP"; command = "chanserv/modes"; group = "chanserv/status"; unset = "OP" }
command { service = "CHANSERV"; name = "HALFOP"; command = "chanserv/modes"; group = "chanserv/status"; set = "HALFOP" }
command { service = "CHANSERV"; name = "DEHALFOP"; command = "chanserv/modes"; group = "chanserv/status"; unset = "HALFOP" }
command { service = "CHANSERV"; name = "VOICE"; command = "chanserv/modes"; group = "chanserv/status"; set = "VOICE" }
command { service = "CHANSERV"; name = "DEVOICE"; command = "chanserv/modes"; group = "chanserv/status"; unset = "VOICE" }
module { name = "cs_register" }
command { service = "CHANSERV"; name = "REGISTER"; command = "chanserv/register"; }
module
{
name = "cs_seen"
simple = false
purgetime = "30d"
}
command { service = "OPERSERV"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
fantasy { name = "SEEN"; command = "operserv/seen"; prepend_channel = false; }
module
{
name = "cs_set"
defbantype = 2
persist_lower_ts = true
}
command { service = "CHANSERV"; name = "SET"; command = "chanserv/set"; group = "chanserv/management"; }
command { service = "CHANSERV"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
command { service = "CHANSERV"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
command { service = "CHANSERV"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
command { service = "CHANSERV"; name = "SET DESC"; command = "chanserv/set/description"; hide = yes; }
command { service = "CHANSERV"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
command { service = "CHANSERV"; name = "SET KEEPMODES"; command = "chanserv/set/keepmodes"; }
command { service = "CHANSERV"; name = "SET PEACE"; command = "chanserv/set/peace"; }
command { service = "CHANSERV"; name = "SET PERSIST"; command = "chanserv/set/persist"; }
command { service = "CHANSERV"; name = "SET RESTRICTED"; command = "chanserv/set/restricted"; }
command { service = "CHANSERV"; name = "SET SECURE"; command = "chanserv/set/secure"; }
command { service = "CHANSERV"; name = "SET SECUREFOUNDER"; command = "chanserv/set/securefounder"; }
command { service = "CHANSERV"; name = "SET SECUREOPS"; command = "chanserv/set/secureops"; }
command { service = "CHANSERV"; name = "SET SIGNKICK"; command = "chanserv/set/signkick"; }
command { service = "CHANSERV"; name = "SET SUCCESSOR"; command = "chanserv/set/successor"; }
command { service = "CHANSERV"; name = "SET NOEXPIRE"; command = "chanserv/saset/noexpire"; permission = "chanserv/saset/noexpire"; }
module { name = "cs_set_misc" }
command { service = "CHANSERV"; name = "SET URL"; command = "chanserv/set/misc"; misc_description = _("Associate a URL with the channel"); }
command { service = "CHANSERV"; name = "SET EMAIL"; command = "chanserv/set/misc"; misc_description = _("Associate an email address with the channel"); }
module { name = "cs_status" }
command { service = "CHANSERV"; name = "STATUS"; command = "chanserv/status"; }
command { service = "CHANSERV"; name = "WHY"; command = "chanserv/status"; hide = true; }
module
{
name = "cs_suspend"
suspendexpire = 90d
show = "suspended, by, reason, on, expires"
}
command { service = "CHANSERV"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
command { service = "CHANSERV"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
module { name = "cs_sync" }
command { service = "CHANSERV"; name = "SYNC"; command = "chanserv/sync"; group = "chanserv/management"; }
module { name = "cs_topic" }
command { service = "CHANSERV"; name = "TOPIC"; command = "chanserv/topic"; group = "chanserv/management"; }
command { service = "CHANSERV"; name = "SET KEEPTOPIC"; command = "chanserv/set/keeptopic"; }
module { name = "cs_unban" }
command { service = "CHANSERV"; name = "UNBAN"; command = "chanserv/unban"; }
module { name = "cs_updown" }
command { service = "CHANSERV"; name = "DOWN"; command = "chanserv/down"; group = "chanserv/status"; }
command { service = "CHANSERV"; name = "UP"; command = "chanserv/up"; group = "chanserv/status"; }
module { name = "cs_xop" }
command { service = "CHANSERV"; name = "QOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "CHANSERV"; name = "SOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "CHANSERV"; name = "AOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "CHANSERV"; name = "HOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "CHANSERV"; name = "VOP"; command = "chanserv/xop"; group = "chanserv/access"; }
module { name = "cs_statusupdate" }
service
{
nick = "GLOBAL"
user = "_"
host = "services/_"
gecos = "Global Noticer"
channels = "@#services"
}
module
{
name = "global"
client = "GLOBAL"
globaloncycledown = "Services are restarting, they will be back shortly - please be good while they're gone"
globaloncycleup = "Services are now back online - have a nice day"
anonymousglobal = no
}
command { service = "GLOBAL"; name = "HELP"; command = "generic/help"; }
module { name = "gl_global" }
command { service = "GLOBAL"; name = "GLOBAL"; command = "global/global"; permission = "global/global"; }
fantasy { name = "GLOBAL"; command = "global/global"; prepend_channel = false; }
module
{
name = "gl_queue"
maxqueue = 10
}
command { service = "GLOBAL"; name = "QUEUE"; command = "global/queue"; permission = "global/queue"; }
module { name = "gl_server" }
command { service = "GLOBAL"; name = "SERVER"; command = "global/server"; permission = "global/server"; }
service
{
nick = "HOSTSERV"
user = "_"
host = "services/_"
gecos = "vHost Service"
channels = "@#services"
}
module
{
name = "hostserv"
client = "HOSTSERV"
activate_on_set = false
}
command { service = "HOSTSERV"; name = "HELP"; command = "generic/help"; }
module { name = "hs_del" }
command { service = "HOSTSERV"; name = "DEL"; command = "hostserv/del"; permission = "hostserv/del"; }
command { service = "HOSTSERV"; name = "DELALL"; command = "hostserv/delall"; permission = "hostserv/del"; }
module
{
name = "hs_group"
syncongroup = true
synconset = true
}
command { service = "HOSTSERV"; name = "GROUP"; command = "hostserv/group"; }
module { name = "hs_list" }
command { service = "HOSTSERV"; name = "LIST"; command = "hostserv/list"; permission = "hostserv/list"; }
module { name = "hs_off" }
command { service = "HOSTSERV"; name = "OFF"; command = "hostserv/off"; }
module { name = "hs_on" }
command { service = "HOSTSERV"; name = "ON"; command = "hostserv/on"; }
module
{
name = "hs_request"
memouser = yes
memooper = yes
}
command { service = "HOSTSERV"; name = "REQUEST"; command = "hostserv/request"; }
command { service = "HOSTSERV"; name = "ACTIVATE"; command = "hostserv/activate"; permission = "hostserv/set"; }
command { service = "HOSTSERV"; name = "REJECT"; command = "hostserv/reject"; permission = "hostserv/set"; }
command { service = "HOSTSERV"; name = "WAITING"; command = "hostserv/waiting"; permission = "hostserv/set"; }
module { name = "hs_set" }
command { service = "HOSTSERV"; name = "SET"; command = "hostserv/set"; permission = "hostserv/set"; }
command { service = "HOSTSERV"; name = "SETALL"; command = "hostserv/setall"; permission = "hostserv/set"; }
service
{
nick = "MEMOSERV"
user = "_"
host = "services/_"
gecos = "Memo Service"
channels = "@#services"
}
module
{
name = "memoserv"
client = "MEMOSERV"
maxmemos = 20
senddelay = 30s
}
command { service = "MEMOSERV"; name = "HELP"; command = "generic/help"; }
module { name = "ms_cancel" }
command { service = "MEMOSERV"; name = "CANCEL"; command = "memoserv/cancel"; }
module { name = "ms_check" }
command { service = "MEMOSERV"; name = "CHECK"; command = "memoserv/check"; }
module { name = "ms_del" }
command { service = "MEMOSERV"; name = "DEL"; command = "memoserv/del"; }
module
{
name = "ms_ignore"
max = 50
}
command { service = "MEMOSERV"; name = "IGNORE"; command = "memoserv/ignore"; }
module { name = "ms_info" }
command { service = "MEMOSERV"; name = "INFO"; command = "memoserv/info"; }
module { name = "ms_list" }
command { service = "MEMOSERV"; name = "LIST"; command = "memoserv/list"; }
module { name = "ms_read" }
command { service = "MEMOSERV"; name = "READ"; command = "memoserv/read"; }
module
{
name = "ms_rsend"
operonly = false
}
command { service = "MEMOSERV"; name = "RSEND"; command = "memoserv/rsend"; }
module { name = "ms_send" }
command { service = "MEMOSERV"; name = "SEND"; command = "memoserv/send"; }
module { name = "ms_sendall" }
command { service = "MEMOSERV"; name = "SENDALL"; command = "memoserv/sendall"; permission = "memoserv/sendall"; }
module { name = "ms_set" }
command { service = "MEMOSERV"; name = "SET"; command = "memoserv/set"; }
module { name = "ms_staff" }
command { service = "MEMOSERV"; name = "STAFF"; command = "memoserv/staff"; permission = "memoserv/staff"; }
service
{
nick = "NICKSERV"
user = "_"
host = "services/_"
gecos = "Nickname Registration Service"
channels = "@#services"
}
module
{
name = "nickserv"
client = "NICKSERV"
forceemail = no
confirmemailchanges = no
unregistered_notice = "Your nickname is not registered. To register it, use: /msg NickServ HELP REGISTER"
defaults = "killprotect ns_private hide_email hide_mask memo_signon memo_receive autoop"
regdelay = 0m
expire = 32y
secureadmins = yes
modeonid = yes
hidenetsplitquit = no
killquick = 20s
kill = 60s
restrictopernicks = yes
enforceruser = "OPERSERV"
enforcerhost = "services/_"
releasetimeout = 1m
guestnickprefix = "`"
nonicknameownership = no
minpasslen = 4
maxpasslen = 50
preservedisplay = no
}
command_group
{
name = "nickserv/admin"
description = _("Services Operator commands")
}
command { service = "NICKSERV"; name = "HELP"; command = "generic/help"; }
module
{
name = "ns_ajoin"
ajoinmax = 10
}
command { service = "NICKSERV"; name = "AJOIN"; command = "nickserv/ajoin"; }
module { name = "ns_alist" }
command { service = "NICKSERV"; name = "ALIST"; command = "nickserv/alist"; }
command { service = "NICKSERV"; name = "ACCESS"; command = "nickserv/alist"; hide = true; }
module
{
name = "ns_cert"
automatic = yes
max = 5
}
command { service = "NICKSERV"; name = "CERT"; command = "nickserv/cert"; }
module { name = "ns_drop" }
command { service = "NICKSERV"; name = "DROP"; command = "nickserv/drop"; }
module { name = "ns_getemail" }
command { service = "NICKSERV"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; }
module
{
name = "ns_group"
maxaliases = 10
nogroupchange = yes
}
command { service = "NICKSERV"; name = "GLIST"; command = "nickserv/glist"; }
command { service = "NICKSERV"; name = "GROUP"; command = "nickserv/group"; }
command { service = "NICKSERV"; name = "UNGROUP"; command = "nickserv/ungroup"; }
module
{
name = "ns_identify"
maxlogins = 10
}
command { service = "NICKSERV"; name = "ID"; command = "nickserv/identify"; hide = true; }
command { service = "NICKSERV"; name = "IDENTIFY"; command = "nickserv/identify"; }
module { name = "ns_info" }
command { service = "NICKSERV"; name = "INFO"; command = "nickserv/info"; }
command { service = "NICKSERV"; name = "SET HIDE"; command = "nickserv/set/hide"; }
command { service = "NICKSERV"; name = "SASET HIDE"; command = "nickserv/saset/hide"; permission = "nickserv/saset/hide"; }
module
{
name = "ns_list"
listmax = 50
}
command { service = "NICKSERV"; name = "LIST"; command = "nickserv/list"; }
command { service = "NICKSERV"; name = "SET PRIVATE"; command = "nickserv/set/private"; }
command { service = "NICKSERV"; name = "SASET PRIVATE"; command = "nickserv/saset/private"; permission = "nickserv/saset/private"; }
module { name = "ns_logout" }
command { service = "NICKSERV"; name = "LOGOUT"; command = "nickserv/logout"; }
module
{
name = "ns_recover"
restoreonrecover = yes
}
command { service = "NICKSERV"; name = "RECOVER"; command = "nickserv/recover"; }
command { service = "NICKSERV"; name = "GHOST"; command = "nickserv/recover"; hide = true; }
command { service = "NICKSERV"; name = "RELEASE"; command = "nickserv/recover"; hide = true; }
module
{
name = "ns_register"
registration = "none"
resenddelay = 90s
nickregdelay = 15s
unconfirmedexpire = 8m
}
command { service = "NICKSERV"; name = "CONFIRM"; command = "nickserv/confirm"; }
command { service = "NICKSERV"; name = "REGISTER"; command = "nickserv/register"; }
command { service = "NICKSERV"; name = "RESEND"; command = "nickserv/resend"; }
module { name = "ns_resetpass" }
command { service = "NICKSERV"; name = "RESETPASS"; command = "nickserv/resetpass"; }
module
{
name = "ns_set"
allowkillimmed = yes
}
command { service = "NICKSERV"; name = "SET"; command = "nickserv/set"; }
command { service = "NICKSERV"; name = "SASET"; command = "nickserv/saset"; permission = "nickserv/saset/"; group = "nickserv/admin"; }
command { service = "NICKSERV"; name = "SET AUTOOP"; command = "nickserv/set/autoop"; }
command { service = "NICKSERV"; name = "SASET AUTOOP"; command = "nickserv/saset/autoop"; permission = "nickserv/saset/autoop"; }
command { service = "NICKSERV"; name = "SET DISPLAY"; command = "nickserv/set/display"; }
command { service = "NICKSERV"; name = "SASET DISPLAY"; command = "nickserv/saset/display"; permission = "nickserv/saset/display"; }
command { service = "NICKSERV"; name = "SET EMAIL"; command = "nickserv/set/email"; }
command { service = "NICKSERV"; name = "SASET EMAIL"; command = "nickserv/saset/email"; permission = "nickserv/saset/email"; }
command { service = "NICKSERV"; name = "SET KEEPMODES"; command = "nickserv/set/keepmodes"; }
command { service = "NICKSERV"; name = "SASET KEEPMODES"; command = "nickserv/saset/keepmodes"; permission = "nickserv/saset/keepmodes"; }
command { service = "NICKSERV"; name = "SET KILL"; command = "nickserv/set/kill"; }
command { service = "NICKSERV"; name = "SASET KILL"; command = "nickserv/saset/kill"; permission = "nickserv/saset/kill"; }
command { service = "NICKSERV"; name = "SET PASSWORD"; command = "nickserv/set/password"; }
command { service = "NICKSERV"; name = "SASET PASSWORD"; command = "nickserv/saset/password"; permission = "nickserv/saset/password"; }
command { service = "NICKSERV"; name = "SET NEVEROP"; command = "nickserv/set/neverop"; }
command { service = "NICKSERV"; name = "SASET NEVEROP"; command = "nickserv/saset/neverop"; permission = "nickserv/saset/neverop"; }
command { service = "NICKSERV"; name = "SASET NOEXPIRE"; command = "nickserv/saset/noexpire"; permission = "nickserv/saset/noexpire"; }
module { name = "ns_set_language" }
command { service = "NICKSERV"; name = "SET LANGUAGE"; command = "nickserv/set/language"; }
command { service = "NICKSERV"; name = "SASET LANGUAGE"; command = "nickserv/saset/language"; permission = "nickserv/saset/language"; }
module { name = "ns_set_message" }
command { service = "NICKSERV"; name = "SET MESSAGE"; command = "nickserv/set/message"; }
command { service = "NICKSERV"; name = "SASET MESSAGE"; command = "nickserv/saset/message"; permission = "nickserv/saset/message"; }
module { name = "ns_set_misc" }
command { service = "NICKSERV"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); }
command { service = "NICKSERV"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; }
command { service = "NICKSERV"; name = "SET DISCORD"; command = "nickserv/set/misc"; misc_description = _("Associate a Discord account with your account"); }
command { service = "NICKSERV"; name = "SASET DISCORD"; command = "nickserv/saset/misc"; misc_description = _("Associate a Discord account with this account"); permission = "nickserv/saset/discord"; group = "nickserv/admin"; }
command { service = "NICKSERV"; name = "SET MASTODON"; command = "nickserv/set/misc"; misc_description = _("Associate a Mastodon account with your account"); }
command { service = "NICKSERV"; name = "SASET MASTODON"; command = "nickserv/saset/misc"; misc_description = _("Associate a Mastodon account with this account"); permission = "nickserv/saset/mastodon"; group = "nickserv/admin"; }
command { service = "NICKSERV"; name = "SET TIMEZONE"; command = "nickserv/set/misc"; misc_description = _("Associate a time zone with your account"); }
command { service = "NICKSERV"; name = "SASET TIMEZONE"; command = "nickserv/saset/misc"; misc_description = _("Associate a time zone with this account"); permission = "nickserv/saset/timezone"; group = "nickserv/admin"; }
module
{
name = "ns_suspend"
suspendexpire = 90d
show = "suspended, by, reason, on, expires"
}
command { service = "NICKSERV"; name = "SUSPEND"; command = "nickserv/suspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
command { service = "NICKSERV"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
module { name = "ns_update" }
command { service = "NICKSERV"; name = "UPDATE"; command = "nickserv/update"; }
module
{
name = "ns_maxemail"
maxemails = 1
}
service
{
nick = "OPERSERV"
user = "_"
host = "services/_"
gecos = "Operator Service"
channels = "@#services"
}
module
{
name = "operserv"
client = "OPERSERV"
autokillexpiry = 30d
chankillexpiry = 30d
snlineexpiry = 30d
sqlineexpiry = 30d
akillonadd = yes
killonsnline = yes
killonsqline = yes
addakiller = yes
akillids = yes
opersonly = yes
}
command { service = "OPERSERV"; name = "HELP"; command = "generic/help"; }
module { name = "os_akill" }
command { service = "OPERSERV"; name = "AKILL"; command = "operserv/akill"; permission = "operserv/akill"; }
fantasy { name = "AKILL"; command = "operserv/akill"; prepend_channel = false; }
module { name = "os_chankill" }
command { service = "OPERSERV"; name = "CHANKILL"; command = "operserv/chankill"; permission = "operserv/chankill"; }
module
{
name = "os_defcon"
defaultlevel = 5
level4 = "nonewchannels nonewnicks nomlockchanges reducedsessions"
level3 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions"
level2 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly"
level1 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly akillnewclients"
sessionlimit = 1024
akillexpire = 8m
chanmodes = "+R"
timeout = 86400s
globalondefcon = yes
globalondefconmore = yes
message = "Server locking down"
offmessage = "Services are now back to normal, sorry for any inconvenience"
akillreason = "This network is currently not accepting connections, please try again later."
}
command { service = "OPERSERV"; name = "DEFCON"; command = "operserv/defcon"; permission = "operserv/defcon"; }
fantasy { name = "DEFCON"; command = "operserv/defcon"; prepend_channel = false; }
module
{
name = "os_dns"
ttl = 1m
user_drop_mark = 50
user_drop_time = 1m
user_drop_readd_time = 5m
remove_split_servers = yes
readd_connected_servers = no
}
command { service = "OPERSERV"; name = "DNS"; command = "operserv/dns"; permission = "operserv/dns"; }
module { name = "os_config" }
command { service = "OPERSERV"; name = "CONFIG"; command = "operserv/config"; permission = "operserv/config"; }
module { name = "os_forbid" }
command { service = "OPERSERV"; name = "FORBID"; command = "operserv/forbid"; permission = "operserv/forbid"; }
module { name = "os_ignore" }
command { service = "OPERSERV"; name = "IGNORE"; command = "operserv/ignore"; permission = "operserv/ignore"; }
module { name = "os_info" }
command { service = "OPERSERV"; name = "INFO"; command = "operserv/info"; permission = "operserv/info"; }
module { name = "os_jupe" }
command { service = "OPERSERV"; name = "JUPE"; command = "operserv/jupe"; permission = "operserv/jupe"; }
fantasy { name = "JUPE"; command = "operserv/jupe"; prepend_channel = false; }
module { name = "os_kick" }
command { service = "OPERSERV"; name = "KICK"; command = "operserv/kick"; permission = "operserv/kick"; }
module { name = "os_kill" }
command { service = "OPERSERV"; name = "KILL"; command = "operserv/kill"; permission = "operserv/kill"; }
module { name = "os_list" }
command { service = "OPERSERV"; name = "CHANLIST"; command = "operserv/chanlist"; permission = "operserv/chanlist"; }
command { service = "OPERSERV"; name = "USERLIST"; command = "operserv/userlist"; permission = "operserv/userlist"; }
module { name = "os_login" }
command { service = "OPERSERV"; name = "LOGIN"; command = "operserv/login"; }
command { service = "OPERSERV"; name = "LOGOUT"; command = "operserv/logout"; }
module
{
name = "os_logsearch"
logname = "/var/log/anope/services.log"
}
command { service = "OPERSERV"; name = "LOGSEARCH"; command = "operserv/logsearch"; permission = "operserv/logsearch"; }
fantasy { name = "LOGSEARCH"; command = "operserv/LOGSEARCH"; prepend_channel = false; }
module { name = "os_mode" }
command { service = "OPERSERV"; name = "UMODE"; command = "operserv/umode"; permission = "operserv/umode"; }
command { service = "OPERSERV"; name = "MODE"; command = "operserv/mode"; permission = "operserv/mode"; }
fantasy { name = "MODESET"; command = "operserv/mode"; prepend_channel = false; }
module { name = "os_modinfo" }
command { service = "OPERSERV"; name = "MODINFO"; command = "operserv/modinfo"; permission = "operserv/modinfo"; }
command { service = "OPERSERV"; name = "MODLIST"; command = "operserv/modlist"; permission = "operserv/modinfo"; }
module { name = "os_module" }
command { service = "OPERSERV"; name = "MODLOAD"; command = "operserv/modload"; permission = "operserv/modload"; }
command { service = "OPERSERV"; name = "MODRELOAD"; command = "operserv/modreload"; permission = "operserv/modload"; }
command { service = "OPERSERV"; name = "MODUNLOAD"; command = "operserv/modunload"; permission = "operserv/modload"; }
module
{
name = "os_news"
announcer = "GLOBAL"
oper_announcer = "OPERSERV"
newscount = 8
}
command { service = "OPERSERV"; name = "LOGONNEWS"; command = "operserv/logonnews"; permission = "operserv/news"; }
fantasy { name = "LOGONNEWS"; command = "operserv/logonnews"; prepend_channel = false; }
command { service = "OPERSERV"; name = "OPERNEWS"; command = "operserv/opernews"; permission = "operserv/news"; }
fantasy { name = "OPERNEWS"; command = "operserv/opernews"; prepend_channel = false; }
command { service = "OPERSERV"; name = "RANDOMNEWS"; command = "operserv/randomnews"; permission = "operserv/news"; }
fantasy { name = "RANDOMNEWS"; command = "operserv/randomnews"; prepend_channel = false; }
module { name = "os_noop" }
command { service = "OPERSERV"; name = "NOOP"; command = "operserv/noop"; permission = "operserv/noop"; }
fantasy { name = "NOOP"; command = "operserv/noop"; prepend_channel = false; }
module { name = "os_oper" }
command { service = "OPERSERV"; name = "OPER"; command = "operserv/oper"; permission = "operserv/oper"; }
module { name = "os_reload" }
command { service = "OPERSERV"; name = "RELOAD"; command = "operserv/reload"; permission = "operserv/reload"; }
module
{
name = "os_session"
defaultsessionlimit = 5
maxsessionlimit = 100
exceptionexpiry = 1d
sessionlimitexceeded = "The session limit for your IP %IP% has been exceeded."
sessionlimitdetailsloc = "Contact admin about session limits."
maxsessionkill = 15
sessionautokillexpiry = 30m
session_ipv4_cidr = 32
session_ipv6_cidr = 128
}
command { service = "OPERSERV"; name = "EXCEPTION"; command = "operserv/exception"; permission = "operserv/exception"; }
fantasy { name = "EXCEPTION"; command = "operserv/exception"; prepend_channel = false; }
command { service = "OPERSERV"; name = "SESSION"; command = "operserv/session"; permission = "operserv/session"; }
fantasy { name = "SESSION"; command = "operserv/session"; prepend_channel = false; }
module
{
name = "os_set"
superadmin = yes
}
command { service = "OPERSERV"; name = "SET"; command = "operserv/set"; permission = "operserv/set"; }
fantasy { name = "SET"; command = "operserv/set"; prepend_channel = false; }
module { name = "os_shutdown" }
command { service = "OPERSERV"; name = "QUIT"; command = "operserv/quit"; permission = "operserv/quit"; }
command { service = "OPERSERV"; name = "RESTART"; command = "operserv/restart"; permission = "operserv/restart"; }
command { service = "OPERSERV"; name = "SHUTDOWN"; command = "operserv/shutdown"; permission = "operserv/shutdown"; }
module { name = "os_stats" }
command { service = "OPERSERV"; name = "STATS"; command = "operserv/stats"; permission = "operserv/stats"; }
fantasy { name = "AKILL"; command = "operserv/akill"; prepend_channel = false; }
module { name = "os_svs" }
command { service = "OPERSERV"; name = "SVSNICK"; command = "operserv/svsnick"; permission = "operserv/svs"; }
fantasy { name = "SVSNICK"; command = "operserv/svsnick"; prepend_channel = false; }
command { service = "OPERSERV"; name = "SVSJOIN"; command = "operserv/svsjoin"; permission = "operserv/svs"; }
fantasy { name = "SVSJOIN"; command = "operserv/svsjoin"; prepend_channel = false; }
command { service = "OPERSERV"; name = "SVSPART"; command = "operserv/svspart"; permission = "operserv/svs"; }
fantasy { name = "SVSPART"; command = "operserv/svspart"; prepend_channel = false; }
module { name = "os_sxline" }
command { service = "OPERSERV"; name = "SNLINE"; command = "operserv/snline"; permission = "operserv/snline"; }
fantasy { name = "SNLINE"; command = "operserv/snline"; prepend_channel = false; }
command { service = "OPERSERV"; name = "SQLINE"; command = "operserv/sqline"; permission = "operserv/sqline"; }
fantasy { name = "SQLINE"; command = "operserv/sqline"; prepend_channel = false; }
module { name = "os_update" }
command { service = "OPERSERV"; name = "UPDATE"; command = "operserv/update"; permission = "operserv/update"; }