merging devel into master #7
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
env/
|
env/
|
||||||
|
.vscode
|
15
README.md
15
README.md
@ -1,15 +0,0 @@
|
|||||||
# SnoParser
|
|
||||||
|
|
||||||
Parses the Server Notices from ErgoIRCd
|
|
||||||
|
|
||||||
Coverage:
|
|
||||||
|
|
||||||
1. CONNECT
|
|
||||||
|
|
||||||
2. XLINE
|
|
||||||
|
|
||||||
3. NICK
|
|
||||||
|
|
||||||
4. KILL
|
|
||||||
|
|
||||||
5. ACCOUNT (reg only)
|
|
27
README.rst
Normal file
27
README.rst
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
SnoParser
|
||||||
|
=========
|
||||||
|
|
||||||
|
Parses the Server Notices from ErgoIRCd.
|
||||||
|
|
||||||
|
|
||||||
|
Assumptions
|
||||||
|
-----------
|
||||||
|
|
||||||
|
- ``force-nick-equals-account=True``
|
||||||
|
- The Bot needs to be oper and have all the snomasks.
|
||||||
|
|
||||||
|
Current Coverage
|
||||||
|
----------------
|
||||||
|
|
||||||
|
1. CONNECT
|
||||||
|
2. XLINE
|
||||||
|
3. NICK
|
||||||
|
4. KILL
|
||||||
|
5. ACCOUNT (reg only)
|
||||||
|
|
||||||
|
Configurations
|
||||||
|
--------------
|
||||||
|
|
||||||
|
1. Formatting for 'AutoVhost' post Registration (TODO: Disable)
|
||||||
|
2. Configure the '#channel' to send the SNO lines (disabled by default) (TODO: Add Exceptions)
|
||||||
|
3. Use ZWSP to toggle nickhighlights when in channel.
|
@ -52,5 +52,13 @@ SnoParser = conf.registerPlugin('SnoParser')
|
|||||||
# conf.registerGlobalValue(SnoParser, 'someConfigVariableName',
|
# conf.registerGlobalValue(SnoParser, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
|
|
||||||
|
conf.registerGlobalValue(SnoParser, 'targetChannel',
|
||||||
|
registry.String(None, ("""Sends reformatted snolines to the <channel>""")))
|
||||||
|
|
||||||
|
conf.registerGlobalValue(SnoParser, 'AutoVhost',
|
||||||
|
registry.String('libcasa/user/', ("""Configure the vhost eg. libcasa/user/$account""")))
|
||||||
|
|
||||||
|
conf.registerGlobalValue(SnoParser, 'preventHighlight',
|
||||||
|
registry.Boolean(True, ("""Toggles in channel highlights with ZWSP""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
|
||||||
|
29
plugin.py
29
plugin.py
@ -133,6 +133,10 @@ class SnoParser(callbacks.Plugin):
|
|||||||
ip = couple.group(3)
|
ip = couple.group(3)
|
||||||
DictFromSnotice = {'notice': 'accreg', 'hostmask': hostmask, 'account': account, 'ip': ip}
|
DictFromSnotice = {'notice': 'accreg', 'hostmask': hostmask, 'account': account, 'ip': ip}
|
||||||
repl = f"\x02\x1FNOTICE: accreg -> [{account}] was registered by hostmask [{hostmask}] from IP {ip}"
|
repl = f"\x02\x1FNOTICE: accreg -> [{account}] was registered by hostmask [{hostmask}] from IP {ip}"
|
||||||
|
|
||||||
|
# Trigger HS SET
|
||||||
|
self._setvhost(irc, msg, account)
|
||||||
|
|
||||||
self._sendSnotice(irc, msg, repl)
|
self._sendSnotice(irc, msg, repl)
|
||||||
if 'ACCOUNT' in text and 'registered account' in text and 'SAREGISTER' in text:
|
if 'ACCOUNT' in text and 'registered account' in text and 'SAREGISTER' in text:
|
||||||
accregex = "^-ACCOUNT- Operator \[(.*)\] registered account \[(.*)\] with SAREGISTER$"
|
accregex = "^-ACCOUNT- Operator \[(.*)\] registered account \[(.*)\] with SAREGISTER$"
|
||||||
@ -141,13 +145,34 @@ class SnoParser(callbacks.Plugin):
|
|||||||
account = couple.group(2)
|
account = couple.group(2)
|
||||||
DictFromSnotice = {'notice': 'sareg', 'oper': oper, 'account': account}
|
DictFromSnotice = {'notice': 'sareg', 'oper': oper, 'account': account}
|
||||||
repl = f"\x02\x1FNOTICE: sareg -> [{account}] was registered by operator [{oper}]"
|
repl = f"\x02\x1FNOTICE: sareg -> [{account}] was registered by operator [{oper}]"
|
||||||
|
|
||||||
|
self._setvhost(irc, msg, account)
|
||||||
self._sendSnotice(irc, msg, repl)
|
self._sendSnotice(irc, msg, repl)
|
||||||
|
|
||||||
|
|
||||||
|
# Post Registration
|
||||||
|
|
||||||
|
def _setvhost(self, irc, msg, account):
|
||||||
|
arg = ['SET']
|
||||||
|
arg.append(account)
|
||||||
|
vhost = self.registryValue('AutoVhost')
|
||||||
|
arg.append(f'{vhost}{account}')
|
||||||
|
irc.sendMsg(msg=ircmsgs.IrcMsg(command='HS',
|
||||||
|
args=arg))
|
||||||
|
|
||||||
|
|
||||||
|
# Send formatted SNO to channel
|
||||||
|
|
||||||
def _sendSnotice(self, irc, msg, repl):
|
def _sendSnotice(self, irc, msg, repl):
|
||||||
irc.queueMsg(msg=ircmsgs.IrcMsg(command='PRIVMSG',
|
try:
|
||||||
args=('#snotices', repl)))
|
channel = self.registryValue('targetChannel')
|
||||||
|
if channel[0] == '#':
|
||||||
|
irc.queueMsg(msg=ircmsgs.IrcMsg(command='NOTICE',
|
||||||
|
args=(channel, repl)))
|
||||||
|
# what sort of exception does one raise
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
Class = SnoParser
|
Class = SnoParser
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user