diff --git a/.gitignore b/.gitignore index 72f386d..5da2f8e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ __pycache__/ *.py[cod] *.bak *~ +*# *.save* *.db *.pid diff --git a/docs/modelists/channel-modes.csv b/docs/modelists/channel-modes.csv new file mode 100644 index 0000000..487362e --- /dev/null +++ b/docs/modelists/channel-modes.csv @@ -0,0 +1,64 @@ +Channel Mode / IRCd,RFC 1459,InspIRCd,charybdis,Elemental-IRCd,ChatIRCd,UnrealIRCd,Nefarious,snircd,IRCu,ircd-ratbox,IRCd-Hybrid,ngIRCd +admin,,"a (m_customprefix, m_chanprotect)",,a (when enabled),,a,,,,,,a +adminonly,,,A (ext/chm_adminonly),A (ext/chm_adminonly.so),A (ext/chm_adminonly),,a,,,,, +allowinvite,,A (m_allowinvite),g,g,g,,,,,,, +autoop,,w (m_autoop),,,,,,,,,, +ban,b,b,b,b,b,b,b,b,b,b,b,b +banexception,,e (m_banexception),e,e,e,e,e,,,e,e,e +blockcaps,,B (m_blockcaps),,G (ext/chm_nocaps.so),,,,,,,, +blockcolor,,c (m_blockcolor),,,,c,c,c,c,,c, +delayjoin,,,,,,D,D,D,D,,, +exemptchanops,,X (m_exemptchanops),,,,,,,,,, +filter,,g (m_filter),,,,,,,,,, +flood,,f (m_messageflood),,,,,,,,,, +flood_unreal,,,,,,f,,,,,, +freetarget,,,F,F,F,,,,,,, +had_delayjoin,,,,,,,d,d,d,,, +halfop,,"h (m_customprefix, m_halfop)",,h (when enabled),,h,,,,,h,h +hiddenbans,,,,u,,,,,,,, +hidequits,,,,,,,Q,u,,,, +history,,H (m_chanhistory),,,,,,,,,, +invex,,I (m_inviteexception),I,I,I,I,,,,I,I,I +inviteonly,i,i,i,i,i,i,i,i,i,i,i,i +issecure,,,,,,Z,,,,,, +joinflood,,j (m_joinflood),j,j,j,,,,,,, +key,k,k,k,k,k,k,k,k,k,k,k,k +kicknorejoin,,J (m_kicknorejoin),,J,,,,,,,, +largebanlist,,,L,L,L,,,,,,, +limit,l,l,l,l,l,l,l,l,l,l,l,l +moderated,m,m,m,m,m,m,m,m,m,m,m,m +netadminonly,,,,,N (ext/chm_netadminonly),,,,,,, +nickflood,,F (m_nickflood),,,,,,,,,, +noamsg,,,,,,,T,T,,,, +noctcp,,C (m_noctcp),C,C,C,C,C,C,C,,C, +noextmsg,n,n,n,n,n,n,n,,,n,n,n +noforwards,,,Q,Q,Q,,,,,,, +noinvite,,,,,,V,,,,,,V +nokick,,Q (m_nokicks),,E,,Q,,,,,,Q +noknock,,K (m_knock),p*,p*,p*,K,,,,p*,p*, +nonick,,N (m_nonicks),,d,,N,,,,,,N +nonotice,,T (m_nonotice),T (ext/chm_nonotice),T,T (ext/chm_nonotice),T,N,N,,,, +official-join,,Y (m_ojoin),,,,,,,,,, +op,o,o,o,o,o,o,o,o,o,o,o,o +operonly,,O (m_operchans),O (ext/chm_operonly),O (ext/chm_operonly.so),O (ext/chm_operonly),O,O,,,,O,O +oplevel_apass,,,,,,,A,A,A,,, +oplevel_upass,,,,,,,U,U,U,,, +opmoderated,,U (extras/m_opmoderated),z,z,z,,,,,,, +owner,,"q (m_customprefix, m_chanprotect)",,y (when enabled),,q,,,,,,q +paranoia,,,,,,,,,,,p*, +permanent,,P (m_permchannels),P,P,P,P,z,,,,,P +private,p,p,p*,p*,p*,p,p,p,p,p*,p*,p +quiet,,,q,q,q,,,,,,, +redirect,,L (m_redirect),f,f,f,L,L,,,,, +registered,,r (m_services_account),,,,r,R,R,R,,r,r +regmoderated,,M (m_services_account),,,,M,M,M,,,M,M +regonly,,R (m_services_account),r,r,r,R,r,r,r,r,R,R +repeat,,E (m_repeat),,K (ext/chm_norepeat.c),,,,,,,, +secret,s,s,s,s,s,s,s,s,s,s,s,s +sslonly,,z (m_sslmodes),S (ext/chm_sslonly),S (ext/chm_sslonly.c),S (ext/chm_sslonly),z,,,,S,S,z +stripcolor,,S (m_stripcolor),c,c,c,S,S,,,,, +topiclock,t,t,t,t,t,t,t,t,t,t,t,t +voice,v,v,v,v,v,v,v,v,v,v,v,v +,,,,,,,,,,,, +----,,,,,,,,,,,, +"* Mode +p corresponds to both “noknock” and “private” on TS6 IRCds, as well as “paranoia” on hybrid.",,,,,,,,,,,, diff --git a/docs/modelists/channel-modes.html b/docs/modelists/channel-modes.html new file mode 100644 index 0000000..9f6d2ef --- /dev/null +++ b/docs/modelists/channel-modes.html @@ -0,0 +1,273 @@ + + + + + + +
+Channel Mode / IRCd | +RFC 1459 | +InspIRCd | +charybdis | +Elemental-IRCd | +ChatIRCd | +UnrealIRCd | +Nefarious | +snircd | +IRCu | +ircd-ratbox | +IRCd-Hybrid | +ngIRCd | +
---|---|---|---|---|---|---|---|---|---|---|---|---|
admin | +n/a | +a (m_customprefix, m_chanprotect) | n/a | +a (when enabled) | n/a | +a | n/a | n/a | n/a | n/a | n/a | +a |
adminonly | +n/a | n/a | +A (ext/chm_adminonly) | +A (ext/chm_adminonly.so) | +A (ext/chm_adminonly) | n/a | +a | n/a | n/a | n/a | n/a | n/a |
allowinvite | +n/a | +A (m_allowinvite) | +g | +g | +g | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
autoop | +n/a | +w (m_autoop) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
ban | ++b | +b | +b | +b | +b | +b | +b | +b | +b | +b | +b | +b |
banexception | +n/a | +e (m_banexception) | +e | +e | +e | +e | +e | n/a | n/a | +e | +e | +e |
blockcaps | +n/a | +B (m_blockcaps) | n/a | +G (ext/chm_nocaps.so) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
blockcolor | +n/a | +c (m_blockcolor) | n/a | n/a | n/a | +c | +c | +c | +c | n/a | +c | n/a |
delayjoin | +n/a | n/a | n/a | n/a | n/a | +D | +D | +D | +D | n/a | n/a | n/a |
exemptchanops | +n/a | +X (m_exemptchanops) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
filter | +n/a | +g (m_filter) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
flood | +n/a | +f (m_messageflood) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
flood_unreal | +n/a | n/a | n/a | n/a | n/a | +f | n/a | n/a | n/a | n/a | n/a | n/a |
freetarget | +n/a | n/a | +F | +F | +F | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
had_delayjoin | +n/a | n/a | n/a | n/a | n/a | n/a | +d | +d | +d | n/a | n/a | n/a |
halfop | +n/a | +h (m_customprefix, m_halfop) | n/a | +h (when enabled) | n/a | +h | n/a | n/a | n/a | n/a | +h | +h |
hiddenbans | +n/a | n/a | n/a | +u | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
hidequits | +n/a | n/a | n/a | n/a | n/a | n/a | +Q | +u | n/a | n/a | n/a | n/a |
history | +n/a | +H (m_chanhistory) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
invex | +n/a | +I (m_inviteexception) | +I | +I | +I | +I | n/a | n/a | n/a | +I | +I | +I |
inviteonly | ++i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i |
issecure | +n/a | n/a | n/a | n/a | n/a | +Z | n/a | n/a | n/a | n/a | n/a | n/a |
joinflood | +n/a | +j (m_joinflood) | +j | +j | +j | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
key | ++k | +k | +k | +k | +k | +k | +k | +k | +k | +k | +k | +k |
kicknorejoin | +n/a | +J (m_kicknorejoin) | n/a | +J | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
largebanlist | +n/a | n/a | +L | +L | +L | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
limit | ++l | +l | +l | +l | +l | +l | +l | +l | +l | +l | +l | +l |
moderated | ++m | +m | +m | +m | +m | +m | +m | +m | +m | +m | +m | +m |
netadminonly | +n/a | n/a | n/a | n/a | +N (ext/chm_netadminonly) | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
nickflood | +n/a | +F (m_nickflood) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
noamsg | +n/a | n/a | n/a | n/a | n/a | n/a | +T | +T | n/a | n/a | n/a | n/a |
noctcp | +n/a | +C (m_noctcp) | +C | +C | +C | +C | +C | +C | +C | n/a | +C | n/a |
noextmsg | ++n | +n | +n | +n | +n | +n | +n | n/a | n/a | +n | +n | +n |
noforwards | +n/a | n/a | +Q | +Q | +Q | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
noinvite | +n/a | n/a | n/a | n/a | n/a | +V | n/a | n/a | n/a | n/a | n/a | +V |
nokick | +n/a | +Q (m_nokicks) | n/a | +E | n/a | +Q | n/a | n/a | n/a | n/a | n/a | +Q |
noknock | +n/a | +K (m_knock) | +p* | +p* | +p* | +K | n/a | n/a | n/a | +p* | +p* | n/a |
nonick | +n/a | +N (m_nonicks) | n/a | +d | n/a | +N | n/a | n/a | n/a | n/a | n/a | +N |
nonotice | +n/a | +T (m_nonotice) | +T (ext/chm_nonotice) | +T | +T (ext/chm_nonotice) | +T | +N | +N | n/a | n/a | n/a | n/a |
official-join | +n/a | +Y (m_ojoin) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
op | ++o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o |
operonly | +n/a | +O (m_operchans) | +O (ext/chm_operonly) | +O (ext/chm_operonly.so) | +O (ext/chm_operonly) | +O | +O | n/a | n/a | n/a | +O | +O |
oplevel_apass | +n/a | n/a | n/a | n/a | n/a | n/a | +A | +A | +A | n/a | n/a | n/a |
oplevel_upass | +n/a | n/a | n/a | n/a | n/a | n/a | +U | +U | +U | n/a | n/a | n/a |
opmoderated | +n/a | +U (extras/m_opmoderated) | +z | +z | +z | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
owner | +n/a | +q (m_customprefix, m_chanprotect) | n/a | +y (when enabled) | n/a | +q | n/a | n/a | n/a | n/a | n/a | +q |
paranoia | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +p* | n/a |
permanent | +n/a | +P (m_permchannels) | +P | +P | +P | +P | +z | n/a | n/a | n/a | n/a | +P |
private | ++p | +p | +p* | +p* | +p* | +p | +p | +p | +p | +p* | +p* | +p |
quiet | +n/a | n/a | +q | +q | +q | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
redirect | +n/a | +L (m_redirect) | +f | +f | +f | +L | +L | n/a | n/a | n/a | n/a | n/a |
registered | +n/a | +r (m_services_account) | n/a | n/a | n/a | +r | +R | +R | +R | n/a | +r | +r |
regmoderated | +n/a | +M (m_services_account) | n/a | n/a | n/a | +M | +M | +M | n/a | n/a | +M | +M |
regonly | +n/a | +R (m_services_account) | +r | +r | +r | +R | +r | +r | +r | +r | +R | +R |
repeat | +n/a | +E (m_repeat) | n/a | +K (ext/chm_norepeat.c) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
secret | ++s | +s | +s | +s | +s | +s | +s | +s | +s | +s | +s | +s |
sslonly | +n/a | +z (m_sslmodes) | +S (ext/chm_sslonly) | +S (ext/chm_sslonly.c) | +S (ext/chm_sslonly) | +z | n/a | n/a | n/a | +S | +S | +z |
stripcolor | +n/a | +S (m_stripcolor) | +c | +c | +c | +S | +S | n/a | n/a | n/a | n/a | n/a |
topiclock | ++t | +t | +t | +t | +t | +t | +t | +t | +t | +t | +t | +t |
voice | ++v | +v | +v | +v | +v | +v | +v | +v | +v | +v | +v | +v |
%s | \n' % coltext + elif colidx == 0: + text = '%s | \n' % coltext + else: + # More formatting + if coltext: + coltext = '+' + coltext + + try: + coltext, note = coltext.split(' ', 1) + except ValueError: + if coltext.endswith('*'): + text = '%s | ' % coltext + else: + text = '%s | ' % coltext + else: + coltext = '%s%s | ' % coltext + else: + text = 'n/a | ' + + _write(outf, text) + + _write(outf, "
---|
User Mode / IRCd | +RFC 1459 | +InspIRCd | +charybdis | +Elemental-IRCd | +ChatIRCd | +UnrealIRCd | +Nefarious | +snircd | +IRCu | +IRCd-Hybrid | +ircd-ratbox | +ngIRCd | +
---|---|---|---|---|---|---|---|---|---|---|---|---|
admin | +n/a | n/a | +a | +a | +a | n/a | +a | n/a | n/a | +a | +a | n/a |
away | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +a |
bot | +n/a | +B | n/a | +B | +B | +B | +B | n/a | n/a | n/a | n/a | +B |
callerid | +n/a | +g | +g | +g | +g | n/a | n/a | n/a | n/a | +g | +g | n/a |
callerid_sslonly | +n/a | n/a | n/a | n/a | +t | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
cloak | +n/a | +x | +x | +x | +x | +x | +x | +x | +x | +x | n/a | +x |
cloak_fakehost | +n/a | n/a | n/a | n/a | n/a | n/a | +f | n/a | n/a | n/a | n/a | n/a |
cloak_hashedhost | +n/a | n/a | n/a | n/a | n/a | n/a | +C | n/a | n/a | n/a | n/a | n/a |
cloak_hashedip | +n/a | n/a | n/a | n/a | n/a | n/a | +c | n/a | n/a | n/a | n/a | n/a |
cloak_sethost | +n/a | n/a | n/a | n/a | n/a | n/a | +h | +h | n/a | n/a | n/a | n/a |
deaf | +n/a | +d | +D | +D | +D | +d | +d | +d | +d | +D | +D | +b |
deaf_commonchan | +n/a | +c | n/a | n/a | n/a | n/a | +q | n/a | n/a | +G | n/a | +C |
debug | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +d | n/a | n/a |
filter | +n/a | n/a | n/a | n/a | n/a | +G | n/a | n/a | n/a | n/a | n/a | n/a |
floodexempt | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +f |
helpop | +n/a | +h | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
hidechans | +n/a | +I | n/a | +I | n/a | +p | +n | +n | n/a | +p | n/a | +I |
hideidle | +n/a | n/a | n/a | n/a | n/a | +I | +I | +I | n/a | +q | n/a | n/a |
hideoper | +n/a | +H | n/a | n/a | n/a | +H | +H | n/a | n/a | +H | n/a | n/a |
invisible | ++i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i |
locops | +n/a | n/a | +l | +l | +l | n/a | +O | +O | +O | +l | +l | n/a |
netadmin | +n/a | n/a | n/a | n/a | +N | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
noctcp | +n/a | n/a | n/a | +C | n/a | +T | n/a | n/a | n/a | n/a | n/a | n/a |
noforward | +n/a | n/a | +Q | +Q | +Q | n/a | +L | n/a | n/a | n/a | n/a | n/a |
noinvite | +n/a | n/a | n/a | +V | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
oper | ++o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o |
operwall | +n/a | n/a | +z | +z | +z | n/a | n/a | n/a | n/a | n/a | +z | n/a |
override | +n/a | n/a | +p | +p | +p | n/a | +X | +X | n/a | n/a | n/a | n/a |
privdeaf | +n/a | n/a | n/a | n/a | n/a | n/a | +D | n/a | n/a | n/a | n/a | n/a |
protected | +n/a | n/a | n/a | n/a | n/a | +q | n/a | n/a | n/a | n/a | n/a | n/a |
regdeaf | +n/a | +R | +R | +R | +R | +R | +R | +R | n/a | +R | n/a | n/a |
registered | +n/a | +r | n/a | n/a | n/a | +r | +r | +r | +r | +r | n/a | +R |
restricted | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +r |
servprotect | +n/a | +k | +S | +S | +S | +S | +k | +k | +k | n/a | +S | +q |
showwhois | +n/a | +W | n/a | n/a | n/a | +W | +W | n/a | n/a | n/a | n/a | n/a |
sno_badclientconnections | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +u | +u | n/a |
sno_botfloods | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +b | +b | n/a |
sno_clientconnections | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +c | +c | +c |
sno_debug | +n/a | n/a | n/a | n/a | n/a | n/a | +g | +g | +g | n/a | +d | n/a |
sno_extclientconnections | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +C | n/a |
sno_fullauthblock | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +f | +f | n/a |
sno_nickchange | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +n | n/a | n/a |
sno_rejectedclients | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +j | +r | n/a |
sno_remoteclientconnections | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +F | n/a | n/a |
sno_serverconnects | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +e | +x | n/a |
sno_skill | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +k | +k | n/a |
sno_stats | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +y | +y | n/a |
snomask | ++s | +s | +s | +s | +s | +s | +s | n/a | n/a | +s | +s | +s |
ssl | +n/a | n/a | n/a | n/a | n/a | +z | +z | n/a | n/a | +S | n/a | n/a |
stripcolor | +n/a | +S | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
vhost | +n/a | n/a | n/a | n/a | n/a | +t | n/a | n/a | n/a | n/a | n/a | n/a |
wallops | ++w | +w | +w | +w | +w | +w | +w | n/a | n/a | +w | +w | +w |
webirc | +n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +W | n/a | n/a |