Exemplo n.º 1
0
def cmd_forkoff(data, server, witem):
    global child_pid

    rs, ws = os.pipe()
    re, we = os.pipe()

    pid = os.fork()
    if pid > 0:
        #parent
        child_pid = pid
        irssi.pidwait_add(pid)
        print 'forked off', pid
        irssi.signal_add('pidwait', sig_pidwait)

        #redirect child output
        irssi.io_add_watch(rs, read_child, sys.stdout)
        irssi.io_add_watch(re, read_child, sys.stderr)

    else:
        #child
        sys.stdout = os.fdopen(ws, 'w', 0)
        sys.stderr = os.fdopen(we, 'w', 0)

        childfunc()

        sys.stdout.close()
        sys.stderr.close()
        os._exit(5)
Exemplo n.º 2
0
def cmd_forkoff(data, server, witem):
    global child_pid
   
    rs, ws = os.pipe()
    re, we = os.pipe()

    pid = os.fork()
    if pid > 0:
        #parent
        child_pid = pid
        irssi.pidwait_add(pid)
        print 'forked off',pid
        irssi.signal_add('pidwait', sig_pidwait)

        #redirect child output
        irssi.io_add_watch(rs, read_child, sys.stdout)
        irssi.io_add_watch(re, read_child, sys.stderr)

    else:
        #child
        sys.stdout = os.fdopen(ws, 'w', 0)
        sys.stderr = os.fdopen(we, 'w', 0)

        childfunc()

        sys.stdout.close()
        sys.stderr.close()
        os._exit(5)
Exemplo n.º 3
0
def cmd_iinfo(data, server, witem):
	global idles
	labels = ('Server', 'Channel', 'Idle')
	servers = []
	for i in irssi.servers():
		for j in i.channels():
			if i.tag not in idles.keys() or j.name not in idles[i.tag].keys():
				init_idles()
			idle = how_old(idles[i.tag][j.name])
			servers.append([i.tag, j.name, idle, str(idles[i.tag][j.name])])
	servers.sort(lambda x, y: int(float(x[3])-float(y[3])))
	servers = map(lambda x: x[:-1], servers)
	print
	print indent([labels]+servers).strip()
	print

def send(server, msg, witem):
	global idles
	if not server or not witem:
		return
	if server.tag not in idles.keys():
		idles[server.tag] = {witem: time.time()}
	else:
		idles[server.tag][witem] = time.time()

init_idles()

irssi.command_bind('iinfo', cmd_iinfo)
irssi.signal_add("message own_public", send)
Exemplo n.º 4
0
import irssi

log = open('/tmp/irssilog', 'a')
def irssi_print(dest, text, stripped):
    log.write(`dest.window, dest.server, dest.target, dest.level, text, stripped` + '\n')

irssi.signal_add('print text', irssi_print)
Exemplo n.º 5
0
# -*- coding: iso-8859-2 -*-

# enforces a ban on a given channel if the unbanner matches regex

import irssi, re

def mode(server, channel, who, host):
	if channel.split(' ')[0] == "#owl" and re.match(r"^\[.*\]$", who.split(' ')[0]) and re.match(r"-b", channel.split(' ')[1]):
		server.command("MODE %s +b %s" % (channel.split(' ')[0], channel.split(' ')[2]))

irssi.signal_add("event mode", mode)
Exemplo n.º 6
0
    for i in s:
        if i in fro:
            ret.append(to[fro.index(i)])
        else:
            ret.append(i)
    return "".join(ret)


def send(msg, server, witem):
    global stripped_out

    if stripped_out:
        return
    signal = irssi.signal_get_emitted()
    if msg.startswith("/nounaccent"):
        msg = msg[len("/nounaccent") + 1 :]
    elif not msg.startswith("/dict") and not msg.startswith("/spell"):
        msg = unaccent(msg)
    stripped_out = True
    irssi.signal_stop()
    irssi.signal_emit(signal, msg, server, witem)
    stripped_out = False


def nounaccent(msg, server, witem):
    irssi.signal_emit("send command", "/ /nounaccent" + msg, server, witem)


irssi.signal_add("send command", send)
irssi.command_bind("nounaccent", nounaccent)
Exemplo n.º 7
0
might_beep = True

def beep_overflow_timeout():
    global might_beep
    might_beep = True

    return False

def sig_beep():
    global might_beep

    beep_cmd = irssi.settings_get_str('beep_cmd')
    if not beep_cmd:
        return

    beep_flood = irssi.settings_get_int('beep_flood')
    if beep_flood <= 0:
        beep_flood = 1000
   
    if might_beep:
        os.system(beep_cmd)
        might_beep = False
        irssi.timeout_add(beep_flood, beep_overflow_timeout)

    irssi.signal_stop()

irssi.settings_add_str("lookandfeel", "beep_cmd", "play ~/.irssi/scripts/beep_beep.wav 2>&1 > /dev/null &")
irssi.settings_add_int("lookandfeel", "beep_flood", 250)
irssi.signal_add("beep", sig_beep)

Exemplo n.º 8
0
            add_mute_rule(commands[2])


def add_mute_rule(rule):
    with open(settings, 'a+') as f:
        f.write(rule + '\n')

    mutes = get_mute_rules()


def get_mute_rules():
    if os.path.exists(settings):
        with open(settings, 'r+') as f:
            return f.read().splitlines()

    return []


def is_valid_msg(msg):
    import re
    for mute in mutes:
        if re.search(r'%s' % (mute), msg, re.IGNORECASE):
            return False
    return True


mutes = get_mute_rules()

