Last active
October 26, 2024 18:32
-
-
Save paigeadelethompson/bf91ece342c4e9e9bf1bb32ceb27cf2f to your computer and use it in GitHub Desktop.
Inspircd Config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ubuntu:latest | |
ENV ADMIN_EMAIL="[email protected]" | |
ENV SID="01A" | |
ENV SERVER_NAME="irc.lame-network.local" | |
ENV NETWORK_NAME="LameNet" | |
ENV STS_HOST="irc.lame-network.local" | |
ENV SASL_TARGET="service.lame-network.local" | |
ENV ADMIN_PASSWORD="changeme" | |
ENV COMMAND_RATE="128000" | |
ENV FAKE_LAG="on" | |
ENV HARD_SENDQ="1M" | |
ENV MAX_CHANS="256" | |
ENV PING_FREQ="64" | |
ENV RECVQ="8K" | |
ENV SOFT_SENDQ="8192" | |
ENV COMMAND_RATE_THRESHOLD="128" | |
ENV COMMAND_RATE_THRESHOLD_TIMEOUT="16" | |
ENV USE_CONN_FLOOD="yes" | |
ENV USE_DNSBL="yes" | |
ENV USE_IDENT="no" | |
ENV GLOBAL_MAX="32" | |
ENV LOCAL_MAX="16" | |
ENV MAX_CONN_WARN="yes" | |
ENV DEFAULT_USER_MODES="+xWz" | |
ENV PORT="6667" | |
ENV RESOLVE_HOST_NAMES="yes" | |
ENV USE_CONNECT_BAN="yes" | |
ENV SSL_USER_MODES="+xWz" | |
ENV SSL_PORT="6697" | |
ENV AUTHENTICATED_USER_MODES="+xwWz" | |
ENV SERVER_SSL_PORT="7000" | |
ENV OPER_CHANNEL="#oper" | |
ENV HTTP_ACL_PASSWORD="changeme" | |
ENV HTTP_ACL_USERNAME="lame-network" | |
ENV SERVICE_CHANNEL="#services" | |
ENV HELP_CHANNEL="#help" | |
ENV MAX_AWAY="256" | |
ENV MAX_CHAN="31" | |
ENV MAX_GECOS="256" | |
ENV MAX_HOST="64" | |
ENV MAX_IDENT="16" | |
ENV MAX_KICK="256" | |
ENV MAX_MODES="32" | |
ENV MAX_NICK="31" | |
ENV MAX_QUIT="256" | |
ENV MAX_TOPIC="256" | |
ENV ALLOW_MISMATCH="yes" | |
ENV ALLOW_ZERO_LIMIT="yes" | |
ENV ANNOUNCE_TS="yes" | |
ENV CYCLE_HOST_TS="yes" | |
ENV CYCLE_HOST_FROM_USER="no" | |
ENV HOST_IN_TOPIC="yes" | |
ENV INVITE_BYPASS_MODES="yes" | |
ENV MODES_IN_LIST="yes" | |
ENV NO_SNOTICE_STACK="yes" | |
ENV PING_WARNING="8" | |
ENV PREFIX_PART=""" | |
ENV PREFIX_QUIT="QUIT: "" | |
ENV SERVER_PING_FREQ="8" | |
ENV SPLIT_WHOIS="no" | |
ENV SUFFIX_PART=""" | |
ENV SUFFIX_QUIT=""" | |
ENV SYNTAX_HINTS="yes" | |
ENV XLINE_MESSAGE="DEAUTHORIZED" | |
ENV CLONES_ON_CONNECT="yes" | |
ENV NET_BUFFER_SIZE="10240" | |
ENV QUIET_BURSTS="yes" | |
ENV SOFT_LIMIT="102400" | |
ENV SO_MAX_CONN="1024" | |
ENV TIME_SKIP_WARN="2s" | |
ENV ROLE_PLAY_VHOST="rp.lame-network.local" | |
ENV CUSTOM_VERSION="LameNetworkIRCd v3.14 (final)" | |
ENV FLAT_LINKS="no" | |
ENV GENERIC_OPER="yes" | |
ENV HIDE_BANS="no" | |
ENV HIDE_MODES="no" | |
ENV HIDE_SPLITS="yes" | |
ENV HIDE_ULINES="no" | |
ENV MAX_TARGETS="16" | |
ENV RESTRICT_BANNED_USERS="yes" | |
ENV USER_STATS="Pu" | |
ENV NET_ADMIN_VHOST="oper/admin.lame-network.local" | |
ENV GLOBAL_OP_VHOST="oper/op.lame-network.local" | |
ENV HOPM_VHOST="oper/hopm.lame-network.local" | |
ENV HELPER_VHOST="oper/helper.lame-network.local" | |
ENV SERVICES_ULINE="services.lame-network.local" | |
ENV WS_ORIGIN_ALLOW="irc.lame-network.local" | |
ENV DEFAULT_BLOCK_HOST_MASK="*@*" | |
ENV LINK_RECV_PASSWORD="changeme" | |
ENV LINK_SEND_PASSWORD="changeme" | |
ENV LINK_TIMEOUT=3600 | |
RUN apt -y update | |
RUN apt -y install perl git automake autoconf build-essential libpcre2-dev rapidjson-dev libcurl4-gnutls-dev libargon2-dev libmaxminddb-dev libldap2-dev rapidjson-dev libmysqlclient-dev libmysqlclient-dev default-libmysqlclient-dev libpq-dev libre2-dev gnutls-dev libsqlite3-dev libmbedtls-dev libqrencode-dev libpcre3-dev libtre-dev pkg-config libwww-perl | |
RUN groupadd inspircd | |
RUN useradd --system --shell /bin/bash inspircd -g inspircd | |
WORKDIR /tmp | |
RUN git clone https://github.com/inspircd/inspircd.git | |
WORKDIR /tmp/inspircd | |
RUN ./configure --gid inspircd --uid inspircd --development --prefix=/usr/local | |
RUN ./modulemanager list | awk '{print $1}' | xargs -i ./modulemanager install {} ; true | |
RUN make -j$(nproc) install | |
RUN mkdir -p /etc/inspircd /var/lib/inspircd /etc/ssl/inspircd /var/log/inspircd | |
ADD inspircd.conf /etc/inspircd | |
ADD include.conf /etc/inspircd | |
ADD GeoLite2-ASN.mmdb /etc/inspircd | |
RUN touch /etc/inspircd/motd.txt | |
RUN touch /etc/inspircd/oper.motd.txt | |
RUN openssl genrsa -out /etc/ssl/inspircd/server.key | |
RUN openssl req -new -key /etc/ssl/inspircd/server.key -out /etc/ssl/inspircd/server.csr \ | |
-subj "/C=US/ST=Washington/L=Seattle/O=LameNetwork/OU=IT Department/CN=lame-network.local" | |
RUN openssl x509 -req -days 365 -in /etc/ssl/inspircd/server.csr -signkey /etc/ssl/inspircd/server.key -out /etc/ssl/inspircd/server.crt | |
RUN chown -R inspircd:inspircd /etc/inspircd /etc/ssl/inspircd /var/lib/inspircd /var/log/inspircd | |
USER inspircd | |
WORKDIR / | |
CMD /usr/local/bin/inspircd -c /etc/inspircd/inspircd.conf -F |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<badhost host="&env.DEFAULT_BLOCK_HOST_MASK;" | |
reason="default hostmask block"> | |
<exception host="*@127.0.0.1/32" | |
reason="Local IRC client"> | |
<link allowmask="*" | |
bind="*" | |
hidden="no" | |
ipaddr="*" | |
name="leaf.lame-network.local" | |
port="&env.SERVER_SSL_PORT;" | |
recvpass="&env.LINK_RECV_PASSWORD;" | |
sendpass="&env.LINK_SEND_PASSWORD;" | |
statshidden="no" | |
timeout="&env.LINK_TIMEOUT;"> | |
<badword text="vxp" | |
replace="larry"> | |
<badword text="lol" | |
replace="%%"> | |
<eventexec command="/bin/true" | |
event="rehash"> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<path datadir="/var/lib/inspircd" | |
configdir="/etc/inspircd" | |
runtimedir="/tmp" | |
moduledir="/usr/local/modules" | |
logdir="/var/log/inspircd"> | |
<maxmind file="/etc/inspircd/GeoLite2-ASN.mmdb"> | |
<bind address="*" | |
port="8000" | |
type="httpd"> | |
<bind address="*" | |
port="&env.SSL_PORT;" | |
sslprofile="defaultssl" | |
type="clients"> | |
<bind address="*" | |
port="&env.PORT;" | |
type="clients"> | |
<bind address="*" | |
port="&env.SERVER_SSL_PORT;" | |
sslprofile="defaultssl" | |
type="servers"> | |
<admin email="&env.ADMIN_EMAIL;" | |
name="admin" | |
nick="admin"> | |
<server description="General-purpose internet relay chat network" | |
id="&env.SID;" | |
name="&env.SERVER_NAME;" | |
network="&env.NETWORK_NAME;"> | |
<sts duration="5m" | |
host="&env.STS_HOST;" | |
port="&env.SSL_PORT;" | |
preload="yes"> | |
<sslprofile certfile="/etc/ssl/inspircd/server.crt" | |
compression="no" | |
keyfile="/etc/ssl/inspircd/server.key" | |
name="defaultssl" | |
tlsv11="no" | |
tlsv12="yes" | |
tlsv13="yes" | |
renegotiation="no" | |
requestclientcert="no" | |
provider="gnutls"> | |
<sasl requiressl="yes" | |
target="&env.SASL_TARGET;"> | |
<oper host="*@*" | |
name="admin" | |
password="&env.ADMIN_PASSWORD;" | |
type="NetAdmin"> | |
<connect commandrate="&env.COMMAND_RATE;" | |
fakelag="&env.FAKE_LAG;" | |
hardsendq="&env.HARD_SENDQ;" | |
maxchans="&env.MAX_CHANS;" | |
motd="defaultmotd" | |
name="All" | |
pingfreq="&env.PING_FREQ;" | |
recvq="&env.RECVQ;" | |
softsendq="&env.SOFT_SENDQ;" | |
threshold="&env.COMMAND_RATE_THRESHOLD;" | |
timeout="&env.COMMAND_RATE_THRESHOLD_TIMEOUT;" | |
useconnflood="&env.USE_CONN_FLOOD;" | |
usednsbl="&env.USE_DNSBL;" | |
useident="&env.USE_IDENT;" | |
resolvehostnames="&env.RESOLVE_HOST_NAMES;" | |
useconnectban="&env.USE_CONNECT_BAN;"> | |
<connect allow="*" | |
autojoin="#blackhole" | |
globalmax="&env.GLOBAL_MAX;" | |
localmax="&env.LOCAL_MAX;" | |
maxconnwarn="&env.MAX_CONN_WARN;" | |
modes="&env.DEFAULT_USER_MODES;" | |
name="default" | |
port="&env.PORT;"> | |
<connect allow="*" | |
modes="&env.SSL_USER_MODES;" | |
name="ssl" | |
parent="default" | |
port="&env.SSL_PORT;"> | |
<connect allow="*" | |
modes="&env.AUTHENTICATED_USER_MODES;" | |
name="authenticated" | |
parent="ssl" | |
registered="yes" | |
requireaccount="yes"> | |
<operjoin channel="&env.OPER_CHANNEL;" | |
override="no"> | |
<httpdacl password="&env.HTTP_ACL_PASSWORD;" | |
path="/*" | |
types="password" | |
username="&env.HTTP_ACL_USERNAME;"> | |
<alias format="*" | |
replace="SQUERY ChanServ :IDENTIFY $2 $3" | |
requires="CHANSERV" | |
text="ID" | |
uline="yes"> | |
<alias replace="SQUERY NickServ :IDENTIFY $2" | |
requires="NICKSERV" | |
text="ID" | |
uline="yes"> | |
<alias format=":IDENTIFY *" | |
replace="SQUERY NickServ :IDENTIFY $3-" | |
requires="NICKSERV" | |
text="NICKSERV" | |
uline="yes"> | |
<alias channelcommand="yes" | |
replace="SQUERY ChanServ :$1 $chan $2-" | |
requires="CHANSERV" | |
text="CS" | |
uline="yes" | |
usercommand="no"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="BOTSERV" | |
text="BOTSERV" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="CHANSERV" | |
text="CHANSERV" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="HOSTSERV" | |
text="HOSTSERV" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="MEMOSERV" | |
text="MEMOSERV" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="NICKSERV" | |
text="NICKSERV" | |
uline="yes"> | |
<alias operonly="yes" | |
replace="SQUERY $requirement :$2-" | |
requires="OPERSERV" | |
text="OPERSERV" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="STATSERV" | |
text="STATSERV" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="BOTSERV" | |
text="BS" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="CHANSERV" | |
text="CS" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="HOSTSERV" | |
text="HS" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="MEMOSERV" | |
text="MS" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="NICKSERV" | |
text="NS" | |
uline="yes"> | |
<alias operonly="yes" | |
replace="SQUERY $requirement :$2-" | |
requires="OPERSERV" | |
text="OS" | |
uline="yes"> | |
<alias replace="SQUERY $requirement :$2-" | |
requires="STATSERV" | |
text="SS" | |
uline="yes"> | |
<alias format="*" | |
replace="SQUERY $requirement :IDENTIFY $2-" | |
requires="NICKSERV" | |
text="ID" | |
uline="yes"> | |
<alias format="*" | |
replace="SQUERY $requirement :IDENTIFY $2-" | |
requires="NICKSERV" | |
text="IDENTIFY" | |
uline="yes"> | |
<alias format="*" | |
operonly="yes" | |
replace="SQUERY $requirement :GLOBAL $2-" | |
requires="GLOBAL" | |
text="GLOBAL" | |
uline="yes"> | |
<allowchannel name="*"> | |
<anticaps lowercase="abcdefghijklmnopqrstuvwxyz" | |
uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ"> | |
<argon2 iterations="3" | |
length="32" | |
memory="131074" | |
saltlength="16"> | |
<argon2d memory="131074"> | |
<argon2i iterations="4"> | |
<argon2id iterations="5" | |
length="64" | |
memory="262144" | |
saltlength="32"> | |
<auditorium opcansee="no" | |
opercansee="yes" | |
opvisible="no"> | |
<autodrop commands="CONNECT DELETE GET HEAD OPTIONS PATCH POST PUT TRACE"> | |
<autojoinident chan="#blackhole" | |
ident="*"> | |
<badhost host="root@*" | |
reason="Don't IRC as root"> | |
<badip ipmask="169.254.0.0/16" | |
reason="APIPA"> | |
<badip ipmask="10.0.0.0/8" | |
reason="Unclassified (ARPANET)"> | |
<badip ipmask="100.64.0.0/10" | |
reason="Unclassified (CGNAT)"> | |
<badip ipmask="172.16.0.0/12" | |
reason="Unclassified (private-network)"> | |
<badip ipmask="192.0.0.0/24" | |
reason="Unclassified (private-network)"> | |
<badip ipmask="192.0.2.0/24" | |
reason="Unclassified (TEST-NET-1)"> | |
<badip ipmask="192.88.99.0/24" | |
reason="Unclassified (6-to-4)"> | |
<badip ipmask="192.168.0.0/16" | |
reason="Unclassified (private network)"> | |
<badip ipmask="198.18.0.0/15" | |
reason="benchmarking"> | |
<badip ipmask="198.51.100.0/24" | |
reason="Unclassified (TEST-NET-2)"> | |
<badip ipmask="203.0.113.0/24" | |
reason="Unclassified (TEST-NET-3)"> | |
<badip ipmask="127.0.0.0/8" | |
reason="Unclassified (link-local)"> | |
<badip ipmask="224.0.0.0/3" | |
reason="Unclassified (multi-cast/future-use/limited broadcast)"> | |
<badip ipmask="6.0.0.0/7" | |
reason="You are forbidden from connecting to this network (AIS/DoD)"> | |
<badip ipmask="11.0.0.0/8" | |
reason="You are forbidden from connecting to this network (DoD)"> | |
<badip ipmask="21.0.0.0/7" | |
reason="You are forbidden from connecting to this network (DoD)"> | |
<badip ipmask="26.0.0.0/8" | |
reason="You are forbidden from connecting to this network (DoD)"> | |
<badip ipmask="30.0.0.0/8" | |
reason="YOu are forbidden from connecting to this network (DoD)"> | |
<badip ipmask="33.0.0.0/8" | |
reason="You are forbidden from connecting to this network (DoD)"> | |
<badip ipmask="55.0.0.0/8" | |
reason="You are forbidden from connecting to this network (DoD/US Postal Service)"> | |
<badip ipmask="214.0.0.0/7" | |
reason="You are forbidden from connecting to this network (DoD)"> | |
<badip ipmask="::1/128" | |
reason="Unclassified (loop-back)"> | |
<badip ipmask="::ffff:0:0/96" | |
reason="Unclassified (IPv4 mapped)"> | |
<badip ipmask="::ffff:0:0:0/96" | |
reason="Unclassified (IPv4 translated)"> | |
<badip ipmask="64:ff9b::/96" | |
reason="Unclassified (Global IPv4 translated)"> | |
<badip ipmask="100::/64" | |
reason="Unclassified (null-routed/discard)"> | |
<badip ipmask="2001:20::/28" | |
reason="Unclassified (ORCHIDv2)"> | |
<badip ipmask="2001:db8::/32" | |
reason="Unclassified (RFC documentation/RFC example subnet)"> | |
<badip ipmask="2002::/16" | |
reason="Unclassified (6-to-4)"> | |
<badip ipmask="fc00::/7" | |
reason="Unclassified (ULA)"> | |
<badip ipmask="fe80::/10" | |
reason="Unclassified (link-local)"> | |
<badnick nick="root" | |
reason="Don't IRC as root"> | |
<badnick nick="LINKSERV" | |
reason="Reserved For Services"> | |
<badnick nick="SPAMSERV" | |
reason="Reserved For Services"> | |
<badnick nick="GAMESERV" | |
reason="Reserved For Services"> | |
<badnick nick="MODESERV" | |
reason="Reserved For Services"> | |
<badnick nick="BOTSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="CHANSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="GLOBAL" | |
reason="Reserved for a network service"> | |
<badnick nick="HOSTSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="MEMOSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="NICKSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="OPERSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="STATSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="CHANFIX" | |
reason="Reserved for a network service"> | |
<badnick nick="ALIS" | |
reason="Reserved for a network service"> | |
<badnick nick="GAMESERV" | |
reason="Reserved for a network service"> | |
<badnick nick="HELPSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="INFOSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="PROXYSCAN" | |
reason="Reserved for a network service"> | |
<badnick nick="RPGSERV" | |
reason="Reserved for a network service"> | |
<badnick nick="SASLSERV" | |
reason="Reserved for a network service"> | |
<banmissing cap="yes" | |
duration="4m" | |
reason="CAP required, please upgrade your client" | |
version="yes"> | |
<banmissing ctcp="yes" | |
duration="1m" | |
reason="Enable CTCP or adjust your CTCP flood settings and try again"> | |
<bcrypt rounds="16"> | |
<blockamsg action="killopers" | |
delay="3"> | |
<blockhighlight ignoreextmsg="yes" | |
minlen="50" | |
minusernum="10" | |
reason="highlighting has been blocked (exceeded limits)" | |
stripcolor="yes"> | |
<blockinvite modechar="V" | |
reply="Can't invite, +V"> | |
<botmode forcenotice="no"> | |
<callerid cooldown="4m" | |
maxaccepts="256" | |
tracknick="yes"> | |
<cban glob="yes"> | |
<chanfilter hidemask="yes" | |
maxlen="512" | |
notifyuser="yes"> | |
<chanhistory bots="yes" | |
enableumode="yes" | |
maxlines="64" | |
prefixmsg="yes"> | |
<chanlog channel="&env.OPER_CHANNEL;" | |
snomasks="DdRrtXxLlkKvgfFoO"> | |
<channames allowrange="35,45-46" | |
denyrange="1-47,58-64,91-96,123-255"> | |
<channels opers="4294967295" | |
users="4294967295"> | |
<class chanmodes="*" | |
commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOADMODULE GLOADMODULE GUNLOADMODULE GRELOADMODULE" | |
name="Shutdown" | |
privs="users/auspex channels/auspex servers/auspex users/mass-message users/flood/no-throttle users/flood/increased-buffers" | |
snomasks="*" | |
usermodes="*"> | |
<class commands="SAJOIN SAPART SANICK SAQUIT SATOPIC SAKICK SAMODE OJOIN" | |
name="SACommands" | |
privs="channels/ignore-nonicks"> | |
<class chanmodes="*" | |
commands="CONNECT SQUIT RCONNECT RSQUIT MKPASSWD ALLTIME SWHOIS LOCKSERV UNLOCKSERV" | |
name="ServerLink" | |
privs="servers/auspex" | |
snomasks="Cc" | |
usermodes="*"> | |
<class chanmodes="*" | |
commands="KILL GLINE KLINE ZLINE QLINE ELINE TLINE RLINE CHECK NICKLOCK NICKUNLOCK SHUN CLONES CBAN" | |
name="BanControl" | |
snomasks="Xx" | |
usermodes="*"> | |
<class chanmodes="*" | |
commands="WALLOPS GLOBOPS" | |
name="OperChat" | |
privs="users/mass-message" | |
snomasks="Gg" | |
usermodes="*"> | |
<class chanmodes="*" | |
commands="SETHOST SETIDENT SETIDLE CHGNAME CHGHOST CHGIDENT" | |
name="HostCloak" | |
privs="users/auspex" | |
usermodes="*"> | |
<class name="RolePlay" | |
priv="channels/roleplay channels/roleplay-override"> | |
<cloak ignorecase="no" | |
key="BP4qa616oRTJLnUMYZfdcllopx1mere0OlyyLtsicNh2NRyywd529cmvtZnlbNLCbsIkY7Efk6Dp170u" | |
mode="full" | |
prefix="cloak/" | |
suffix=".hidden"> | |
<codepage name="ascii"> | |
<connectban banmessage="filtered for connection hammering; wait 64 seconds to retry" | |
bootwait="128" | |
duration="64" | |
ipv4cidr="32" | |
ipv6cidr="128" | |
splitwait="128" | |
threshold="32"> | |
<connflood bootwait="2m" | |
maxconns="8" | |
period="32s" | |
quitmsg="This module isn't used, use connban instead" | |
timeout="32s"> | |
<connrequire blockmessage="Enable CTCP or adjust your CTCP flood settings and try again in 1 minute" | |
ctcpstring="TIME" | |
timeout="5"> | |
<cpcase lower="97" | |
upper="65"> | |
<cpcase lower="98" | |
upper="66"> | |
<cpcase lower="99" | |
upper="67"> | |
<cpcase lower="100" | |
upper="68"> | |
<cpcase lower="101" | |
upper="69"> | |
<cpcase lower="102" | |
upper="70"> | |
<cpcase lower="103" | |
upper="71"> | |
<cpcase lower="104" | |
upper="72"> | |
<cpcase lower="105" | |
upper="73"> | |
<cpcase lower="106" | |
upper="74"> | |
<cpcase lower="107" | |
upper="75"> | |
<cpcase lower="108" | |
upper="76"> | |
<cpcase lower="109" | |
upper="77"> | |
<cpcase lower="110" | |
upper="78"> | |
<cpcase lower="111" | |
upper="79"> | |
<cpcase lower="112" | |
upper="80"> | |
<cpcase lower="113" | |
upper="81"> | |
<cpcase lower="114" | |
upper="82"> | |
<cpcase lower="115" | |
upper="83"> | |
<cpcase lower="116" | |
upper="84"> | |
<cpcase lower="117" | |
upper="85"> | |
<cpcase lower="118" | |
upper="86"> | |
<cpcase lower="119" | |
upper="87"> | |
<cpcase lower="120" | |
upper="88"> | |
<cpcase lower="121" | |
upper="89"> | |
<cpcase lower="122" | |
upper="90"> | |
<cpchars index="45"> | |
<cpchars begin="48" | |
end="57"> | |
<cpchars begin="65" | |
end="90" | |
front="yes"> | |
<cpchars begin="91" | |
end="96" | |
front="yes"> | |
<cpchars begin="97" | |
end="122" | |
front="yes"> | |
<cpchars begin="123" | |
end="125" | |
front="yes"> | |
<cpchars front="no" | |
index="47"> | |
<ctctags allowclientonlytags="no"> | |
<customprefix letter="q" | |
name="founder" | |
prefix="~" | |
rank="50000" | |
ranktoset="50000"> | |
<customprefix letter="a" | |
name="admin" | |
prefix="&" | |
rank="40000" | |
ranktoset="50000"> | |
<customprefix letter="h" | |
name="halfop" | |
prefix="%" | |
rank="20000" | |
ranktoset="30000"> | |
<customprefix change="yes" | |
name="op" | |
rank="30000" | |
ranktoset="30000"> | |
<customprefix change="yes" | |
depriv="no" | |
name="voice" | |
rank="10000" | |
ranktoset="20000"> | |
<dccblock channels="no" | |
users="no"> | |
<deaf bypasschars="" | |
bypasscharsuline="!" | |
enableprivdeaf="yes" | |
privdeafuline="yes"> | |
<delaymsg allownotice="yes"> | |
<disabled chanmodes="" | |
commands="" | |
fakenonexistant="no" | |
usermodes="w"> | |
<dnsbl action="zline" | |
domain="dnsbl.dronebl.org" | |
duration="5m" | |
name="DroneBL" | |
reason="DroneBL" | |
records="3,5,6,7,8,9,10,11,13,14,15,16,17,19" | |
timeout="5s" | |
type="record"> | |
<dnsbl action="zline" | |
domain="rbl.efnetrbl.org" | |
duration="5m" | |
name="EFnet RBL" | |
reason="EFnet RBL" | |
records="1,2,3,4,5" | |
timeout="5s" | |
type="record"> | |
<dnsbl action="zline" | |
domain="torexit.dan.me.uk" | |
duration="5m" | |
name="torexit.dan.me.uk" | |
reason="TOR Exit" | |
records="100" | |
timeout="5s" | |
type="record"> | |
<dualversion active="yes" | |
ban="yes" | |
duration="1m" | |
reason="Enable CTCP or adjust your CTCP flood settings and try again in 1 minute" | |
show="yes"> | |
<exception host="*@127.0.0.1/32" | |
reason="Local IRC client"> | |
<exemptfromfilter target="&env.OPER_CHANNEL;"> | |
<exemptfromfilter target="&env.SERVICE_CHANNEL;"> | |
<exemptfromfilter target="&env.HELP_CHANNEL;"> | |
<exemptfromfilter target="BOTSERV"> | |
<exemptfromfilter target="CHANSERV"> | |
<exemptfromfilter target="GLOBAL"> | |
<exemptfromfilter target="HOSTSERV"> | |
<exemptfromfilter target="MEMOSERV"> | |
<exemptfromfilter target="NICKSERV"> | |
<exemptfromfilter target="OPERSERV"> | |
<exemptfromfilter target="STATSERV"> | |
<extbanredirect char="d"> | |
<extbanregex engine="pcre" | |
opersonly="yes"> | |
<fakelist killonjoin="false" | |
maxusers="50" | |
minusers="20" | |
reason="User hit a spam trap" | |
target="#spamtrap" | |
topic="SPAM TRAP: DO NOT JOIN, wait 30 seconds for real channel list" | |
waittime="1s"> | |
<filteropts engine="glob" | |
notifyuser="yes" | |
warnonselfmsg="yes"> | |
<hidechans affectsopers="true"> | |
<hideidle modechar="a"> | |
<hidelist mode="filter" | |
rank="30000"> | |
<hidelist mode="invex" | |
rank="0"> | |
<hidemode mode="ban" | |
rank="10000"> | |
<hostname charmap="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_/0123456789,"> | |
<httpd timeout="8s"> | |
<httpstats enableparams="yes"> | |
<ident prefixunqueried="yes" | |
timeout="2"> | |
<idleprofile away="only" | |
idletime="7200" | |
ignoreloggedin="no" | |
name="example" | |
nochans="true" | |
reason="Disconnected for inactivity"> | |
<insane hostmasks="no" | |
ipmasks="no" | |
nickmasks="no" | |
trigger="95.5"> | |
<inviteexception bypasskey="yes"> | |
<ircv3 accountnotify="yes" | |
awaynotify="yes" | |
extendedjoin="yes"> | |
<joinflood bootwait="32s" | |
duration="2m" | |
splitwait="32s"> | |
<joinpartspam allowredirect="no" | |
freeredirect="no" | |
modechar="x"> | |
<keyword action="gline" | |
duration="5m" | |
flags="*" | |
pattern="*startkeylogger*" | |
reason="keylogger failed to start"> | |
<knock notify="both"> | |
<limits maxaway="&env.MAX_AWAY;" | |
maxchan="&env.MAX_CHAN;" | |
maxgecos="&env.MAX_GECOS;" | |
maxhost="&env.MAX_HOST;" | |
maxident="&env.MAX_IDENT;" | |
maxkick="&env.MAX_KICK;" | |
maxmodes="&env.MAX_MODES;" | |
maxnick="&env.MAX_NICK;" | |
maxquit="&env.MAX_QUIT;" | |
maxtopic="&env.MAX_TOPIC;"> | |
<log level="default" | |
method="file" | |
target="opers.log" | |
type="OPER"> | |
<log level="default" | |
method="file" | |
target="ircd.log" | |
type="* -USERINPUT -USEROUTPUT"> | |
<maxlist chan="largechan" | |
limit="512" | |
mode="ban"> | |
<maxlist chan="largechan" | |
limit="512" | |
mode="e"> | |
<maxlist chan="*" | |
limit="256"> | |
<maxmind file="/etc/inspircd/geolite2.mmdb"> | |
<messageflood notice="1.0" | |
privmsg="1.0" | |
tagmsg="0.2"> | |
<module name="geo_maxmind"> | |
<module name="ssl_gnutls"> | |
<module name="abbreviation"> | |
<module name="alias"> | |
<module name="allowinvite"> | |
<module name="alltime"> | |
<module name="anticaps"> | |
<module name="anticaps"> | |
<module name="argon2"> | |
<module name="auditorium"> | |
<module name="autoop"> | |
<module name="banexception"> | |
<module name="banredirect"> | |
<module name="bcrypt"> | |
<module name="blockamsg"> | |
<module name="blockcolor"> | |
<module name="botmode"> | |
<module name="callerid"> | |
<module name="cap"> | |
<module name="cban"> | |
<module name="cgiirc"> | |
<module name="chancreate"> | |
<module name="chanfilter"> | |
<module name="chanhistory"> | |
<module name="chanlog"> | |
<module name="channames"> | |
<module name="channelban"> | |
<module name="check"> | |
<module name="chghost"> | |
<module name="chgident"> | |
<module name="chgname"> | |
<module name="classban"> | |
<module name="clearchan"> | |
<module name="cloaking"> | |
<module name="codepage"> | |
<module name="commonchans"> | |
<module name="connectban"> | |
<module name="connflood"> | |
<module name="conn_join"> | |
<module name="conn_umodes"> | |
<module name="conn_waitpong"> | |
<module name="customprefix"> | |
<module name="customtitle"> | |
<module name="cycle"> | |
<module name="dccallow"> | |
<module name="deaf"> | |
<module name="delayjoin"> | |
<module name="delaymsg"> | |
<module name="denychans"> | |
<module name="disable"> | |
<module name="dnsbl"> | |
<module name="exemptchanops"> | |
<module name="filter"> | |
<module name="gecosban"> | |
<module name="geoban"> | |
<module name="geoclass"> | |
<module name="globalload"> | |
<module name="globops"> | |
<module name="haproxy"> | |
<module name="hidechans"> | |
<module name="hidelist"> | |
<module name="hidemode"> | |
<module name="hideoper"> | |
<module name="hostcycle"> | |
<module name="httpd_acl"> | |
<module name="httpd"> | |
<module name="httpd_config"> | |
<module name="httpd_stats"> | |
<module name="ident"> | |
<module name="inviteexception"> | |
<module name="ircv3_accounttag"> | |
<module name="ircv3_batch"> | |
<module name="ircv3_capnotify"> | |
<module name="ircv3_chghost"> | |
<module name="ircv3"> | |
<module name="ircv3_ctctags"> | |
<module name="ircv3_echomessage"> | |
<module name="ircv3_invitenotify"> | |
<module name="ircv3_labeledresponse"> | |
<module name="ircv3_msgid"> | |
<module name="ircv3_servertime"> | |
<module name="ircv3_sts"> | |
<module name="joinflood"> | |
<module name="kicknorejoin"> | |
<module name="knock"> | |
<module name="ldap"> | |
<module name="ldapoper"> | |
<module name="maphide"> | |
<module name="md5"> | |
<module name="messageflood"> | |
<module name="mlock"> | |
<module name="monitor"> | |
<module name="muteban"> | |
<module name="mysql"> | |
<module name="namedmodes"> | |
<module name="namesx"> | |
<module name="nickflood"> | |
<module name="nicklock"> | |
<module name="noctcp"> | |
<module name="nokicks"> | |
<module name="nonicks"> | |
<module name="nonotice"> | |
<module name="ojoin"> | |
<module name="operchans"> | |
<module name="operjoin"> | |
<module name="operlevels"> | |
<module name="operlog"> | |
<module name="opermodes"> | |
<module name="opermotd"> | |
<module name="operprefix"> | |
<module name="override"> | |
<module name="passforward"> | |
<module name="password_hash"> | |
<module name="pbkdf2"> | |
<module name="permchannels"> | |
<module name="pgsql"> | |
<module name="redirect"> | |
<module name="regex_glob"> | |
<module name="regex_pcre2"> | |
<module name="regex_posix"> | |
<module name="regex_re2"> | |
<module name="regex_stdlib"> | |
<module name="remove"> | |
<module name="repeat"> | |
<module name="restrictchans"> | |
<module name="restrictmsg"> | |
<module name="rline"> | |
<module name="rmode"> | |
<module name="sajoin"> | |
<module name="sakick"> | |
<module name="samode"> | |
<module name="sanick"> | |
<module name="sapart"> | |
<module name="saquit"> | |
<module name="sasl"> | |
<module name="satopic"> | |
<module name="securelist"> | |
<module name="seenicks"> | |
<module name="serverban"> | |
<module name="services_account"> | |
<module name="servprotect"> | |
<module name="sethost"> | |
<module name="setident"> | |
<module name="setidle"> | |
<module name="setname"> | |
<module name="sha1"> | |
<module name="sha256"> | |
<module name="showfile"> | |
<module name="showwhois"> | |
<module name="shun"> | |
<module name="silence"> | |
<module name="spanningtree"> | |
<module name="sqlite3"> | |
<module name="sslinfo"> | |
<module name="sslmodes"> | |
<module name="sslrehashsignal"> | |
<module name="starttls"> | |
<module name="stripcolor"> | |
<module name="svshold"> | |
<module name="swhois"> | |
<module name="timedbans"> | |
<module name="tline"> | |
<module name="topiclock"> | |
<module name="uhnames"> | |
<module name="uninvite"> | |
<module name="vhost"> | |
<module name="watch"> | |
<module name="websocket"> | |
<module name="xline_db"> | |
<module name="helpop"> | |
<module name="antiknocker"> | |
<module name="antisnoop"> | |
<module name="asn"> | |
<module name="autoaway"> | |
<module name="autodrop"> | |
<module name="autokick"> | |
<module name="blockhighlight"> | |
<module name="censor"> | |
<module name="clones"> | |
<module name="complete"> | |
<module name="custompenalty"> | |
<module name="customtags"> | |
<module name="defaulttopic"> | |
<module name="exmode"> | |
<module name="forceusername"> | |
<module name="geocmd"> | |
<module name="hostchange"> | |
<module name="lockserv"> | |
<module name="messagesocket"> | |
<module name="modenotice"> | |
<module name="noidletyping"> | |
<module name="nopartmsg"> | |
<module name="noprivatemode"> | |
<module name="protoctl"> | |
<module name="qrcode"> | |
<module name="regex_tre"> | |
<module name="solvemsg"> | |
<module name="stats_unlinked"> | |
<module name="teams"> | |
<module name="teststdrpl"> | |
<module name="userip"> | |
<monitor maxentries="256"> | |
<muteban notifyuser="yes"> | |
<nickdelay delay="5" | |
hint="true"> | |
<nickflood duration="60s"> | |
<nocreate noisy="yes" | |
reason="You are not allowed to create channels" | |
telluser="yes"> | |
<noctcp enableumode="yes"> | |
<ojoin notice="yes" | |
op="yes" | |
prefix="!"> | |
<operlog tosnomask="on"> | |
<opermotd file="/etc/inspircd/oper.motd.txt" | |
onoper="yes"> | |
<operprefix prefix="*"> | |
<options allowmismatch="&env.ALLOW_MISMATCH;" | |
allowzerolimit="&env.ALLOW_ZERO_LIMIT;" | |
announcets="&env.ANNOUNCE_TS;" | |
casemapping="ascii" | |
cyclehosts="&env.CYCLE_HOST_TS;" | |
cyclehostsfromuser="&env.CYCLE_HOST_FROM_USER;" | |
defaultbind="auto" | |
exemptchanops="censor:o filter:o nickflood:o nonick:v regmoderated:o" | |
fixedpart="" | |
fixedquit="" | |
hostintopic="&env.HOST_IN_TOPIC;" | |
invitebypassmodes="&env.INVITE_BYPASS_MODES;" | |
modesinlist="&env.MODES_IN_LIST;" | |
nosnoticestack="&env.NO_SNOTICE_STACK;" | |
pingwarning="&env.PING_WARNING;" | |
prefixpart="&env.PREFIX_PART;" | |
prefixquit="&env.PREFIX_QUIT;" | |
serverpingfreq="&env.SERVER_PING_FREQ;" | |
splitwhois="&env.SPLIT_WHOIS;" | |
suffixpart="&env.SUFFIX_PART;" | |
suffixquit="&env.SUFFIX_QUIT;" | |
syntaxhints="&env.SYNTAX_HINTS;" | |
xlinemessage="&env.XLINE_MESSAGE;"> | |
<override enableumode="yes" | |
noisy="yes" | |
requirekey="yes"> | |
<passforward cmd="SQUERY $nickrequired :IDENTIFY $nick $pass" | |
forwardmsg="NOTICE $nick :*** Forwarding PASS to $nickrequired" | |
nick="NICKSERV"> | |
<pbkdf2 iterations="12288" | |
length="32"> | |
<pbkdf2prov hash="sha256" | |
iterations="24576"> | |
<penalty name="HELPOP" | |
value="60"> | |
<performance clonesonconnect="&env.CLONES_ON_CONNECT;" | |
netbuffersize="&env.NET_BUFFER_SIZE;" | |
quietbursts="&env.QUIET_BURSTS;" | |
softlimit="&env.SOFT_LIMIT;" | |
somaxconn="&env.SO_MAX_CONN;" | |
timeskipwarn="&env.TIME_SKIP_WARN;"> | |
<permchanneldb filename="data/permchannels.db" | |
listmodes="yes" | |
saveperiod="1d"> | |
<permchannels channel="&env.OPER_CHANNEL;" | |
modes="npstOP" | |
topic="party line"> | |
<permchannels channel="&env.SERVICE_CHANNEL;" | |
modes="npstOP" | |
topic="Service monitoring"> | |
<permchannels channel="#blackhole" | |
modes="ntP" | |
topic="blackhole"> | |
<pid file="/tmp/inspircd.pid"> | |
<qrcode blockchar=" " | |
darkcolour="black" | |
lightcolour="white"> | |
<randquote file="quotes" | |
prefix="❦ " | |
suffix=""> | |
<remove protectedrank="50000" | |
supportnokicks="yes"> | |
<repeat maxbacklog="20" | |
maxdistance="50" | |
maxlines="20" | |
maxtime="0" | |
size="512"> | |
<restrictchans allowregistered="no"> | |
<restrictmsg_duration duration="1s" | |
exemptoper="yes" | |
exemptregistered="yes" | |
exemptuline="yes" | |
notify="no" | |
target="both"> | |
<rline engine="pcre" | |
matchonnickchange="yes" | |
zlineonmatch="no"> | |
<roleplay mode="U" | |
needchanmode="true" | |
needop="false" | |
npchost="&env.ROLE_PLAY_VHOST;"> | |
<rotatelog period="86400"> | |
<securelist exemptregistered="yes" | |
showmsg="yes" | |
waittime="8s"> | |
<security allowcoreunload="no" | |
announceinvites="dynamic" | |
customversion="&env.CUSTOM_VERSION;" | |
flatlinks="&env.FLAT_LINKS;" | |
genericoper="&env.GENERIC_OPER;" | |
hidebans="&env.HIDE_BANS;" | |
hidemodes="&env.HIDE_MODES;" | |
hidesplits="&env.HIDE_SPLITS;" | |
hideulines="&env.HIDE_ULINES;" | |
maxtargets="&env.MAX_TARGETS;" | |
restrictbannedusers="&env.RESTRICT_BANNED_USERS;" | |
userstats="&env.USER_STATS;"> | |
<shedusers blockconnect="yes" | |
blockmessage="This server is in maintenance mode." | |
kill="no" | |
maxusers="0" | |
message="This server has entered maintenance mode." | |
minidle="3600" | |
shedopers="no" | |
shutdown="no"> | |
<showfile endtext="End of uptime" | |
file="/proc/uptime" | |
introtext="server uptime:" | |
name="UPTIME"> | |
<showfile endtext="End of loadavg" | |
file="/proc/loadavg" | |
introtext="server loadavg:" | |
name="LOADAVG"> | |
<showwhois opersonly="no" | |
showfromopers="yes"> | |
<shun affectopers="no" | |
allowconnect="no" | |
allowtags="no" | |
cleanedcommands="AWAY PART QUIT" | |
enabledcommands="ADMIN OPER PING PONG QUIT PART JOIN" | |
notifyuser="yes"> | |
<silence exemptuline="yes" | |
maxentries="256"> | |
<sslinfo operonly="no"> | |
<sslmodes enableumode="yes"> | |
<stdregex type="ecmascript"> | |
<strictsasl reason="Fix your SASL authentication settings and try again"> | |
<svshold silent="false"> | |
<timedbans sendnotice="yes"> | |
<timedstaticquit mintime="5m" | |
quitmsg="client quit within first 5 minutes"> | |
<totp hash="sha256" | |
window="5"> | |
<type classes="SACommands OperChat BanControl HostCloak Shutdown ServerLink" | |
modes="+s +cCqQ" | |
name="NetAdmin" | |
vhost="&env.NET_ADMIN_VHOST;"> | |
<type classes="SACommands OperChat BanControl HostCloak ServerLink" | |
name="GlobalOp" | |
vhost="&env.GLOBAL_OP_VHOST;"> | |
<type classes="SACommands OperChat BanControl HostCloak ServerLink" | |
name="HOPM" | |
vhost="&env.HOPM_VHOST;"> | |
<type classes="HostCloak" | |
name="Helper" | |
vhost="&env.HELPER_VHOST;"> | |
<uline server="&env.SERVICES_ULINE;" | |
silent="no"> | |
<waitpong killonbadreply="yes" | |
sendsnotice="yes"> | |
<watch maxwatch="256"> | |
<whowas groupsize="10" | |
maxgroups="100000" | |
maxkeep="32y"> | |
<wsorigin allow="&env.WS_ORIGIN_ALLOW;"> | |
<xlinedb filename="/var/lib/inspircd/xline.db" | |
saveperiod="128s"> | |
<zombie cleansplit="no" | |
dirtysplit="yes" | |
maxzombies="100" | |
serverzombietime="5m"> | |
<alias text="HELPOP" replace="HELP $2-"> | |
<helpmsg nohelp="There is no help for the topic you searched for. Please try again."> | |
<helptopic key="start" title="HELP" value=" | |
/HELP CUSER | |
/HELP COPER | |
/HELP UMODES | |
/HELP CHMODES | |
/HELP SNOMASKS | |
/HELP EXTBANS | |
/HELP INDEX"> | |
<helptopic key="cuser" title="USER COMMANDS" value=" | |
ACCEPT ADMIN AWAY COMMANDS CYCLE DCCALLOW | |
HEXIP INFO INVITE ISON JOIN KICK | |
KNOCK LINKS LIST LUSERS MAP MKPASSWD | |
MODE MODULES MONITOR MOTD NAMES NICK | |
NOTICE OPER PART PASS PING PONG | |
PRIVMSG QUIT REMOVE SERVLIST SETNAME SILENCE | |
SQUERY SSLINFO STATS TBAN TIME TITLE | |
TOPIC UNINVITE USER USERHOST VERSION VHOST | |
WATCH WHO WHOIS WHOWAS | |
"> | |
<helptopic key="squery" title="/SQUERY <target> :<message>" value=" "> | |
<helptopic key="servlist" title="/SERVLIST [<nick> [<oper-type>]]" value=" "> | |
<helptopic key="sslinfo" title="/SSLINFO [<chan>|<nick>]" value=" "> | |
<helptopic key="uninvite" title="/UNINVITE <nick> <channel>" value=" "> | |
<helptopic key="tban" title="/TBAN <channel> <duration> <banmask>" value=" "> | |
<helptopic key="dccallow" title="/DCCALLOW [(+|-)<nick> [<time>]]|[LIST|HELP]" value=" | |
/DCCALLOW - List allowed nicks | |
/DCCALLOW LIST - This also lists allowed nicks | |
/DCCALLOW +<nick> [<duration>] - Add a nick | |
/DCCALLOW -<nick> - Remove a nick | |
/DCCALLOW HELP - Display help"> | |
<helptopic key="accept" title="/ACCEPT *|(+|-)<nick>[,(+|-)<nick>]+" value=" | |
/ACCEPT * - List accepted nicks | |
/ACCEPT +<nick> - Add a nick | |
/ACCEPT -<nick> - Remove a nick | |
/ACCEPT +<nick>,-<nick>,+<nick>"> | |
<helptopic key="cycle" title="/CYCLE <channel> [:<reason>]" value=" "> | |
<helptopic key="title" title="/TITLE <username> <password>" value=" "> | |
<helptopic key="watch" title="/WATCH C|L|l|S|(+|-)<nick> [(+|-)<nick>]+" value=" | |
/WATCH - List watched nicks that are online | |
/WATCH l - List watched nicks that are online | |
/WATCH L - List watched nicks, online and offline | |
/WATCH C - Clear all watched nicks | |
/WATCH S - Show statistics | |
/WATCH +<nick> - Add a nick | |
/WATCH -<nick> - Remove a nick | |
/WATCH +<nick> -<nick> +<nick>"> | |
<helptopic key="monitor" title="/MONITOR C|L|S|(+|-) <nick>[,<nick>]+" value=" | |
/MONITOR L - List all monitored nicks, not differentiating between | |
online and offline nicks | |
/MONITOR C - Clear all monitored nicks | |
/MONITOR S - List all monitored nicks, indicating which are online | |
and which are offline | |
/MONITOR + <nick> - Add a nick | |
/MONITOR - <nick> - Remove a nick | |
/MONITOR + <nick>,<nick>,<nick> | |
/MONITOR - <nick>,<nick>,<nick>"> | |
<helptopic key="vhost" title="/VHOST <username> <password>" value=" "> | |
<helptopic key="remove" title="/REMOVE <channel> <nick> [:<reason>]" value=" "> | |
<helptopic key="rmode" title="/RMODE <channel> <mode> [<pattern>]" value=" "> | |
<helptopic key="hexip" title="/HEXIP <hex-ip|raw-ip>" value=" "> | |
<helptopic key="silence" title="/SILENCE [(+|-)<mask> [CcdiHNnPpTtx]]" value=" | |
/SILENCE - Shows a list of silenced masks | |
/SILENCE +<mask> [<flags>] - Add a mask | |
/SILENCE -<mask> - Remove a mask | |
FLAGS | |
------------------- | |
C Matches a CTCP targeted at a user. | |
c Matches a CTCP targeted at a channel. | |
d Default behaviour; equivalent to CciNnPpTt. | |
H Hide the contents of messages instead of blocking. | |
i Matches an invite to a channel. | |
N Matches a NOTICE targeted at a user. | |
n Matches a NOTICE targeted at a channel. | |
P Matches a PRIVMSG targeted at a user. | |
p Matches a PRIVMSG targeted at a channel. | |
T Matches a TAGMSG targeted at a user. | |
t Matches a TAGMSG targeted at a channel. | |
x Exempt the mask from silence rules."> | |
<helptopic key="knock" title="/KNOCK <channel> :<reason>" value=" "> | |
<helptopic key="user" title="/USER <username> <unused> <unused> :<realname>" value=" "> | |
<helptopic key="nick" title="/NICK <newnick>" value=" "> | |
<helptopic key="quit" title="/QUIT [:<message>]" value=" "> | |
<helptopic key="version" title="/VERSION [<servername>]" value=" "> | |
<helptopic key="ping" title="/PING <cookie> [<servername>]" value=" "> | |
<helptopic key="pong" title="/PONG <cookie> [<servername>]" value=" "> | |
<helptopic key="prop" title="/PROP <target> [(+|-)<name> [<value>]]+" value=" "> | |
<helptopic key="admin" title="/ADMIN [<servername>]" value=" "> | |
<helptopic key="privmsg" title="/PRIVMSG <target>[,<target>]+ :<message>" value=" "> | |
<helptopic key="notice" title="/NOTICE <target>[,<target>]+ :<message>" value=" "> | |
<helptopic key="join" title="/JOIN <channel>[,<channel>]+ [<key>[,<key>]+]" value=" "> | |
<helptopic key="names" title="/NAMES [<channel>[,<channel>]+]" value=" "> | |
<helptopic key="part" title="/PART <channel>[,<channel>]+ [:<reason>]" value=" "> | |
<helptopic key="kick" title="/KICK <channel> <nick>[,<nick>]+ [:<reason>]" value=" "> | |
<helptopic key="mode" title="/MODE <target> [[(+|-)]<modes> [<mode-parameters>]]" value=" | |
/MODE <target> - Show modes of <target>. | |
/MODE <channel> <list mode char> - List bans, exceptions, etc. set on <channel>."> | |
<helptopic key="topic" title="/TOPIC <channel> [:<topic>]" value=" "> | |
<helptopic key="who" title="/WHO <pattern> [<flags>][%[<fields>[,<querytype>]]] <pattern>" value=" | |
--------------- | |
FLAGS | |
--------------- | |
A Show users who have an away message matching <pattern>. | |
a Show users who have an account name matching <pattern>. | |
G Show users who are connecting from a country code matching <pattern>. | |
Requires the geoban module. | |
h Show users who have a hostname matching <pattern>. If the 'x' modifier | |
is specified then this will match against the real hostname instead of | |
the display hostname. | |
i Show users who have an IP address matching <pattern>. | |
m Show users who have the modes listed in <pattern>. The pattern | |
should be in the same format as a mode change e.g. +ow-i (server | |
operators only). | |
n Show users who have a nickname matching <pattern>. | |
p Show users who are connected to a port in the <pattern> range (server | |
operators only). | |
r Show users who have a real name matching <pattern>. | |
s Show users who are on a server with a name matching <pattern>. If the 'x' | |
modifier is specified then this will match against the real server name | |
instead of the masked server name. | |
t Show users who have connected in the last <pattern> seconds. | |
u Show users who have a username matching <pattern>. | |
f Only show users on remote (far) servers. | |
l Only show users on the local server. | |
o Only show server operators. | |
x Show sensitive data like real user hostnames and, when hideserver is | |
enabled, real server hostnames. | |
---------------- | |
FIELDS | |
---------------- | |
a Include the user's account name in the response. | |
c Include the first common channel name in the response. | |
d Include the user's server distance from you in the response. | |
f Include the user's away status, oper status, and highest channel prefix | |
in the response. | |
h Include the user's hostname in the response. If the 'x' flag was | |
specified then this is the real host rather than the display host. | |
i Include the user's IP address in the response. | |
l Include the user's idle time in the response. | |
n Include the user's nickname in the response. | |
o Include the user's channel operator rank level in the response. | |
r Include the user's real name in the response. | |
s Include the user's server name in the response. If the 'x' flag was | |
specified then this is the real server name rather than the masked server | |
name. | |
t Include the query type in the response. | |
u Include the user's username in the response."> | |
<helptopic key="motd" title="/MOTD [<servername>]" value=" "> | |
<helptopic key="oper" title="/OPER <username> <password>" value=" "> | |
<helptopic key="list" title="/LIST [<pattern>]" value=" "> | |
<helptopic key="lusers" title="/LUSERS" value=" "> | |
<helptopic key="userhost" title="/USERHOST <nick> [<nick>]+" value=" "> | |
<helptopic key="away" title="/AWAY [:<message>]" value=" "> | |
<helptopic key="ison" title="/ISON <nick> [<nick>]+" value=" "> | |
<helptopic key="invite" title="/INVITE [<nick> <channel> [<time>]]" value=" "> | |
<helptopic key="pass" title="/PASS <password>" value=" "> | |
<helptopic key="whowas" title="/WHOWAS <nick> [<count>]" value=" "> | |
<helptopic key="links" title="/LINKS" value=" "> | |
<helptopic key="map" title="/MAP" value=" "> | |
<helptopic key="whois" title="/WHOIS [<servername>] <nick>[,<nick>]+" value=" "> | |
<helptopic key="time" title="/TIME [<servername>]" value=" "> | |
<helptopic key="info" title="/INFO [<servername>]" value=" "> | |
<helptopic key="setname" title="/SETNAME :<realname>" value=" "> | |
<helptopic key="coper" title="Oper Commands" value=" | |
ALLTIME CBAN CHECK CHGHOST CHGIDENT | |
CHGNAME CLEARCHAN CLOAK CONNECT DIE | |
ELINE FILTER GLINE GLOADMODULE GLOBOPS | |
GRELOADMODULE GUNLOADMODULE KILL KLINE LOADMODULE | |
NICKLOCK NICKUNLOCK OJOIN OPERMOTD QLINE | |
RCONNECT REHASH RELOADMODULE RESTART RLINE | |
RSQUIT SAJOIN SAKICK SAMODE SANICK | |
SAPART SAQUIT SATOPIC SETHOST SETIDENT | |
SETIDLE SHUN SQUIT SWHOIS TLINE | |
UNLOADMODULE WALLOPS ZLINE | |
"> | |
<helptopic key="tline" title="/TLINE <mask>" value=" "> | |
<helptopic key="filter" title="/FILTER <pattern> [<action> <flags> [<duration>] :<reason>]" value=" | |
------------------ | |
FILTERS | |
------------------ | |
None Does nothing | |
Warn Lets the message through and informs +s server operators | |
of the message and all relevant info | |
Block Blocks message and informs +s server operators of the blocked | |
message and all relevant info | |
Silent Blocks message, but does not notify server operators | |
Kill Kills the user | |
Gline G-lines the user for the specified duration | |
Zline Z-lines the user for the specified duration | |
Shun Shuns the user for the specified duration (requires the shun module) | |
------------------ | |
FLAGS | |
------------------ | |
p Block private and channel messages | |
n Block private and channel notices | |
P Block part messages | |
q Block quit messages | |
o Don't match against opers | |
r Don't match against registered users | |
c Strip all formatting codes from the message before matching | |
* Represents all of the above flags except r | |
- Does nothing, a non-op for when you do not want to specify any | |
flags"> | |
<helptopic key="ojoin" title="/OJOIN <channel>" value=" "> | |
<helptopic key="check" title="/CHECK <nick>|<ipmask>|<hostmask>|<channel> [<servername>]" value=" "> | |
<helptopic key="alltime" title="/ALLTIME" value=" "> | |
<helptopic key="rconnect" title="/RCONNECT <remote-server-mask> <target-server-mask>" value=" "> | |
<helptopic key="rsquit" title="/RSQUIT <target-server-mask> [:<reason>]" value=" "> | |
<helptopic key="globops" title="/GLOBOPS :<message>" value=" "> | |
<helptopic key="cban" title="/CBAN <channelmask> [<duration> [:<reason>]]" value=" "> | |
<helptopic key="sajoin" title="/SAJOIN [<nick>] <channel>[,<channel>]+" value=" "> | |
<helptopic key="sapart" title="/SAPART <nick> <channel>[,<channel>]+ [:<reason>]" value=" "> | |
<helptopic key="samode" title="/SAMODE <target> (+|-)<modes> [<mode-parameters>]" value=" "> | |
<helptopic key="sanick" title="/SANICK <nick> <newnick>" value=" "> | |
<helptopic key="sakick" title="/SAKICK <channel> <nick> [:<reason>]" value=" "> | |
<helptopic key="satopic" title="/SATOPIC <channel> :<topic>" value=" "> | |
<helptopic key="saquit" title="/SAQUIT <nick> :<reason>" value=" "> | |
<helptopic key="setidle" title="/SETIDLE <duration>" value=" "> | |
<helptopic key="sethost" title="/SETHOST <host>" value=" "> | |
<helptopic key="setident" title="/SETIDENT <username>" value=" "> | |
<helptopic key="swhois" title="/SWHOIS <nick> :<swhois>" value=" "> | |
<helptopic key="mkpasswd" title="/MKPASSWD <hashtype> <plaintext>" value=" "> | |
<helptopic key="opermotd" title="/OPERMOTD [<servername>]" value=" "> | |
<helptopic key="nicklock" title="/NICKLOCK <nick> <newnick>" value=" "> | |
<helptopic key="nickunlock" title="/NICKUNLOCK <nick>" value=" "> | |
<helptopic key="chghost" title="/CHGHOST <nick> <host>" value=" "> | |
<helptopic key="chgname" title="/CHGNAME <nick> :<realname>" value=" "> | |
<helptopic key="chgident" title="/CHGIDENT <nick> <username>" value=" "> | |
<helptopic key="shun" title="/SHUN <nick!user@host>[,<nick!user@host>]+ [<duration> :<reason>]" value=" "> | |
<helptopic key="die" title="/DIE <servername>" value=" "> | |
<helptopic key="restart" title="/RESTART <servername>" value=" "> | |
<helptopic key="commands" title="/COMMANDS" value=" "> | |
<helptopic key="kill" title="/KILL <nick>[,<nick>]+ :<reason>" value=" "> | |
<helptopic key="rehash" title="/REHASH [<servermask>]" value=" "> | |
<helptopic key="connect" title="/CONNECT <servermask>" value=" "> | |
<helptopic key="squit" title="/SQUIT <servermask>" value=" "> | |
<helptopic key="modules" title="/MODULES [<servername>]" value=" "> | |
<helptopic key="loadmodule" title="/LOADMODULE <modulename>" value=" "> | |
<helptopic key="unloadmodule" title="/UNLOADMODULE <modulename>" value=" "> | |
<helptopic key="reloadmodule" title="/RELOADMODULE <modulename>" value=" "> | |
<helptopic key="gloadmodule" title="/GLOADMODULE <modulename> [<servermask>]" value=" "> | |
<helptopic key="gunloadmodule" title="/GUNLOADMODULE <modulename> [<servermask>]" value=" "> | |
<helptopic key="greloadmodule" title="/GRELOADMODULE <modulename> [<servermask>]" value=" "> | |
<helptopic key="kline" title="/KLINE <user@host>[,<user@host>]+ [<duration> :<reason>]" value=" "> | |
<helptopic key="zline" title="/ZLINE <ipmask>[,<ipmask>]+ [<duration> :<reason>]" value=" "> | |
<helptopic key="qline" title="/QLINE <nickmask>[,<nickmask>]+ [<duration> :<reason>]" value=" "> | |
<helptopic key="gline" title="/GLINE <user@host>[,<user@host>]+ [<duration> :<reason>]" value=" "> | |
<helptopic key="eline" title="/ELINE <user@host>[,<user@host>]+ [<duration> :<reason>]" value=" "> | |
<helptopic key="wallops" title="/WALLOPS :<message>" value=" "> | |
<helptopic key="rline" title="/RLINE <regex> [<duration> :<reason>]" value=" "> | |
<helptopic key="clearchan" title="/CLEARCHAN <channel> [KILL|KICK|G|Z] [:<reason>]" value=" "> | |
<helptopic key="cloak" title="/CLOAK <host>" value=" "> | |
<helptopic key="umodes" title="USER MODES" value=" | |
c Blocks private messages and notices from users who do | |
not share a common channel with you (requires the | |
commonchans module). | |
d Deaf mode. User will not receive any messages or notices | |
from channels they are in (requires the deaf module). | |
g In combination with /ACCEPT, provides for server-side | |
ignore (requires the callerid module). | |
h Marks as 'available for help' in WHOIS (server operators | |
only, requires the helpmsg module). | |
i Makes invisible to /WHO if the user using /WHO is not in | |
a common channel. | |
k Prevents the user from being kicked from channels, or | |
having op modes removed from them (services only, | |
requires the services module). | |
o Marks as a server operator. | |
s <mask> Receives server notices specified by <mask> | |
(server operators only). | |
r Marks as a having a registered nickname | |
(requires the account module). | |
w Receives wallops messages. | |
x Gives a cloaked hostname (requires the cloak module). | |
z Only allow private messages from TLS users (requires | |
the sslmodes module). | |
B Marks as a bot (requires the botmode module). | |
D Privdeaf mode. User will not receive any private messages | |
or notices from users (requires the deaf module). | |
H Hides an oper's oper status from WHOIS (requires the | |
hideoper module). | |
I Hides a user's entire channel list in WHOIS from | |
non-server operators (requires the hidechans module). | |
L Stops redirections done by the redirect module (requires | |
the redirect module). | |
N Allows users to opt-out of receiving channel history | |
(requires the chanhistory module). | |
O Allows server operators to opt-in to overriding | |
restrictions (requires the override module). | |
R Blocks private messages from unregistered users | |
(requires the account module). | |
S Strips formatting codes out of private messages | |
to the user (requires the stripcolor module). | |
W Receives notifications when a user uses WHOIS on them | |
(server operators only, requires the showwhois module)."> | |
<helptopic key="chmodes" title="CHANNEL MODES" value=" | |
v <nickname> Gives voice to <nickname>, allowing them to speak | |
while the channel is +m. | |
h <nickname> Gives halfop status to <nickname> (requires the | |
customprefix module). | |
o <nickname> Gives op status to <nickname>. | |
a <nickname> Gives protected status to <nickname>, preventing | |
them from being kicked (+q only, requires the | |
customprefix module). | |
q <nickname> Gives owner status to <nickname>, preventing them | |
from being kicked (Services or +q only, requires | |
the customprefix module). | |
b <hostmask> Bans <hostmask> from the channel. | |
e <hostmask> Excepts <hostmask> from bans (requires the | |
banexception module). | |
I <hostmask> Excepts <hostmask> from +i, allowing matching | |
users to join while the channel is invite-only | |
(requires the inviteexception module). | |
c Blocks messages that contain formatting codes | |
(requires the blockcolor module). | |
d <time> Blocks messages to a channel from new users | |
until they have been in the channel for <time> | |
seconds (requires the delaymsg module). | |
f [*]<lines>:<sec> Kicks on text flood equal to or above the | |
specified rate. With *, the user is banned | |
(requires the messageflood module). | |
g <mask> Blocks messages matching the given glob mask | |
(requires the chanfilter module). | |
i Makes the channel invite-only. | |
Users can only join if an operator | |
uses /INVITE to invite them. | |
j <joins>:<sec> Limits joins to the specified rate (requires | |
the joinflood module). | |
k <key> Set the channel key (password) to <key>. | |
l <limit> Set the maximum allowed users to <limit>. | |
m Enable moderation. Only users with +v, +h, or +o | |
can speak. | |
n Blocks users who are not members of the channel | |
from messaging it. | |
p Hides the channel in /WHOIS from people who are not a member. | |
You probably want the s (secret) channel mode rather than this. | |
r Marks the channel as registered with Services | |
(requires the account module). | |
s Hides the channel in /WHOIS and /LIST from people who are not a member. | |
t Prevents users without +h or +o from changing the | |
topic. | |
u Makes the channel an auditorium; normal users only | |
see themselves or themselves and the operators, | |
while operators see all the users (requires the | |
auditorium module). | |
w <flag>:<banmask> Adds basic channel access controls of <flag> to | |
<banmask>, via the +w listmode. | |
For example, +w o:R:Brain will op anyone identified | |
to the account 'Brain' on join. | |
(requires the autoop module) | |
z Blocks non-TLS clients from joining the channel | |
(requires the sslmodes module). | |
A Allows anyone to invite users to the channel | |
(normally only chanops can invite, requires | |
the allowinvite module). | |
B Blocks messages with too many capital letters, | |
as determined by the network configuration | |
(requires the blockcaps module). | |
C Blocks any CTCPs to the channel (requires the | |
noctcp module). | |
D Delays join messages from users until they message | |
the channel (requires the delayjoin module). | |
E [~|*]<lines>:<sec>[:<difference>][:<backlog>] Allows blocking of | |
similar messages (requires the repeat module). | |
Kicks as default, blocks with ~ and bans with * | |
The last two parameters are optional. | |
F <changes>:<sec> Blocks nick changes when they equal or exceed the | |
specified rate (requires the nickflood module). | |
H <num>:<duration> Displays the last <num> lines of chat to joining | |
users. <duration> is the maximum time to keep | |
lines in the history buffer (requires the | |
chanhistory module). | |
J <seconds> Prevents rejoin after kick for the specified | |
number of seconds. This prevents auto-rejoin | |
(requires the kicknorejoin module). | |
K Blocks /KNOCK on the channel (requires the | |
knock module). | |
L <channel> If the channel reaches its limit set by +l, | |
redirect users to <channel> (requires the | |
redirect module). | |
M Blocks unregistered users from speaking (requires | |
the account module). | |
N Prevents users on the channel from changing nick | |
(requires the nonicks module). | |
O Channel is server operators only (can only be set | |
by server operators, requires the operchans module). | |
P Makes the channel permanent; Bans, invites, the | |
topic, modes, and such will not be lost when it | |
empties (can only be set by server operators, | |
requires the permchannels module). | |
Q Only services servers and their users can kick | |
(requires the nokicks module). | |
R Blocks unregistered users from joining (requires | |
the account module). | |
S Strips formatting codes from messages to the | |
channel (requires the stripcolor module). | |
T Blocks /NOTICEs to the channel from users who are | |
not at least halfop (requires the nonotice module). | |
X <type>:<status> Makes users of <status> or higher exempt to the | |
specified restriction <type>. For example: flood:h | |
(requires the exemptchanops module). | |
Possible restriction types to exempt with +X are: | |
anticaps Channel mode +B | |
auditorium-see Permission required to see the full user list of | |
a +u channel (requires the auditorium module). | |
auditorium-vis Permission required to be visible in a +u channel | |
(requires the auditorium module). | |
blockcaps Channel mode +B | |
blockcolor Channel mode +c | |
filter Channel mode +g | |
flood Channel mode +f | |
nickflood Channel mode +F | |
noctcp Channel mode +C | |
nonick Channel mode +N | |
nonotice Channel mode +T | |
regmoderated Channel mode +M | |
repeat Channel mode +E | |
stripcolor Channel mode +S | |
topiclock Channel mode +t"> | |
<helptopic key="stats" title="/STATS <symbol> [<servername>]" value=" | |
e Show E-lines (global user@host ban exceptions) | |
g Show G-lines (global user@host bans) | |
k Show K-lines (local user@host bans) | |
q Show Q-lines (global nick bans) | |
R Show R-lines (global regular expression bans) | |
Z Show Z-lines (global IP mask bans) | |
s Show filters (global) | |
C Show channel bans (global) | |
H Show shuns (global) | |
c Show link blocks | |
d Show configured DNSBLs and related statistics | |
m Show command statistics, number of times commands have been used | |
o Show a list of all valid oper usernames and hostmasks | |
p Show open client ports, and the port type (tls, plaintext, etc) | |
u Show server uptime | |
z Show memory usage statistics | |
i Show connect class permissions | |
l Show all client connections with information (sendq, commands, bytes, time connected) | |
L Show all client connections with information and IP address | |
P Show online opers and their idle times | |
T Show bandwidth/socket statistics | |
U Show services servers | |
Y Show connection classes | |
O Show opertypes and the allowed user and channel modes it can set | |
E Show socket engine events | |
S Show currently held registered nicknames | |
G Show how many local users are connected from each country"> | |
<helptopic key="snomasks" title="SNOMASKS" value=" | |
a Allows receipt of local announcement messages. | |
A Allows receipt of remote announcement messages. | |
c Allows receipt of local connect messages. | |
C Allows receipt of remote connect messages. | |
d Allows receipt of local DNSBL messages (requires the dnsbl module). | |
D Allows receipt of remote DNSBL messages (requires the dnsbl module). | |
f Allows receipt of local filter messages (requires the filter module). | |
F Allows receipt of remote filter messages (requires the filter module). | |
g Allows receipt of globops (requires the globops module). | |
j Allows receipt of channel creation notices (requires the chancreate module). | |
J Allows receipt of remote channel creation notices (requires the chancreate module). | |
k Allows receipt of local kill messages. | |
K Allows receipt of remote kill messages. | |
l Allows receipt of local linking related messages. | |
L Allows receipt of remote linking related messages. | |
n Allows receipt of local nickname changes (requires the seenicks module). | |
N Allows receipt of remote nickname changes (requires the seenicks modules). | |
o Allows receipt of oper-up, oper-down, and oper-failure messages. | |
O Allows receipt of remote oper-up, oper-down, and oper-failure messages. | |
q Allows receipt of local quit messages. | |
Q Allows receipt of remote quit messages. | |
t Allows receipt of attempts to use /STATS (local and remote). | |
v Allows receipt of oper override notices (requires the override module). | |
x Allows receipt of local X-line notices (G/Z/Q/K/E/R/SHUN/CBan). | |
X Allows receipt of remote X-line notices (G/Z/Q/K/E/R/SHUN/CBan). | |
"> | |
<helptopic key="extbans" title="EXTBANS" value=" | |
--------------------- | |
MATCHING | |
--------------------- | |
a:<mask> Matches user with both a matching banmask and real name, | |
where <mask> is in the format nick!user@host+realname | |
(requires realnameban module). | |
j:<channel> Matches anyone in the given channel. Does not support | |
wildcards (requires the channelban module). | |
n:<class> Matches users in a matching connect class (requires | |
the classban module). | |
r:<realname> Matches users with a matching real name (requires the | |
realnameban module). | |
s:<server> Matches users on a matching server (requires the | |
serverban module). | |
z:<tlsfp> Matches users having the given TLS certificate | |
fingerprint (requires the sslmodes module). | |
w:<gateway> Matches users who are connecting via a WebIRC gateway that | |
matches <gateway>. | |
O:<opertype> Matches server operators of a matching type, mostly | |
useful as an invite exception (requires the | |
operchans module). | |
R:<account> Matches users logged into a matching account (requires | |
the account module). | |
U:<banmask> Matches unregistered users matching the given banmask. | |
(requires the account module). | |
-------------------- | |
ACTING | |
-------------------- | |
c:<banmask> Blocks any messages that contain formatting codes from | |
matching users (requires the blockcolor module). | |
m:<banmask> Blocks messages from matching users (requires the muteban | |
module). Users with +v or above are not affected. | |
A:<banmask> Blocks invites by matching users even when +A is set | |
(requires the allowinvite module). | |
B:<banmask> Blocks all capital or nearly all capital messages from | |
matching users (requires the blockcaps module). | |
C:<banmask> Blocks CTCPs from matching users (requires the noctcp | |
module). | |
N:<banmask> Blocks nick changes from matching users (requires | |
the nonicks module). | |
Q:<banmask> Blocks kicks by matching users (requires the nokicks | |
module). | |
S:<banmask> Strips formatting codes from messages from matching | |
users (requires the stripcolor module). | |
T:<banmask> Blocks notices from matching users (requires the | |
nonotice module). | |
-------------------- | |
ADDITIONAL | |
-------------------- | |
Redirect n!u@h#channel will redirect the banned user to #channel | |
when they try to join (requires the banredirect module)."> | |
<include file="/etc/inspircd/include.conf" | |
missingokay="yes"> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment