3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-24 03:29:28 +01:00

WIP admin commands

This commit is contained in:
James Lu 2015-06-07 13:40:18 -07:00
parent 36a93320d7
commit 86c7fd0db1
2 changed files with 67 additions and 11 deletions

67
plugins/admin.py Normal file
View File

@ -0,0 +1,67 @@
# admin.py: PyLink administrative commands
import sys, os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import proto
import utils
class NotAuthenticatedError(Exception):
pass
def checkauthenticated(irc, source):
if not irc.users[source].identified:
raise NotAuthenticatedError("You are not authenticated!")
@utils.add_cmd
def eval(irc, source, args):
checkauthenticated(irc, source)
args = ' '.join(args)
if not args.strip():
utils.msg(irc, source, 'No code entered!')
return
exec(args)
@utils.add_cmd
def spawnclient(irc, source, args):
checkauthenticated(irc, source)
try:
nick, ident, host = args[:3]
except ValueError:
utils.msg(irc, source, "Error: not enough arguments. Needs 3: nick, user, host.")
return
proto.spawnClient(irc, nick, ident, host)
@utils.add_cmd
def removeclient(irc, source, args):
checkauthenticated(irc, source)
try:
nick = args[0].lower()
except IndexError:
utils.msg(irc, source, "Error: not enough arguments. Needs 1: nick.")
return
u = _nicktoUid(nick)
if u is None or u not in irc.server[irc.sid].users:
utils.msg(irc, source, "Error: user %r not found." % nick)
return
_sendFromUser(irc, u, "QUIT :Client Quit")
proto.removeClient(irc, nick, ident, host)
@utils.add_cmd
def joinclient(irc, source, args):
checkauthenticated(irc, source)
try:
nick = args[0]
clist = args[1].split(',')
if not clist:
raise IndexError
except IndexError:
utils.msg(irc, source, "Error: not enough arguments. Needs 2: nick, comma separated list of channels.")
return
u = _nicktoUid(nick)
if u is None or u not in irc.server[irc.sid].users:
utils.msg(irc, source, "Error: user %r not found." % nick)
return
for channel in clist:
if not channel.startswith('#'):
utils.msg(irc, source, "Error: channel names must start with #.")
return
joinClient(irc, ','.join(clist))

View File

@ -55,14 +55,3 @@ def listcommands(irc, source, args):
cmds.sort()
utils.msg(irc, source, 'Available commands include: %s' % ', '.join(cmds))
utils.add_cmd(listcommands, 'list')
@utils.add_cmd
def eval(irc, source, args):
if not irc.users[source].identified:
utils.msg(irc, source, 'You are not authenticated!')
return
args = ' '.join(args)
if not args.strip():
utils.msg(irc, source, 'No code entered!')
return
exec(args)