[RUutils] Remove uu{en,de}code and (un)hex; add hash

master
Sfan5 2014-02-27 19:21:53 +01:00
parent 3ba9e7131b
commit 5806f10250
2 changed files with 29 additions and 74 deletions

View File

@ -25,8 +25,8 @@ Required arguments are enclosed in { and }, optional arguments are enclosed in \
<tr> <td>!devoice {nick} [nick] ...</td> <td>DeVoice nick</td> <td><i>Admins</i></td> </tr>
<tr> <td>!ban {nick/mask} [nick/mask] ...</td> <td>Ban nick/mask</td> <td><i>Admins</i></td> </tr>
<tr> <td>!unban {nick/mask} [nick/mask] ...</td> <td>UnBan nick/mask</td> <td><i>Admins</i></td> </tr>
<tr> <td>!mute {nick/mask} [nick/mask] ...</td> <td>Mute nick/mask</td> <td><i>Admins</i></td> </tr>
<tr> <td>!unmute {nick/mask} [nick/mask]...</td> <td>UnMute nick/mask</td> <td><i>Admins</i></td> </tr>
<tr> <td>!mute {nick/mask} [nick/mask] ...</td> <td>Mute nick/mask</td> <td><i>Admins</i></td> </tr>
<tr> <td>!unmute {nick/mask} [nick/mask]...</td> <td>UnMute nick/mask</td> <td><i>Admins</i></td> </tr>
<tr> <td>!kick {nick} {message}</td> <td>Kick nick with message</td> <td><i>Admins</i></td> </tr>
<tr> <td>!badword {on/off/reload}</td> <td>Enable/Disable badword functionality</td> <td><i>Admins</i></td> </tr>
<tr> <td><b>forumutils.py</b></td> <td></td> <td></td> </tr>
@ -45,10 +45,7 @@ Required arguments are enclosed in { and }, optional arguments are enclosed in \
<tr> <td>!b16e {string}</td> <td>Base16-encode a string</td> <td>Anyone</td> </tr>
<tr> <td>!b16d {string}</td> <td>Base16-decode a string</td> <td>Anyone</td> </tr>
<tr> <td>!crc32 {string}</td> <td>Hash a string using crc32</td> <td>Anyone</td> </tr>
<tr> <td>!hex {string}</td> <td>"Hexlify" a string</td> <td>Anyone</td> </tr>
<tr> <td>!unhex {string}</td> <td>Un-"Hexlify" a string</td> <td>Anyone</td> </tr>
<tr> <td>!uuencode {string}</td> <td>uuencode a string</td> <td>Anyone</td> </tr>
<tr> <td>!uudecode {string}</td> <td>uudecode a string</td> <td>Anyone</td> </tr>
<tr> <td>!hash {hashtype} {string}</td> <td>Hash a string using various hash functions</td> <td>Anyone</td> </tr>
<tr> <td>!re {regex}<i>`</i>{string}</td> <td>check if regex matches, if it does print groups</td> <td>Anyone</td> </tr>
<tr> <td>!rand [min] {max}</td> <td>Says a random number between(incl.) min and max</td> <td>Anyone</td> </tr>
<tr> <td><b>search.py</b></td> <td></td> <td></td> </tr>
@ -93,6 +90,6 @@ Required arguments are enclosed in { and }, optional arguments are enclosed in \
<tr> <td>!next</td> <td>Say: "Another satisfied customer. Next!"</td> <td>Anyone</td> </tr>
<tr> <td>!pil [nick]</td> <td>Link to Lua PIL</td> <td>Anyone</td> </tr>
<tr> <td>!git [nick]</td> <td>Link to Git manual</td> <td>Anyone</td> </tr>
<tr> <td><b>tell.py</b></td> <td></td> <td></td> </tr>
<tr> <td><b>tell.py</b></td> <td></td> <td></td> </tr>
<tr> <td>!tell {nick} {message}</td> <td>Tell somebody a message</td> <td>Anyone</td> </tr>
</table>

View File

@ -3,7 +3,7 @@
rutils.py - Phenny Utility Module
Copyright 2012, Sfan5
"""
import base64, binascii, re, random, time, multiprocessing
import base64, binascii, re, random, time, multiprocessing, hashlib
def rs(s):
return repr(s)[1:-1]
@ -139,73 +139,31 @@ def crc32(phenny, input):
crc32.commands = ['crc32']
crc32.priority = 'low'
def hex_(phenny, input):
"""hexlify http://docs.python.org/2/library/binascii.html#binascii.hexlify"""
for x in phenny.bot.commands["high"].values():
if x[0].__name__ == "aa_hook":
if x[0](phenny, input):
return # Abort function
if not input.group(2):
return phenny.reply("Nothing to hexlify.")
q = input.group(2).encode('utf-8')
try:
return phenny.say(rs(binascii.hexlify(q)))
except BaseException as e:
return phenny.reply("Failed to handle data")
hex_.commands = ['hex']
hex_.priority = 'low'
def hash_(phenny, input):
for x in phenny.bot.commands["high"].values():
if x[0].__name__ == "aa_hook":
if x[0](phenny, input):
return # Abort function
if not input.group(2):
return phenny.reply("Usage: hash <hash function> <text> | Get available hash funcs with ?")
hashfuncs = {
'md5': hashlib.md5,
'sha1': hashlib.sha1,
'sha224': hashlib.sha224,
'sha256': hashlib.sha256,
'sha384': hashlib.sha384,
'sha512': hashlib.sha512,
}
if input.group(2).strip() == '?':
return phenny.reply('Supported hash functions: ' + ', '.join(hashfuncs.keys()))
hashf = input.group(2).split(' ')[0]
if not hashf in hashfuncs:
return phenny.reply('Unknown hash functions, supported: ' + ', '.join(hashfuncs.keys()))
data = ' '.join(input.group(2).split(' ')[1:]).encode('utf-8')
phenny.say(hashfuncs[hashf](data).hexdigest())
def unhex(phenny, input):
"""unhexlify http://docs.python.org/2/library/binascii.html#binascii.unhexlify"""
for x in phenny.bot.commands["high"].values():
if x[0].__name__ == "aa_hook":
if x[0](phenny, input):
return # Abort function
if not input.group(2):
return phenny.reply("Nothing to unhexlify.")
q = input.group(2).encode('utf-8')
try:
return phenny.say(rs(binascii.unhexlify(q)))
except BaseException as e:
return phenny.reply("Failed to handle data")
unhex.commands = ['unhex']
unhex.priority = 'low'
def uuencode(phenny, input):
"""uuencode"""
for x in phenny.bot.commands["high"].values():
if x[0].__name__ == "aa_hook":
if x[0](phenny, input):
return # Abort function
if not input.group(2):
return phenny.reply("Nothing to encode.")
q = input.group(2).encode('utf-8')
try:
return phenny.say(rs(binascii.b2a_uu(q)))
except BaseException as e:
return phenny.reply("Failed to handle data")
uuencode.commands = ['ue','uuencode']
uuencode.priority = 'low'
def uudecode(phenny, input):
"""uudecode"""
for x in phenny.bot.commands["high"].values():
if x[0].__name__ == "aa_hook":
if x[0](phenny, input):
return # Abort function
if not input.group(2):
return phenny.reply("Nothing to decode.")
q = input.group(2).encode('utf-8')
try:
return phenny.say(rs(binascii.a2b_uu(q + '\n')))
except BaseException as e:
return phenny.reply("Failed to handle data")
uudecode.commands = ['ud','uudecode']
uudecode.priority = 'low'
hash_.commands = ['hash']
hash_.priority = 'low'
def regex(phenny, input):
"""regex"""