diff --git a/modules/bitly.py b/modules/bitly.py new file mode 100644 index 00000000..cc73c200 --- /dev/null +++ b/modules/bitly.py @@ -0,0 +1,30 @@ +import re +import Utils + +URL_BITLYSHORTEN = "https://api-ssl.bitly.com/v3/shorten" +REGEX_URL = re.compile("https?://", re.I) + +class Module(object): + def __init__(self, bot): + self.bot = bot + bot.events.on("get").on("shortlink").hook(self.shortlink) + bot.events.on("received").on("command").on("shorten" + ).hook(self.shorten, min_args=1) + + def shortlink(self, event): + url = event["url"] + if not re.match(REGEX_URL, url): + url = "http://%s" % url + data = Utils.get_url(URL_BITLYSHORTEN, get_params={ + "access_token": self.bot.config["bitly-api-key"], + "longUrl": url}, json=True) + if data and data["data"]: + return data["data"]["url"] + + def shorten(self, event): + link = self.bot.events.on("get").on("shortlink").call( + url=event["args"])[0] + if link: + event["stdout"].write("Short URL: %s" % link) + else: + event["stderr"].write("Unable to shorten that URL.") diff --git a/modules/haveibeenpwned.py b/modules/haveibeenpwned.py new file mode 100644 index 00000000..e2d13b4d --- /dev/null +++ b/modules/haveibeenpwned.py @@ -0,0 +1,26 @@ +import Utils + +URL_HAVEIBEENPWNEDAPI = "https://haveibeenpwned.com/api/v2/breachedaccount/%s" +URL_HAVEIBEENPWNED = "https://haveibeenpwned.com/" + +class Module(object): + def __init__(self, bot): + bot.events.on("received").on("command").on("beenpwned").hook( + self.beenpwned, min_args=1, + help="Find out if a username, email or similar has appeared " + "in any hacked databased") + + def beenpwned(self, event): + page = Utils.get_url(URL_HAVEIBEENPWNEDAPI % event["args"], json=True, + code=True) + if page: + code, page = page + if code == 200: + event["stdout"].write( + "It seems '%s' has been pwned. check on %s." % (event["args"], + URL_HAVEIBEENPWNED)) + else: + event["stdout"].write("It seems '%s' has not been pwned" % ( + event["args"])) + else: + event["stderr"].write("Failed to load results")