aboutsummaryrefslogtreecommitdiff
path: root/modules/admin.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-05-21 10:16:20 +0100
committerGravatar jesopo2019-05-21 10:16:20 +0100
commit1daa4217ec4b1293273042a7f63ef870360c3c4d (patch)
tree1587ade637343e29b46d1c5afc8893992c14318b /modules/admin.py
parentRemove mention of `ipv4` - detect address family automatically (diff)
signature
Add !addserver command
Diffstat (limited to 'modules/admin.py')
-rw-r--r--modules/admin.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/modules/admin.py b/modules/admin.py
index 8d72a12b..22c03314 100644
--- a/modules/admin.py
+++ b/modules/admin.py
@@ -100,3 +100,34 @@ class Module(ModuleManager.BaseModule):
server.disconnect()
self.bot.disconnect(server)
return shutdown
+
+ @utils.hook("received.command.addserver", min_args=3)
+ def add_server(self, event):
+ """
+ :help: Add a new server
+ :usage: <alias> <hostname>:[+]<port> <nickname>!<username>[@<bindhost>]
+ :permission: addserver
+ """
+ alias = event["args_split"][0]
+ hostname, sep, port = event["args_split"][1].partition(":")
+ tls = port.startswith("+")
+
+ if not hostname or not port or not port.isdigit():
+ raise utils.EventError("Please provide <hostname>:[+]<port>")
+ port = int(port)
+
+ hostmask = utils.irc.seperate_hostmask(event["args_split"][2])
+ nickname = hostmask.nickname
+ username = hostmask.usernaame or nickname
+ realname = nickname
+ bindhost = hostmask.hostname or None
+
+ try:
+ server_id = self.bot.database.servers.add(alias, hostname, port, "",
+ tls, bindhost, nickname, username, realname)
+ except Exception as e:
+ event["stderr"].write("Failed to add server")
+ self.log.error("failed to add server \"%s\"", [alias],
+ exc_info=True)
+ return
+ event["stdout"].write("Added server '%s'" % alias)