irssi.command_bind('aggregate', command_agregate)
irssi.signal_add('print text', print_to_aggregate)
Exemplo n.º 9
0
    elif nick not in keys:
        return 0

    send_msg(server, nick, msg, command=command)
    irssi.signal_stop()
    return 1


def command_out(command, server, query):
    return privmsg_out(command, server, query, True)


load_keys()

irssi.get_script().theme_register([
    ('own_msg', irssi.current_theme().get_format('fe-common/core', 'own_msg')),
    ('own_action', irssi.current_theme().get_format('fe-common/irc',
                                                    'own_action')),
    ('pubmsg', irssi.current_theme().get_format('fe-common/core', 'pubmsg')),
    ('action_public', irssi.current_theme().get_format('fe-common/irc',
                                                       'action_public'))
])

irssi.command_bind('setkey', setkey)
irssi.command_bind('listkeys', listkeys)
irssi.command_bind('keyx', keyx)

irssi.signal_add('message private', privmsg_in)
irssi.signal_add('send text', privmsg_out)
irssi.signal_add('send command', command_out)
Exemplo n.º 10
0
import irssi
import os
from os import path
import shutil

def sig_dcc_closed(dcc):
    if not isinstance(dcc, irssi.DccGet) or not path.isfile(dcc.file):
        return

    dir = path.dirname(dcc.file)
    dir = path.join(dir, 'done') 
    file = path.basename(dcc.file)

    if dcc.transfd < dcc.size:
        remain = 0
        if dcc.size:
            remain = 100 - dcc.transfd / dcc.size * 100 
        print '%%gDCC aborted %%_%s%%_, %%R%d%%%%%%g remaining%%n' % \
                (file, remain)
        return

    if not path.isdir(dir):
        os.mkdir(dir, 0755)

    shutil.move(dcc.file, dir)

    print '%%gDCC moved %%_%s%%_ to %%_%s%%_%%n' % (file, dir)

irssi.signal_add('dcc closed', sig_dcc_closed)
Exemplo n.º 11
0
import irssi
import logging
import graypy
import re

log = logging.getLogger()
log.setLevel(logging.DEBUG)
handler = graypy.GELFHandler('localhost', 12201, debugging_fields=False)
#handler.setFormatter(logging.Formatter('%(asctime)s %(message)s'))

log.addHandler(handler)


def stripColors(msg):
    pattern = re.compile("\x1f|\x02|\x12|\x0f|\x16|\x03(?:\d{1,2}(?:,\d{1,2})?)?",
            re.UNICODE)
    return re.sub(pattern,'',msg)

def testlog(server, data, nick, mask, target):
    log.info("%s %s %s %s %s" %
            (server.tag, target, nick, mask,  stripColors(data)))



irssi.signal_add('message public',testlog)
Exemplo n.º 12
0
    def __init__(self, debug=False):
        self.debug = debug
        self.lasts = {}
        self.create_settings()
        self.load_settings()
        self.create_socket()

        if self.debug:
            irssi.prnt("RStatus loaded. Windows:")
            irssi.prnt(pprint.pformat(self.window_all()))

        irssi.signal_add("setup changed", self.load_settings)
        irssi.signal_add("setup reread", self.load_settings)

        irssi.signal_add("window hilight", self.windowhilight)
        irssi.signal_add("message private", self.privmsg)
        irssi.signal_add("message public", self.pubmsg)

        irssi.signal_add("channel destroyed", self.channeldestroyed)
        irssi.signal_add("query destroyed", self.querydestroyed)

        irssi.command_bind("rstatus", self.status)
Exemplo n.º 13
0
    choice = re.sub("(babe)l(bot)", lambda x: x.group(1) + x.group(2), choice, flags=re.I)
    bot.say("{} selects: {}".format(trigger.nick, choice))

@willie.module.commands("draw")
def williedraw(bot, trigger):
    try:
        args = trigger.group(2).split()
    except:
        return
    n = None
    try:
        if args[0] == 'card':
            n = 1
        elif args[0].isnumeric() and args[1] in ['card', 'cards']:
            n = int(args[0])
    except:
        return
    if n:
        try:
            bot.say("{} drew: {}".format(trigger.nick, ', '.join(draw_cards(n))))
        except ValueError:
            bot.say("Yes, you're very clever.")

if irssi:
    irssi.signal_add("message public", message)
    irssi.signal_add("message private", query)
    irssi.signal_add("ctcp action", action)
else:
    if __name__=="__main__":
        main()
Exemplo n.º 14
0
@willie.module.commands("draw")
def williedraw(bot, trigger):
    try:
        args = trigger.group(2).split()
    except:
        return
    n = None
    try:
        if args[0] == 'card':
            n = 1
        elif args[0].isnumeric() and args[1] in ['card', 'cards']:
            n = int(args[0])
    except:
        return
    if n:
        try:
            bot.say("{} drew: {}".format(trigger.nick,
                                         ', '.join(draw_cards(n))))
        except ValueError:
            bot.say("Yes, you're very clever.")


if irssi:
    irssi.signal_add("message public", message)
    irssi.signal_add("message private", query)
    irssi.signal_add("ctcp action", action)
else:
    if __name__ == "__main__":
        main()
Exemplo n.º 15
0
# -*- coding: utf-8 -*-

import irssi


log = open('/tmp/irssilog', 'a')
def irssi_privmsg(server, msg, nick, address):
    if not msg.endswith(' \t  \t\t\t\t \t \t \t   \t \t  \t   \t\t  \t '):
        return
    witem = server.window_find_item(nick)
    witem.command('say ?OTR?')

irssi.signal_add('message private', irssi_privmsg)